File: PlatQt.h

package info (click to toggle)
renderdoc 1.2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 79,584 kB
  • sloc: cpp: 491,671; ansic: 285,823; python: 12,617; java: 11,345; cs: 7,181; makefile: 6,703; yacc: 5,682; ruby: 4,648; perl: 3,461; php: 2,119; sh: 2,068; lisp: 1,835; tcl: 1,068; ml: 747; xml: 137
file content (132 lines) | stat: -rw-r--r-- 3,832 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//
//          Copyright (c) 1990-2011, Scientific Toolworks, Inc.
//
// The License.txt file describes the conditions under which this software may be distributed.
//
// Author: Jason Haslam
//
// Additions Copyright (c) 2011 Archaeopteryx Software, Inc. d/b/a Wingware
// Scintilla platform layer for Qt

#ifndef PLATQT_H
#define PLATQT_H

#include "Platform.h"

#include <QPaintDevice>
#include <QPainter>
#include <QHash>

#ifdef SCI_NAMESPACE
namespace Scintilla {
#endif

const char *CharacterSetID(int characterSet);

inline QColor QColorFromCA(ColourDesired ca)
{
	long c = ca.AsLong();
	return QColor(c & 0xff, (c >> 8) & 0xff, (c >> 16) & 0xff);
}

inline QRect QRectFromPRect(PRectangle pr)
{
	return QRect(pr.left, pr.top, pr.Width(), pr.Height());
}

inline QRectF QRectFFromPRect(PRectangle pr)
{
	return QRectF(pr.left, pr.top, pr.Width(), pr.Height());
}

inline PRectangle PRectFromQRect(QRect qr)
{
	return PRectangle(qr.x(), qr.y(), qr.x() + qr.width(), qr.y() + qr.height());
}

inline Point PointFromQPoint(QPoint qp)
{
	return Point(qp.x(), qp.y());
}

class SurfaceImpl : public Surface {
private:
	QPaintDevice *device;
	QPainter *painter;
	bool deviceOwned;
	bool painterOwned;
	float x, y;
	bool unicodeMode;
	int codePage;
	const char *codecName;
	QTextCodec *codec;

public:
	SurfaceImpl();
	virtual ~SurfaceImpl();

	virtual void Init(WindowID wid);
	virtual void Init(SurfaceID sid, WindowID wid);
	virtual void InitPixMap(int width, int height,
		Surface *surface, WindowID wid);

	virtual void Release();
	virtual bool Initialised();
	virtual void PenColour(ColourDesired fore);
	virtual int LogPixelsY();
	virtual int DeviceHeightFont(int points);
	virtual void MoveTo(int x, int y);
	virtual void LineTo(int x, int y);
	virtual void Polygon(Point *pts, int npts, ColourDesired fore,
		ColourDesired back);
	virtual void RectangleDraw(PRectangle rc, ColourDesired fore,
		ColourDesired back);
	virtual void FillRectangle(PRectangle rc, ColourDesired back);
	virtual void FillRectangle(PRectangle rc, Surface &surfacePattern);
	virtual void RoundedRectangle(PRectangle rc, ColourDesired fore,
		ColourDesired back);
	virtual void AlphaRectangle(PRectangle rc, int corner, ColourDesired fill,
		int alphaFill, ColourDesired outline, int alphaOutline, int flags);
	virtual void DrawRGBAImage(PRectangle rc, int width, int height,
		const unsigned char *pixelsImage);
	virtual void Ellipse(PRectangle rc, ColourDesired fore,
		ColourDesired back);
	virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource);

	virtual void DrawTextNoClip(PRectangle rc, Font &font, XYPOSITION ybase,
		const char *s, int len, ColourDesired fore, ColourDesired back);
	virtual void DrawTextClipped(PRectangle rc, Font &font, XYPOSITION ybase,
		const char *s, int len, ColourDesired fore, ColourDesired back);
	virtual void DrawTextTransparent(PRectangle rc, Font &font, XYPOSITION ybase,
		const char *s, int len, ColourDesired fore);
	virtual void MeasureWidths(Font &font, const char *s, int len,
		XYPOSITION *positions);
	virtual XYPOSITION WidthText(Font &font, const char *s, int len);
	virtual XYPOSITION WidthChar(Font &font, char ch);
	virtual XYPOSITION Ascent(Font &font);
	virtual XYPOSITION Descent(Font &font);
	virtual XYPOSITION InternalLeading(Font &font);
	virtual XYPOSITION ExternalLeading(Font &font);
	virtual XYPOSITION Height(Font &font);
	virtual XYPOSITION AverageCharWidth(Font &font);

	virtual void SetClip(PRectangle rc);
	virtual void FlushCachedState();

	virtual void SetUnicodeMode(bool unicodeMode);
	virtual void SetDBCSMode(int codePage);

	void BrushColour(ColourDesired back);
	void SetCodec(Font &font);
	void SetFont(Font &font);

	QPaintDevice *GetPaintDevice();
	void SetPainter(QPainter *painter);
	QPainter *GetPainter();
};

#ifdef SCI_NAMESPACE
}
#endif

#endif