]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/graphics.h
clarify role of wxToolBarToolBase (fixes #9874)
[wxWidgets.git] / interface / wx / graphics.h
index 45360115b73a8c7da567e265af39a70fc39b87f7..f9427a950f3edf380ebab3cd1923440b81270991 100644 (file)
 
 /**
     @class wxGraphicsPath
-    @wxheader{graphics.h}
 
-    A wxGraphicsPath is a native representation of an geometric path. The contents
-    are specific an private to the respective renderer. Instances are ref counted and can
-    therefore be assigned as usual. The only way to get a valid instance is via a
-    CreatePath call on the graphics context or the renderer instance.
+    A wxGraphicsPath is a native representation of a geometric path. The
+    contents are specific an private to the respective renderer. Instances are
+    reference counted and can therefore be assigned as usual. The only way to
+    get a valid instance is by using wxGraphicsContext::CreatePath() or
+    wxGraphicsRenderer::CreatePath().
 
     @library{wxcore}
-    @category{FIXME}
+    @category{gdi}
 */
 class wxGraphicsPath : public wxGraphicsObject
 {
 public:
-    //@{
     /**
-
+        Adds an arc of a circle centering at (@a x,@a y) with radius (@a r)
+        from @a startAngle to @a endAngle.
+    */
+    virtual void AddArc(wxDouble x, wxDouble y, wxDouble r,
+                        wxDouble startAngle, wxDouble endAngle,
+                        bool clockwise);
+    /**
+        Adds an arc of a circle centering at @a c with radius (@a r)
+        from @a startAngle to @a endAngle.
     */
-    void AddArc(wxDouble x, wxDouble y, wxDouble r,
-                wxDouble startAngle,
-                wxDouble endAngle, bool clockwise);
     void AddArc(const wxPoint2DDouble& c, wxDouble r,
-                wxDouble startAngle,
-                wxDouble endAngle,
-                bool clockwise);
-    //@}
+                wxDouble startAngle, wxDouble endAngle, bool clockwise);
 
     /**
-        Appends a an arc to two tangents connecting (current) to (x1,y1) and (x1,y1) to
-        (x2,y2), also a straight line from (current) to (x1,y1).
+        Appends a an arc to two tangents connecting (current) to (@a x1,@a y1)
+        and (@a x1,@a y1) to (@a x2,@a y2), also a straight line from (current)
+        to (@a x1,@a y1).
     */
-    void AddArcToPoint(wxDouble x1, wxDouble y1, wxDouble x2,
-                       wxDouble y2,
-                       wxDouble r);
+    virtual void AddArcToPoint(wxDouble x1, wxDouble y1, wxDouble x2,
+                               wxDouble y2, wxDouble r);
 
     /**
-        Appends a circle around (x,y) with radius r as a new closed subpath.
+        Appends a circle around (@a x,@a y) with radius @a r as a new closed
+        subpath.
     */
-    void AddCircle(wxDouble x, wxDouble y, wxDouble r);
+    virtual void AddCircle(wxDouble x, wxDouble y, wxDouble r);
 
-    //@{
     /**
-
+        Adds a cubic bezier curve from the current point, using two control
+        points and an end point.
+    */
+    virtual void AddCurveToPoint(wxDouble cx1, wxDouble cy1,
+                                 wxDouble cx2, wxDouble cy2,
+                                 wxDouble x, wxDouble y);
+    /**
+        Adds a cubic bezier curve from the current point, using two control
+        points and an end point.
     */
-    void AddCurveToPoint(wxDouble cx1, wxDouble cy1, wxDouble cx2,
-                         wxDouble cy2,
-                         wxDouble x,
-                         wxDouble y);
     void AddCurveToPoint(const wxPoint2DDouble& c1,
                          const wxPoint2DDouble& c2,
                          const wxPoint2DDouble& e);
-    //@}
 
     /**
         Appends an ellipse fitting into the passed in rectangle.
     */
-    void AddEllipse(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
+    virtual void AddEllipse(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
 
-    //@{
     /**
-
+        Adds a straight line from the current point to (@a x,@a y).
+    */
+    virtual void AddLineToPoint(wxDouble x, wxDouble y);
+    /**
+        Adds a straight line from the current point to @a p.
     */
-    void AddLineToPoint(wxDouble x, wxDouble y);
     void AddLineToPoint(const wxPoint2DDouble& p);
-    //@}
 
     /**
         Adds another path.
     */
-    void AddPath(const wxGraphicsPath& path);
+    virtual void AddPath(const wxGraphicsPath& path);
 
     /**
-        Adds a quadratic Bezier curve from the current point, using a control point and
-        an end point.
+        Adds a quadratic bezier curve from the current point, using a control
+        point and an end point.
     */
-    void AddQuadCurveToPoint(wxDouble cx, wxDouble cy, wxDouble x,
-                             wxDouble y);
+    virtual void AddQuadCurveToPoint(wxDouble cx, wxDouble cy,
+                                     wxDouble x, wxDouble y);
 
     /**
         Appends a rectangle as a new closed subpath.
     */
-    void AddRectangle(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
+    virtual void AddRectangle(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
 
     /**
         Appends a rounded rectangle as a new closed subpath.
     */
-    void AddRoundedRectangle(wxDouble x, wxDouble y, wxDouble w,
-                             wxDouble h,
-                             wxDouble radius);
+    virtual void AddRoundedRectangle(wxDouble x, wxDouble y, wxDouble w,
+                                     wxDouble h, wxDouble radius);
 
     /**
         Closes the current sub-path.
     */
-    void CloseSubpath();
+    virtual void CloseSubpath();
 
-    //@{
     /**
-        Returns @true if the point is within the path.
+        @return @true if the point is within the path.
     */
     bool Contains(const wxPoint2DDouble& c,
                   int fillStyle = wxODDEVEN_RULE) const;
-    const bool Contains(wxDouble x, wxDouble y,
-                        int fillStyle = wxODDEVEN_RULE) const;
-    //@}
+    /**
+        @return @true if the point is within the path.
+    */
+    virtual bool Contains(wxDouble x, wxDouble y,
+                          int fillStyle = wxODDEVEN_RULE) const;
 
-    //@{
     /**
-        Gets the bounding box enclosing all points (possibly including control points).
+        Gets the bounding box enclosing all points (possibly including control
+        points).
     */
     wxRect2DDouble GetBox() const;
-    const void GetBox(wxDouble* x, wxDouble* y, wxDouble* w,
-                      wxDouble* h) const;
-    //@}
+    /**
+        Gets the bounding box enclosing all points (possibly including control
+        points).
+    */
+    virtual void GetBox(wxDouble* x, wxDouble* y,
+                        wxDouble* w, wxDouble* h) const;
 
-    //@{
     /**
         Gets the last point of the current path, (0,0) if not yet set.
     */
-    void GetCurrentPoint(wxDouble* x, wxDouble* y) const;
-    const wxPoint2DDouble GetCurrentPoint() const;
-    //@}
+    virtual void GetCurrentPoint(wxDouble* x, wxDouble* y) const;
+    /**
+        Gets the last point of the current path, (0,0) if not yet set.
+    */
+    wxPoint2DDouble GetCurrentPoint() const;
 
     /**
-        Returns the native path (CGPathRef for Core Graphics, Path pointer for GDIPlus
-        and a cairo_path_t pointer for cairo).
+        Returns the native path (CGPathRef for Core Graphics, Path pointer for
+        GDIPlus and a cairo_path_t pointer for cairo).
     */
-    void* GetNativePath() const;
+    virtual void* GetNativePath() const;
 
-    //@{
     /**
-        Begins a new subpath at (x,y)
+        Begins a new subpath at (@a x,@a y).
+    */
+    virtual void MoveToPoint(wxDouble x, wxDouble y);
+    /**
+        Begins a new subpath at @a p.
     */
-    void MoveToPoint(wxDouble x, wxDouble y);
     void MoveToPoint(const wxPoint2DDouble& p);
-    //@}
 
     /**
         Transforms each point of this path by the matrix.
     */
-    void Transform(const wxGraphicsMatrix& matrix);
+    virtual void Transform(const wxGraphicsMatrix& matrix);
 
     /**
-        Gives back the native path returned by GetNativePath() because there might be
-        some deallocations necessary (eg on cairo the native path returned by
-        GetNativePath is newly allocated each time).
+        Gives back the native path returned by GetNativePath() because there
+        might be some deallocations necessary (e.g. on cairo the native path
+        returned by GetNativePath() is newly allocated each time).
     */
-    void UnGetNativePath(void* p) const;
+    virtual void UnGetNativePath(void* p) const;
 };
 
 
 
 /**
     @class wxGraphicsObject
-    @wxheader{graphics.h}
 
     This class is the superclass of native graphics objects like pens etc. It
     allows reference counting. Not instantiated by user code.
 
     @library{wxcore}
-    @category{FIXME}
+    @category{gdi}
 
     @see wxGraphicsBrush, wxGraphicsPen, wxGraphicsMatrix, wxGraphicsPath
 */
@@ -174,13 +183,13 @@ class wxGraphicsObject : public wxObject
 {
 public:
     /**
-        Returns the renderer that was used to create this instance, or @NULL if it has
-        not been initialized yet
+        Returns the renderer that was used to create this instance, or @NULL
+        if it has not been initialized yet.
     */
     wxGraphicsRenderer* GetRenderer() const;
 
     /**
-        Is this object valid (@false) or still empty (@true)?
+        @return @false if this object is valid, otherwise returns @true.
     */
     bool IsNull() const;
 };
@@ -189,7 +198,6 @@ public:
 
 /**
     @class wxGraphicsContext
-    @wxheader{graphics.h}
 
     A wxGraphicsContext instance is the object that is drawn upon. It is created by
     a renderer using wxGraphicsRenderer::CreateContext(). This can be either directly
@@ -201,10 +209,10 @@ public:
     {
         // Create paint DC
         wxPaintDC dc(this);
-        
+
         // Create graphics context from it
         wxGraphicsContext *gc = wxGraphicsContext::Create( dc );
-    
+
         if (gc)
         {
             // make a path that contains a circle and some lines
@@ -217,9 +225,9 @@ public:
             path.AddLineToPoint(50.0, 100.0 );
             path.CloseSubpath();
             path.AddRectangle(25.0, 25.0, 50.0, 50.0);
-        
+
             gc->StrokePath(path);
-        
+
             delete gc;
         }
     }
@@ -227,7 +235,7 @@ public:
 
 
     @library{wxcore}
-    @category{FIXME}
+    @category{gdi,dc}
 
     @see wxGraphicsRenderer::CreateContext(), wxGCDC, wxDC
 */
@@ -240,21 +248,21 @@ public:
         @see wxGraphicsRenderer::CreateContext()
     */
     static wxGraphicsContext* Create( wxWindow* window ) ;
-    
+
     /**
         Creates a wxGraphicsContext from a wxWindowDC
 
         @see wxGraphicsRenderer::CreateContext()
     */
     static wxGraphicsContext* Create( const wxWindowDC& dc) ;
-    
+
     /**
         Creates a wxGraphicsContext from a wxMemoryDC
 
         @see wxGraphicsRenderer::CreateContext()
     */
     static wxGraphicsContext * Create( const wxMemoryDC& dc) ;
-    
+
     /**
         Creates a wxGraphicsContext from a wxPrinterDC. Under
         GTK+, this will only work when using the GtkPrint
@@ -267,29 +275,29 @@ public:
     /**
         Clips drawings to the region
     */
-    void Clip(const wxRegion& region);
+    virtual void Clip(const wxRegion& region) = 0;
 
     /**
         Clips drawings to the rectangle.
     */
-    void Clip(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
+    virtual void Clip(wxDouble x, wxDouble y, wxDouble w, wxDouble h) = 0;
 
     /**
         Concatenates the passed in transform with the current transform of this context
     */
-    void ConcatTransform(const wxGraphicsMatrix& matrix);
+    virtual void ConcatTransform(const wxGraphicsMatrix& matrix) = 0;
 
 
     /**
         Creates a native brush from a wxBrush.
     */
-    wxGraphicsBrush CreateBrush(const wxBrush& brush) const;
+    virtual wxGraphicsBrush CreateBrush(const wxBrush& brush) const;
 
     /**
         Creates a native graphics font from a wxFont and a text colour.
     */
-    wxGraphicsFont CreateFont(const wxFont& font,
-                              const wxColour& col = wxBLACK) const;
+    virtual wxGraphicsFont CreateFont(const wxFont& font,
+                                      const wxColour& col = *wxBLACK) const;
 
     /**
         Creates a wxGraphicsContext from a native context. This native context must be
@@ -298,35 +306,34 @@ public:
 
         @see wxGraphicsRenderer:: CreateContextFromNativeContext
     */
-    wxGraphicsContext* CreateFromNative(void* context);
+    static wxGraphicsContext* CreateFromNative(void* context);
 
     /**
         Creates a wxGraphicsContext from a native window.
 
         @see wxGraphicsRenderer:: CreateContextFromNativeWindow
     */
-    wxGraphicsContext* CreateFromNativeWindow(void* window);
+    static wxGraphicsContext* CreateFromNativeWindow(void* window);
 
     /**
         Creates a native brush, having a linear gradient, starting at (x1,y1) with
         color c1 to (x2,y2) with color c2
     */
-    wxGraphicsBrush CreateLinearGradientBrush(wxDouble x1,
-            wxDouble y1,
-            wxDouble x2,
-            wxDouble y2,
-            const wxColouramp;c1,
-            const wxColouramp;c2) const;
+    virtual wxGraphicsBrush CreateLinearGradientBrush(wxDouble x1,
+                                                      wxDouble y1,
+                                                      wxDouble x2,
+                                                      wxDouble y2,
+                                                      const wxColour& c1,
+                                                      const wxColour& c2) const;
 
     /**
         Creates a native affine transformation matrix from the passed in values. The
         defaults result in an identity matrix.
     */
-    wxGraphicsMatrix CreateMatrix(wxDouble a = 1.0, wxDouble b = 0.0,
-                                  wxDouble c = 0.0,
-                                  wxDouble d = 1.0,
-                                  wxDouble tx = 0.0,
-                                  wxDouble ty = 0.0) const;
+    virtual wxGraphicsMatrix CreateMatrix(wxDouble a = 1.0, wxDouble b = 0.0,
+                                          wxDouble c = 0.0, wxDouble d = 1.0,
+                                          wxDouble tx = 0.0,
+                                          wxDouble ty = 0.0) const;
 
     /**
         Creates a native graphics path which is initially empty.
@@ -336,62 +343,58 @@ public:
     /**
         Creates a native pen from a wxPen.
     */
-    wxGraphicsPen CreatePen(const wxPen& pen) const;
+    virtual wxGraphicsPen CreatePen(const wxPen& pen) const;
 
     /**
         Creates a native brush, having a radial gradient originating at (xo,yc) with
         color oColour and ends on a circle around (xc,yc) with radius r and color cColour
     */
-    wxGraphicsBrush CreateRadialGradientBrush(wxDouble xo,
-            wxDouble yo,
-            wxDouble xc,
-            wxDouble yc,
-            wxDouble radius,
-            const wxColour& oColor,
-            const wxColour& cColor) const;
+    virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
+                                                      wxDouble xc, wxDouble yc,
+                                                      wxDouble radius,
+                                                      const wxColour& oColor,
+                                                      const wxColour& cColor) const;
 
     /**
         Draws the bitmap. In case of a mono bitmap, this is treated as a mask and the
         current brushed is used for filling.
     */
-    void DrawBitmap(const wxBitmap& bmp, wxDouble x, wxDouble y,
-                    wxDouble w, wxDouble h);
+    virtual void DrawBitmap(const wxBitmap& bmp, wxDouble x, wxDouble y,
+                            wxDouble w, wxDouble h) = 0;
 
     /**
         Draws an ellipse.
     */
-    void DrawEllipse(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
+    virtual void DrawEllipse(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
 
     /**
         Draws the icon.
     */
-    void DrawIcon(const wxIcon& icon, wxDouble x, wxDouble y,
-                  wxDouble w, wxDouble h);
+    virtual void DrawIcon(const wxIcon& icon, wxDouble x, wxDouble y,
+                          wxDouble w, wxDouble h) = 0;
 
     /**
         Draws a polygon.
     */
-    void DrawLines(size_t n, const wxPoint2DDouble* points,
-                   int fillStyle = wxODDEVEN_RULE);
+    virtual void DrawLines(size_t n, const wxPoint2DDouble* points,
+                           int fillStyle = wxODDEVEN_RULE);
 
     /**
         Draws the path by first filling and then stroking.
     */
-    void DrawPath(const wxGraphicsPath& path,
-                  int fillStyle = wxODDEVEN_RULE);
+    virtual void DrawPath(const wxGraphicsPath& path,
+                          int fillStyle = wxODDEVEN_RULE);
 
     /**
         Draws a rectangle.
     */
-    void DrawRectangle(wxDouble x, wxDouble y, wxDouble w,
-                       wxDouble h);
+    virtual void DrawRectangle(wxDouble x, wxDouble y, wxDouble w, wxDouble h);
 
     /**
         Draws a rounded rectangle.
     */
-    void DrawRoundedRectangle(wxDouble x, wxDouble y, wxDouble w,
-                              wxDouble h,
-                              wxDouble radius);
+    virtual void DrawRoundedRectangle(wxDouble x, wxDouble y, wxDouble w,
+                                      wxDouble h, wxDouble radius);
 
     //@{
     /**
@@ -405,21 +408,21 @@ public:
     /**
         Fills the path with the current brush.
     */
-    void FillPath(const wxGraphicsPath& path,
-                  int fillStyle = wxODDEVEN_RULE);
+    virtual void FillPath(const wxGraphicsPath& path,
+                          int fillStyle = wxODDEVEN_RULE) = 0;
 
     /**
         Returns the native context (CGContextRef for Core Graphics, Graphics pointer
         for GDIPlus and cairo_t pointer for cairo).
     */
-    void* GetNativeContext();
+    virtual void* GetNativeContext() = 0;
 
     /**
         Fills the @a widths array with the widths from the beginning of
         @a text to the corresponding character of @e text.
     */
-    void GetPartialTextExtents(const wxString& text,
-                               wxArrayDouble& widths) const;
+    virtual void GetPartialTextExtents(const wxString& text,
+                                       wxArrayDouble& widths) const = 0;
 
     /**
         Gets the dimensions of the string using the currently selected font.
@@ -429,30 +432,29 @@ public:
         descender, and @a externalLeading is any extra vertical space added
         to the font by the font designer (usually is zero).
     */
-    void GetTextExtent(const wxString& text, wxDouble* width,
-                       wxDouble* height,
-                       wxDouble* descent,
-                       wxDouble* externalLeading) const;
+    virtual void GetTextExtent(const wxString& text, wxDouble* width,
+                               wxDouble* height, wxDouble* descent,
+                               wxDouble* externalLeading) const = 0;
 
     /**
         Gets the current transformation matrix of this context.
     */
-    wxGraphicsMatrix GetTransform() const;
+    virtual wxGraphicsMatrix GetTransform() const = 0;
 
     /**
         Resets the clipping to original shape.
     */
-    void ResetClip();
+    virtual void ResetClip() = 0;
 
     /**
         Rotates the current transformation matrix (radians),
     */
-    void Rotate(wxDouble angle);
+    virtual void Rotate(wxDouble angle) = 0;
 
     /**
         Scales the current transformation matrix.
     */
-    void Scale(wxDouble xScale, wxDouble yScale);
+    virtual void Scale(wxDouble xScale, wxDouble yScale) = 0;
 
     //@{
     /**
@@ -481,13 +483,12 @@ public:
     /**
         Sets the current transformation matrix of this context
     */
-    void SetTransform(const wxGraphicsMatrix& matrix);
+    virtual void SetTransform(const wxGraphicsMatrix& matrix) = 0;
 
     /**
         Strokes a single line.
     */
-    void StrokeLine(wxDouble x1, wxDouble y1, wxDouble x2,
-                    wxDouble y2);
+    virtual void StrokeLine(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2);
 
     //@{
     /**
@@ -502,19 +503,18 @@ public:
     /**
         Strokes along a path with the current pen.
     */
-    void StrokePath(const wxGraphicsPath& path);
+    virtual void StrokePath(const wxGraphicsPath& path) = 0;
 
     /**
         Translates the current transformation matrix.
     */
-    void Translate(wxDouble dx, wxDouble dy);
+    virtual void Translate(wxDouble dx, wxDouble dy) = 0;
 };
 
 
 
 /**
     @class wxGraphicsRenderer
-    @wxheader{graphics.h}
 
     A wxGraphicsRenderer is the instance corresponding to the rendering engine
     used. There may be multiple instances on a system, if there are different
@@ -540,17 +540,17 @@ public:
         Creates a wxGraphicsContext from a wxWindow.
     */
     virtual wxGraphicsContext* CreateContext(wxWindow* window) = 0;
-    
+
     /**
         Creates a wxGraphicsContext from a wxWindowDC
     */
     virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc) = 0 ;
-    
+
     /**
         Creates a wxGraphicsContext from a wxMemoryDC
     */
     virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc) = 0 ;
-    
+
     /**
         Creates a wxGraphicsContext from a wxPrinterDC
     */
@@ -559,7 +559,7 @@ public:
     /**
         Creates a native brush from a wxBrush.
     */
-    wxGraphicsBrush CreateBrush(const wxBrush& brush);
+    virtual wxGraphicsBrush CreateBrush(const wxBrush& brush) = 0;
 
 
     /**
@@ -567,61 +567,58 @@ public:
         eg a CGContextRef for Core Graphics, a Graphics pointer for GDIPlus or a cairo_t
         pointer for cairo.
     */
-    wxGraphicsContext* CreateContextFromNativeContext(void* context);
+    virtual wxGraphicsContext* CreateContextFromNativeContext(void* context) = 0;
 
     /**
         Creates a wxGraphicsContext from a native window.
     */
-    wxGraphicsContext* CreateContextFromNativeWindow(void* window);
+    virtual wxGraphicsContext* CreateContextFromNativeWindow(void* window) = 0;
 
     /**
         Creates a native graphics font from a wxFont and a text colour.
     */
-    wxGraphicsFont CreateFont(const wxFont& font,
-                              const wxColour& col = wxBLACK);
+    virtual wxGraphicsFont CreateFont(const wxFont& font,
+                                      const wxColour& col = *wxBLACK) = 0;
 
     /**
         Creates a native brush, having a linear gradient, starting at (x1,y1) with
         color c1 to (x2,y2) with color c2
     */
     wxGraphicsBrush CreateLinearGradientBrush(wxDouble x1,
-            wxDouble y1,
-            wxDouble x2,
-            wxDouble y2,
-            const wxColouramp;c1,
-            const wxColouramp;c2);
+                                              wxDouble y1,
+                                              wxDouble x2,
+                                              wxDouble y2,
+                                              const wxColour& c1,
+                                              const wxColour& c2) = 0;
 
     /**
         Creates a native affine transformation matrix from the passed in values. The
         defaults result in an identity matrix.
     */
-    wxGraphicsMatrix CreateMatrix(wxDouble a = 1.0, wxDouble b = 0.0,
-                                  wxDouble c = 0.0,
-                                  wxDouble d = 1.0,
-                                  wxDouble tx = 0.0,
-                                  wxDouble ty = 0.0);
+    virtual wxGraphicsMatrix CreateMatrix(wxDouble a = 1.0, wxDouble b = 0.0,
+                                          wxDouble c = 0.0, wxDouble d = 1.0,
+                                          wxDouble tx = 0.0,
+                                          wxDouble ty = 0.0) = 0;
 
     /**
         Creates a native graphics path which is initially empty.
     */
-    wxGraphicsPath CreatePath();
+    virtual wxGraphicsPath CreatePath() = 0;
 
     /**
         Creates a native pen from a wxPen.
     */
-    wxGraphicsPen CreatePen(const wxPen& pen);
+    virtual wxGraphicsPen CreatePen(const wxPen& pen) = 0;
 
     /**
         Creates a native brush, having a radial gradient originating at (xo,yc) with
         color oColour and ends on a circle around (xc,yc) with radius r and color cColour
     */
-    wxGraphicsBrush CreateRadialGradientBrush(wxDouble xo,
-            wxDouble yo,
-            wxDouble xc,
-            wxDouble yc,
-            wxDouble radius,
-            const wxColour& oColour,
-            const wxColour& cColour);
+    virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
+                                                      wxDouble xc, wxDouble yc,
+                                                      wxDouble radius,
+                                                      const wxColour& oColour,
+                                                      const wxColour& cColour) = 0;
 
     /**
         Returns the default renderer on this platform. On OS X this is the Core
@@ -634,8 +631,11 @@ public:
 
 /**
     @class wxGraphicsBrush
-    @wxheader{graphics.h}
 
+    A wxGraphicsBrush is a native representation of a brush. The contents
+    are specific and private to the respective renderer. Instances are ref counted and can
+    therefore be assigned as usual. The only way to get a valid instance is via
+    wxGraphicsContext::CreateBrush or wxGraphicsRenderer::CreateBrush.
 
     @library{wxcore}
     @category{FIXME}
@@ -650,8 +650,11 @@ public:
 
 /**
     @class wxGraphicsFont
-    @wxheader{graphics.h}
 
+    A wxGraphicsFont is a native representation of a font. The contents
+    are specific and private to the respective renderer. Instances are ref counted and can
+    therefore be assigned as usual. The only way to get a valid instance is via
+    wxGraphicsContext::CreateFont or wxGraphicsRenderer::CreateFont.
 
     @library{wxcore}
     @category{FIXME}
@@ -666,8 +669,11 @@ public:
 
 /**
     @class wxGraphicsPen
-    @wxheader{graphics.h}
 
+    A wxGraphicsPen is a native representation of a pen. The contents
+    are specific and private to the respective renderer. Instances are ref counted and can
+    therefore be assigned as usual. The only way to get a valid instance is via
+    wxGraphicsContext::CreatePen or wxGraphicsRenderer::CreatePen.
 
     @library{wxcore}
     @category{FIXME}
@@ -682,10 +688,11 @@ public:
 
 /**
     @class wxGraphicsMatrix
-    @wxheader{graphics.h}
 
     A wxGraphicsMatrix is a native representation of an affine matrix. The contents
-    are specific and private to the respective renderer. Instances are ref counted and can therefore be assigned as usual. The only way to get a valid instance is via a CreateMatrix call on the graphics context or the renderer instance.
+    are specific and private to the respective renderer. Instances are ref counted and can
+    therefore be assigned as usual. The only way to get a valid instance is via
+    wxGraphicsContext::CreateMatrix or wxGraphicsRenderer::CreateMatrix.
 
     @library{wxcore}
     @category{FIXME}
@@ -704,20 +711,20 @@ public:
     /**
         Returns the component values of the matrix via the argument pointers.
     */
-    void Get(wxDouble* a = NULL, wxDouble* b = NULL, wxDouble* c = NULL,
-             wxDouble* d = NULL, wxDouble* tx = NULL,
-             wxDouble* ty = NULL) const;
+    virtual void Get(wxDouble* a = NULL, wxDouble* b = NULL, wxDouble* c = NULL,
+                     wxDouble* d = NULL, wxDouble* tx = NULL,
+                     wxDouble* ty = NULL) const;
 
     /**
         Returns the native representation of the matrix. For CoreGraphics this is a
         CFAffineMatrix pointer. For GDIPlus a Matrix Pointer and for Cairo a cairo_matrix_t pointer.
     */
-    void* GetNativeMatrix() const;
+    virtual void* GetNativeMatrix() const;
 
     /**
         Inverts the matrix.
     */
-    void Invert();
+    virtual void Invert();
 
     /**
         Returns @true if the elements of the transformation matrix are equal.
@@ -727,40 +734,38 @@ public:
     /**
         Return @true if this is the identity matrix.
     */
-    bool IsIdentity() const;
+    virtual bool IsIdentity() const;
 
     /**
         Rotates this matrix (radians).
     */
-    void Rotate(wxDouble angle);
+    virtual void Rotate(wxDouble angle);
 
     /**
         Scales this matrix.
     */
-    void Scale(wxDouble xScale, wxDouble yScale);
+    virtual void Scale(wxDouble xScale, wxDouble yScale);
 
     /**
         Sets the matrix to the respective values (default values are the identity
         matrix)
     */
-    void Set(wxDouble a = 1.0, wxDouble b = 0.0, wxDouble c = 0.0,
-             wxDouble d = 1.0, wxDouble tx = 0.0,
-             wxDouble ty = 0.0);
+    virtual void Set(wxDouble a = 1.0, wxDouble b = 0.0, wxDouble c = 0.0,
+                     wxDouble d = 1.0, wxDouble tx = 0.0, wxDouble ty = 0.0);
 
     /**
         Applies this matrix to a distance (ie. performs all transforms except
         translations)
     */
-    void TransformDistance(wxDouble* dx, wxDouble* dy) const;
+    virtual void TransformDistance(wxDouble* dx, wxDouble* dy) const;
 
     /**
         Applies this matrix to a point.
     */
-    void TransformPoint(wxDouble* x, wxDouble* y) const;
+    virtual void TransformPoint(wxDouble* x, wxDouble* y) const;
 
     /**
         Translates this matrix.
     */
-    void Translate(wxDouble dx, wxDouble dy);
+    virtual void Translate(wxDouble dx, wxDouble dy);
 };
-