1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of various wxGraphics* classes
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
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::SetAntialiasMode().
208 /** No anti-aliasing */
211 /** The default anti-aliasing */
216 Interpolation quality used by wxGraphicsContext::SetInterpolationQuality().
218 enum wxInterpolationQuality
220 /** default interpolation, based on type of context, in general medium quality */
221 wxINTERPOLATION_DEFAULT
,
222 /** no interpolation */
223 wxINTERPOLATION_NONE
,
224 /** fast interpolation, suited for interactivity */
225 wxINTERPOLATION_FAST
,
226 /** better quality */
227 wxINTERPOLATION_GOOD
,
228 /** best quality, not suited for interactivity */
233 Compositing is done using Porter-Duff compositions
234 (see http://keithp.com/~keithp/porterduff/p253-porter.pdf) with
235 wxGraphicsContext::SetCompositionMode().
237 The description give a short equation on how the values of a resulting
238 pixel are calculated.
239 @e R = Result, @e S = Source, @e D = Destination, colors premultiplied with alpha
240 @e Ra, @e Sa, @e Da their alpha components
242 enum wxCompositionMode
244 wxCOMPOSITION_CLEAR
, /**< @e R = 0 */
245 wxCOMPOSITION_SOURCE
, /**< @e R = S */
246 wxCOMPOSITION_OVER
, /**< @e R = @e S + @e D*(1 - @e Sa) */
247 wxCOMPOSITION_IN
, /**< @e R = @e S*@e Da */
248 wxCOMPOSITION_OUT
, /**< @e R = @e S*(1 - @e Da) */
249 wxCOMPOSITION_ATOP
, /**< @e R = @e S*@e Da + @e D*(1 - @e Sa) */
251 wxCOMPOSITION_DEST
, /**< @e R = @e D, essentially a noop */
252 wxCOMPOSITION_DEST_OVER
, /**< @e R = @e S*(1 - @e Da) + @e D */
253 wxCOMPOSITION_DEST_IN
, /**< @e R = @e D*@e Sa */
254 wxCOMPOSITION_DEST_OUT
, /**< @e R = @e D*(1 - @e Sa) */
255 wxCOMPOSITION_DEST_ATOP
, /**< @e R = @e S*(1 - @e Da) + @e D*@e Sa */
256 wxCOMPOSITION_XOR
, /**< @e R = @e S*(1 - @e Da) + @e D*(1 - @e Sa) */
257 wxCOMPOSITION_ADD
, /**< @e R = @e S + @e D */
262 @class wxGraphicsContext
264 A wxGraphicsContext instance is the object that is drawn upon. It is
265 created by a renderer using wxGraphicsRenderer::CreateContext(). This can
266 be either directly using a renderer instance, or indirectly using the
267 static convenience Create() functions of wxGraphicsContext that always
268 delegate the task to the default renderer.
271 void MyCanvas::OnPaint(wxPaintEvent &event)
276 // Create graphics context from it
277 wxGraphicsContext *gc = wxGraphicsContext::Create( dc );
281 // make a path that contains a circle and some lines
282 gc->SetPen( *wxRED_PEN );
283 wxGraphicsPath path = gc->CreatePath();
284 path.AddCircle( 50.0, 50.0, 50.0 );
285 path.MoveToPoint(0.0, 50.0);
286 path.AddLineToPoint(100.0, 50.0);
287 path.MoveToPoint(50.0, 0.0);
288 path.AddLineToPoint(50.0, 100.0 );
290 path.AddRectangle(25.0, 25.0, 50.0, 50.0);
292 gc->StrokePath(path);
302 @see wxGraphicsRenderer::CreateContext(), wxGCDC, wxDC
304 class wxGraphicsContext
: public wxGraphicsObject
308 Creates a wxGraphicsContext from a wxWindow.
310 @see wxGraphicsRenderer::CreateContext()
312 static wxGraphicsContext
* Create(wxWindow
* window
);
315 Creates a wxGraphicsContext from a wxWindowDC
317 @see wxGraphicsRenderer::CreateContext()
319 static wxGraphicsContext
* Create(const wxWindowDC
& dc
);
322 Creates a wxGraphicsContext from a wxMemoryDC
324 @see wxGraphicsRenderer::CreateContext()
326 static wxGraphicsContext
* Create(const wxMemoryDC
& dc
);
329 Creates a wxGraphicsContext from a wxPrinterDC. Under GTK+, this will
330 only work when using the GtkPrint printing backend which is available
333 @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
335 static wxGraphicsContext
* Create(const wxPrinterDC
& dc
);
338 Clips drawings to the specified region.
340 virtual void Clip(const wxRegion
& region
) = 0;
343 Clips drawings to the specified rectangle.
345 virtual void Clip(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
) = 0;
348 Concatenates the passed in transform with the current transform of this
351 virtual void ConcatTransform(const wxGraphicsMatrix
& matrix
) = 0;
354 Creates a native brush from a wxBrush.
356 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) const;
359 Creates a native graphics font from a wxFont and a text colour.
361 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
362 const wxColour
& col
= *wxBLACK
) const;
365 Creates a wxGraphicsContext from a native context. This native context
366 must be a CGContextRef for Core Graphics, a Graphics pointer for
367 GDIPlus, or a cairo_t pointer for cairo.
369 @see wxGraphicsRenderer::CreateContextFromNativeContext()
371 static wxGraphicsContext
* CreateFromNative(void* context
);
374 Creates a wxGraphicsContext from a native window.
376 @see wxGraphicsRenderer::CreateContextFromNativeWindow()
378 static wxGraphicsContext
* CreateFromNativeWindow(void* window
);
381 Creates a native brush with a linear gradient.
383 The brush starts at (@a x1, @a y1) and ends at (@a x2, @a y2). Either
384 just the start and end gradient colours (@a c1 and @a c2) or full set
385 of gradient @a stops can be specified.
387 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
391 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
392 wxDouble x2
, wxDouble y2
,
393 const wxColour
& c1
, const wxColour
& c2
) const;
396 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
397 wxDouble x2
, wxDouble y2
,
398 const wxGraphicsGradientStops
& stops
) const;
402 Creates a native affine transformation matrix from the passed in
403 values. The default parameters result in an identity matrix.
405 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
406 wxDouble c
= 0.0, wxDouble d
= 1.0,
408 wxDouble ty
= 0.0) const;
411 Creates a native graphics path which is initially empty.
413 wxGraphicsPath
CreatePath() const;
416 Creates a native pen from a wxPen.
418 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) const;
421 Creates a native brush with a radial gradient.
423 The brush originates at (@a xo, @a yc) and ends on a circle around
424 (@a xc, @a yc) with the given @a radius.
426 The gradient may be specified either by its start and end colours @a
427 oColor and @a cColor or by a full set of gradient @a stops.
429 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
432 virtual wxGraphicsBrush
433 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
434 wxDouble xc
, wxDouble yc
,
436 const wxColour
& oColor
,
437 const wxColour
& cColor
) const;
439 virtual wxGraphicsBrush
440 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
441 wxDouble xc
, wxDouble yc
,
443 const wxGraphicsGradientStops
& stops
) = 0;
447 Draws the bitmap. In case of a mono bitmap, this is treated as a mask
448 and the current brushed is used for filling.
450 virtual void DrawBitmap(const wxBitmap
& bmp
, wxDouble x
, wxDouble y
,
451 wxDouble w
, wxDouble h
) = 0;
456 virtual void DrawEllipse(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
461 virtual void DrawIcon(const wxIcon
& icon
, wxDouble x
, wxDouble y
,
462 wxDouble w
, wxDouble h
) = 0;
467 virtual void DrawLines(size_t n
, const wxPoint2DDouble
* points
,
468 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
471 Draws the path by first filling and then stroking.
473 virtual void DrawPath(const wxGraphicsPath
& path
,
474 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
479 virtual void DrawRectangle(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
482 Draws a rounded rectangle.
484 virtual void DrawRoundedRectangle(wxDouble x
, wxDouble y
, wxDouble w
,
485 wxDouble h
, wxDouble radius
);
488 Draws text at the defined position.
490 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
);
492 Draws text at the defined position.
497 The x coordinate position to draw the text at.
499 The y coordinate position to draw the text at.
501 The angle relative to the (default) horizontal direction to draw
504 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
, wxDouble angle
);
506 Draws text at the defined position.
511 The x coordinate position to draw the text at.
513 The y coordinate position to draw the text at.
514 @param backgroundBrush
515 Brush to fill the text with.
517 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
518 const wxGraphicsBrush
& backgroundBrush
);
520 Draws text at the defined position.
525 The x coordinate position to draw the text at.
527 The y coordinate position to draw the text at.
529 The angle relative to the (default) horizontal direction to draw
531 @param backgroundBrush
532 Brush to fill the text with.
534 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
535 wxDouble angle
, const wxGraphicsBrush
& backgroundBrush
);
538 Fills the path with the current brush.
540 virtual void FillPath(const wxGraphicsPath
& path
,
541 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
) = 0;
544 Returns the native context (CGContextRef for Core Graphics, Graphics
545 pointer for GDIPlus and cairo_t pointer for cairo).
547 virtual void* GetNativeContext() = 0;
550 Fills the @a widths array with the widths from the beginning of
551 @a text to the corresponding character of @a text.
553 virtual void GetPartialTextExtents(const wxString
& text
,
554 wxArrayDouble
& widths
) const = 0;
557 Gets the dimensions of the string using the currently selected font.
560 The text string to measure.
562 Variable to store the total calculated width of the text.
564 Variable to store the total calculated height of the text.
566 Variable to store the dimension from the baseline of the font to
567 the bottom of the descender.
568 @param externalLeading
569 Any extra vertical space added to the font by the font designer
572 virtual void GetTextExtent(const wxString
& text
, wxDouble
* width
,
573 wxDouble
* height
, wxDouble
* descent
,
574 wxDouble
* externalLeading
) const = 0;
577 Gets the current transformation matrix of this context.
579 virtual wxGraphicsMatrix
GetTransform() const = 0;
582 Resets the clipping to original shape.
584 virtual void ResetClip() = 0;
587 Rotates the current transformation matrix (in radians).
589 virtual void Rotate(wxDouble angle
) = 0;
592 Scales the current transformation matrix.
594 virtual void Scale(wxDouble xScale
, wxDouble yScale
) = 0;
597 Sets the brush for filling paths.
599 void SetBrush(const wxBrush
& brush
);
601 Sets the brush for filling paths.
603 virtual void SetBrush(const wxGraphicsBrush
& brush
);
606 Sets the font for drawing text.
608 void SetFont(const wxFont
& font
, const wxColour
& colour
);
610 Sets the font for drawing text.
612 virtual void SetFont(const wxGraphicsFont
& font
);
615 Sets the pen used for stroking.
617 void SetPen(const wxPen
& pen
);
619 Sets the pen used for stroking.
621 virtual void SetPen(const wxGraphicsPen
& pen
);
624 Sets the current transformation matrix of this context
626 virtual void SetTransform(const wxGraphicsMatrix
& matrix
) = 0;
629 Strokes a single line.
631 virtual void StrokeLine(wxDouble x1
, wxDouble y1
, wxDouble x2
, wxDouble y2
);
634 Stroke disconnected lines from begin to end points, fastest method
635 available for this purpose.
637 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* beginPoints
,
638 const wxPoint2DDouble
* endPoints
);
640 Stroke lines connecting all the points.
642 Unlike the other overload of this function, this method draws a single
643 polyline and not a number of disconnected lines.
645 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* points
);
648 Strokes along a path with the current pen.
650 virtual void StrokePath(const wxGraphicsPath
& path
) = 0;
653 Translates the current transformation matrix.
655 virtual void Translate(wxDouble dx
, wxDouble dy
) = 0;
658 Redirects all rendering is done into a fully transparent temporary context
660 virtual void BeginLayer(wxDouble opacity
) = 0;
663 Composites back the drawings into the context with the opacity given at
666 virtual void EndLayer() = 0;
669 Sets the antialiasing mode, returns true if it supported
671 virtual bool SetAntialiasMode(wxAntialiasMode antialias
) = 0;
674 Returns the current shape antialiasing mode
676 virtual wxAntialiasMode
GetAntialiasMode() const ;
679 Sets the interpolation quality, returns true if it supported
681 virtual bool SetInterpolationQuality(wxInterpolationQuality interpolation
) = 0;
684 Returns the current interpolation quality
686 virtual wxInterpolationQuality
GetInterpolationQuality() const;
689 Sets the compositing operator, returns true if it supported
691 virtual bool SetCompositionMode(wxCompositionMode op
) = 0;
694 Returns the current compositing operator
696 virtual wxCompositionMode
GetCompositionMode() const;
701 Represents a single gradient stop in a collection of gradient stops as
702 represented by wxGraphicsGradientStops.
709 class wxGraphicsGradientStop
713 Creates a stop with the given colour and position.
715 @param col The colour of this stop. Note that the alpha component of
716 the colour is honoured thus allowing the background colours to
717 partially show through the gradient.
718 @param pos The stop position, must be in [0, 1] range with 0 being the
719 beginning and 1 the end of the gradient.
721 wxGraphicsGradientStop(wxColour col
= wxTransparentColour
, float pos
= 0.);
723 /// Return the stop colour.
724 const wxColour
& GetColour() const;
727 Change the stop colour.
729 @param col The new colour.
731 void SetColour(const wxColour
& col
);
733 /// Return the stop position.
734 float GetPosition() const;
737 Change the stop position.
739 @param pos The new position, must always be in [0, 1] range.
741 void SetPosition(float pos
);
745 Represents a collection of wxGraphicGradientStop values for use with
746 CreateLinearGradientBrush and CreateRadialGradientBrush.
748 The stops are maintained in order of position. If two or more stops are
749 added with the same position then the one(s) added later come later.
750 This can be useful for producing discontinuities in the colour gradient.
752 Notice that this class is write-once, you can't modify the stops once they
760 class wxGraphicsGradientStops
764 Initializes the gradient stops with the given boundary colours.
766 Creates a wxGraphicsGradientStops instance with start colour given
767 by @a startCol and end colour given by @a endCol.
769 wxGraphicsGradientStops(wxColour startCol
= wxTransparentColour
,
770 wxColour endCol
= wxTransparentColour
);
776 void Add(const wxGraphicsGradientStop
& stop
);
777 void Add(wxColour col
, float pos
);
781 Returns the stop at the given index.
783 @param n The index, must be in [0, GetCount()) range.
785 wxGraphicsGradientStop
Item(unsigned n
) const;
788 Returns the number of stops.
790 unsigned GetCount() const;
793 Set the start colour to @a col
795 void SetStartColour(wxColour col
);
798 Returns the start colour.
800 wxColour
GetStartColour() const;
803 Set the end colour to @a col
805 void SetEndColour(wxColour col
);
808 Returns the end colour.
810 wxColour
GetEndColour() const;
814 @class wxGraphicsRenderer
816 A wxGraphicsRenderer is the instance corresponding to the rendering engine
817 used. There may be multiple instances on a system, if there are different
818 rendering engines present, but there is always only one instance per
819 engine. This instance is pointed back to by all objects created by it
820 (wxGraphicsContext, wxGraphicsPath etc) and can be retrieved through their
821 wxGraphicsObject::GetRenderer() method. Therefore you can create an
822 additional instance of a path etc. by calling
823 wxGraphicsObject::GetRenderer() and then using the appropriate CreateXXX()
824 function of that renderer.
827 wxGraphicsPath *path = // from somewhere
828 wxGraphicsBrush *brush = path->GetRenderer()->CreateBrush( *wxBLACK_BRUSH );
834 class wxGraphicsRenderer
: public wxObject
838 Creates a wxGraphicsContext from a wxWindow.
840 virtual wxGraphicsContext
* CreateContext(wxWindow
* window
) = 0;
843 Creates a wxGraphicsContext from a wxWindowDC
845 virtual wxGraphicsContext
* CreateContext(const wxWindowDC
& dc
) = 0 ;
848 Creates a wxGraphicsContext from a wxMemoryDC
850 virtual wxGraphicsContext
* CreateContext(const wxMemoryDC
& dc
) = 0 ;
853 Creates a wxGraphicsContext from a wxPrinterDC
855 virtual wxGraphicsContext
* CreateContext(const wxPrinterDC
& dc
) = 0 ;
858 Creates a native brush from a wxBrush.
860 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) = 0;
863 Creates a wxGraphicsContext from a native context. This native context
864 must be a CGContextRef for Core Graphics, a Graphics pointer for
865 GDIPlus, or a cairo_t pointer for cairo.
867 virtual wxGraphicsContext
* CreateContextFromNativeContext(void* context
) = 0;
870 Creates a wxGraphicsContext from a native window.
872 virtual wxGraphicsContext
* CreateContextFromNativeWindow(void* window
) = 0;
875 Creates a wxGraphicsContext that can be used for measuring texts only.
876 No drawing commands are allowed.
878 virtual wxGraphicsContext
* CreateMeasuringContext() = 0;
881 Creates a native graphics font from a wxFont and a text colour.
883 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
884 const wxColour
& col
= *wxBLACK
) = 0;
888 Creates a native brush with a linear gradient.
890 Stops support is new since wxWidgets 2.9.1, previously only the start
891 and end colours could be specified.
893 virtual wxGraphicsBrush
CreateLinearGradientBrush(wxDouble x1
,
897 const wxGraphicsGradientStops
& stops
) = 0;
900 Creates a native affine transformation matrix from the passed in
901 values. The defaults result in an identity matrix.
903 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
904 wxDouble c
= 0.0, wxDouble d
= 1.0,
906 wxDouble ty
= 0.0) = 0;
909 Creates a native graphics path which is initially empty.
911 virtual wxGraphicsPath
CreatePath() = 0;
914 Creates a native pen from a wxPen.
916 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) = 0;
919 Creates a native brush with a radial gradient.
921 Stops support is new since wxWidgets 2.9.1, previously only the start
922 and end colours could be specified.
924 virtual wxGraphicsBrush
CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
925 wxDouble xc
, wxDouble yc
,
927 const wxGraphicsGradientStops
& stops
) = 0;
930 Returns the default renderer on this platform. On OS X this is the Core
931 Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and
932 on GTK we currently default to the cairo renderer.
934 static wxGraphicsRenderer
* GetDefaultRenderer();
940 @class wxGraphicsBrush
942 A wxGraphicsBrush is a native representation of a brush. The contents are
943 specific and private to the respective renderer. Instances are ref counted
944 and can therefore be assigned as usual. The only way to get a valid
945 instance is via wxGraphicsContext::CreateBrush() or
946 wxGraphicsRenderer::CreateBrush().
951 class wxGraphicsBrush
: public wxGraphicsObject
960 @class wxGraphicsFont
962 A wxGraphicsFont is a native representation of a font. The contents are
963 specific and private to the respective renderer. Instances are ref counted
964 and can therefore be assigned as usual. The only way to get a valid
965 instance is via wxGraphicsContext::CreateFont() or
966 wxGraphicsRenderer::CreateFont().
971 class wxGraphicsFont
: public wxGraphicsObject
982 A wxGraphicsPen is a native representation of a pen. The contents are
983 specific and private to the respective renderer. Instances are ref counted
984 and can therefore be assigned as usual. The only way to get a valid
985 instance is via wxGraphicsContext::CreatePen() or
986 wxGraphicsRenderer::CreatePen().
991 class wxGraphicsPen
: public wxGraphicsObject
1000 @class wxGraphicsMatrix
1002 A wxGraphicsMatrix is a native representation of an affine matrix. The
1003 contents are specific and private to the respective renderer. Instances are
1004 ref counted and can therefore be assigned as usual. The only way to get a
1005 valid instance is via wxGraphicsContext::CreateMatrix() or
1006 wxGraphicsRenderer::CreateMatrix().
1011 class wxGraphicsMatrix
: public wxGraphicsObject
1015 Concatenates the matrix passed with the current matrix.
1017 virtual void Concat(const wxGraphicsMatrix
* t
);
1019 Concatenates the matrix passed with the current matrix.
1021 void Concat(const wxGraphicsMatrix
& t
);
1024 Returns the component values of the matrix via the argument pointers.
1026 virtual void Get(wxDouble
* a
= NULL
, wxDouble
* b
= NULL
,
1027 wxDouble
* c
= NULL
, wxDouble
* d
= NULL
,
1028 wxDouble
* tx
= NULL
, wxDouble
* ty
= NULL
) const;
1031 Returns the native representation of the matrix. For CoreGraphics this
1032 is a CFAffineMatrix pointer, for GDIPlus a Matrix Pointer, and for
1033 Cairo a cairo_matrix_t pointer.
1035 virtual void* GetNativeMatrix() const;
1040 virtual void Invert();
1043 Returns @true if the elements of the transformation matrix are equal.
1045 virtual bool IsEqual(const wxGraphicsMatrix
* t
) const;
1047 Returns @true if the elements of the transformation matrix are equal.
1049 bool IsEqual(const wxGraphicsMatrix
& t
) const;
1052 Return @true if this is the identity matrix.
1054 virtual bool IsIdentity() const;
1057 Rotates this matrix (in radians).
1059 virtual void Rotate(wxDouble angle
);
1064 virtual void Scale(wxDouble xScale
, wxDouble yScale
);
1067 Sets the matrix to the respective values (default values are the
1070 virtual void Set(wxDouble a
= 1.0, wxDouble b
= 0.0, wxDouble c
= 0.0,
1071 wxDouble d
= 1.0, wxDouble tx
= 0.0, wxDouble ty
= 0.0);
1074 Applies this matrix to a distance (ie. performs all transforms except
1077 virtual void TransformDistance(wxDouble
* dx
, wxDouble
* dy
) const;
1080 Applies this matrix to a point.
1082 virtual void TransformPoint(wxDouble
* x
, wxDouble
* y
) const;
1085 Translates this matrix.
1087 virtual void Translate(wxDouble dx
, wxDouble dy
);