- virtual bool StartDoc(const wxString& message);
- virtual void EndDoc(void);
- virtual void StartPage(void);
- virtual void EndPage(void);
- virtual void SetMapMode(int mode);
- virtual void SetUserScale(double x, double y);
- virtual void SetSystemScale(double x, double y);
- virtual void SetLogicalOrigin(long x, long y);
- virtual void SetDeviceOrigin(long x, long y);
-
- // This group of functions does actual conversion
- // of the input, as you'd expect.
-
- long DeviceToLogicalX(long x) const;
- long DeviceToLogicalY(long y) const;
- long DeviceToLogicalXRel(long x) const;
- long DeviceToLogicalYRel(long y) const;
- long LogicalToDeviceX(long x) const;
- long LogicalToDeviceY(long y) const;
- long LogicalToDeviceXRel(long x) const;
- long LogicalToDeviceYRel(long y) const;
-
- // This group of functions may not do any conversion
- // if m_scaleGDI is TRUE, since the HDC does the
- // conversion automatically.
- // m_scaleGDI NOW OBSOLETE
- long ImplDeviceToLogicalX(long x) const;
- long ImplDeviceToLogicalY(long y) const;
- long ImplDeviceToLogicalXRel(long x) const;
- long ImplDeviceToLogicalYRel(long y) const;
- long ImplLogicalToDeviceX(long x) const;
- long ImplLogicalToDeviceY(long y) const;
- long ImplLogicalToDeviceXRel(long x) const;
- long ImplLogicalToDeviceYRel(long y) const;
-
- virtual bool Blit(long xdest, long ydest, long width, long height,
- wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE);
-
- virtual bool CanDrawBitmap(void) const;
- virtual bool CanGetTextExtent(void) const;
-
- //
- // This function is intended to improves drawing, by avoiding to
- // repeatly call ::SetPen/::SetBrush. If set to FALSE, these functions
- // aren't called when calling ::DrawLine(),...
- // Please note that this is YOUR responsability to use it, and do it
- // only when you KNOWN that pen/brush isn't changed between 2 calls to
- // DrawLine,... !!!
- // Note also that in X, we don't test m_autoSetting on brushes, because they
- // modify Foreground, as pens. So, convention is:
- // - call your SetBrush(), THEN your SetPen, THEN AutoSetTools(FALSE)
- // - call DrawLine,...
- // [mainly coded for Windows]
- inline virtual void AutoSetTools(bool auto_setting) { m_autoSetting = auto_setting ; }
- inline virtual void DrawPoint(wxPoint& point) { DrawPoint(point.x, point.y); }
- virtual void DrawLines(wxList *list, long xoffset = 0, long yoffset = 0);
- virtual void DrawPolygon(wxList *list, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE);
-#if USE_SPLINES
- // Splines
- // 3-point spline
- virtual void DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3);
- // Any number of control points - a list of pointers to wxPoints
- virtual void DrawSpline(wxList *points);
- virtual void DrawSpline(int n, wxPoint points[]);
+ // we might have a pre existing clipping region, make sure that we
+ // return it if asked -- but avoid calling ::GetClipBox() right now as
+ // it could be unnecessary wasteful
+ m_clipping = true;
+ m_clipX1 =
+ m_clipX2 = 0;
+ }
+
+ const wxBitmap& GetSelectedBitmap() const { return m_selectedBitmap; }
+ wxBitmap& GetSelectedBitmap() { return m_selectedBitmap; }
+
+ // update the internal clip box variables
+ void UpdateClipBox();
+
+#if wxUSE_DC_CACHEING
+ static wxDCCacheEntry* FindBitmapInCache(WXHDC hDC, int w, int h);
+ static wxDCCacheEntry* FindDCInCache(wxDCCacheEntry* notThis, WXHDC hDC);
+
+ static void AddToBitmapCache(wxDCCacheEntry* entry);
+ static void AddToDCCache(wxDCCacheEntry* entry);
+ static void ClearCache();