// Author: Vadim Zeitlin
// Modified by:
// Created: 21.07.2003
-// RCS-ID: $Id$
// Copyright: (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
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; }
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,
wxFloodFillStyle style = wxFLOOD_SURFACE)
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),
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),
virtual bool DoBlit(wxCoord xdest, wxCoord ydest,
wxCoord w, wxCoord h,
wxDC *source, wxCoord xsrc, wxCoord ysrc,
- wxRasterOperationMode rop = wxCOPY,
+ wxRasterOperationMode rop = wxCOPY,
bool useMask = false,
wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord)
{
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,
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 DoSetDeviceClippingRegion(const wxRegion& WXUNUSED(region))
{
- wxFAIL_MSG( _T("not implemented") );
+ wxFAIL_MSG( wxT("not implemented") );
}
virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
bool m_mirror;
- DECLARE_NO_COPY_CLASS(wxMirrorDCImpl)
+ wxDECLARE_NO_COPY_CLASS(wxMirrorDCImpl);
};
class WXDLLIMPEXP_CORE wxMirrorDC : public wxDC
private:
bool m_mirror;
- DECLARE_NO_COPY_CLASS(wxMirrorDC)
+ wxDECLARE_NO_COPY_CLASS(wxMirrorDC);
};
#endif // _WX_DCMIRROR_H_