]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/brush.h
Add support for gradient stops to wxGraphicsContext.
[wxWidgets.git] / interface / wx / brush.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: brush.h
e54c96f1 3// Purpose: interface of wxBrush
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
8024723d
FM
9/**
10 The possible brush styles.
11*/
12enum wxBrushStyle
13{
1413ac04
FM
14 wxBRUSHSTYLE_INVALID = -1,
15
8024723d
FM
16 wxBRUSHSTYLE_SOLID = wxSOLID,
17 /**< Solid. */
18
19 wxBRUSHSTYLE_TRANSPARENT = wxTRANSPARENT,
20 /**< Transparent (no fill). */
21
22 wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE = wxSTIPPLE_MASK_OPAQUE,
939dafa6
FM
23 /**< Uses a bitmap as a stipple; the mask is used for blitting monochrome
24 using text foreground and background colors. */
8024723d
FM
25
26 wxBRUSHSTYLE_STIPPLE_MASK = wxSTIPPLE_MASK,
939dafa6
FM
27 /**< Uses a bitmap as a stipple; mask is used for masking areas in the
28 stipple bitmap. */
8024723d
FM
29
30 wxBRUSHSTYLE_STIPPLE = wxSTIPPLE,
31 /**< Uses a bitmap as a stipple. */
32
33 wxBRUSHSTYLE_BDIAGONAL_HATCH = wxBDIAGONAL_HATCH,
34 /**< Backward diagonal hatch. */
35
36 wxBRUSHSTYLE_CROSSDIAG_HATCH = wxCROSSDIAG_HATCH,
37 /**< Cross-diagonal hatch. */
38
39 wxBRUSHSTYLE_FDIAGONAL_HATCH = wxFDIAGONAL_HATCH,
40 /**< Forward diagonal hatch. */
41
42 wxBRUSHSTYLE_CROSS_HATCH = wxCROSS_HATCH,
43 /**< Cross hatch. */
44
45 wxBRUSHSTYLE_HORIZONTAL_HATCH = wxHORIZONTAL_HATCH,
46 /**< Horizontal hatch. */
47
48 wxBRUSHSTYLE_VERTICAL_HATCH = wxVERTICAL_HATCH,
49 /**< Vertical hatch. */
50
51 wxBRUSHSTYLE_FIRST_HATCH = wxFIRST_HATCH,
52 wxBRUSHSTYLE_LAST_HATCH = wxLAST_HATCH,
8024723d
FM
53};
54
55
56
23324ae1
FM
57/**
58 @class wxBrush
7c913512 59
23324ae1 60 A brush is a drawing tool for filling in areas. It is used for painting
8024723d
FM
61 the background of rectangles, ellipses, etc. It has a colour and a style.
62
63 On a monochrome display, wxWidgets shows all brushes as white unless the
64 colour is really black.
65
66 Do not initialize objects on the stack before the program commences, since
67 other required structures may not have been set up yet. Instead, define
68 global pointers to objects and create them in wxApp::OnInit or when required.
69
70 An application may wish to create brushes with different characteristics
71 dynamically, and there is the consequent danger that a large number of
72 duplicate brushes will be created. Therefore an application may wish to
73 get a pointer to a brush by using the global list of brushes ::wxTheBrushList,
74 and calling the member function wxBrushList::FindOrCreateBrush().
75
76 This class uses reference counting and copy-on-write internally so that
77 assignments between two instances of this class are very cheap.
78 You can therefore use actual objects instead of pointers without efficiency problems.
79 If an instance of this class is changed it will create its own data internally
80 so that other instances, which previously shared the data using the reference
81 counting, are not affected.
7c913512 82
23324ae1
FM
83 @library{wxcore}
84 @category{gdi}
7c913512 85
23324ae1 86 @stdobjects
d8184587
FM
87 @li ::wxNullBrush
88 @li ::wxBLACK_BRUSH
89 @li ::wxBLUE_BRUSH
90 @li ::wxCYAN_BRUSH
91 @li ::wxGREEN_BRUSH
86028025 92 @li ::wxYELLOW_BRUSH
d8184587
FM
93 @li ::wxGREY_BRUSH
94 @li ::wxLIGHT_GREY_BRUSH
95 @li ::wxMEDIUM_GREY_BRUSH
96 @li ::wxRED_BRUSH
97 @li ::wxTRANSPARENT_BRUSH
98 @li ::wxWHITE_BRUSH
7c913512 99
e54c96f1 100 @see wxBrushList, wxDC, wxDC::SetBrush
23324ae1
FM
101*/
102class wxBrush : public wxGDIObject
103{
104public:
23324ae1 105 /**
8024723d
FM
106 Default constructor.
107 The brush will be uninitialised, and wxBrush:IsOk() will return @false.
108 */
109 wxBrush();
110
111 /**
112 Constructs a brush from a colour object and @a style.
113
7c913512 114 @param colour
4cc4bfaf 115 Colour object.
8024723d
FM
116 @param style
117 One of the ::wxBrushStyle enumeration values.
118 */
1413ac04 119 wxBrush(const wxColour& colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
8024723d
FM
120
121 /**
122 Constructs a stippled brush using a bitmap.
939dafa6 123 The brush style will be set to @c wxBRUSHSTYLE_STIPPLE.
23324ae1 124 */
7c913512 125 wxBrush(const wxBitmap& stippleBitmap);
8024723d
FM
126
127 /**
128 Copy constructor, uses @ref overview_refcount "reference counting".
129 */
7c913512 130 wxBrush(const wxBrush& brush);
23324ae1
FM
131
132 /**
133 Destructor.
8024723d
FM
134
135 See @ref overview_refcount_destruct for more info.
136
23324ae1 137 @remarks Although all remaining brushes are deleted when the application
8024723d
FM
138 exits, the application should try to clean up all brushes itself.
139 This is because wxWidgets cannot know if a pointer to the brush
140 object is stored in an application data structure, and there is
141 a risk of double deletion.
23324ae1 142 */
d2aa927a 143 virtual ~wxBrush();
23324ae1
FM
144
145 /**
146 Returns a reference to the brush colour.
8024723d 147
4cc4bfaf 148 @see SetColour()
23324ae1 149 */
231b9591 150 virtual wxColour GetColour() const;
23324ae1
FM
151
152 /**
939dafa6 153 Gets a pointer to the stipple bitmap. If the brush does not have a @c wxBRUSHSTYLE_STIPPLE
8024723d
FM
154 style, this bitmap may be non-@NULL but uninitialised (i.e. wxBitmap:IsOk() returns @false).
155
4cc4bfaf 156 @see SetStipple()
23324ae1 157 */
231b9591 158 virtual wxBitmap* GetStipple() const;
23324ae1
FM
159
160 /**
8024723d
FM
161 Returns the brush style, one of the ::wxBrushStyle values.
162
4cc4bfaf 163 @see SetStyle(), SetColour(), SetStipple()
23324ae1 164 */
1413ac04 165 virtual wxBrushStyle GetStyle() const;
23324ae1
FM
166
167 /**
168 Returns @true if the style of the brush is any of hatched fills.
8024723d 169
4cc4bfaf 170 @see GetStyle()
23324ae1 171 */
d2aa927a 172 virtual bool IsHatch() const;
23324ae1
FM
173
174 /**
175 Returns @true if the brush is initialised. It will return @false if the default
176 constructor has been used (for example, the brush is a member of a class, or
177 @NULL has been assigned to it).
178 */
0004982c 179 virtual bool IsOk() const;
23324ae1
FM
180
181 //@{
182 /**
183 Sets the brush colour using red, green and blue values.
8024723d 184
4cc4bfaf 185 @see GetColour()
23324ae1 186 */
882678eb 187 virtual void SetColour(const wxColour& colour);
231b9591 188 virtual void SetColour(unsigned char red, unsigned char green, unsigned char blue);
23324ae1
FM
189 //@}
190
191 /**
192 Sets the stipple bitmap.
8024723d 193
7c913512 194 @param bitmap
4cc4bfaf 195 The bitmap to use for stippling.
8024723d 196
939dafa6 197 @remarks The style will be set to @c wxBRUSHSTYLE_STIPPLE, unless the bitmap
8024723d 198 has a mask associated to it, in which case the style will be set
939dafa6 199 to @c wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE.
8024723d 200
4cc4bfaf 201 @see wxBitmap
23324ae1 202 */
231b9591 203 virtual void SetStipple(const wxBitmap& bitmap);
23324ae1
FM
204
205 /**
206 Sets the brush style.
8024723d 207
7c913512 208 @param style
8024723d
FM
209 One of the ::wxBrushStyle values.
210
4cc4bfaf 211 @see GetStyle()
23324ae1 212 */
231b9591 213 virtual void SetStyle(wxBrushStyle style);
23324ae1
FM
214
215 /**
216 Inequality operator.
8024723d 217 See @ref overview_refcount_equality for more info.
23324ae1 218 */
1413ac04 219 bool operator !=(const wxBrush& brush) const;
23324ae1
FM
220
221 /**
222 Equality operator.
8024723d 223 See @ref overview_refcount_equality for more info.
23324ae1 224 */
1413ac04 225 bool operator ==(const wxBrush& brush) const;
23324ae1 226};
e54c96f1 227
e54c96f1 228/**
8024723d 229 An empty brush.
939dafa6 230 wxBrush::IsOk() always returns @false for this object.
e54c96f1
FM
231*/
232wxBrush wxNullBrush;
233
234/**
8024723d 235 Blue brush.
939dafa6
FM
236 Except for the color it has all standard attributes
237 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 238*/
8024723d 239wxBrush* wxBLUE_BRUSH;
e54c96f1
FM
240
241/**
8024723d 242 Green brush.
939dafa6
FM
243 Except for the color it has all standard attributes
244 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 245*/
8024723d 246wxBrush* wxGREEN_BRUSH;
e54c96f1 247
86028025
FM
248/**
249 Yellow brush.
250 Except for the color it has all standard attributes
251 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
252*/
253wxBrush* wxYELLOW_BRUSH;
254
e54c96f1 255/**
8024723d 256 White brush.
939dafa6
FM
257 Except for the color it has all standard attributes
258 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 259*/
8024723d 260wxBrush* wxWHITE_BRUSH;
e54c96f1
FM
261
262/**
8024723d 263 Black brush.
939dafa6
FM
264 Except for the color it has all standard attributes
265 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 266*/
8024723d 267wxBrush* wxBLACK_BRUSH;
e54c96f1
FM
268
269/**
8024723d 270 Grey brush.
939dafa6
FM
271 Except for the color it has all standard attributes
272 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 273*/
8024723d 274wxBrush* wxGREY_BRUSH;
e54c96f1
FM
275
276/**
8024723d 277 Medium grey brush.
939dafa6
FM
278 Except for the color it has all standard attributes
279 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 280*/
8024723d 281wxBrush* wxMEDIUM_GREY_BRUSH;
e54c96f1
FM
282
283/**
8024723d 284 Light grey brush.
939dafa6
FM
285 Except for the color it has all standard attributes
286 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 287*/
8024723d 288wxBrush* wxLIGHT_GREY_BRUSH;
e54c96f1
FM
289
290/**
8024723d 291 Transparent brush.
939dafa6
FM
292 Except for the color it has all standard attributes
293 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 294*/
8024723d 295wxBrush* wxTRANSPARENT_BRUSH;
e54c96f1
FM
296
297/**
8024723d 298 Cyan brush.
939dafa6
FM
299 Except for the color it has all standard attributes
300 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 301*/
8024723d 302wxBrush* wxCYAN_BRUSH;
e54c96f1
FM
303
304/**
8024723d 305 Red brush.
939dafa6
FM
306 Except for the color it has all standard attributes
307 (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
e54c96f1 308*/
8024723d
FM
309wxBrush* wxRED_BRUSH;
310
311
e54c96f1
FM
312
313/**
8024723d 314 @class wxBrushList
8024723d
FM
315
316 A brush list is a list containing all brushes which have been created.
317
1413ac04
FM
318 The application should not construct its own brush list: it should use the
319 object pointer ::wxTheBrushList.
320
8024723d
FM
321 @library{wxcore}
322 @category{gdi}
323
324 @see wxBrush
e54c96f1 325*/
8024723d
FM
326class wxBrushList : public wxList
327{
328public:
8024723d
FM
329 /**
330 Finds a brush with the specified attributes and returns it, else creates a new
331 brush, adds it to the brush list, and returns it.
e54c96f1 332
8024723d
FM
333 @param colour
334 Colour object.
335 @param style
336 Brush style. See ::wxBrushStyle for a list of styles.
337 */
338 wxBrush* FindOrCreateBrush(const wxColour& colour,
339 wxBrushStyle style = wxBRUSHSTYLE_SOLID);
340};
341
342/**
343 The global wxBrushList instance.
344*/
345wxBrushList* wxTheBrushList;