#if wxUSE_PRINTING_ARCHITECTURE
class WXDLLIMPEXP_FWD_CORE wxPrinterDC;
#endif
+#ifdef __WXMSW__
+#if wxUSE_ENH_METAFILE
+class WXDLLIMPEXP_FWD_CORE wxEnhMetaFileDC;
+#endif
+#endif
class WXDLLIMPEXP_FWD_CORE wxGraphicsContext;
class WXDLLIMPEXP_FWD_CORE wxGraphicsPath;
class WXDLLIMPEXP_FWD_CORE wxGraphicsMatrix;
class wxGraphicsGradientStop
{
public:
- wxGraphicsGradientStop(wxColour col, float pos)
+ wxGraphicsGradientStop(wxColour col = wxTransparentColour,
+ float pos = 0.)
: m_col(col),
m_pos(pos)
{
{
// we can't use Add() here as it relies on having start/end stops as
// first/last array elements so do it manually
- m_stops.push_back(wxGraphicsGradientStop(startCol, 0.));
- m_stops.push_back(wxGraphicsGradientStop(endCol, 1.));
+ m_stops.push_back(wxGraphicsGradientStop(startCol, 0.f));
+ m_stops.push_back(wxGraphicsGradientStop(endCol, 1.f));
}
// default copy ctor, assignment operator and dtor are ok for this class
static wxGraphicsContext * Create( const wxMemoryDC& dc);
#if wxUSE_PRINTING_ARCHITECTURE
static wxGraphicsContext * Create( const wxPrinterDC& dc);
+#endif
+#ifdef __WXMSW__
+#if wxUSE_ENH_METAFILE
+ static wxGraphicsContext * Create( const wxEnhMetaFileDC& dc);
+#endif
#endif
static wxGraphicsContext* CreateFromNative( void * context );
virtual bool SetCompositionMode(wxCompositionMode op) = 0;
// returns the size of the graphics context in device coordinates
- virtual void GetSize( wxDouble* width, wxDouble* height);
+ void GetSize(wxDouble* width, wxDouble* height)
+ {
+ if ( width )
+ *width = m_width;
+ if ( height )
+ *height = m_height;
+ }
// returns the resolution of the graphics context in device points per inch
virtual void GetDPI( wxDouble* dpiX, wxDouble* dpiY);
// helper to determine if a 0.5 offset should be applied for the drawing operation
virtual bool ShouldOffset() const { return false; }
-
+
+ // indicates whether the context should try to offset for pixel boundaries, this only makes sense on
+ // bitmap devices like screen, by default this is turned off
+ virtual void EnableOffset(bool enable = true);
+
+ void DisableOffset() { EnableOffset(false); }
+ bool OffsetEnabled() { return m_enableOffset; }
+
protected:
+ // These fields must be initialized in the derived class ctors.
+ wxDouble m_width,
+ m_height;
wxGraphicsPen m_pen;
wxGraphicsBrush m_brush;
wxGraphicsFont m_font;
wxAntialiasMode m_antialias;
wxCompositionMode m_composition;
+ bool m_enableOffset;
protected:
// implementations of overloaded public functions: we use different names
virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc) = 0;
#if wxUSE_PRINTING_ARCHITECTURE
virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc) = 0;
+#endif
+#ifdef __WXMSW__
+#if wxUSE_ENH_METAFILE
+ virtual wxGraphicsContext * CreateContext( const wxEnhMetaFileDC& dc) = 0;
+#endif
#endif
virtual wxGraphicsContext * CreateContextFromNativeContext( void * context ) = 0;