#include "wx/geometry.h"
#include "wx/dynarray.h"
+#include "wx/graphics.h"
-class WXDLLEXPORT wxGraphicsContext;
-class WXDLLEXPORT wxWindowDC;
-
+class WXDLLIMPEXP_FWD_CORE wxWindowDC;
#ifdef __WXMAC__
#define wxGCDC wxDC
class WXDLLEXPORT wxGCDC:
#ifdef __WXMAC__
- public wxDCBase
+ public wxDCBase
#else
- public wxDC
+ public wxDC
#endif
{
DECLARE_DYNAMIC_CLASS(wxGCDC)
public:
wxGCDC(const wxWindowDC& dc);
+#ifdef __WXMSW__
+ wxGCDC( const wxMemoryDC& dc);
+#endif
wxGCDC();
virtual ~wxGCDC();
virtual void Clear();
- virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return true; }
- virtual void EndDoc(void) {}
+ virtual bool StartDoc( const wxString& message );
+ virtual void EndDoc();
- virtual void StartPage(void) {}
- virtual void EndPage(void) {}
+ virtual void StartPage();
+ virtual void EndPage();
+
+ // flushing the content of this dc immediately onto screen
+ virtual void Flush();
virtual void SetFont(const wxFont& font);
virtual void SetPen(const wxPen& pen);
virtual void ComputeScaleAndOrigin();
- wxGraphicsContext* GetGraphicContext() { return m_graphicContext; }
- virtual void SetGraphicsContext( wxGraphicsContext* ctx )
- { delete m_graphicContext; m_graphicContext = ctx; }
+ wxGraphicsContext* GetGraphicsContext() { return m_graphicContext; }
+ virtual void SetGraphicsContext( wxGraphicsContext* ctx );
+
protected:
// the true implementations
virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col,
virtual void DoDrawPoint(wxCoord x, wxCoord y);
#if wxUSE_SPLINES
- virtual void DoDrawSpline(wxList *points);
+ virtual void DoDrawSpline(const wxPointList *points);
#endif
virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
wxDC *source, wxCoord xsrc, wxCoord ysrc,
int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = -1, wxCoord ysrcMask = -1);
+ virtual bool DoStretchBlit(wxCoord xdest, wxCoord ydest,
+ wxCoord dstWidth, wxCoord dstHeight,
+ wxDC *source,
+ wxCoord xsrc, wxCoord ysrc,
+ wxCoord srcWidth, wxCoord srcHeight,
+ int rop = wxCOPY, bool useMask = false,
+ wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord);
+
virtual void DoGetSize(int *,int *) const;
virtual void DoGetSizeMM(int* width, int* height) const;
wxCoord *x, wxCoord *y,
wxCoord *descent = NULL,
wxCoord *externalLeading = NULL,
- wxFont *theFont = NULL) const;
+ const wxFont *theFont = NULL) const;
virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const;
protected:
// scaling variables
+ bool m_logicalFunctionSupported;
double m_mm_to_pix_x, m_mm_to_pix_y;
-
- double m_formerScaleX, m_formerScaleY;
+ wxGraphicsMatrix m_matrixOriginal;
+ wxGraphicsMatrix m_matrixCurrent;
+
+ double m_formerScaleX, m_formerScaleY;
wxGraphicsContext* m_graphicContext;
};