1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of various wxGraphics* classes
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
12 A wxGraphicsPath is a native representation of a geometric path. The
13 contents are specific an private to the respective renderer. Instances are
14 reference counted and can therefore be assigned as usual. The only way to
15 get a valid instance is by using wxGraphicsContext::CreatePath() or
16 wxGraphicsRenderer::CreatePath().
21 class wxGraphicsPath
: public wxGraphicsObject
25 Adds an arc of a circle.
27 The circle is defined by the coordinates of its centre (@a x, @a y) or
28 @a c and its radius @a r. The arc goes from the starting angle @a
29 startAngle to @a endAngle either clockwise or counter-clockwise
30 depending on the value of @a clockwise argument.
32 The angles are measured in radians but, contrary to the usual
33 mathematical convention, are always @e clockwise from the horizontal
37 virtual void AddArc(wxDouble x
, wxDouble y
, wxDouble r
,
38 wxDouble startAngle
, wxDouble endAngle
,
40 void AddArc(const wxPoint2DDouble
& c
, wxDouble r
,
41 wxDouble startAngle
, wxDouble endAngle
, bool clockwise
);
45 Appends a an arc to two tangents connecting (current) to (@a x1,@a y1)
46 and (@a x1,@a y1) to (@a x2,@a y2), also a straight line from (current)
49 virtual void AddArcToPoint(wxDouble x1
, wxDouble y1
, wxDouble x2
,
50 wxDouble y2
, wxDouble r
);
53 Appends a circle around (@a x,@a y) with radius @a r as a new closed
56 virtual void AddCircle(wxDouble x
, wxDouble y
, wxDouble r
);
59 Adds a cubic bezier curve from the current point, using two control
60 points and an end point.
62 virtual void AddCurveToPoint(wxDouble cx1
, wxDouble cy1
,
63 wxDouble cx2
, wxDouble cy2
,
64 wxDouble x
, wxDouble y
);
66 Adds a cubic bezier curve from the current point, using two control
67 points and an end point.
69 void AddCurveToPoint(const wxPoint2DDouble
& c1
,
70 const wxPoint2DDouble
& c2
,
71 const wxPoint2DDouble
& e
);
74 Appends an ellipse fitting into the passed in rectangle.
76 virtual void AddEllipse(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
79 Adds a straight line from the current point to (@a x,@a y).
81 virtual void AddLineToPoint(wxDouble x
, wxDouble y
);
83 Adds a straight line from the current point to @a p.
85 void AddLineToPoint(const wxPoint2DDouble
& p
);
90 virtual void AddPath(const wxGraphicsPath
& path
);
93 Adds a quadratic bezier curve from the current point, using a control
94 point and an end point.
96 virtual void AddQuadCurveToPoint(wxDouble cx
, wxDouble cy
,
97 wxDouble x
, wxDouble y
);
100 Appends a rectangle as a new closed subpath.
102 virtual void AddRectangle(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
105 Appends a rounded rectangle as a new closed subpath.
107 virtual void AddRoundedRectangle(wxDouble x
, wxDouble y
, wxDouble w
,
108 wxDouble h
, wxDouble radius
);
111 Closes the current sub-path.
113 virtual void CloseSubpath();
116 @return @true if the point is within the path.
118 bool Contains(const wxPoint2DDouble
& c
,
119 int fillStyle
= wxODDEVEN_RULE
) const;
121 @return @true if the point is within the path.
123 virtual bool Contains(wxDouble x
, wxDouble y
,
124 int fillStyle
= wxODDEVEN_RULE
) const;
127 Gets the bounding box enclosing all points (possibly including control
130 wxRect2DDouble
GetBox() const;
132 Gets the bounding box enclosing all points (possibly including control
135 virtual void GetBox(wxDouble
* x
, wxDouble
* y
,
136 wxDouble
* w
, wxDouble
* h
) const;
139 Gets the last point of the current path, (0,0) if not yet set.
141 virtual void GetCurrentPoint(wxDouble
* x
, wxDouble
* y
) const;
143 Gets the last point of the current path, (0,0) if not yet set.
145 wxPoint2DDouble
GetCurrentPoint() const;
148 Returns the native path (CGPathRef for Core Graphics, Path pointer for
149 GDIPlus and a cairo_path_t pointer for cairo).
151 virtual void* GetNativePath() const;
154 Begins a new subpath at (@a x,@a y).
156 virtual void MoveToPoint(wxDouble x
, wxDouble y
);
158 Begins a new subpath at @a p.
160 void MoveToPoint(const wxPoint2DDouble
& p
);
163 Transforms each point of this path by the matrix.
165 virtual void Transform(const wxGraphicsMatrix
& matrix
);
168 Gives back the native path returned by GetNativePath() because there
169 might be some deallocations necessary (e.g. on cairo the native path
170 returned by GetNativePath() is newly allocated each time).
172 virtual void UnGetNativePath(void* p
) const;
178 @class wxGraphicsObject
180 This class is the superclass of native graphics objects like pens etc. It
181 allows reference counting. Not instantiated by user code.
186 @see wxGraphicsBrush, wxGraphicsPen, wxGraphicsMatrix, wxGraphicsPath
188 class wxGraphicsObject
: public wxObject
192 Returns the renderer that was used to create this instance, or @NULL
193 if it has not been initialized yet.
195 wxGraphicsRenderer
* GetRenderer() const;
198 @return @false if this object is valid, otherwise returns @true.
204 Anti-aliasing modes used by wxGraphicsContext::SetAntialisingMode
208 /** No anti-aliasing */
211 /** The default anti-aliasing */
216 Compositing is done using Porter-Duff compositions
217 (see http://keithp.com/~keithp/porterduff/p253-porter.pdf) with
218 wxGraphicsContext::SetCompositionMode
220 The description give a short equation on how the values of a resulting
221 pixel are calculated.
222 @e R = Result, @e S = Source, @e D = Destination, colors premultiplied with alpha
223 @e Ra, @e Sa, @e Da their alpha components
225 enum wxCompositionMode
227 wxCOMPOSITION_CLEAR
, /**< @e R = 0 */
228 wxCOMPOSITION_SOURCE
, /**< @e R = S */
229 wxCOMPOSITION_OVER
, /**< @e R = @e S + @e D*(1 - @e Sa) */
230 wxCOMPOSITION_IN
, /**< @e R = @e S*@e Da */
231 wxCOMPOSITION_OUT
, /**< @e R = @e S*(1 - @e Da) */
232 wxCOMPOSITION_ATOP
, /**< @e R = @e S*@e Da + @e D*(1 - @e Sa) */
234 wxCOMPOSITION_DEST
, /**< @e R = @e D, essentially a noop */
235 wxCOMPOSITION_DEST_OVER
, /**< @e R = @e S*(1 - @e Da) + @e D */
236 wxCOMPOSITION_DEST_IN
, /**< @e R = @e D*@e Sa */
237 wxCOMPOSITION_DEST_OUT
, /**< @e R = @e D*(1 - @e Sa) */
238 wxCOMPOSITION_DEST_ATOP
, /**< @e R = @e S*(1 - @e Da) + @e D*@e Sa */
239 wxCOMPOSITION_XOR
, /**< @e R = @e S*(1 - @e Da) + @e D*(1 - @e Sa) */
240 wxCOMPOSITION_ADD
, /**< @e R = @e S + @e D */
245 @class wxGraphicsContext
247 A wxGraphicsContext instance is the object that is drawn upon. It is
248 created by a renderer using wxGraphicsRenderer::CreateContext(). This can
249 be either directly using a renderer instance, or indirectly using the
250 static convenience Create() functions of wxGraphicsContext that always
251 delegate the task to the default renderer.
254 void MyCanvas::OnPaint(wxPaintEvent &event)
259 // Create graphics context from it
260 wxGraphicsContext *gc = wxGraphicsContext::Create( dc );
264 // make a path that contains a circle and some lines
265 gc->SetPen( *wxRED_PEN );
266 wxGraphicsPath path = gc->CreatePath();
267 path.AddCircle( 50.0, 50.0, 50.0 );
268 path.MoveToPoint(0.0, 50.0);
269 path.AddLineToPoint(100.0, 50.0);
270 path.MoveToPoint(50.0, 0.0);
271 path.AddLineToPoint(50.0, 100.0 );
273 path.AddRectangle(25.0, 25.0, 50.0, 50.0);
275 gc->StrokePath(path);
285 @see wxGraphicsRenderer::CreateContext(), wxGCDC, wxDC
287 class wxGraphicsContext
: public wxGraphicsObject
291 Creates a wxGraphicsContext from a wxWindow.
293 @see wxGraphicsRenderer::CreateContext()
295 static wxGraphicsContext
* Create(wxWindow
* window
);
298 Creates a wxGraphicsContext from a wxWindowDC
300 @see wxGraphicsRenderer::CreateContext()
302 static wxGraphicsContext
* Create(const wxWindowDC
& dc
);
305 Creates a wxGraphicsContext from a wxMemoryDC
307 @see wxGraphicsRenderer::CreateContext()
309 static wxGraphicsContext
* Create(const wxMemoryDC
& dc
);
312 Creates a wxGraphicsContext from a wxPrinterDC. Under GTK+, this will
313 only work when using the GtkPrint printing backend which is available
316 @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
318 static wxGraphicsContext
* Create(const wxPrinterDC
& dc
);
321 Clips drawings to the specified region.
323 virtual void Clip(const wxRegion
& region
) = 0;
326 Clips drawings to the specified rectangle.
328 virtual void Clip(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
) = 0;
331 Concatenates the passed in transform with the current transform of this
334 virtual void ConcatTransform(const wxGraphicsMatrix
& matrix
) = 0;
337 Creates a native brush from a wxBrush.
339 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) const;
342 Creates a native graphics font from a wxFont and a text colour.
344 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
345 const wxColour
& col
= *wxBLACK
) const;
348 Creates a wxGraphicsContext from a native context. This native context
349 must be a CGContextRef for Core Graphics, a Graphics pointer for
350 GDIPlus, or a cairo_t pointer for cairo.
352 @see wxGraphicsRenderer::CreateContextFromNativeContext()
354 static wxGraphicsContext
* CreateFromNative(void* context
);
357 Creates a wxGraphicsContext from a native window.
359 @see wxGraphicsRenderer::CreateContextFromNativeWindow()
361 static wxGraphicsContext
* CreateFromNativeWindow(void* window
);
364 Creates a native brush with a linear gradient.
366 The brush starts at (@a x1, @a y1) and ends at (@a x2, @a y2). Either
367 just the start and end gradient colours (@a c1 and @a c2) or full set
368 of gradient @a stops can be specified.
370 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
374 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
375 wxDouble x2
, wxDouble y2
,
376 const wxColour
& c1
, const wxColour
& c2
) const;
379 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
380 wxDouble x2
, wxDouble y2
,
381 const wxGraphicsGradientStops
& stops
) const;
385 Creates a native affine transformation matrix from the passed in
386 values. The default parameters result in an identity matrix.
388 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
389 wxDouble c
= 0.0, wxDouble d
= 1.0,
391 wxDouble ty
= 0.0) const;
394 Creates a native graphics path which is initially empty.
396 wxGraphicsPath
CreatePath() const;
399 Creates a native pen from a wxPen.
401 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) const;
404 Creates a native brush with a radial gradient.
406 The brush originats at (@a xo, @a yc) and ends on a circle around
407 (@a xc, @a yc) with the given @a radius.
409 The gradient may be specified either by its start and end colours @a
410 oColor and @a cColor or by a full set of gradient @a stops.
412 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
415 virtual wxGraphicsBrush
416 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
417 wxDouble xc
, wxDouble yc
,
419 const wxColour
& oColor
,
420 const wxColour
& cColor
) const;
422 virtual wxGraphicsBrush
423 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
424 wxDouble xc
, wxDouble yc
,
426 const wxGraphicsGradientStops
& stops
) = 0;
430 Draws the bitmap. In case of a mono bitmap, this is treated as a mask
431 and the current brushed is used for filling.
433 virtual void DrawBitmap(const wxBitmap
& bmp
, wxDouble x
, wxDouble y
,
434 wxDouble w
, wxDouble h
) = 0;
439 virtual void DrawEllipse(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
444 virtual void DrawIcon(const wxIcon
& icon
, wxDouble x
, wxDouble y
,
445 wxDouble w
, wxDouble h
) = 0;
450 virtual void DrawLines(size_t n
, const wxPoint2DDouble
* points
,
451 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
454 Draws the path by first filling and then stroking.
456 virtual void DrawPath(const wxGraphicsPath
& path
,
457 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
462 virtual void DrawRectangle(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
465 Draws a rounded rectangle.
467 virtual void DrawRoundedRectangle(wxDouble x
, wxDouble y
, wxDouble w
,
468 wxDouble h
, wxDouble radius
);
471 Draws text at the defined position.
473 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
);
475 Draws text at the defined position.
480 The x coordinate position to draw the text at.
482 The y coordinate position to draw the text at.
484 The angle relative to the (default) horizontal direction to draw
487 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
, wxDouble angle
);
489 Draws text at the defined position.
494 The x coordinate position to draw the text at.
496 The y coordinate position to draw the text at.
497 @param backgroundBrush
498 Brush to fill the text with.
500 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
501 const wxGraphicsBrush
& backgroundBrush
);
503 Draws text at the defined position.
508 The x coordinate position to draw the text at.
510 The y coordinate position to draw the text at.
512 The angle relative to the (default) horizontal direction to draw
514 @param backgroundBrush
515 Brush to fill the text with.
517 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
518 wxDouble angle
, const wxGraphicsBrush
& backgroundBrush
);
521 Fills the path with the current brush.
523 virtual void FillPath(const wxGraphicsPath
& path
,
524 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
) = 0;
527 Returns the native context (CGContextRef for Core Graphics, Graphics
528 pointer for GDIPlus and cairo_t pointer for cairo).
530 virtual void* GetNativeContext() = 0;
533 Fills the @a widths array with the widths from the beginning of
534 @a text to the corresponding character of @a text.
536 virtual void GetPartialTextExtents(const wxString
& text
,
537 wxArrayDouble
& widths
) const = 0;
540 Gets the dimensions of the string using the currently selected font.
543 The text string to measure.
545 Variable to store the total calculated width of the text.
547 Variable to store the total calculated height of the text.
549 Variable to store the dimension from the baseline of the font to
550 the bottom of the descender.
551 @param externalLeading
552 Any extra vertical space added to the font by the font designer
555 virtual void GetTextExtent(const wxString
& text
, wxDouble
* width
,
556 wxDouble
* height
, wxDouble
* descent
,
557 wxDouble
* externalLeading
) const = 0;
560 Gets the current transformation matrix of this context.
562 virtual wxGraphicsMatrix
GetTransform() const = 0;
565 Resets the clipping to original shape.
567 virtual void ResetClip() = 0;
570 Rotates the current transformation matrix (in radians).
572 virtual void Rotate(wxDouble angle
) = 0;
575 Scales the current transformation matrix.
577 virtual void Scale(wxDouble xScale
, wxDouble yScale
) = 0;
580 Sets the brush for filling paths.
582 void SetBrush(const wxBrush
& brush
);
584 Sets the brush for filling paths.
586 virtual void SetBrush(const wxGraphicsBrush
& brush
);
589 Sets the font for drawing text.
591 void SetFont(const wxFont
& font
, const wxColour
& colour
);
593 Sets the font for drawing text.
595 virtual void SetFont(const wxGraphicsFont
& font
);
598 Sets the pen used for stroking.
600 void SetPen(const wxPen
& pen
);
602 Sets the pen used for stroking.
604 virtual void SetPen(const wxGraphicsPen
& pen
);
607 Sets the current transformation matrix of this context
609 virtual void SetTransform(const wxGraphicsMatrix
& matrix
) = 0;
612 Strokes a single line.
614 virtual void StrokeLine(wxDouble x1
, wxDouble y1
, wxDouble x2
, wxDouble y2
);
617 Stroke disconnected lines from begin to end points, fastest method
618 available for this purpose.
620 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* beginPoints
,
621 const wxPoint2DDouble
* endPoints
);
623 Stroke disconnected lines from begin to end points, fastest method
624 available for this purpose.
626 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* points
);
629 Strokes along a path with the current pen.
631 virtual void StrokePath(const wxGraphicsPath
& path
) = 0;
634 Translates the current transformation matrix.
636 virtual void Translate(wxDouble dx
, wxDouble dy
) = 0;
639 Redirects all rendering is done into a fully transparent temporary context
641 virtual void BeginLayer(wxDouble opacity
) = 0;
644 Composites back the drawings into the context with the opacity given at
647 virtual void EndLayer() = 0;
650 Sets the antialiasing mode, returns true if it supported
652 virtual bool SetAntialiasMode(wxAntialiasMode antialias
) = 0;
655 Returns the current shape antialiasing mode
657 virtual wxAntialiasMode
GetAntialiasMode() const ;
660 Sets the compositing operator, returns true if it supported
662 virtual bool SetCompositionMode(wxCompositionMode op
) = 0;
665 Returns the current compositing operator
667 virtual wxCompositionMode
GetCompositionMode() const;
672 Represents a single gradient stop in a collection of gradient stops as
673 represented by wxGraphicsGradientStops.
680 class wxGraphicsGradientStop
684 Creates a stop with the given colour and position.
686 @param col The colour of this stop. Note that the alpha component of
687 the colour is honoured thus allowing the background colours to
688 partially show through the gradient.
689 @param pos The stop position, must be in [0, 1] range with 0 being the
690 beginning and 1 the end of the gradient.
692 wxGraphicsGradientStop(wxColour col
= wxTransparentColour
, float pos
= 0.);
694 /// Return the stop colour.
695 const wxColour
& GetColour() const;
698 Change the stop colour.
700 @param col The new colour.
702 void SetColour(const wxColour
& col
);
704 /// Return the stop position.
705 float GetPosition() const;
708 Change the stop position.
710 @param pos The new position, must always be in [0, 1] range.
712 void SetPosition(float pos
);
716 Represents a collection of wxGraphicGradientStop values for use with
717 CreateLinearGradientBrush and CreateRadialGradientBrush.
719 The stops are maintained in order of position. If two or more stops are
720 added with the same position then the one(s) added later come later.
721 This can be useful for producing discontinuities in the colour gradient.
723 Notice that this class is write-once, you can't modify the stops once they
731 class wxGraphicsGradientStops
735 Initializes the gradient stops with the given boundary colours.
737 Creates a wxGraphicsGradientStops instance with start colour given
738 by @a startCol and end colour given by @a endCol.
740 wxGraphicsGradientStops(wxColour startCol
= wxTransparentColour
,
741 wxColour endCol
= wxTransparentColour
);
747 void Add(const wxGraphicsGradientStop
& stop
);
748 void Add(wxColour col
, float pos
);
752 Returns the stop at the given index.
754 @param n The index, must be in [0, GetCount()) range.
756 wxGraphicsGradientStop
Item(unsigned n
) const;
759 Returns the number of stops.
761 unsigned GetCount() const;
764 Set the start colour to @a col
766 void SetStartColour(wxColour col
);
769 Returns the start colour.
771 wxColour
GetStartColour() const;
774 Set the end colour to @a col
776 void SetEndColour(wxColour col
);
779 Returns the end colour.
781 wxColour
GetEndColour() const;
785 @class wxGraphicsRenderer
787 A wxGraphicsRenderer is the instance corresponding to the rendering engine
788 used. There may be multiple instances on a system, if there are different
789 rendering engines present, but there is always only one instance per
790 engine. This instance is pointed back to by all objects created by it
791 (wxGraphicsContext, wxGraphicsPath etc) and can be retrieved through their
792 wxGraphicsObject::GetRenderer() method. Therefore you can create an
793 additional instance of a path etc. by calling
794 wxGraphicsObject::GetRenderer() and then using the appropriate CreateXXX()
795 function of that renderer.
798 wxGraphicsPath *path = // from somewhere
799 wxGraphicsBrush *brush = path->GetRenderer()->CreateBrush( *wxBLACK_BRUSH );
805 class wxGraphicsRenderer
: public wxObject
809 Creates a wxGraphicsContext from a wxWindow.
811 virtual wxGraphicsContext
* CreateContext(wxWindow
* window
) = 0;
814 Creates a wxGraphicsContext from a wxWindowDC
816 virtual wxGraphicsContext
* CreateContext(const wxWindowDC
& dc
) = 0 ;
819 Creates a wxGraphicsContext from a wxMemoryDC
821 virtual wxGraphicsContext
* CreateContext(const wxMemoryDC
& dc
) = 0 ;
824 Creates a wxGraphicsContext from a wxPrinterDC
826 virtual wxGraphicsContext
* CreateContext(const wxPrinterDC
& dc
) = 0 ;
829 Creates a native brush from a wxBrush.
831 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) = 0;
834 Creates a wxGraphicsContext from a native context. This native context
835 must be a CGContextRef for Core Graphics, a Graphics pointer for
836 GDIPlus, or a cairo_t pointer for cairo.
838 virtual wxGraphicsContext
* CreateContextFromNativeContext(void* context
) = 0;
841 Creates a wxGraphicsContext from a native window.
843 virtual wxGraphicsContext
* CreateContextFromNativeWindow(void* window
) = 0;
846 Creates a wxGraphicsContext that can be used for measuring texts only.
847 No drawing commands are allowed.
849 virtual wxGraphicsContext
* CreateMeasuringContext() = 0;
852 Creates a native graphics font from a wxFont and a text colour.
854 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
855 const wxColour
& col
= *wxBLACK
) = 0;
859 Creates a native brush with a linear gradient.
861 Stops support is new since wxWidgets 2.9.1, previously only the start
862 and end colours could be specified.
864 virtual wxGraphicsBrush
CreateLinearGradientBrush(wxDouble x1
,
868 const wxGraphicsGradientStops
& stops
) = 0;
871 Creates a native affine transformation matrix from the passed in
872 values. The defaults result in an identity matrix.
874 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
875 wxDouble c
= 0.0, wxDouble d
= 1.0,
877 wxDouble ty
= 0.0) = 0;
880 Creates a native graphics path which is initially empty.
882 virtual wxGraphicsPath
CreatePath() = 0;
885 Creates a native pen from a wxPen.
887 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) = 0;
890 Creates a native brush with a radial gradient.
892 Stops support is new since wxWidgets 2.9.1, previously only the start
893 and end colours could be specified.
895 virtual wxGraphicsBrush
CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
896 wxDouble xc
, wxDouble yc
,
898 const wxGraphicsGradientStops
& stops
) = 0;
901 Returns the default renderer on this platform. On OS X this is the Core
902 Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and
903 on GTK we currently default to the cairo renderer.
905 static wxGraphicsRenderer
* GetDefaultRenderer();
911 @class wxGraphicsBrush
913 A wxGraphicsBrush is a native representation of a brush. The contents are
914 specific and private to the respective renderer. Instances are ref counted
915 and can therefore be assigned as usual. The only way to get a valid
916 instance is via wxGraphicsContext::CreateBrush() or
917 wxGraphicsRenderer::CreateBrush().
922 class wxGraphicsBrush
: public wxGraphicsObject
931 @class wxGraphicsFont
933 A wxGraphicsFont is a native representation of a font. The contents are
934 specific and private to the respective renderer. Instances are ref counted
935 and can therefore be assigned as usual. The only way to get a valid
936 instance is via wxGraphicsContext::CreateFont() or
937 wxGraphicsRenderer::CreateFont().
942 class wxGraphicsFont
: public wxGraphicsObject
953 A wxGraphicsPen is a native representation of a pen. The contents are
954 specific and private to the respective renderer. Instances are ref counted
955 and can therefore be assigned as usual. The only way to get a valid
956 instance is via wxGraphicsContext::CreatePen() or
957 wxGraphicsRenderer::CreatePen().
962 class wxGraphicsPen
: public wxGraphicsObject
971 @class wxGraphicsMatrix
973 A wxGraphicsMatrix is a native representation of an affine matrix. The
974 contents are specific and private to the respective renderer. Instances are
975 ref counted and can therefore be assigned as usual. The only way to get a
976 valid instance is via wxGraphicsContext::CreateMatrix() or
977 wxGraphicsRenderer::CreateMatrix().
982 class wxGraphicsMatrix
: public wxGraphicsObject
986 Concatenates the matrix passed with the current matrix.
988 virtual void Concat(const wxGraphicsMatrix
* t
);
990 Concatenates the matrix passed with the current matrix.
992 void Concat(const wxGraphicsMatrix
& t
);
995 Returns the component values of the matrix via the argument pointers.
997 virtual void Get(wxDouble
* a
= NULL
, wxDouble
* b
= NULL
,
998 wxDouble
* c
= NULL
, wxDouble
* d
= NULL
,
999 wxDouble
* tx
= NULL
, wxDouble
* ty
= NULL
) const;
1002 Returns the native representation of the matrix. For CoreGraphics this
1003 is a CFAffineMatrix pointer, for GDIPlus a Matrix Pointer, and for
1004 Cairo a cairo_matrix_t pointer.
1006 virtual void* GetNativeMatrix() const;
1011 virtual void Invert();
1014 Returns @true if the elements of the transformation matrix are equal.
1016 virtual bool IsEqual(const wxGraphicsMatrix
* t
) const;
1018 Returns @true if the elements of the transformation matrix are equal.
1020 bool IsEqual(const wxGraphicsMatrix
& t
) const;
1023 Return @true if this is the identity matrix.
1025 virtual bool IsIdentity() const;
1028 Rotates this matrix (in radians).
1030 virtual void Rotate(wxDouble angle
);
1035 virtual void Scale(wxDouble xScale
, wxDouble yScale
);
1038 Sets the matrix to the respective values (default values are the
1041 virtual void Set(wxDouble a
= 1.0, wxDouble b
= 0.0, wxDouble c
= 0.0,
1042 wxDouble d
= 1.0, wxDouble tx
= 0.0, wxDouble ty
= 0.0);
1045 Applies this matrix to a distance (ie. performs all transforms except
1048 virtual void TransformDistance(wxDouble
* dx
, wxDouble
* dy
) const;
1051 Applies this matrix to a point.
1053 virtual void TransformPoint(wxDouble
* x
, wxDouble
* y
) const;
1056 Translates this matrix.
1058 virtual void Translate(wxDouble dx
, wxDouble dy
);