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
|