X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f0875501313903140a41dca0ba6ee2d85ed0536c..d642db66a5efc82d374b813022c72ba88bc50839:/include/wx/dcmirror.h diff --git a/include/wx/dcmirror.h b/include/wx/dcmirror.h index 5ffb9382a5..890667cc88 100644 --- a/include/wx/dcmirror.h +++ b/include/wx/dcmirror.h @@ -18,7 +18,7 @@ // wxMirrorDC allows to write the same code for horz/vertical layout // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMirrorDCImpl : public wxDCImpl +class WXDLLIMPEXP_CORE wxMirrorDCImpl : public wxDCImpl { public: // constructs a mirror DC associated with the given real DC @@ -53,7 +53,7 @@ public: virtual int GetDepth() const { return m_dc.GetDepth(); } virtual wxSize GetPPI() const { return m_dc.GetPPI(); } virtual bool IsOk() const { return m_dc.IsOk(); } - virtual void SetMapMode(int mode) { m_dc.SetMapMode(mode); } + virtual void SetMapMode(wxMappingMode mode) { m_dc.SetMapMode(mode); } virtual void SetUserScale(double x, double y) { m_dc.SetUserScale(GetX(x, y), GetY(x, y)); } virtual void SetLogicalOrigin(wxCoord x, wxCoord y) @@ -63,9 +63,12 @@ public: virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp) { m_dc.SetAxisOrientation(GetX(xLeftRight, yBottomUp), GetY(xLeftRight, yBottomUp)); } - virtual void SetLogicalFunction(int function) + virtual void SetLogicalFunction(wxRasterOperationMode function) { m_dc.SetLogicalFunction(function); } + virtual void* GetHandle() const + { return m_dc.GetHandle(); } + protected: // returns x and y if not mirroring or y and x if mirroring wxCoord GetX(wxCoord x, wxCoord y) const { return m_mirror ? y : x; } @@ -79,30 +82,26 @@ protected: wxCoord *GetX(wxCoord *x, wxCoord *y) const { return m_mirror ? y : x; } wxCoord *GetY(wxCoord *x, wxCoord *y) const { return m_mirror ? x : y; } - // exchange x and y unconditionally - static void Swap(wxCoord& x, wxCoord& y) - { - wxCoord t = x; - x = y; - y = t; - } - // exchange x and y components of all points in the array if necessary - void Mirror(int n, wxPoint points[]) const + wxPoint* Mirror(int n, const wxPoint*& points) const { + wxPoint* points_alloc = NULL; if ( m_mirror ) { + points_alloc = new wxPoint[n]; for ( int i = 0; i < n; i++ ) { - Swap(points[i].x, points[i].y); + points_alloc[i].x = points[i].y; + points_alloc[i].y = points[i].x; } + points = points_alloc; } + return points_alloc; } - // wxDCBase functions virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, - int style = wxFLOOD_SURFACE) + wxFloodFillStyle style = wxFLOOD_SURFACE) { return m_dc.DoFloodFill(GetX(x, y), GetY(x, y), col, style); } @@ -127,7 +126,7 @@ protected: wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc) { - wxFAIL_MSG( _T("this is probably wrong") ); + wxFAIL_MSG( wxT("this is probably wrong") ); m_dc.DoDrawArc(GetX(x1, y1), GetY(x1, y1), GetX(x2, y2), GetY(x2, y2), @@ -144,7 +143,7 @@ protected: virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h, double sa, double ea) { - wxFAIL_MSG( _T("this is probably wrong") ); + wxFAIL_MSG( wxT("this is probably wrong") ); m_dc.DoDrawEllipticArc(GetX(x, y), GetY(x, y), GetX(w, h), GetY(w, h), @@ -202,7 +201,8 @@ protected: virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord w, wxCoord h, wxDC *source, wxCoord xsrc, wxCoord ysrc, - int rop = wxCOPY, bool useMask = false, + wxRasterOperationMode rop = wxCOPY, + bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord) { return m_dc.DoBlit(GetX(xdest, ydest), GetY(xdest, ydest), @@ -222,33 +222,33 @@ protected: m_dc.DoGetSizeMM(GetX(w, h), GetY(w, h)); } - virtual void DoDrawLines(int n, wxPoint points[], + virtual void DoDrawLines(int n, const wxPoint points[], wxCoord xoffset, wxCoord yoffset) { - Mirror(n, points); + wxPoint* points_alloc = Mirror(n, points); m_dc.DoDrawLines(n, points, GetX(xoffset, yoffset), GetY(xoffset, yoffset)); - Mirror(n, points); + delete[] points_alloc; } - virtual void DoDrawPolygon(int n, wxPoint points[], + virtual void DoDrawPolygon(int n, const wxPoint points[], wxCoord xoffset, wxCoord yoffset, - int fillStyle = wxODDEVEN_RULE) + wxPolygonFillMode fillStyle = wxODDEVEN_RULE) { - Mirror(n, points); + wxPoint* points_alloc = Mirror(n, points); m_dc.DoDrawPolygon(n, points, GetX(xoffset, yoffset), GetY(xoffset, yoffset), fillStyle); - Mirror(n, points); + delete[] points_alloc; } - virtual void DoSetClippingRegionAsRegion(const wxRegion& WXUNUSED(region)) + virtual void DoSetDeviceClippingRegion(const wxRegion& WXUNUSED(region)) { - wxFAIL_MSG( _T("not implemented") ); + wxFAIL_MSG( wxT("not implemented") ); } virtual void DoSetClippingRegion(wxCoord x, wxCoord y, @@ -272,10 +272,10 @@ private: bool m_mirror; - DECLARE_NO_COPY_CLASS(wxMirrorDCImpl) + wxDECLARE_NO_COPY_CLASS(wxMirrorDCImpl); }; -class WXDLLEXPORT wxMirrorDC : public wxDC +class WXDLLIMPEXP_CORE wxMirrorDC : public wxDC { public: wxMirrorDC(wxDC& dc, bool mirror) @@ -293,7 +293,7 @@ public: private: bool m_mirror; - DECLARE_NO_COPY_CLASS(wxMirrorDC) + wxDECLARE_NO_COPY_CLASS(wxMirrorDC); }; #endif // _WX_DCMIRROR_H_