+//----------------------------------------------------------------------
+
+class SurfaceImpl : public Surface {
+private:
+ wxDC* hdc;
+ bool hdcOwned;
+ wxBitmap* bitmap;
+ int x;
+ int y;
+ bool unicodeMode;
+
+public:
+ SurfaceImpl();
+ ~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(ColourAllocated 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, ColourAllocated fore, ColourAllocated back);
+ virtual void RectangleDraw(PRectangle rc, ColourAllocated fore, ColourAllocated back);
+ virtual void FillRectangle(PRectangle rc, ColourAllocated back);
+ virtual void FillRectangle(PRectangle rc, Surface &surfacePattern);
+ virtual void RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back);
+ virtual void Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back);
+ virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource);
+
+ virtual void DrawTextNoClip(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore, ColourAllocated back);
+ virtual void DrawTextClipped(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore, ColourAllocated back);
+ virtual void DrawTextTransparent(PRectangle rc, Font &font_, int ybase, const char *s, int len, ColourAllocated fore);
+ virtual void MeasureWidths(Font &font_, const char *s, int len, int *positions);
+ virtual int WidthText(Font &font_, const char *s, int len);
+ virtual int WidthChar(Font &font_, char ch);
+ virtual int Ascent(Font &font_);
+ virtual int Descent(Font &font_);
+ virtual int InternalLeading(Font &font_);
+ virtual int ExternalLeading(Font &font_);
+ virtual int Height(Font &font_);
+ virtual int AverageCharWidth(Font &font_);
+
+ virtual int SetPalette(Palette *pal, bool inBackGround);
+ virtual void SetClip(PRectangle rc);
+ virtual void FlushCachedState();
+
+ virtual void SetUnicodeMode(bool unicodeMode_);
+ virtual void SetDBCSMode(int codePage);
+
+ void BrushColour(ColourAllocated back);
+ void SetFont(Font &font_);
+};
+
+
+
+SurfaceImpl::SurfaceImpl() :