]>
Commit | Line | Data |
---|---|---|
1 | ///////////////////////////////////////////////////////////////////////////// | |
2 | // Name: wx/private/graphics.h | |
3 | // Purpose: private graphics context header | |
4 | // Author: Stefan Csomor | |
5 | // Modified by: | |
6 | // Created: | |
7 | // Copyright: (c) Stefan Csomor | |
8 | // RCS-ID: $Id$ | |
9 | // Licence: wxWindows licence | |
10 | ///////////////////////////////////////////////////////////////////////////// | |
11 | ||
12 | #ifndef _WX_GRAPHICS_PRIVATE_H_ | |
13 | #define _WX_GRAPHICS_PRIVATE_H_ | |
14 | ||
15 | #if wxUSE_GRAPHICS_CONTEXT | |
16 | ||
17 | #include "wx/graphics.h" | |
18 | ||
19 | class WXDLLIMPEXP_CORE wxGraphicsObjectRefData : public wxObjectRefData | |
20 | { | |
21 | public : | |
22 | wxGraphicsObjectRefData( wxGraphicsRenderer* renderer ); | |
23 | wxGraphicsObjectRefData( const wxGraphicsObjectRefData* data ); | |
24 | wxGraphicsRenderer* GetRenderer() const ; | |
25 | virtual wxGraphicsObjectRefData* Clone() const ; | |
26 | ||
27 | protected : | |
28 | wxGraphicsRenderer* m_renderer; | |
29 | } ; | |
30 | ||
31 | class WXDLLIMPEXP_CORE wxGraphicsBitmapData : public wxGraphicsObjectRefData | |
32 | { | |
33 | public : | |
34 | wxGraphicsBitmapData( wxGraphicsRenderer* renderer) : | |
35 | wxGraphicsObjectRefData(renderer) {} | |
36 | ||
37 | virtual ~wxGraphicsBitmapData() {} | |
38 | ||
39 | // returns the native representation | |
40 | virtual void * GetNativeBitmap() const = 0; | |
41 | } ; | |
42 | ||
43 | class WXDLLIMPEXP_CORE wxGraphicsMatrixData : public wxGraphicsObjectRefData | |
44 | { | |
45 | public : | |
46 | wxGraphicsMatrixData( wxGraphicsRenderer* renderer) : | |
47 | wxGraphicsObjectRefData(renderer) {} | |
48 | ||
49 | virtual ~wxGraphicsMatrixData() {} | |
50 | ||
51 | // concatenates the matrix | |
52 | virtual void Concat( const wxGraphicsMatrixData *t ) = 0; | |
53 | ||
54 | // sets the matrix to the respective values | |
55 | virtual void Set(wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0, | |
56 | wxDouble tx=0.0, wxDouble ty=0.0) = 0; | |
57 | ||
58 | // gets the component valuess of the matrix | |
59 | virtual void Get(wxDouble* a=NULL, wxDouble* b=NULL, wxDouble* c=NULL, | |
60 | wxDouble* d=NULL, wxDouble* tx=NULL, wxDouble* ty=NULL) const = 0; | |
61 | ||
62 | // makes this the inverse matrix | |
63 | virtual void Invert() = 0; | |
64 | ||
65 | // returns true if the elements of the transformation matrix are equal ? | |
66 | virtual bool IsEqual( const wxGraphicsMatrixData* t) const = 0; | |
67 | ||
68 | // return true if this is the identity matrix | |
69 | virtual bool IsIdentity() const = 0; | |
70 | ||
71 | // | |
72 | // transformation | |
73 | // | |
74 | ||
75 | // add the translation to this matrix | |
76 | virtual void Translate( wxDouble dx , wxDouble dy ) = 0; | |
77 | ||
78 | // add the scale to this matrix | |
79 | virtual void Scale( wxDouble xScale , wxDouble yScale ) = 0; | |
80 | ||
81 | // add the rotation to this matrix (radians) | |
82 | virtual void Rotate( wxDouble angle ) = 0; | |
83 | ||
84 | // | |
85 | // apply the transforms | |
86 | // | |
87 | ||
88 | // applies that matrix to the point | |
89 | virtual void TransformPoint( wxDouble *x, wxDouble *y ) const = 0; | |
90 | ||
91 | // applies the matrix except for translations | |
92 | virtual void TransformDistance( wxDouble *dx, wxDouble *dy ) const =0; | |
93 | ||
94 | // returns the native representation | |
95 | virtual void * GetNativeMatrix() const = 0; | |
96 | } ; | |
97 | ||
98 | class WXDLLIMPEXP_CORE wxGraphicsPathData : public wxGraphicsObjectRefData | |
99 | { | |
100 | public : | |
101 | wxGraphicsPathData(wxGraphicsRenderer* renderer) : wxGraphicsObjectRefData(renderer) {} | |
102 | virtual ~wxGraphicsPathData() {} | |
103 | ||
104 | // | |
105 | // These are the path primitives from which everything else can be constructed | |
106 | // | |
107 | ||
108 | // begins a new subpath at (x,y) | |
109 | virtual void MoveToPoint( wxDouble x, wxDouble y ) = 0; | |
110 | ||
111 | // adds a straight line from the current point to (x,y) | |
112 | virtual void AddLineToPoint( wxDouble x, wxDouble y ) = 0; | |
113 | ||
114 | // adds a cubic Bezier curve from the current point, using two control points and an end point | |
115 | virtual void AddCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble cx2, wxDouble cy2, wxDouble x, wxDouble y ) = 0; | |
116 | ||
117 | // adds another path | |
118 | virtual void AddPath( const wxGraphicsPathData* path ) =0; | |
119 | ||
120 | // closes the current sub-path | |
121 | virtual void CloseSubpath() = 0; | |
122 | ||
123 | // gets the last point of the current path, (0,0) if not yet set | |
124 | virtual void GetCurrentPoint( wxDouble* x, wxDouble* y) const = 0; | |
125 | ||
126 | // adds an arc of a circle centering at (x,y) with radius (r) from startAngle to endAngle | |
127 | virtual void AddArc( wxDouble x, wxDouble y, wxDouble r, wxDouble startAngle, wxDouble endAngle, bool clockwise ) = 0; | |
128 | ||
129 | // | |
130 | // These are convenience functions which - if not available natively will be assembled | |
131 | // using the primitives from above | |
132 | // | |
133 | ||
134 | // adds a quadratic Bezier curve from the current point, using a control point and an end point | |
135 | virtual void AddQuadCurveToPoint( wxDouble cx, wxDouble cy, wxDouble x, wxDouble y ); | |
136 | ||
137 | // appends a rectangle as a new closed subpath | |
138 | virtual void AddRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h ); | |
139 | ||
140 | // appends an ellipsis as a new closed subpath fitting the passed rectangle | |
141 | virtual void AddCircle( wxDouble x, wxDouble y, wxDouble r ); | |
142 | ||
143 | // appends a an arc to two tangents connecting (current) to (x1,y1) and (x1,y1) to (x2,y2), also a straight line from (current) to (x1,y1) | |
144 | virtual void AddArcToPoint( wxDouble x1, wxDouble y1 , wxDouble x2, wxDouble y2, wxDouble r ) ; | |
145 | ||
146 | // appends an ellipse | |
147 | virtual void AddEllipse( wxDouble x, wxDouble y, wxDouble w, wxDouble h); | |
148 | ||
149 | // appends a rounded rectangle | |
150 | virtual void AddRoundedRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h, wxDouble radius); | |
151 | ||
152 | // returns the native path | |
153 | virtual void * GetNativePath() const = 0; | |
154 | ||
155 | // give the native path returned by GetNativePath() back (there might be some deallocations necessary) | |
156 | virtual void UnGetNativePath(void *p) const= 0; | |
157 | ||
158 | // transforms each point of this path by the matrix | |
159 | virtual void Transform( const wxGraphicsMatrixData* matrix ) =0; | |
160 | ||
161 | // gets the bounding box enclosing all points (possibly including control points) | |
162 | virtual void GetBox(wxDouble *x, wxDouble *y, wxDouble *w, wxDouble *h) const=0; | |
163 | ||
164 | virtual bool Contains( wxDouble x, wxDouble y, wxPolygonFillMode fillStyle = wxODDEVEN_RULE) const=0; | |
165 | }; | |
166 | ||
167 | #endif | |
168 | ||
169 | #endif // _WX_GRAPHICS_PRIVATE_H_ |