diff options
Diffstat (limited to 'qt/ScintillaEditBase/PlatQt.h')
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.h b/qt/ScintillaEditBase/PlatQt.h new file mode 100644 index 000000000..60a7e7300 --- /dev/null +++ b/qt/ScintillaEditBase/PlatQt.h @@ -0,0 +1,127 @@ +// +// 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 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 |