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 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
) const;
121 @return @true if the point is within the path.
123 virtual bool Contains(wxDouble x
, wxDouble y
,
124 wxPolygonFillMode 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
245 Indicates invalid or unsupported composition mode.
247 This value can't be passed to wxGraphicsContext::SetCompositionMode().
251 wxCOMPOSITION_INVALID
= -1,
252 wxCOMPOSITION_CLEAR
, /**< @e R = 0 */
253 wxCOMPOSITION_SOURCE
, /**< @e R = S */
254 wxCOMPOSITION_OVER
, /**< @e R = @e S + @e D*(1 - @e Sa) */
255 wxCOMPOSITION_IN
, /**< @e R = @e S*@e Da */
256 wxCOMPOSITION_OUT
, /**< @e R = @e S*(1 - @e Da) */
257 wxCOMPOSITION_ATOP
, /**< @e R = @e S*@e Da + @e D*(1 - @e Sa) */
259 wxCOMPOSITION_DEST
, /**< @e R = @e D, essentially a noop */
260 wxCOMPOSITION_DEST_OVER
, /**< @e R = @e S*(1 - @e Da) + @e D */
261 wxCOMPOSITION_DEST_IN
, /**< @e R = @e D*@e Sa */
262 wxCOMPOSITION_DEST_OUT
, /**< @e R = @e D*(1 - @e Sa) */
263 wxCOMPOSITION_DEST_ATOP
, /**< @e R = @e S*(1 - @e Da) + @e D*@e Sa */
264 wxCOMPOSITION_XOR
, /**< @e R = @e S*(1 - @e Da) + @e D*(1 - @e Sa) */
265 wxCOMPOSITION_ADD
/**< @e R = @e S + @e D */
271 The objects of this class are not created directly but only via
272 wxGraphicsContext or wxGraphicsRenderer CreateBitmap(),
273 CreateBitmapFromImage() or CreateSubBitmap() methods. They can subsequently
274 be used with wxGraphicsContext::DrawBitmap(). The only other operation is
275 testing for the bitmap validity which can be performed using IsNull()
276 method inherited from the base class.
278 class wxGraphicsBitmap
: public wxGraphicsObject
282 Default constructor creates an invalid bitmap.
284 wxGraphicsBitmap() {}
287 Return the contents of this bitmap as wxImage.
289 Using this method is more efficient than converting wxGraphicsBitmap to
290 wxBitmap first and then to wxImage and can be useful if, for example,
291 you want to save wxGraphicsBitmap as a disk file in a format not
292 directly supported by wxBitmap.
294 Invalid image is returned if the bitmap is invalid.
298 wxImage
ConvertToImage() const;
302 @class wxGraphicsContext
304 A wxGraphicsContext instance is the object that is drawn upon. It is
305 created by a renderer using wxGraphicsRenderer::CreateContext(). This can
306 be either directly using a renderer instance, or indirectly using the
307 static convenience Create() functions of wxGraphicsContext that always
308 delegate the task to the default renderer.
311 void MyCanvas::OnPaint(wxPaintEvent &event)
316 // Create graphics context from it
317 wxGraphicsContext *gc = wxGraphicsContext::Create( dc );
321 // make a path that contains a circle and some lines
322 gc->SetPen( *wxRED_PEN );
323 wxGraphicsPath path = gc->CreatePath();
324 path.AddCircle( 50.0, 50.0, 50.0 );
325 path.MoveToPoint(0.0, 50.0);
326 path.AddLineToPoint(100.0, 50.0);
327 path.MoveToPoint(50.0, 0.0);
328 path.AddLineToPoint(50.0, 100.0 );
330 path.AddRectangle(25.0, 25.0, 50.0, 50.0);
332 gc->StrokePath(path);
342 @see wxGraphicsRenderer::CreateContext(), wxGCDC, wxDC
344 class wxGraphicsContext
: public wxGraphicsObject
348 Creates a wxGraphicsContext from a wxWindow.
350 @see wxGraphicsRenderer::CreateContext()
352 static wxGraphicsContext
* Create(wxWindow
* window
);
355 Creates a wxGraphicsContext from a wxWindowDC
357 @see wxGraphicsRenderer::CreateContext()
359 static wxGraphicsContext
* Create(const wxWindowDC
& windowDC
);
362 Creates a wxGraphicsContext from a wxMemoryDC
364 @see wxGraphicsRenderer::CreateContext()
366 static wxGraphicsContext
* Create(const wxMemoryDC
& memoryDC
);
369 Creates a wxGraphicsContext from a wxPrinterDC. Under GTK+, this will
370 only work when using the GtkPrint printing backend which is available
373 @see wxGraphicsRenderer::CreateContext(), @ref overview_unixprinting
375 static wxGraphicsContext
* Create(const wxPrinterDC
& printerDC
);
378 Creates a wxGraphicsContext from a wxEnhMetaFileDC.
380 This function, as wxEnhMetaFileDC class itself, is only available only
383 @see wxGraphicsRenderer::CreateContext()
385 static wxGraphicsContext
* Create(const wxEnhMetaFileDC
& metaFileDC
);
388 Creates a wxGraphicsContext associated with a wxImage.
390 The image specifies the size of the context as well as whether alpha is
391 supported (if wxImage::HasAlpha()) or not and the initial contents of
392 the context. The @a image object must have a life time greater than
393 that of the new context as the context copies its contents back to the
394 image when it is destroyed.
398 static wxGraphicsContext
* Create(wxImage
& image
);
401 Clips drawings to the specified region.
403 virtual void Clip(const wxRegion
& region
) = 0;
406 Clips drawings to the specified rectangle.
408 virtual void Clip(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
) = 0;
411 Concatenates the passed in transform with the current transform of this
414 virtual void ConcatTransform(const wxGraphicsMatrix
& matrix
) = 0;
417 Creates wxGraphicsBitmap from an existing wxBitmap.
419 Returns an invalid wxNullGraphicsBitmap on failure.
421 virtual wxGraphicsBitmap
CreateBitmap( const wxBitmap
&bitmap
) = 0;
424 Creates wxGraphicsBitmap from an existing wxImage.
426 This method is more efficient than converting wxImage to wxBitmap first
427 and then calling CreateBitmap() but otherwise has the same effect.
429 Returns an invalid wxNullGraphicsBitmap on failure.
433 virtual wxGraphicsBitmap
CreateBitmapFromImage(const wxImage
& image
);
436 Extracts a sub-bitmap from an existing bitmap.
438 Currently this function is implemented in the native MSW and OS X
439 versions but not when using Cairo.
441 virtual wxGraphicsBitmap
CreateSubBitmap(const wxGraphicsBitmap
& bitmap
,
442 wxDouble x
, wxDouble y
,
443 wxDouble w
, wxDouble h
) = 0;
446 Creates a native brush from a wxBrush.
448 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) const;
451 Creates a native graphics font from a wxFont and a text colour.
453 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
454 const wxColour
& col
= *wxBLACK
) const;
457 Creates a font object with the specified attributes.
459 The use of overload taking wxFont is preferred, see
460 wxGraphicsRenderer::CreateFont() for more details.
464 virtual wxGraphicsFont
CreateFont(double sizeInPixels
,
465 const wxString
& facename
,
466 int flags
= wxFONTFLAG_DEFAULT
,
467 const wxColour
& col
= *wxBLACK
) const;
470 Creates a wxGraphicsContext from a native context. This native context
471 must be a CGContextRef for Core Graphics, a Graphics pointer for
472 GDIPlus, or a cairo_t pointer for cairo.
474 @see wxGraphicsRenderer::CreateContextFromNativeContext()
476 static wxGraphicsContext
* CreateFromNative(void* context
);
479 Creates a wxGraphicsContext from a native window.
481 @see wxGraphicsRenderer::CreateContextFromNativeWindow()
483 static wxGraphicsContext
* CreateFromNativeWindow(void* window
);
486 Creates a native brush with a linear gradient.
488 The brush starts at (@a x1, @a y1) and ends at (@a x2, @a y2). Either
489 just the start and end gradient colours (@a c1 and @a c2) or full set
490 of gradient @a stops can be specified.
492 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
496 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
497 wxDouble x2
, wxDouble y2
,
498 const wxColour
& c1
, const wxColour
& c2
) const;
501 CreateLinearGradientBrush(wxDouble x1
, wxDouble y1
,
502 wxDouble x2
, wxDouble y2
,
503 const wxGraphicsGradientStops
& stops
) const;
507 Creates a native affine transformation matrix from the passed in
508 values. The default parameters result in an identity matrix.
510 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
511 wxDouble c
= 0.0, wxDouble d
= 1.0,
513 wxDouble ty
= 0.0) const;
516 Creates a native graphics path which is initially empty.
518 wxGraphicsPath
CreatePath() const;
521 Creates a native pen from a wxPen.
523 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) const;
526 Creates a native brush with a radial gradient.
528 The brush originates at (@a xo, @a yc) and ends on a circle around
529 (@a xc, @a yc) with the given @a radius.
531 The gradient may be specified either by its start and end colours @a
532 oColor and @a cColor or by a full set of gradient @a stops.
534 The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1.
537 virtual wxGraphicsBrush
538 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
539 wxDouble xc
, wxDouble yc
,
541 const wxColour
& oColor
,
542 const wxColour
& cColor
) const;
544 virtual wxGraphicsBrush
545 CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
546 wxDouble xc
, wxDouble yc
,
548 const wxGraphicsGradientStops
& stops
) = 0;
552 Draws the bitmap. In case of a mono bitmap, this is treated as a mask
553 and the current brushed is used for filling.
556 virtual void DrawBitmap(const wxGraphicsBitmap
& bmp
,
557 wxDouble x
, wxDouble y
,
558 wxDouble w
, wxDouble h
) = 0;
559 virtual void DrawBitmap(const wxBitmap
& bmp
,
560 wxDouble x
, wxDouble y
,
561 wxDouble w
, wxDouble h
) = 0;
567 virtual void DrawEllipse(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
572 virtual void DrawIcon(const wxIcon
& icon
, wxDouble x
, wxDouble y
,
573 wxDouble w
, wxDouble h
) = 0;
578 virtual void DrawLines(size_t n
, const wxPoint2DDouble
* points
,
579 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
582 Draws the path by first filling and then stroking.
584 virtual void DrawPath(const wxGraphicsPath
& path
,
585 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
);
590 virtual void DrawRectangle(wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
593 Draws a rounded rectangle.
595 virtual void DrawRoundedRectangle(wxDouble x
, wxDouble y
, wxDouble w
,
596 wxDouble h
, wxDouble radius
);
599 Draws text at the defined position.
601 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
);
603 Draws text at the defined position.
608 The x coordinate position to draw the text at.
610 The y coordinate position to draw the text at.
612 The angle relative to the (default) horizontal direction to draw
615 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
, wxDouble angle
);
617 Draws text at the defined position.
622 The x coordinate position to draw the text at.
624 The y coordinate position to draw the text at.
625 @param backgroundBrush
626 Brush to fill the text with.
628 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
629 const wxGraphicsBrush
& backgroundBrush
);
631 Draws text at the defined position.
636 The x coordinate position to draw the text at.
638 The y coordinate position to draw the text at.
640 The angle relative to the (default) horizontal direction to draw
642 @param backgroundBrush
643 Brush to fill the text with.
645 void DrawText(const wxString
& str
, wxDouble x
, wxDouble y
,
646 wxDouble angle
, const wxGraphicsBrush
& backgroundBrush
);
649 Fills the path with the current brush.
651 virtual void FillPath(const wxGraphicsPath
& path
,
652 wxPolygonFillMode fillStyle
= wxODDEVEN_RULE
) = 0;
655 Returns the native context (CGContextRef for Core Graphics, Graphics
656 pointer for GDIPlus and cairo_t pointer for cairo).
658 virtual void* GetNativeContext() = 0;
661 Fills the @a widths array with the widths from the beginning of
662 @a text to the corresponding character of @a text.
664 virtual void GetPartialTextExtents(const wxString
& text
,
665 wxArrayDouble
& widths
) const = 0;
668 Gets the dimensions of the string using the currently selected font.
671 The text string to measure.
673 Variable to store the total calculated width of the text.
675 Variable to store the total calculated height of the text.
677 Variable to store the dimension from the baseline of the font to
678 the bottom of the descender.
679 @param externalLeading
680 Any extra vertical space added to the font by the font designer
683 virtual void GetTextExtent(const wxString
& text
, wxDouble
* width
,
684 wxDouble
* height
, wxDouble
* descent
,
685 wxDouble
* externalLeading
) const = 0;
688 Gets the current transformation matrix of this context.
690 virtual wxGraphicsMatrix
GetTransform() const = 0;
693 Resets the clipping to original shape.
695 virtual void ResetClip() = 0;
698 Rotates the current transformation matrix (in radians).
700 virtual void Rotate(wxDouble angle
) = 0;
703 Scales the current transformation matrix.
705 virtual void Scale(wxDouble xScale
, wxDouble yScale
) = 0;
708 Sets the brush for filling paths.
710 void SetBrush(const wxBrush
& brush
);
712 Sets the brush for filling paths.
714 virtual void SetBrush(const wxGraphicsBrush
& brush
);
717 Sets the font for drawing text.
719 void SetFont(const wxFont
& font
, const wxColour
& colour
);
721 Sets the font for drawing text.
723 virtual void SetFont(const wxGraphicsFont
& font
);
726 Sets the pen used for stroking.
728 void SetPen(const wxPen
& pen
);
730 Sets the pen used for stroking.
732 virtual void SetPen(const wxGraphicsPen
& pen
);
735 Sets the current transformation matrix of this context
737 virtual void SetTransform(const wxGraphicsMatrix
& matrix
) = 0;
740 Strokes a single line.
742 virtual void StrokeLine(wxDouble x1
, wxDouble y1
, wxDouble x2
, wxDouble y2
);
745 Stroke disconnected lines from begin to end points, fastest method
746 available for this purpose.
748 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* beginPoints
,
749 const wxPoint2DDouble
* endPoints
);
751 Stroke lines connecting all the points.
753 Unlike the other overload of this function, this method draws a single
754 polyline and not a number of disconnected lines.
756 virtual void StrokeLines(size_t n
, const wxPoint2DDouble
* points
);
759 Strokes along a path with the current pen.
761 virtual void StrokePath(const wxGraphicsPath
& path
) = 0;
764 Translates the current transformation matrix.
766 virtual void Translate(wxDouble dx
, wxDouble dy
) = 0;
769 Redirects all rendering is done into a fully transparent temporary context
771 virtual void BeginLayer(wxDouble opacity
) = 0;
774 Composites back the drawings into the context with the opacity given at
777 virtual void EndLayer() = 0;
780 Sets the antialiasing mode, returns true if it supported
782 virtual bool SetAntialiasMode(wxAntialiasMode antialias
) = 0;
785 Returns the current shape antialiasing mode
787 virtual wxAntialiasMode
GetAntialiasMode() const ;
790 Sets the interpolation quality, returns true if it is supported.
792 Not implemented in Cairo backend currently.
794 virtual bool SetInterpolationQuality(wxInterpolationQuality interpolation
) = 0;
797 Returns the current interpolation quality.
799 virtual wxInterpolationQuality
GetInterpolationQuality() const;
802 Sets the compositing operator, returns true if it supported
804 virtual bool SetCompositionMode(wxCompositionMode op
) = 0;
807 Returns the current compositing operator
809 virtual wxCompositionMode
GetCompositionMode() const;
813 Push the current state of the context's transformation matrix on a
816 @see wxGraphicsContext::PopState
818 virtual void PushState() = 0;
821 Pops a stored state from the stack and sets the current transformation
822 matrix to that state.
824 @see wxGraphicsContext::PopState
826 virtual void PopState() = 0;
829 virtual void EnableOffset(bool enable
= true);
830 void DisableOffset();
831 bool OffsetEnabled();
836 Represents a single gradient stop in a collection of gradient stops as
837 represented by wxGraphicsGradientStops.
844 class wxGraphicsGradientStop
848 Creates a stop with the given colour and position.
850 @param col The colour of this stop. Note that the alpha component of
851 the colour is honoured thus allowing the background colours to
852 partially show through the gradient.
853 @param pos The stop position, must be in [0, 1] range with 0 being the
854 beginning and 1 the end of the gradient.
856 wxGraphicsGradientStop(wxColour col
= wxTransparentColour
, float pos
= 0.);
858 /// Return the stop colour.
859 const wxColour
& GetColour() const;
862 Change the stop colour.
864 @param col The new colour.
866 void SetColour(const wxColour
& col
);
868 /// Return the stop position.
869 float GetPosition() const;
872 Change the stop position.
874 @param pos The new position, must always be in [0, 1] range.
876 void SetPosition(float pos
);
880 Represents a collection of wxGraphicGradientStop values for use with
881 CreateLinearGradientBrush and CreateRadialGradientBrush.
883 The stops are maintained in order of position. If two or more stops are
884 added with the same position then the one(s) added later come later.
885 This can be useful for producing discontinuities in the colour gradient.
887 Notice that this class is write-once, you can't modify the stops once they
895 class wxGraphicsGradientStops
899 Initializes the gradient stops with the given boundary colours.
901 Creates a wxGraphicsGradientStops instance with start colour given
902 by @a startCol and end colour given by @a endCol.
904 wxGraphicsGradientStops(wxColour startCol
= wxTransparentColour
,
905 wxColour endCol
= wxTransparentColour
);
911 void Add(const wxGraphicsGradientStop
& stop
);
912 void Add(wxColour col
, float pos
);
916 Returns the stop at the given index.
918 @param n The index, must be in [0, GetCount()) range.
920 wxGraphicsGradientStop
Item(unsigned n
) const;
923 Returns the number of stops.
925 unsigned GetCount() const;
928 Set the start colour to @a col
930 void SetStartColour(wxColour col
);
933 Returns the start colour.
935 wxColour
GetStartColour() const;
938 Set the end colour to @a col
940 void SetEndColour(wxColour col
);
943 Returns the end colour.
945 wxColour
GetEndColour() const;
949 @class wxGraphicsRenderer
951 A wxGraphicsRenderer is the instance corresponding to the rendering engine
952 used. There may be multiple instances on a system, if there are different
953 rendering engines present, but there is always only one instance per
954 engine. This instance is pointed back to by all objects created by it
955 (wxGraphicsContext, wxGraphicsPath etc) and can be retrieved through their
956 wxGraphicsObject::GetRenderer() method. Therefore you can create an
957 additional instance of a path etc. by calling
958 wxGraphicsObject::GetRenderer() and then using the appropriate CreateXXX()
959 function of that renderer.
962 wxGraphicsPath *path = // from somewhere
963 wxGraphicsBrush *brush = path->GetRenderer()->CreateBrush( *wxBLACK_BRUSH );
969 class wxGraphicsRenderer
: public wxObject
973 Creates wxGraphicsBitmap from an existing wxBitmap.
975 Returns an invalid wxNullGraphicsBitmap on failure.
977 virtual wxGraphicsBitmap
CreateBitmap( const wxBitmap
&bitmap
) = 0;
980 Creates wxGraphicsBitmap from an existing wxImage.
982 This method is more efficient than converting wxImage to wxBitmap first
983 and then calling CreateBitmap() but otherwise has the same effect.
985 Returns an invalid wxNullGraphicsBitmap on failure.
989 virtual wxGraphicsBitmap
CreateBitmapFromImage(const wxImage
& image
) = 0;
992 Creates a wxImage from a wxGraphicsBitmap.
994 This method is used by the more convenient wxGraphicsBitmap::ConvertToImage.
996 virtual wxImage
CreateImageFromBitmap(const wxGraphicsBitmap
& bmp
) = 0;
999 Creates wxGraphicsBitmap from a native bitmap handle.
1001 @a bitmap meaning is platform-dependent. Currently it's a GDI+ @c
1002 Bitmap pointer under MSW, @c CGImage pointer under OS X or a @c
1003 cairo_surface_t pointer when using Cairo under any platform.
1005 virtual wxGraphicsBitmap
CreateBitmapFromNativeBitmap( void* bitmap
) = 0;
1008 Creates a wxGraphicsContext from a wxWindow.
1010 virtual wxGraphicsContext
* CreateContext(wxWindow
* window
) = 0;
1013 Creates a wxGraphicsContext from a wxWindowDC
1015 virtual wxGraphicsContext
* CreateContext(const wxWindowDC
& windowDC
) = 0 ;
1018 Creates a wxGraphicsContext from a wxMemoryDC
1020 virtual wxGraphicsContext
* CreateContext(const wxMemoryDC
& memoryDC
) = 0 ;
1023 Creates a wxGraphicsContext from a wxPrinterDC
1025 virtual wxGraphicsContext
* CreateContext(const wxPrinterDC
& printerDC
) = 0 ;
1028 Creates a wxGraphicsContext from a wxEnhMetaFileDC.
1030 This function, as wxEnhMetaFileDC class itself, is only available only
1033 virtual wxGraphicsContext
* CreateContext(const wxEnhMetaFileDC
& metaFileDC
) = 0;
1036 Creates a wxGraphicsContext associated with a wxImage.
1038 This function is used by wxContext::CreateFromImage() and is not
1039 normally called directly.
1043 wxGraphicsContext
* CreateContextFromImage(wxImage
& image
);
1046 Creates a native brush from a wxBrush.
1048 virtual wxGraphicsBrush
CreateBrush(const wxBrush
& brush
) = 0;
1051 Creates a wxGraphicsContext from a native context. This native context
1052 must be a CGContextRef for Core Graphics, a Graphics pointer for
1053 GDIPlus, or a cairo_t pointer for cairo.
1055 virtual wxGraphicsContext
* CreateContextFromNativeContext(void* context
) = 0;
1058 Creates a wxGraphicsContext from a native window.
1060 virtual wxGraphicsContext
* CreateContextFromNativeWindow(void* window
) = 0;
1063 Creates a wxGraphicsContext that can be used for measuring texts only.
1064 No drawing commands are allowed.
1066 virtual wxGraphicsContext
* CreateMeasuringContext() = 0;
1069 Creates a native graphics font from a wxFont and a text colour.
1071 virtual wxGraphicsFont
CreateFont(const wxFont
& font
,
1072 const wxColour
& col
= *wxBLACK
) = 0;
1075 Creates a graphics font with the given characteristics.
1077 If possible, the CreateFont() overload taking wxFont should be used
1078 instead. The main advantage of this overload is that it can be used
1079 without X server connection under Unix when using Cairo.
1082 Height of the font in user space units, i.e. normally pixels.
1083 Notice that this is different from the overload taking wxFont as
1084 wxFont size is specified in points.
1086 The name of the font. The same font name might not be available
1087 under all platforms so the font name can also be empty to use the
1088 default platform font.
1090 Combination of wxFontFlag enum elements. Currently only
1091 @c wxFONTFLAG_ITALIC and @c wxFONTFLAG_BOLD are supported. By
1092 default the normal font version is used.
1094 The font colour, black by default.
1098 virtual wxGraphicsFont
CreateFont(double sizeInPixels
,
1099 const wxString
& facename
,
1100 int flags
= wxFONTFLAG_DEFAULT
,
1101 const wxColour
& col
= *wxBLACK
) = 0;
1105 Creates a native brush with a linear gradient.
1107 Stops support is new since wxWidgets 2.9.1, previously only the start
1108 and end colours could be specified.
1110 virtual wxGraphicsBrush
CreateLinearGradientBrush(wxDouble x1
,
1114 const wxGraphicsGradientStops
& stops
) = 0;
1117 Creates a native affine transformation matrix from the passed in
1118 values. The defaults result in an identity matrix.
1120 virtual wxGraphicsMatrix
CreateMatrix(wxDouble a
= 1.0, wxDouble b
= 0.0,
1121 wxDouble c
= 0.0, wxDouble d
= 1.0,
1123 wxDouble ty
= 0.0) = 0;
1126 Creates a native graphics path which is initially empty.
1128 virtual wxGraphicsPath
CreatePath() = 0;
1131 Creates a native pen from a wxPen.
1133 virtual wxGraphicsPen
CreatePen(const wxPen
& pen
) = 0;
1136 Creates a native brush with a radial gradient.
1138 Stops support is new since wxWidgets 2.9.1, previously only the start
1139 and end colours could be specified.
1141 virtual wxGraphicsBrush
CreateRadialGradientBrush(wxDouble xo
, wxDouble yo
,
1142 wxDouble xc
, wxDouble yc
,
1144 const wxGraphicsGradientStops
& stops
) = 0;
1147 Extracts a sub-bitmap from an existing bitmap.
1149 Currently this function is implemented in the native MSW and OS X
1150 versions but not when using Cairo.
1152 virtual wxGraphicsBitmap
CreateSubBitmap(const wxGraphicsBitmap
& bitmap
,
1153 wxDouble x
, wxDouble y
,
1154 wxDouble w
, wxDouble h
) = 0;
1157 Returns the default renderer on this platform. On OS X this is the Core
1158 Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and
1159 on GTK we currently default to the cairo renderer.
1161 static wxGraphicsRenderer
* GetDefaultRenderer();
1162 static wxGraphicsRenderer
* GetCairoRenderer();
1169 @class wxGraphicsBrush
1171 A wxGraphicsBrush is a native representation of a brush. The contents are
1172 specific and private to the respective renderer. Instances are ref counted
1173 and can therefore be assigned as usual. The only way to get a valid
1174 instance is via wxGraphicsContext::CreateBrush() or
1175 wxGraphicsRenderer::CreateBrush().
1180 class wxGraphicsBrush
: public wxGraphicsObject
1189 @class wxGraphicsFont
1191 A wxGraphicsFont is a native representation of a font. The contents are
1192 specific and private to the respective renderer. Instances are ref counted
1193 and can therefore be assigned as usual. The only way to get a valid
1194 instance is via wxGraphicsContext::CreateFont() or
1195 wxGraphicsRenderer::CreateFont().
1200 class wxGraphicsFont
: public wxGraphicsObject
1209 @class wxGraphicsPen
1211 A wxGraphicsPen is a native representation of a pen. The contents are
1212 specific and private to the respective renderer. Instances are ref counted
1213 and can therefore be assigned as usual. The only way to get a valid
1214 instance is via wxGraphicsContext::CreatePen() or
1215 wxGraphicsRenderer::CreatePen().
1220 class wxGraphicsPen
: public wxGraphicsObject
1229 @class wxGraphicsMatrix
1231 A wxGraphicsMatrix is a native representation of an affine matrix. The
1232 contents are specific and private to the respective renderer. Instances are
1233 ref counted and can therefore be assigned as usual. The only way to get a
1234 valid instance is via wxGraphicsContext::CreateMatrix() or
1235 wxGraphicsRenderer::CreateMatrix().
1240 class wxGraphicsMatrix
: public wxGraphicsObject
1244 Concatenates the matrix passed with the current matrix.
1246 virtual void Concat(const wxGraphicsMatrix
* t
);
1248 Concatenates the matrix passed with the current matrix.
1250 void Concat(const wxGraphicsMatrix
& t
);
1253 Returns the component values of the matrix via the argument pointers.
1255 virtual void Get(wxDouble
* a
= NULL
, wxDouble
* b
= NULL
,
1256 wxDouble
* c
= NULL
, wxDouble
* d
= NULL
,
1257 wxDouble
* tx
= NULL
, wxDouble
* ty
= NULL
) const;
1260 Returns the native representation of the matrix. For CoreGraphics this
1261 is a CFAffineMatrix pointer, for GDIPlus a Matrix Pointer, and for
1262 Cairo a cairo_matrix_t pointer.
1264 virtual void* GetNativeMatrix() const;
1269 virtual void Invert();
1272 Returns @true if the elements of the transformation matrix are equal.
1274 virtual bool IsEqual(const wxGraphicsMatrix
* t
) const;
1276 Returns @true if the elements of the transformation matrix are equal.
1278 bool IsEqual(const wxGraphicsMatrix
& t
) const;
1281 Return @true if this is the identity matrix.
1283 virtual bool IsIdentity() const;
1286 Rotates this matrix (in radians).
1288 virtual void Rotate(wxDouble angle
);
1293 virtual void Scale(wxDouble xScale
, wxDouble yScale
);
1296 Sets the matrix to the respective values (default values are the
1299 virtual void Set(wxDouble a
= 1.0, wxDouble b
= 0.0, wxDouble c
= 0.0,
1300 wxDouble d
= 1.0, wxDouble tx
= 0.0, wxDouble ty
= 0.0);
1303 Applies this matrix to a distance (ie. performs all transforms except
1306 virtual void TransformDistance(wxDouble
* dx
, wxDouble
* dy
) const;
1309 Applies this matrix to a point.
1311 virtual void TransformPoint(wxDouble
* x
, wxDouble
* y
) const;
1314 Translates this matrix.
1316 virtual void Translate(wxDouble dx
, wxDouble dy
);
1320 const wxGraphicsPen wxNullGraphicsPen
;
1321 const wxGraphicsBrush wxNullGraphicsBrush
;
1322 const wxGraphicsFont wxNullGraphicsFont
;
1323 const wxGraphicsBitmap wxNullGraphicsBitmap
;
1324 const wxGraphicsMatrix wxNullGraphicsMatrix
;
1325 const wxGraphicsPath wxNullGraphicsPath
;