]>
git.saurik.com Git - wxWidgets.git/blob - interface/graphics.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxGraphicsPath
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
13 A wxGraphicsPath is a native representation of an geometric path. The contents
14 are specific an private to the respective renderer. Instances are ref counted and can
15 therefore be assigned as usual. The only way to get a valid instance is via a
16 CreatePath call on the graphics context or the renderer instance.
21 class wxGraphicsPath
: public wxGraphicsObject
28 void AddArc ( wxDouble x
, wxDouble y
, wxDouble r
,
30 wxDouble endAngle
, bool clockwise
);
31 void AddArc ( const wxPoint2DDouble
& c
, wxDouble r
,
38 Appends a an arc to two tangents connecting (current) to (x1,y1) and (x1,y1) to
39 (x2,y2), also a straight line from (current) to (x1,y1).
41 void AddArcToPoint ( wxDouble x1
, wxDouble y1
, wxDouble x2
,
46 Appends a circle around (x,y) with radius r as a new closed subpath.
48 void AddCircle ( wxDouble x
, wxDouble y
, wxDouble r
);
54 void AddCurveToPoint ( wxDouble cx1
, wxDouble cy1
, wxDouble cx2
,
58 void AddCurveToPoint ( const wxPoint2DDouble
& c1
,
59 const wxPoint2DDouble
& c2
,
60 const wxPoint2DDouble
& e
);
64 Appends an ellipse fitting into the passed in rectangle.
66 void AddEllipse ( wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
72 void AddLineToPoint ( wxDouble x
, wxDouble y
);
73 void AddLineToPoint ( const wxPoint2DDouble
& p
);
79 void AddPath ( const wxGraphicsPath
& path
);
82 Adds a quadratic Bezier curve from the current point, using a control point and
85 void AddQuadCurveToPoint ( wxDouble cx
, wxDouble cy
, wxDouble x
,
89 Appends a rectangle as a new closed subpath.
91 void AddRectangle ( wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
94 Appends a rounded rectangle as a new closed subpath.
96 void AddRoundedRectangle ( wxDouble x
, wxDouble y
, wxDouble w
,
101 Closes the current sub-path.
107 Returns @true if the point is within the path.
109 bool Contains ( const wxPoint2DDouble
& c
,
110 int fillStyle
= wxODDEVEN_RULE
) const ;
111 const bool Contains ( wxDouble x
, wxDouble y
,
112 int fillStyle
= wxODDEVEN_RULE
) const ;
117 Gets the bounding box enclosing all points (possibly including control points).
119 wxRect2DDouble
GetBox () const ;
120 const void GetBox ( wxDouble
* x
, wxDouble
* y
, wxDouble
* w
,
126 Gets the last point of the current path, (0,0) if not yet set.
128 void GetCurrentPoint ( wxDouble
* x
, wxDouble
* y
) const ;
129 const wxPoint2DDouble
GetCurrentPoint () const ;
133 Returns the native path (CGPathRef for Core Graphics, Path pointer for GDIPlus
134 and a cairo_path_t pointer for cairo).
136 void * GetNativePath () const ;
140 Begins a new subpath at (x,y)
142 void MoveToPoint ( wxDouble x
, wxDouble y
);
143 void MoveToPoint ( const wxPoint2DDouble
& p
);
147 Transforms each point of this path by the matrix.
149 void Transform ( const wxGraphicsMatrix
& matrix
);
152 Gives back the native path returned by GetNativePath() because there might be
153 some deallocations necessary (eg on cairo the native path returned by
154 GetNativePath is newly allocated each time).
156 void UnGetNativePath ( void * p
) const ;
162 @class wxGraphicsObject
163 @wxheader{graphics.h}
165 This class is the superclass of native graphics objects like pens etc. It
166 allows reference counting. Not instantiated by user code.
171 @see wxGraphicsBrush, wxGraphicsPen, wxGraphicsMatrix, wxGraphicsPath
173 class wxGraphicsObject
: public wxObject
177 Returns the renderer that was used to create this instance, or @NULL if it has
178 not been initialized yet
180 wxGraphicsRenderer
* GetRenderer () const ;
183 Is this object valid (@false) or still empty (@true)?
191 @class wxGraphicsContext
192 @wxheader{graphics.h}
194 A wxGraphicsContext instance is the object that is drawn upon. It is created by
195 a renderer using the CreateContext calls.., this can be either directly using a renderer
196 instance, or indirectly using the static convenience CreateXXX functions of
197 wxGraphicsContext that always delegate the task to the default renderer.
202 @see wxGraphicsRenderer:: CreateContext
204 class wxGraphicsContext
: public wxGraphicsObject
209 Clips drawings to the rectangle.
211 void Clip ( const wxRegion
& region
);
212 void Clip ( wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
216 Concatenates the passed in transform with the current transform of this context
218 void ConcatTransform ( const wxGraphicsMatrix
& matrix
);
222 Creates a wxGraphicsContext from a wxWindow.
224 @see wxGraphicsRenderer:: CreateContext
226 wxGraphicsContext
* Create ( const wxWindowDC
& dc
);
227 wxGraphicsContext
* Create ( wxWindow
* window
);
231 Creates a native brush from a wxBrush.
233 wxGraphicsBrush
CreateBrush ( const wxBrush
& brush
) const ;
236 Creates a native graphics font from a wxFont and a text colour.
238 wxGraphicsFont
CreateFont ( const wxFont
& font
,
239 const wxColour
& col
= wxBLACK
) const ;
242 Creates a wxGraphicsContext from a native context. This native context must be
243 eg a CGContextRef for Core Graphics, a Graphics pointer for GDIPlus or a
244 cairo_t pointer for cairo.
246 Creates a wxGraphicsContext from a native window.
248 @see wxGraphicsRenderer:: CreateContextFromNativeContext
250 wxGraphicsContext
* CreateFromNative ( void * context
);
253 @see wxGraphicsRenderer:: CreateContextFromNativeWindow
255 wxGraphicsContext
* CreateFromNativeWindow ( void * window
);
258 Creates a native brush, having a linear gradient, starting at (x1,y1) with
259 color c1 to (x2,y2) with color c2
261 wxGraphicsBrush
CreateLinearGradientBrush ( wxDouble x1
,
265 const wxColouramp
; c1
,
266 const wxColouramp
; c2
) const ;
269 Creates a native affine transformation matrix from the passed in values. The
270 defaults result in an identity matrix.
272 wxGraphicsMatrix
CreateMatrix ( wxDouble a
= 1.0 , wxDouble b
= 0.0 ,
276 wxDouble ty
= 0.0 ) const ;
279 Creates a native graphics path which is initially empty.
281 wxGraphicsPath
CreatePath () const ;
284 Creates a native pen from a wxPen.
286 wxGraphicsPen
CreatePen ( const wxPen
& pen
) const ;
289 Creates a native brush, having a radial gradient originating at (xo,yc) with
290 color oColour and ends on a circle around (xc,yc) with radius r and color cColour
292 wxGraphicsBrush
CreateRadialGradientBrush ( wxDouble xo
,
297 const wxColour
& oColor
,
298 const wxColour
& cColor
) const ;
301 Draws the bitmap. In case of a mono bitmap, this is treated as a mask and the
302 current brushed is used for filling.
304 void DrawBitmap ( const wxBitmap
& bmp
, wxDouble x
, wxDouble y
,
305 wxDouble w
, wxDouble h
);
310 void DrawEllipse ( wxDouble x
, wxDouble y
, wxDouble w
, wxDouble h
);
315 void DrawIcon ( const wxIcon
& icon
, wxDouble x
, wxDouble y
,
316 wxDouble w
, wxDouble h
);
321 void DrawLines ( size_t n
, const wxPoint2DDouble
* points
,
322 int fillStyle
= wxODDEVEN_RULE
);
325 Draws the path by first filling and then stroking.
327 void DrawPath ( const wxGraphicsPath
& path
,
328 int fillStyle
= wxODDEVEN_RULE
);
333 void DrawRectangle ( wxDouble x
, wxDouble y
, wxDouble w
,
337 Draws a rounded rectangle.
339 void DrawRoundedRectangle ( wxDouble x
, wxDouble y
, wxDouble w
,
345 Draws a text at the defined position, at the given angle.
347 void DrawText ( const wxString
& str
, wxDouble x
, wxDouble y
,
349 void DrawText ( const wxString
& str
, wxDouble x
, wxDouble y
);
353 Fills the path with the current brush.
355 void FillPath ( const wxGraphicsPath
& path
,
356 int fillStyle
= wxODDEVEN_RULE
);
359 Returns the native context (CGContextRef for Core Graphics, Graphics pointer
360 for GDIPlus and cairo_t pointer for cairo).
362 void * GetNativeContext ();
365 Fills the @a widths array with the widths from the beginning of
366 @a text to the corresponding character of @e text.
368 void GetPartialTextExtents ( const wxString
& text
,
369 wxArrayDouble
& widths
) const ;
372 Gets the dimensions of the string using the currently selected font.
373 @e string is the text string to measure, @e w and @e h are
374 the total width and height respectively, @a descent is the
375 dimension from the baseline of the font to the bottom of the
376 descender, and @a externalLeading is any extra vertical space added
377 to the font by the font designer (usually is zero).
379 void GetTextExtent ( const wxString
& text
, wxDouble
* width
,
382 wxDouble
* externalLeading
) const ;
385 Gets the current transformation matrix of this context.
387 wxGraphicsMatrix
GetTransform () const ;
390 Resets the clipping to original shape.
395 Rotates the current transformation matrix (radians),
397 void Rotate ( wxDouble angle
);
400 Scales the current transformation matrix.
402 void Scale ( wxDouble xScale
, wxDouble yScale
);
406 Sets the brush for filling paths.
408 void SetBrush ( const wxBrush
& brush
);
409 void SetBrush ( const wxGraphicsBrush
& brush
);
414 Sets the font for drawing text.
416 void SetFont ( const wxFont
& font
, const wxColour
& colour
);
417 void SetFont ( const wxGraphicsFont
& font
);
422 Sets the pen used for stroking.
424 void SetPen ( const wxGraphicsPen
& pen
);
425 void SetPen ( const wxPen
& pen
);
429 Sets the current transformation matrix of this context
431 void SetTransform ( const wxGraphicsMatrix
& matrix
);
434 Strokes a single line.
436 void StrokeLine ( wxDouble x1
, wxDouble y1
, wxDouble x2
,
441 Stroke disconnected lines from begin to end points, fastest method available
444 void StrokeLines ( size_t n
, const wxPoint2DDouble
* beginPoints
,
445 const wxPoint2DDouble
* endPoints
);
446 void StrokeLines ( size_t n
, const wxPoint2DDouble
* points
);
450 Strokes along a path with the current pen.
452 void StrokePath ( const wxGraphicsPath
& path
);
455 Translates the current transformation matrix.
457 void Translate ( wxDouble dx
, wxDouble dy
);
463 @class wxGraphicsRenderer
464 @wxheader{graphics.h}
466 A wxGraphicsRenderer is the instance corresponding to the rendering engine
467 used. There may be multiple instances on a system, if there are different rendering engines present, but there is always one instance per engine, eg there is ONE core graphics renderer instance on OSX. This instance is pointed back to by all objects created by it (wxGraphicsContext, wxGraphicsPath etc). Therefore you can create ag additional instances of paths etc. by calling GetRenderer() and then using the appropriate CreateXXX function.
472 class wxGraphicsRenderer
: public wxObject
476 Creates a native brush from a wxBrush.
478 wxGraphicsBrush
CreateBrush ( const wxBrush
& brush
);
482 Creates a wxGraphicsContext from a wxWindow.
484 wxGraphicsContext
* CreateContext ( const wxWindowDC
& dc
);
485 wxGraphicsContext
* CreateContext ( wxWindow
* window
);
489 Creates a wxGraphicsContext from a native context. This native context must be
490 eg a CGContextRef for Core Graphics, a Graphics pointer for GDIPlus or a cairo_t pointer for cairo.
492 wxGraphicsContext
* CreateContextFromNativeContext ( void * context
);
495 Creates a wxGraphicsContext from a native window.
497 wxGraphicsContext
* CreateContextFromNativeWindow ( void * window
);
500 Creates a native graphics font from a wxFont and a text colour.
502 wxGraphicsFont
CreateFont ( const wxFont
& font
,
503 const wxColour
& col
= wxBLACK
);
506 Creates a native brush, having a linear gradient, starting at (x1,y1) with
507 color c1 to (x2,y2) with color c2
509 wxGraphicsBrush
CreateLinearGradientBrush ( wxDouble x1
,
513 const wxColouramp
; c1
,
514 const wxColouramp
; c2
);
517 Creates a native affine transformation matrix from the passed in values. The
518 defaults result in an identity matrix.
520 wxGraphicsMatrix
CreateMatrix ( wxDouble a
= 1.0 , wxDouble b
= 0.0 ,
527 Creates a native graphics path which is initially empty.
529 wxGraphicsPath
CreatePath ();
532 Creates a native pen from a wxPen.
534 wxGraphicsPen
CreatePen ( const wxPen
& pen
);
537 Creates a native brush, having a radial gradient originating at (xo,yc) with
538 color oColour and ends on a circle around (xc,yc) with radius r and color cColour
540 wxGraphicsBrush
CreateRadialGradientBrush ( wxDouble xo
,
545 const wxColour
& oColour
,
546 const wxColour
& cColour
);
549 Returns the default renderer on this platform. On OS X this is the Core
550 Graphics (a.k.a. Quartz 2D) renderer, on MSW the GDIPlus renderer, and on GTK we currently default to the cairo renderer.
552 wxGraphicsRenderer
* GetDefaultRenderer ();
558 @class wxGraphicsBrush
559 @wxheader{graphics.h}
565 class wxGraphicsBrush
: public wxGraphicsObject
574 @class wxGraphicsFont
575 @wxheader{graphics.h}
581 class wxGraphicsFont
: public wxGraphicsObject
591 @wxheader{graphics.h}
597 class wxGraphicsPen
: public wxGraphicsObject
606 @class wxGraphicsMatrix
607 @wxheader{graphics.h}
609 A wxGraphicsMatrix is a native representation of an affine matrix. The contents
610 are specific and private to the respective renderer. Instances are ref counted and can therefore be assigned as usual. The only way to get a valid instance is via a CreateMatrix call on the graphics context or the renderer instance.
615 class wxGraphicsMatrix
: public wxGraphicsObject
622 void Concat ( const wxGraphicsMatrix
* t
);
623 void Concat ( const wxGraphicsMatrix
& t
);
627 Returns the component values of the matrix via the argument pointers.
629 void Get ( wxDouble
* a
= NULL
, wxDouble
* b
= NULL
, wxDouble
* c
= NULL
,
630 wxDouble
* d
= NULL
, wxDouble
* tx
= NULL
,
631 wxDouble
* ty
= NULL
) const ;
634 Returns the native representation of the matrix. For CoreGraphics this is a
635 CFAffineMatrix pointer. For GDIPlus a Matrix Pointer and for Cairo a cairo_matrix_t pointer.
637 void * GetNativeMatrix () const ;
645 Returns @true if the elements of the transformation matrix are equal.
647 bool IsEqual ( const wxGraphicsMatrix
& t
) const ;
650 Return @true if this is the identity matrix.
652 bool IsIdentity () const ;
655 Rotates this matrix (radians).
657 void Rotate ( wxDouble angle
);
662 void Scale ( wxDouble xScale
, wxDouble yScale
);
665 Sets the matrix to the respective values (default values are the identity
668 void Set ( wxDouble a
= 1.0 , wxDouble b
= 0.0 , wxDouble c
= 0.0 ,
669 wxDouble d
= 1.0 , wxDouble tx
= 0.0 ,
673 Applies this matrix to a distance (ie. performs all transforms except
676 void TransformDistance ( wxDouble
* dx
, wxDouble
* dy
) const ;
679 Applies this matrix to a point.
681 void TransformPoint ( wxDouble
* x
, wxDouble
* y
) const ;
684 Translates this matrix.
686 void Translate ( wxDouble dx
, wxDouble dy
);