1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxColour
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
12 Flags for wxColour -> wxString conversion (see wxColour::GetAsString).
17 wxC2S_NAME
= 1, // return colour name, when possible
18 wxC2S_CSS_SYNTAX
= 2, // return colour in rgb(r,g,b) syntax
19 wxC2S_HTML_SYNTAX
= 4 // return colour in #rrggbb syntax
24 const unsigned char wxALPHA_TRANSPARENT
= 0;
25 const unsigned char wxALPHA_OPAQUE
= 0xff;
30 A colour is an object representing a combination of Red, Green, and Blue
31 (RGB) intensity values, and is used to determine drawing colours. See the
32 entry for wxColourDatabase for how a pointer to a predefined, named colour
33 may be returned instead of creating a new colour.
35 Valid RGB values are in the range 0 to 255.
37 You can retrieve the current system colour settings with wxSystemSettings.
43 - ::wxNullColour - An empty, invalid colour.
44 - ::wxTransparentColour - Valid but fully transparent colour (new in 2.9.1).
54 @see wxColourDatabase, wxPen, wxBrush, wxColourDialog, wxSystemSettings
56 class wxColour
: public wxObject
73 The alpha value. Alpha values range from 0 (wxALPHA_TRANSPARENT) to
76 wxColour(unsigned char red
, unsigned char green
, unsigned char blue
,
77 unsigned char alpha
= wxALPHA_OPAQUE
);
83 wxColour(const wxString
& colourName
);
89 wxColour(unsigned long colRGB
);
94 wxColour(const wxColour
& colour
);
97 Returns the alpha value, on platforms where alpha is not yet supported, this
98 always returns wxALPHA_OPAQUE.
100 virtual unsigned char Alpha() const;
103 Returns the blue intensity.
105 virtual unsigned char Blue() const;
108 Converts this colour to a wxString using the given flags.
110 The supported flags are @c wxC2S_NAME, to obtain the colour name
111 (e.g. wxColour(255,0,0) == "red"), @c wxC2S_CSS_SYNTAX, to obtain
112 the colour in the "rgb(r,g,b)" or "rgba(r,g,b,a)" syntax
113 (e.g. wxColour(255,0,0,85) == "rgba(255,0,0,0.333)"), and
114 @c wxC2S_HTML_SYNTAX, to obtain the colour as "#" followed by 6
115 hexadecimal digits (e.g. wxColour(255,0,0) == "#FF0000").
117 This function never fails and always returns a non-empty string but
118 asserts if the colour has alpha channel (i.e. is non opaque) but
119 @c wxC2S_CSS_SYNTAX (which is the only one supporting alpha) is not
124 virtual wxString
GetAsString(long flags
= wxC2S_NAME
| wxC2S_CSS_SYNTAX
) const;
128 Sets the RGB or RGBA colour values from a single 32 bit value.
130 The arguments @a colRGB and @a colRGBA should be of the form 0x00BBGGRR
131 and 0xAABBGGRR respectively where @c 0xRR, @c 0xGG, @c 0xBB and @c 0xAA
132 are the values of the red, blue, green and alpha components.
134 Notice the right-to-left order of components!
136 @see GetRGB(), GetRGBA()
140 void SetRGB(wxUint32 colRGB
);
141 void SetRGBA(wxUint32 colRGBA
);
146 Gets the RGB or RGBA colour values as a single 32 bit value.
148 The returned value is of the same form as expected by SetRGB() and
151 Notice that GetRGB() returns the value with 0 as its highest byte
152 independently of the value actually returned by Alpha(). So for a fully
153 opaque colour, the return value of GetRGBA() is @c 0xFFBBGGRR while
154 that of GetRGB() is @c 0x00BBGGRR.
158 wxUint32
GetRGB() const;
159 wxUint32
GetRGBA() const;
163 Returns a pixel value which is platform-dependent.
164 On Windows, a COLORREF is returned.
165 On X, an allocated pixel value is returned.
166 If the pixel is invalid (on X, unallocated), @c -1 is returned.
168 wxIntPtr
GetPixel() const;
171 Returns the green intensity.
173 virtual unsigned char Green() const;
176 Returns @true if the colour object is valid (the colour has been initialised
179 virtual bool IsOk() const;
182 Returns the red intensity.
184 virtual unsigned char Red() const;
188 Sets the RGB intensity values using the given values (first overload),
189 extracting them from the packed long (second overload), using the given
190 string (third overload).
192 When using third form, Set() accepts: colour names (those listed in
193 wxColourDatabase), the CSS-like @c "rgb(r,g,b)" or @c "rgba(r,g,b,a)" syntax
194 (case insensitive) and the HTML-like syntax: @c "#" followed by 6 hexadecimal
195 digits for red, green, blue components.
197 Returns @true if the conversion was successful, @false otherwise.
201 void Set(unsigned char red
, unsigned char green
,
203 unsigned char alpha
= wxALPHA_OPAQUE
);
204 void Set(unsigned long RGB
);
205 bool Set(const wxString
& str
);
209 Tests the inequality of two colours by comparing individual red, green, blue
210 colours and alpha values.
212 bool operator !=(const wxColour
& colour
) const;
215 Assignment operator, using a colour name to be found in the colour database.
217 @see wxColourDatabase
219 wxColour
& operator=(const wxColour
& colour
);
222 Tests the equality of two colours by comparing individual red, green, blue
223 colours and alpha values.
225 bool operator ==(const wxColour
& colour
) const;
228 Assign 0 or 255 to rgb out parameters.
231 static void MakeMono(unsigned char* r
, unsigned char* g
, unsigned char* b
, bool on
);
234 Create a disabled (dimmed) colour from (in/out) rgb parameters.
237 static void MakeDisabled(unsigned char* r
, unsigned char* g
, unsigned char* b
, unsigned char brightness
= 255);
240 Create a grey colour from (in/out) rgb parameters using integer arithmetic.
243 static void MakeGrey(unsigned char* r
, unsigned char* g
, unsigned char* b
);
246 Create a grey colour from (in/out) rgb parameters using floating point arithmetic.
247 Defaults to using the standard ITU-T BT.601 when converting to YUV, where every pixel equals
248 (R * @a weight_r) + (G * @a weight_g) + (B * @a weight_b).
251 static void MakeGrey(unsigned char* r
, unsigned char* g
, unsigned char* b
,
252 double weight_r
, double weight_g
, double weight_b
);
255 Blend colour, taking alpha into account.
258 static unsigned char AlphaBlend(unsigned char fg
, unsigned char bg
, double alpha
);
261 ChangeLightness() is a utility function that simply darkens
262 or lightens a color, based on the specified percentage
263 ialpha of 0 would be completely black, 200 completely white
264 an ialpha of 100 returns the same colour
267 static void ChangeLightness(unsigned char* r
, unsigned char* g
, unsigned char* b
, int ialpha
);
270 wxColour wrapper for ChangeLightness(r,g,b,ialpha).
273 wxColour
ChangeLightness(int ialpha
) const;
277 /** @name Predefined colors. */
279 wxColour wxNullColour
;
280 wxColour wxTransparentColour
;
286 wxColour
* wxLIGHT_GREY
;
293 // ============================================================================
294 // Global functions/macros
295 // ============================================================================
297 /** @addtogroup group_funcmacro_misc */
301 Converts string to a wxColour best represented by the given string. Returns
304 @see wxToString(const wxColour&)
308 bool wxFromString(const wxString
& string
, wxColour
* colour
);
311 Converts the given wxColour into a string.
313 @see wxFromString(const wxString&, wxColour*)
317 wxString
wxToString(const wxColour
& colour
);