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 /** no interpolation */
221 wxINTERPOLATION_NONE
,
222 /** fast interpolation, suited for interactivity */
223 wxINTERPOLATION_FAST
,
224 /** better quality */
225 wxINTERPOLATION_GOOD
,
226 /** best quality, not suited for interactivity */
231 Compositing is done using Porter-Duff compositions
232 (see http://keithp.com/~keithp/porterduff/p253-porter.pdf) with
233 wxGraphicsContext::SetCompositionMode().
235 The description give a short equation on how the values of a resulting
236 pixel are calculated.
237 @e R = Result, @e S = Source, @e D = Destination, colors premultiplied with alpha
238 @e Ra, @e Sa, @e Da their alpha components
240 enum wxCompositionMode
242 wxCOMPOSITION_CLEAR
, /**< @e R = 0 */
243 wxCOMPOSITION_SOURCE
, /**< @e R = S */
244 wxCOMPOSITION_OVER
, /**< @e R = @e S + @e D*(1 - @e Sa) */
245 wxCOMPOSITION_IN
, /**< @e R = @e S*@e Da */
246 wxCOMPOSITION_OUT
, /**< @e R = @e S*(1 - @e Da) */
247 wxCOMPOSITION_ATOP
, /**< @e R = @e S*@e Da + @e D*(1 - @e Sa) */
249 wxCOMPOSITION_DEST
, /**< @e R = @e D, essentially a noop */
250 wxCOMPOSITION_DEST_OVER
, /**< @e R = @e S*(1 - @e Da) + @e D */
251 wxCOMPOSITION_DEST_IN
, /**< @e R = @e D*@e Sa */
252 wxCOMPOSITION_DEST_OUT
, /**< @e R = @e D*(1 - @e Sa) */
253 wxCOMPOSITION_DEST_ATOP
, /**< @e R = @e S*(1 - @e Da) + @e D*@e Sa */
254 wxCOMPOSITION_XOR
, /**< @e R = @e S*(1 - @e Da) + @e D*(1 - @e Sa) */
255 wxCOMPOSITION_ADD
, /**< @e R = @e S + @e D */
260 @class wxGraphicsContext
262 A wxGraphicsContext instance is the object that is drawn upon. It is
263 created by a renderer using wxGraphicsRenderer::CreateContext(). This can
264 be either directly using a renderer instance, or indirectly using the
265 static convenience Create() functions of wxGraphicsContext that always
266 delegate the task to the default renderer.
269 void MyCanvas::OnPaint(wxPaintEvent &event)
274 // Create graphics context from it
275 wxGraphicsContext *gc = wxGraphicsContext::Create( dc );
279 // make a path that contains a circle and some lines
280 gc->SetPen( *wxRED_PEN );
281 wxGraphicsPath path = gc->CreatePath();
282 path.AddCircle( 50.0, 50.0, 50.0 );
283 path.MoveToPoint(0.0, 50.0);
284 path.AddLineToPoint(100.0, 50.0);
285 path.MoveToPoint(50.0, 0.0);
286 path.AddLineToPoint(50.0, 100.0 );
288 path.AddRectangle(25.0, 25.0, 50.0, 50.0);
290 gc->StrokePath(path);
300 @see wxGraphicsRenderer::CreateContext(), wxGCDC, wxDC
302 class wxGraphicsContext
: public wxGraphicsObject
306 Creates a wxGraphicsContext from a wxWindow.
308 @see wxGraphicsRenderer::CreateContext()
310 static wxGraphicsContext
* Create(wxWindow
* window
);
313 Creates a wxGraphicsContext from a wxWindowDC
315 @see wxGraphicsRenderer::CreateContext()
317 static wxGraphicsContext
* Create(const wxWindowDC
& dc
);
320 Creates a wxGraphicsContext from a wxMemoryDC
322 @see wxGraphicsRenderer::CreateContext()
324 static wxGraphicsContext
* Create(const wxMemoryDC
& dc
);
327 Creates a wxGraphicsContext from a wxPrinterDC. Under GTK+, this will
328 only work when using the GtkPrint printing backend which is available
331 @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
333 static wxGraphicsContext
* Create(const wxPrinterDC
& dc
);
336 Clips drawings to the specified region.
338 virtual void Clip(const wxRegion
& region
) = 0;
341 Clips drawings to the specified rectangle.
343 virtual void Clip(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
) = 0;
346 Concatenates the passed in transform with the current transform of this
349 virtual void ConcatTransform(const wxGraphicsMatrix
& matrix
) = 0;
352 Creates a native brush from a wxBrush.
354 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) const;
357 Creates a native graphics font from a wxFont and a text colour.
359 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
360 const wxColour
& col
= *wxBLACK
) const;
363 Creates a wxGraphicsContext from a native context. This native context
364 must be a CGContextRef for Core Graphics, a Graphics pointer for
365 GDIPlus, or a cairo_t pointer for cairo.
367 @see wxGraphicsRenderer::CreateContextFromNativeContext()
369 static wxGraphicsContext
* CreateFromNative(void* context
);
372 Creates a wxGraphicsContext from a native window.
374 @see wxGraphicsRenderer::CreateContextFromNativeWindow()
376 static wxGraphicsContext
* CreateFromNativeWindow(void* window
);
379 Creates a native brush with a linear gradient.
381 The brush starts at (@a x1, @a y1) and ends at (@a x2, @a y2). Either
382 just the start and end gradient colours (@a c1 and @a c2) or full set
383 of gradient @a stops can be specified.
385 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
389 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
390 wxDouble x2
, wxDouble y2
,
391 const wxColour
& c1
, const wxColour
& c2
) const;
394 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
395 wxDouble x2
, wxDouble y2
,
396 const wxGraphicsGradientStops
& stops
) const;
400 Creates a native affine transformation matrix from the passed in
401 values. The default parameters result in an identity matrix.
403 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
404 wxDouble c
= 0.0, wxDouble d
= 1.0,
406 wxDouble ty
= 0.0) const;
409 Creates a native graphics path which is initially empty.
411 wxGraphicsPath
CreatePath() const;
414 Creates a native pen from a wxPen.
416 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) const;
419 Creates a native brush with a radial gradient.
421 The brush originates at (@a xo, @a yc) and ends on a circle around
422 (@a xc, @a yc) with the given @a radius.
424 The gradient may be specified either by its start and end colours @a
425 oColor and @a cColor or by a full set of gradient @a stops.
427 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
430 virtual wxGraphicsBrush
431 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
432 wxDouble xc
, wxDouble yc
,
434 const wxColour
& oColor
,
435 const wxColour
& cColor
) const;
437 virtual wxGraphicsBrush
438 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
439 wxDouble xc
, wxDouble yc
,
441 const wxGraphicsGradientStops
& stops
) = 0;
445 Draws the bitmap. In case of a mono bitmap, this is treated as a mask
446 and the current brushed is used for filling.
448 virtual void DrawBitmap(const wxBitmap
& bmp
, wxDouble x
, wxDouble y
,
449 wxDouble w
, wxDouble h
) = 0;
454 virtual void DrawEllipse(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
459 virtual void DrawIcon(const wxIcon
& icon
, wxDouble x
, wxDouble y
,
460 wxDouble w
, wxDouble h
) = 0;
465 virtual void DrawLines(size_t n
, const wxPoint2DDouble
* points
,
466 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
469 Draws the path by first filling and then stroking.
471 virtual void DrawPath(const wxGraphicsPath
& path
,
472 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
477 virtual void DrawRectangle(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
480 Draws a rounded rectangle.
482 virtual void DrawRoundedRectangle(wxDouble x
, wxDouble y
, wxDouble w
,
483 wxDouble h
, wxDouble radius
);
486 Draws text at the defined position.
488 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
);
490 Draws text at the defined position.
495 The x coordinate position to draw the text at.
497 The y coordinate position to draw the text at.
499 The angle relative to the (default) horizontal direction to draw
502 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
, wxDouble angle
);
504 Draws text at the defined position.
509 The x coordinate position to draw the text at.
511 The y coordinate position to draw the text at.
512 @param backgroundBrush
513 Brush to fill the text with.
515 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
516 const wxGraphicsBrush
& backgroundBrush
);
518 Draws text at the defined position.
523 The x coordinate position to draw the text at.
525 The y coordinate position to draw the text at.
527 The angle relative to the (default) horizontal direction to draw
529 @param backgroundBrush
530 Brush to fill the text with.
532 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
533 wxDouble angle
, const wxGraphicsBrush
& backgroundBrush
);
536 Fills the path with the current brush.
538 virtual void FillPath(const wxGraphicsPath
& path
,
539 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
) = 0;
542 Returns the native context (CGContextRef for Core Graphics, Graphics
543 pointer for GDIPlus and cairo_t pointer for cairo).
545 virtual void* GetNativeContext() = 0;
548 Fills the @a widths array with the widths from the beginning of
549 @a text to the corresponding character of @a text.
551 virtual void GetPartialTextExtents(const wxString
& text
,
552 wxArrayDouble
& widths
) const = 0;
555 Gets the dimensions of the string using the currently selected font.
558 The text string to measure.
560 Variable to store the total calculated width of the text.
562 Variable to store the total calculated height of the text.
564 Variable to store the dimension from the baseline of the font to
565 the bottom of the descender.
566 @param externalLeading
567 Any extra vertical space added to the font by the font designer
570 virtual void GetTextExtent(const wxString
& text
, wxDouble
* width
,
571 wxDouble
* height
, wxDouble
* descent
,
572 wxDouble
* externalLeading
) const = 0;
575 Gets the current transformation matrix of this context.
577 virtual wxGraphicsMatrix
GetTransform() const = 0;
580 Resets the clipping to original shape.
582 virtual void ResetClip() = 0;
585 Rotates the current transformation matrix (in radians).
587 virtual void Rotate(wxDouble angle
) = 0;
590 Scales the current transformation matrix.
592 virtual void Scale(wxDouble xScale
, wxDouble yScale
) = 0;
595 Sets the brush for filling paths.
597 void SetBrush(const wxBrush
& brush
);
599 Sets the brush for filling paths.
601 virtual void SetBrush(const wxGraphicsBrush
& brush
);
604 Sets the font for drawing text.
606 void SetFont(const wxFont
& font
, const wxColour
& colour
);
608 Sets the font for drawing text.
610 virtual void SetFont(const wxGraphicsFont
& font
);
613 Sets the pen used for stroking.
615 void SetPen(const wxPen
& pen
);
617 Sets the pen used for stroking.
619 virtual void SetPen(const wxGraphicsPen
& pen
);
622 Sets the current transformation matrix of this context
624 virtual void SetTransform(const wxGraphicsMatrix
& matrix
) = 0;
627 Strokes a single line.
629 virtual void StrokeLine(wxDouble x1
, wxDouble y1
, wxDouble x2
, wxDouble y2
);
632 Stroke disconnected lines from begin to end points, fastest method
633 available for this purpose.
635 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* beginPoints
,
636 const wxPoint2DDouble
* endPoints
);
638 Stroke lines connecting all the points.
640 Unlike the other overload of this function, this method draws a single
641 polyline and not a number of disconnected lines.
643 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* points
);
646 Strokes along a path with the current pen.
648 virtual void StrokePath(const wxGraphicsPath
& path
) = 0;
651 Translates the current transformation matrix.
653 virtual void Translate(wxDouble dx
, wxDouble dy
) = 0;
656 Redirects all rendering is done into a fully transparent temporary context
658 virtual void BeginLayer(wxDouble opacity
) = 0;
661 Composites back the drawings into the context with the opacity given at
664 virtual void EndLayer() = 0;
667 Sets the antialiasing mode, returns true if it supported
669 virtual bool SetAntialiasMode(wxAntialiasMode antialias
) = 0;
672 Returns the current shape antialiasing mode
674 virtual wxAntialiasMode
GetAntialiasMode() const ;
677 Sets the interpolation quality, returns true if it supported
679 virtual bool SetInterpolationQuality(wxInterpolationQuality interpolation
) = 0;
682 Returns the current interpolation quality
684 virtual wxInterpolationQuality
GetInterpolationQuality() const;
687 Sets the compositing operator, returns true if it supported
689 virtual bool SetCompositionMode(wxCompositionMode op
) = 0;
692 Returns the current compositing operator
694 virtual wxCompositionMode
GetCompositionMode() const;
699 Represents a single gradient stop in a collection of gradient stops as
700 represented by wxGraphicsGradientStops.
707 class wxGraphicsGradientStop
711 Creates a stop with the given colour and position.
713 @param col The colour of this stop. Note that the alpha component of
714 the colour is honoured thus allowing the background colours to
715 partially show through the gradient.
716 @param pos The stop position, must be in [0, 1] range with 0 being the
717 beginning and 1 the end of the gradient.
719 wxGraphicsGradientStop(wxColour col
= wxTransparentColour
, float pos
= 0.);
721 /// Return the stop colour.
722 const wxColour
& GetColour() const;
725 Change the stop colour.
727 @param col The new colour.
729 void SetColour(const wxColour
& col
);
731 /// Return the stop position.
732 float GetPosition() const;
735 Change the stop position.
737 @param pos The new position, must always be in [0, 1] range.
739 void SetPosition(float pos
);
743 Represents a collection of wxGraphicGradientStop values for use with
744 CreateLinearGradientBrush and CreateRadialGradientBrush.
746 The stops are maintained in order of position. If two or more stops are
747 added with the same position then the one(s) added later come later.
748 This can be useful for producing discontinuities in the colour gradient.
750 Notice that this class is write-once, you can't modify the stops once they
758 class wxGraphicsGradientStops
762 Initializes the gradient stops with the given boundary colours.
764 Creates a wxGraphicsGradientStops instance with start colour given
765 by @a startCol and end colour given by @a endCol.
767 wxGraphicsGradientStops(wxColour startCol
= wxTransparentColour
,
768 wxColour endCol
= wxTransparentColour
);
774 void Add(const wxGraphicsGradientStop
& stop
);
775 void Add(wxColour col
, float pos
);
779 Returns the stop at the given index.
781 @param n The index, must be in [0, GetCount()) range.
783 wxGraphicsGradientStop
Item(unsigned n
) const;
786 Returns the number of stops.
788 unsigned GetCount() const;
791 Set the start colour to @a col
793 void SetStartColour(wxColour col
);
796 Returns the start colour.
798 wxColour
GetStartColour() const;
801 Set the end colour to @a col
803 void SetEndColour(wxColour col
);
806 Returns the end colour.
808 wxColour
GetEndColour() const;
812 @class wxGraphicsRenderer
814 A wxGraphicsRenderer is the instance corresponding to the rendering engine
815 used. There may be multiple instances on a system, if there are different
816 rendering engines present, but there is always only one instance per
817 engine. This instance is pointed back to by all objects created by it
818 (wxGraphicsContext, wxGraphicsPath etc) and can be retrieved through their
819 wxGraphicsObject::GetRenderer() method. Therefore you can create an
820 additional instance of a path etc. by calling
821 wxGraphicsObject::GetRenderer() and then using the appropriate CreateXXX()
822 function of that renderer.
825 wxGraphicsPath *path = // from somewhere
826 wxGraphicsBrush *brush = path->GetRenderer()->CreateBrush( *wxBLACK_BRUSH );
832 class wxGraphicsRenderer
: public wxObject
836 Creates a wxGraphicsContext from a wxWindow.
838 virtual wxGraphicsContext
* CreateContext(wxWindow
* window
) = 0;
841 Creates a wxGraphicsContext from a wxWindowDC
843 virtual wxGraphicsContext
* CreateContext(const wxWindowDC
& dc
) = 0 ;
846 Creates a wxGraphicsContext from a wxMemoryDC
848 virtual wxGraphicsContext
* CreateContext(const wxMemoryDC
& dc
) = 0 ;
851 Creates a wxGraphicsContext from a wxPrinterDC
853 virtual wxGraphicsContext
* CreateContext(const wxPrinterDC
& dc
) = 0 ;
856 Creates a native brush from a wxBrush.
858 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) = 0;
861 Creates a wxGraphicsContext from a native context. This native context
862 must be a CGContextRef for Core Graphics, a Graphics pointer for
863 GDIPlus, or a cairo_t pointer for cairo.
865 virtual wxGraphicsContext
* CreateContextFromNativeContext(void* context
) = 0;
868 Creates a wxGraphicsContext from a native window.
870 virtual wxGraphicsContext
* CreateContextFromNativeWindow(void* window
) = 0;
873 Creates a wxGraphicsContext that can be used for measuring texts only.
874 No drawing commands are allowed.
876 virtual wxGraphicsContext
* CreateMeasuringContext() = 0;
879 Creates a native graphics font from a wxFont and a text colour.
881 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
882 const wxColour
& col
= *wxBLACK
) = 0;
886 Creates a native brush with a linear gradient.
888 Stops support is new since wxWidgets 2.9.1, previously only the start
889 and end colours could be specified.
891 virtual wxGraphicsBrush
CreateLinearGradientBrush(wxDouble x1
,
895 const wxGraphicsGradientStops
& stops
) = 0;
898 Creates a native affine transformation matrix from the passed in
899 values. The defaults result in an identity matrix.
901 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
902 wxDouble c
= 0.0, wxDouble d
= 1.0,
904 wxDouble ty
= 0.0) = 0;
907 Creates a native graphics path which is initially empty.
909 virtual wxGraphicsPath
CreatePath() = 0;
912 Creates a native pen from a wxPen.
914 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) = 0;
917 Creates a native brush with a radial gradient.
919 Stops support is new since wxWidgets 2.9.1, previously only the start
920 and end colours could be specified.
922 virtual wxGraphicsBrush
CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
923 wxDouble xc
, wxDouble yc
,
925 const wxGraphicsGradientStops
& stops
) = 0;
928 Returns the default renderer on this platform. On OS X this is the Core
929 Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and
930 on GTK we currently default to the cairo renderer.
932 static wxGraphicsRenderer
* GetDefaultRenderer();
938 @class wxGraphicsBrush
940 A wxGraphicsBrush is a native representation of a brush. The contents are
941 specific and private to the respective renderer. Instances are ref counted
942 and can therefore be assigned as usual. The only way to get a valid
943 instance is via wxGraphicsContext::CreateBrush() or
944 wxGraphicsRenderer::CreateBrush().
949 class wxGraphicsBrush
: public wxGraphicsObject
958 @class wxGraphicsFont
960 A wxGraphicsFont is a native representation of a font. The contents are
961 specific and private to the respective renderer. Instances are ref counted
962 and can therefore be assigned as usual. The only way to get a valid
963 instance is via wxGraphicsContext::CreateFont() or
964 wxGraphicsRenderer::CreateFont().
969 class wxGraphicsFont
: public wxGraphicsObject
980 A wxGraphicsPen is a native representation of a pen. The contents are
981 specific and private to the respective renderer. Instances are ref counted
982 and can therefore be assigned as usual. The only way to get a valid
983 instance is via wxGraphicsContext::CreatePen() or
984 wxGraphicsRenderer::CreatePen().
989 class wxGraphicsPen
: public wxGraphicsObject
998 @class wxGraphicsMatrix
1000 A wxGraphicsMatrix is a native representation of an affine matrix. The
1001 contents are specific and private to the respective renderer. Instances are
1002 ref counted and can therefore be assigned as usual. The only way to get a
1003 valid instance is via wxGraphicsContext::CreateMatrix() or
1004 wxGraphicsRenderer::CreateMatrix().
1009 class wxGraphicsMatrix
: public wxGraphicsObject
1013 Concatenates the matrix passed with the current matrix.
1015 virtual void Concat(const wxGraphicsMatrix
* t
);
1017 Concatenates the matrix passed with the current matrix.
1019 void Concat(const wxGraphicsMatrix
& t
);
1022 Returns the component values of the matrix via the argument pointers.
1024 virtual void Get(wxDouble
* a
= NULL
, wxDouble
* b
= NULL
,
1025 wxDouble
* c
= NULL
, wxDouble
* d
= NULL
,
1026 wxDouble
* tx
= NULL
, wxDouble
* ty
= NULL
) const;
1029 Returns the native representation of the matrix. For CoreGraphics this
1030 is a CFAffineMatrix pointer, for GDIPlus a Matrix Pointer, and for
1031 Cairo a cairo_matrix_t pointer.
1033 virtual void* GetNativeMatrix() const;
1038 virtual void Invert();
1041 Returns @true if the elements of the transformation matrix are equal.
1043 virtual bool IsEqual(const wxGraphicsMatrix
* t
) const;
1045 Returns @true if the elements of the transformation matrix are equal.
1047 bool IsEqual(const wxGraphicsMatrix
& t
) const;
1050 Return @true if this is the identity matrix.
1052 virtual bool IsIdentity() const;
1055 Rotates this matrix (in radians).
1057 virtual void Rotate(wxDouble angle
);
1062 virtual void Scale(wxDouble xScale
, wxDouble yScale
);
1065 Sets the matrix to the respective values (default values are the
1068 virtual void Set(wxDouble a
= 1.0, wxDouble b
= 0.0, wxDouble c
= 0.0,
1069 wxDouble d
= 1.0, wxDouble tx
= 0.0, wxDouble ty
= 0.0);
1072 Applies this matrix to a distance (ie. performs all transforms except
1075 virtual void TransformDistance(wxDouble
* dx
, wxDouble
* dy
) const;
1078 Applies this matrix to a point.
1080 virtual void TransformPoint(wxDouble
* x
, wxDouble
* y
) const;
1083 Translates this matrix.
1085 virtual void Translate(wxDouble dx
, wxDouble dy
);