X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2261baf7a458e8b02d40e1d92b81b69b54435808..5d4cca7f4bcbead614819eaa8d79e0edee24b70c:/include/wx/dc.h diff --git a/include/wx/dc.h b/include/wx/dc.h index b94afb35c0..8599c02433 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -46,7 +46,7 @@ class WXDLLIMPEXP_FWD_CORE wxPrintData; // wxDrawObject helper class //----------------------------------------------------------------------------- -class WXDLLEXPORT wxDrawObject +class WXDLLIMPEXP_CORE wxDrawObject { public: @@ -182,6 +182,12 @@ public: virtual bool CanDrawBitmap() const = 0; virtual bool CanGetTextExtent() const = 0; + // get Cairo context + virtual void* GetCairoContext() const + { + return NULL; + } + // query dimension, colour deps, resolution virtual void DoGetSize(int *width, int *height) const = 0; @@ -310,7 +316,9 @@ public: virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height) = 0; - virtual void DoSetClippingRegionAsRegion(const wxRegion& region) = 0; + + // NB: this function works with device coordinates, not the logical ones! + virtual void DoSetDeviceClippingRegion(const wxRegion& region) = 0; virtual void DoGetClippingBox(wxCoord *x, wxCoord *y, wxCoord *w, wxCoord *h) const @@ -463,8 +471,12 @@ public: #if wxUSE_SPLINES - virtual void DoDrawSpline(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord x3, wxCoord y3); - virtual void DoDrawSpline(int n, wxPoint points[]); + void DrawSpline(wxCoord x1, wxCoord y1, + wxCoord x2, wxCoord y2, + wxCoord x3, wxCoord y3); + void DrawSpline(int n, wxPoint points[]); + void DrawSpline(const wxPointList *points) { DoDrawSpline(points); } + virtual void DoDrawSpline(const wxPointList *points); #endif @@ -786,8 +798,21 @@ public: { m_pimpl->DoSetClippingRegion(pt.x, pt.y, sz.x, sz.y); } void SetClippingRegion(const wxRect& rect) { m_pimpl->DoSetClippingRegion(rect.x, rect.y, rect.width, rect.height); } - void SetClippingRegion(const wxRegion& region) - { m_pimpl->DoSetClippingRegionAsRegion(region); } + + // unlike the functions above, the coordinates of the region used in this + // one are in device coordinates, not the logical ones + void SetDeviceClippingRegion(const wxRegion& region) + { m_pimpl->DoSetDeviceClippingRegion(region); } + + // this function is deprecated because its name is confusing: you may + // expect it to work with logical coordinates but, in fact, it does exactly + // the same thing as SetDeviceClippingRegion() + // + // please review the code using it and either replace it with calls to + // SetDeviceClippingRegion() or correct it if it was [wrongly] passing + // logical coordinates to this function + wxDEPRECATED_INLINE(void SetClippingRegion(const wxRegion& region), + SetDeviceClippingRegion(region); ) void DestroyClippingRegion() { m_pimpl->DestroyClippingRegion(); } @@ -1071,11 +1096,11 @@ public: void DrawSpline(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord x3, wxCoord y3) - { m_pimpl->DoDrawSpline(x1,y1,x2,y2,x3,y3); } + { m_pimpl->DrawSpline(x1,y1,x2,y2,x3,y3); } void DrawSpline(int n, wxPoint points[]) - { m_pimpl->DoDrawSpline(n,points); } + { m_pimpl->DrawSpline(n,points); } void DrawSpline(const wxPointList *points) - { m_pimpl->DoDrawSpline(points); } + { m_pimpl->DrawSpline(points); } #endif // wxUSE_SPLINES @@ -1108,7 +1133,7 @@ private: // restore it automatically when the object goes out of scope // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDCTextColourChanger +class WXDLLIMPEXP_CORE wxDCTextColourChanger { public: wxDCTextColourChanger(wxDC& dc) : m_dc(dc), m_colFgOld() { } @@ -1144,7 +1169,7 @@ private: // restore it automatically when the object goes out of scope // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDCPenChanger +class WXDLLIMPEXP_CORE wxDCPenChanger { public: wxDCPenChanger(wxDC& dc, const wxPen& pen) : m_dc(dc), m_penOld(dc.GetPen()) @@ -1171,7 +1196,7 @@ private: // restore it automatically when the object goes out of scope // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDCBrushChanger +class WXDLLIMPEXP_CORE wxDCBrushChanger { public: wxDCBrushChanger(wxDC& dc, const wxBrush& brush) : m_dc(dc), m_brushOld(dc.GetBrush()) @@ -1198,11 +1223,11 @@ private: // destroys it in the dtor // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDCClipper +class WXDLLIMPEXP_CORE wxDCClipper { public: wxDCClipper(wxDC& dc, const wxRegion& r) : m_dc(dc) - { dc.SetClippingRegion(r); } + { dc.SetClippingRegion(r.GetBox()); } wxDCClipper(wxDC& dc, const wxRect& r) : m_dc(dc) { dc.SetClippingRegion(r.x, r.y, r.width, r.height); } wxDCClipper(wxDC& dc, wxCoord x, wxCoord y, wxCoord w, wxCoord h) : m_dc(dc)