class WXDLLIMPEXP_FWD_CORE wxPrinterDC;
class WXDLLIMPEXP_FWD_CORE wxPrintData;
+#if wxUSE_GRAPHICS_CONTEXT
+class WXDLLIMPEXP_FWD_CORE wxGraphicsContext;
+#endif
+
// Logical ops
enum wxRasterOperationMode
{
}
virtual void SetLogicalScale(double x, double y);
- virtual void GetLogicalScale(double *x, double *y)
+ virtual void GetLogicalScale(double *x, double *y) const
{
if ( x ) *x = m_logicalScaleX;
if ( y ) *y = m_logicalScaleY;
// this needs to overidden if the axis is inverted
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
+#ifdef __WXMSW__
+ // Native Windows functions using the underlying HDC don't honour GDI+
+ // transformations which may be applied to it. Using this function we can
+ // transform the coordinates manually before passing them to such functions
+ // (as in e.g. wxRendererMSW code). It doesn't do anything if this is not a
+ // wxGCDC.
+ virtual wxRect MSWApplyGDIPlusTransform(const wxRect& r) const
+ {
+ return r;
+ }
+#endif // __WXMSW__
+
+
// ---------------------------------------------------------
// the actual drawing API
virtual int GetResolution() const
{ return -1; }
+#if wxUSE_GRAPHICS_CONTEXT
+ virtual wxGraphicsContext* GetGraphicsContext() const
+ { return NULL; }
+ virtual void SetGraphicsContext( wxGraphicsContext* WXUNUSED(ctx) )
+ {}
+#endif
+
private:
wxDC *m_owner;
void SetLogicalScale(double x, double y)
{ m_pimpl->SetLogicalScale( x, y ); }
- void GetLogicalScale(double *x, double *y)
+ void GetLogicalScale(double *x, double *y) const
{ m_pimpl->GetLogicalScale( x, y ); }
void SetLogicalOrigin(wxCoord x, wxCoord y)
TempHDC GetTempHDC() { return TempHDC(*this); }
#endif // __WXMSW__
+#if wxUSE_GRAPHICS_CONTEXT
+ virtual wxGraphicsContext* GetGraphicsContext() const
+ {
+ return m_pimpl->GetGraphicsContext();
+ }
+ virtual void SetGraphicsContext( wxGraphicsContext* ctx )
+ {
+ m_pimpl->SetGraphicsContext(ctx);
+ }
+#endif
+
protected:
// ctor takes ownership of the pointer
wxDC(wxDCImpl *pimpl) : m_pimpl(pimpl) { }
~wxDCTextColourChanger()
{
- if ( m_colFgOld.Ok() )
+ if ( m_colFgOld.IsOk() )
m_dc.SetTextForeground(m_colFgOld);
}
void Set(const wxColour& col)
{
- if ( !m_colFgOld.Ok() )
+ if ( !m_colFgOld.IsOk() )
m_colFgOld = m_dc.GetTextForeground();
m_dc.SetTextForeground(col);
}
~wxDCPenChanger()
{
- if ( m_penOld.Ok() )
+ if ( m_penOld.IsOk() )
m_dc.SetPen(m_penOld);
}
~wxDCBrushChanger()
{
- if ( m_brushOld.Ok() )
+ if ( m_brushOld.IsOk() )
m_dc.SetBrush(m_brushOld);
}
void Set(const wxFont& font)
{
- if ( !m_fontOld.Ok() )
+ if ( !m_fontOld.IsOk() )
m_fontOld = m_dc.GetFont();
m_dc.SetFont(font);
}
~wxDCFontChanger()
{
- if ( m_fontOld.Ok() )
+ if ( m_fontOld.IsOk() )
m_dc.SetFont(m_fontOld);
}