neoGFX
C++ GPU-oriented GUI library and app/game creation framework.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
colour.hpp
Go to the documentation of this file.
1 // colour.hpp
2 /*
3  neogfx C++ GUI Library
4  Copyright (c) 2015 Leigh Johnston. All Rights Reserved.
5 
6  This program is free software: you can redistribute it and / or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include <neogfx/neogfx.hpp>
23 #include <type_traits>
24 #include <neolib/variant.hpp>
28 
29 namespace neogfx
30 {
31  class colour
32  {
33  // types
34  public:
35  typedef uint32_t argb;
36  typedef uint8_t component;
37  struct matrix : std::array<std::array<double, 5>, 5>
38  {
39  matrix() : std::array<std::array<double, 5>, 5>() {}
40  };
41  // constants
42  public:
43  static const colour AliceBlue;
44  static const colour AntiqueWhite;
45  static const colour AntiqueWhite1;
46  static const colour AntiqueWhite2;
47  static const colour AntiqueWhite3;
48  static const colour AntiqueWhite4;
49  static const colour Aquamarine;
50  static const colour Aquamarine1;
51  static const colour Aquamarine2;
52  static const colour Aquamarine3;
53  static const colour Aquamarine4;
54  static const colour Azure;
55  static const colour Azure1;
56  static const colour Azure2;
57  static const colour Azure3;
58  static const colour Azure4;
59  static const colour Beige;
60  static const colour Bisque;
61  static const colour Bisque1;
62  static const colour Bisque2;
63  static const colour Bisque3;
64  static const colour Bisque4;
65  static const colour Black;
66  static const colour BlanchedAlmond;
67  static const colour Blue;
68  static const colour Blue1;
69  static const colour Blue2;
70  static const colour Blue3;
71  static const colour Blue4;
72  static const colour BlueViolet;
73  static const colour Brown;
74  static const colour Brown1;
75  static const colour Brown2;
76  static const colour Brown3;
77  static const colour Brown4;
78  static const colour Burlywood;
79  static const colour Burlywood1;
80  static const colour Burlywood2;
81  static const colour Burlywood3;
82  static const colour Burlywood4;
83  static const colour CadetBlue;
84  static const colour CadetBlue1;
85  static const colour CadetBlue2;
86  static const colour CadetBlue3;
87  static const colour CadetBlue4;
88  static const colour Chartreuse;
89  static const colour Chartreuse1;
90  static const colour Chartreuse2;
91  static const colour Chartreuse3;
92  static const colour Chartreuse4;
93  static const colour Chocolate;
94  static const colour Chocolate1;
95  static const colour Chocolate2;
96  static const colour Chocolate3;
97  static const colour Chocolate4;
98  static const colour Coral;
99  static const colour Coral1;
100  static const colour Coral2;
101  static const colour Coral3;
102  static const colour Coral4;
103  static const colour CornflowerBlue;
104  static const colour Cornsilk;
105  static const colour Cornsilk1;
106  static const colour Cornsilk2;
107  static const colour Cornsilk3;
108  static const colour Cornsilk4;
109  static const colour Cyan;
110  static const colour Cyan1;
111  static const colour Cyan2;
112  static const colour Cyan3;
113  static const colour Cyan4;
114  static const colour DarkBlue;
115  static const colour DarkCyan;
116  static const colour DarkGoldenrod;
117  static const colour DarkGoldenrod1;
118  static const colour DarkGoldenrod2;
119  static const colour DarkGoldenrod3;
120  static const colour DarkGoldenrod4;
121  static const colour DarkGray;
122  static const colour DarkGreen;
123  static const colour DarkGrey;
124  static const colour DarkKhaki;
125  static const colour DarkMagenta;
126  static const colour DarkOliveGreen;
127  static const colour DarkOliveGreen1;
128  static const colour DarkOliveGreen2;
129  static const colour DarkOliveGreen3;
130  static const colour DarkOliveGreen4;
131  static const colour DarkOrange;
132  static const colour DarkOrange1;
133  static const colour DarkOrange2;
134  static const colour DarkOrange3;
135  static const colour DarkOrange4;
136  static const colour DarkOrchid;
137  static const colour DarkOrchid1;
138  static const colour DarkOrchid2;
139  static const colour DarkOrchid3;
140  static const colour DarkOrchid4;
141  static const colour DarkRed;
142  static const colour DarkSalmon;
143  static const colour DarkSeaGreen;
144  static const colour DarkSeaGreen1;
145  static const colour DarkSeaGreen2;
146  static const colour DarkSeaGreen3;
147  static const colour DarkSeaGreen4;
148  static const colour DarkSlateBlue;
149  static const colour DarkSlateGray;
150  static const colour DarkSlateGray1;
151  static const colour DarkSlateGray2;
152  static const colour DarkSlateGray3;
153  static const colour DarkSlateGray4;
154  static const colour DarkSlateGrey;
155  static const colour DarkTurquoise;
156  static const colour DarkViolet;
157  static const colour DebianRed;
158  static const colour DeepPink;
159  static const colour DeepPink1;
160  static const colour DeepPink2;
161  static const colour DeepPink3;
162  static const colour DeepPink4;
163  static const colour DeepSkyBlue;
164  static const colour DeepSkyBlue1;
165  static const colour DeepSkyBlue2;
166  static const colour DeepSkyBlue3;
167  static const colour DeepSkyBlue4;
168  static const colour DimGray;
169  static const colour DimGrey;
170  static const colour DodgerBlue;
171  static const colour DodgerBlue1;
172  static const colour DodgerBlue2;
173  static const colour DodgerBlue3;
174  static const colour DodgerBlue4;
175  static const colour Firebrick;
176  static const colour Firebrick1;
177  static const colour Firebrick2;
178  static const colour Firebrick3;
179  static const colour Firebrick4;
180  static const colour FloralWhite;
181  static const colour ForestGreen;
182  static const colour Gainsboro;
183  static const colour GhostWhite;
184  static const colour Gold;
185  static const colour Gold1;
186  static const colour Gold2;
187  static const colour Gold3;
188  static const colour Gold4;
189  static const colour Goldenrod;
190  static const colour Goldenrod1;
191  static const colour Goldenrod2;
192  static const colour Goldenrod3;
193  static const colour Goldenrod4;
194  static const colour Gray;
195  static const colour Gray0;
196  static const colour Gray1;
197  static const colour Gray10;
198  static const colour Gray100;
199  static const colour Gray11;
200  static const colour Gray12;
201  static const colour Gray13;
202  static const colour Gray14;
203  static const colour Gray15;
204  static const colour Gray16;
205  static const colour Gray17;
206  static const colour Gray18;
207  static const colour Gray19;
208  static const colour Gray2;
209  static const colour Gray20;
210  static const colour Gray21;
211  static const colour Gray22;
212  static const colour Gray23;
213  static const colour Gray24;
214  static const colour Gray25;
215  static const colour Gray26;
216  static const colour Gray27;
217  static const colour Gray28;
218  static const colour Gray29;
219  static const colour Gray3;
220  static const colour Gray30;
221  static const colour Gray31;
222  static const colour Gray32;
223  static const colour Gray33;
224  static const colour Gray34;
225  static const colour Gray35;
226  static const colour Gray36;
227  static const colour Gray37;
228  static const colour Gray38;
229  static const colour Gray39;
230  static const colour Gray4;
231  static const colour Gray40;
232  static const colour Gray41;
233  static const colour Gray42;
234  static const colour Gray43;
235  static const colour Gray44;
236  static const colour Gray45;
237  static const colour Gray46;
238  static const colour Gray47;
239  static const colour Gray48;
240  static const colour Gray49;
241  static const colour Gray5;
242  static const colour Gray50;
243  static const colour Gray51;
244  static const colour Gray52;
245  static const colour Gray53;
246  static const colour Gray54;
247  static const colour Gray55;
248  static const colour Gray56;
249  static const colour Gray57;
250  static const colour Gray58;
251  static const colour Gray59;
252  static const colour Gray6;
253  static const colour Gray60;
254  static const colour Gray61;
255  static const colour Gray62;
256  static const colour Gray63;
257  static const colour Gray64;
258  static const colour Gray65;
259  static const colour Gray66;
260  static const colour Gray67;
261  static const colour Gray68;
262  static const colour Gray69;
263  static const colour Gray7;
264  static const colour Gray70;
265  static const colour Gray71;
266  static const colour Gray72;
267  static const colour Gray73;
268  static const colour Gray74;
269  static const colour Gray75;
270  static const colour Gray76;
271  static const colour Gray77;
272  static const colour Gray78;
273  static const colour Gray79;
274  static const colour Gray8;
275  static const colour Gray80;
276  static const colour Gray81;
277  static const colour Gray82;
278  static const colour Gray83;
279  static const colour Gray84;
280  static const colour Gray85;
281  static const colour Gray86;
282  static const colour Gray87;
283  static const colour Gray88;
284  static const colour Gray89;
285  static const colour Gray9;
286  static const colour Gray90;
287  static const colour Gray91;
288  static const colour Gray92;
289  static const colour Gray93;
290  static const colour Gray94;
291  static const colour Gray95;
292  static const colour Gray96;
293  static const colour Gray97;
294  static const colour Gray98;
295  static const colour Gray99;
296  static const colour Green;
297  static const colour Green1;
298  static const colour Green2;
299  static const colour Green3;
300  static const colour Green4;
301  static const colour GreenYellow;
302  static const colour Grey;
303  static const colour Grey0;
304  static const colour Grey1;
305  static const colour Grey10;
306  static const colour Grey100;
307  static const colour Grey11;
308  static const colour Grey12;
309  static const colour Grey13;
310  static const colour Grey14;
311  static const colour Grey15;
312  static const colour Grey16;
313  static const colour Grey17;
314  static const colour Grey18;
315  static const colour Grey19;
316  static const colour Grey2;
317  static const colour Grey20;
318  static const colour Grey21;
319  static const colour Grey22;
320  static const colour Grey23;
321  static const colour Grey24;
322  static const colour Grey25;
323  static const colour Grey26;
324  static const colour Grey27;
325  static const colour Grey28;
326  static const colour Grey29;
327  static const colour Grey3;
328  static const colour Grey30;
329  static const colour Grey31;
330  static const colour Grey32;
331  static const colour Grey33;
332  static const colour Grey34;
333  static const colour Grey35;
334  static const colour Grey36;
335  static const colour Grey37;
336  static const colour Grey38;
337  static const colour Grey39;
338  static const colour Grey4;
339  static const colour Grey40;
340  static const colour Grey41;
341  static const colour Grey42;
342  static const colour Grey43;
343  static const colour Grey44;
344  static const colour Grey45;
345  static const colour Grey46;
346  static const colour Grey47;
347  static const colour Grey48;
348  static const colour Grey49;
349  static const colour Grey5;
350  static const colour Grey50;
351  static const colour Grey51;
352  static const colour Grey52;
353  static const colour Grey53;
354  static const colour Grey54;
355  static const colour Grey55;
356  static const colour Grey56;
357  static const colour Grey57;
358  static const colour Grey58;
359  static const colour Grey59;
360  static const colour Grey6;
361  static const colour Grey60;
362  static const colour Grey61;
363  static const colour Grey62;
364  static const colour Grey63;
365  static const colour Grey64;
366  static const colour Grey65;
367  static const colour Grey66;
368  static const colour Grey67;
369  static const colour Grey68;
370  static const colour Grey69;
371  static const colour Grey7;
372  static const colour Grey70;
373  static const colour Grey71;
374  static const colour Grey72;
375  static const colour Grey73;
376  static const colour Grey74;
377  static const colour Grey75;
378  static const colour Grey76;
379  static const colour Grey77;
380  static const colour Grey78;
381  static const colour Grey79;
382  static const colour Grey8;
383  static const colour Grey80;
384  static const colour Grey81;
385  static const colour Grey82;
386  static const colour Grey83;
387  static const colour Grey84;
388  static const colour Grey85;
389  static const colour Grey86;
390  static const colour Grey87;
391  static const colour Grey88;
392  static const colour Grey89;
393  static const colour Grey9;
394  static const colour Grey90;
395  static const colour Grey91;
396  static const colour Grey92;
397  static const colour Grey93;
398  static const colour Grey94;
399  static const colour Grey95;
400  static const colour Grey96;
401  static const colour Grey97;
402  static const colour Grey98;
403  static const colour Grey99;
404  static const colour Honeydew;
405  static const colour Honeydew1;
406  static const colour Honeydew2;
407  static const colour Honeydew3;
408  static const colour Honeydew4;
409  static const colour HotPink;
410  static const colour HotPink1;
411  static const colour HotPink2;
412  static const colour HotPink3;
413  static const colour HotPink4;
414  static const colour IndianRed;
415  static const colour IndianRed1;
416  static const colour IndianRed2;
417  static const colour IndianRed3;
418  static const colour IndianRed4;
419  static const colour Ivory;
420  static const colour Ivory1;
421  static const colour Ivory2;
422  static const colour Ivory3;
423  static const colour Ivory4;
424  static const colour Khaki;
425  static const colour Khaki1;
426  static const colour Khaki2;
427  static const colour Khaki3;
428  static const colour Khaki4;
429  static const colour Lavender;
430  static const colour LavenderBlush;
431  static const colour LavenderBlush1;
432  static const colour LavenderBlush2;
433  static const colour LavenderBlush3;
434  static const colour LavenderBlush4;
435  static const colour LawnGreen;
436  static const colour LemonChiffon;
437  static const colour LemonChiffon1;
438  static const colour LemonChiffon2;
439  static const colour LemonChiffon3;
440  static const colour LemonChiffon4;
441  static const colour LightBlue;
442  static const colour LightBlue1;
443  static const colour LightBlue2;
444  static const colour LightBlue3;
445  static const colour LightBlue4;
446  static const colour LightCoral;
447  static const colour LightCyan;
448  static const colour LightCyan1;
449  static const colour LightCyan2;
450  static const colour LightCyan3;
451  static const colour LightCyan4;
452  static const colour LightGoldenrod;
453  static const colour LightGoldenrod1;
454  static const colour LightGoldenrod2;
455  static const colour LightGoldenrod3;
456  static const colour LightGoldenrod4;
458  static const colour LightGray;
459  static const colour LightGreen;
460  static const colour LightGrey;
461  static const colour LightPink;
462  static const colour LightPink1;
463  static const colour LightPink2;
464  static const colour LightPink3;
465  static const colour LightPink4;
466  static const colour LightSalmon;
467  static const colour LightSalmon1;
468  static const colour LightSalmon2;
469  static const colour LightSalmon3;
470  static const colour LightSalmon4;
471  static const colour LightSeaGreen;
472  static const colour LightSkyBlue;
473  static const colour LightSkyBlue1;
474  static const colour LightSkyBlue2;
475  static const colour LightSkyBlue3;
476  static const colour LightSkyBlue4;
477  static const colour LightSlateBlue;
478  static const colour LightSlateGray;
479  static const colour LightSlateGrey;
480  static const colour LightSteelBlue;
481  static const colour LightSteelBlue1;
482  static const colour LightSteelBlue2;
483  static const colour LightSteelBlue3;
484  static const colour LightSteelBlue4;
485  static const colour LightYellow;
486  static const colour LightYellow1;
487  static const colour LightYellow2;
488  static const colour LightYellow3;
489  static const colour LightYellow4;
490  static const colour LimeGreen;
491  static const colour Linen;
492  static const colour Magenta;
493  static const colour Magenta1;
494  static const colour Magenta2;
495  static const colour Magenta3;
496  static const colour Magenta4;
497  static const colour Maroon;
498  static const colour Maroon1;
499  static const colour Maroon2;
500  static const colour Maroon3;
501  static const colour Maroon4;
502  static const colour MediumAquamarine;
503  static const colour MediumBlue;
504  static const colour MediumOrchid;
505  static const colour MediumOrchid1;
506  static const colour MediumOrchid2;
507  static const colour MediumOrchid3;
508  static const colour MediumOrchid4;
509  static const colour MediumPurple;
510  static const colour MediumPurple1;
511  static const colour MediumPurple2;
512  static const colour MediumPurple3;
513  static const colour MediumPurple4;
514  static const colour MediumSeaGreen;
515  static const colour MediumSlateBlue;
516  static const colour MediumSpringGreen;
517  static const colour MediumTurquoise;
518  static const colour MediumVioletRed;
519  static const colour MidnightBlue;
520  static const colour MintCream;
521  static const colour MistyRose;
522  static const colour MistyRose1;
523  static const colour MistyRose2;
524  static const colour MistyRose3;
525  static const colour MistyRose4;
526  static const colour Moccasin;
527  static const colour NavajoWhite;
528  static const colour NavajoWhite1;
529  static const colour NavajoWhite2;
530  static const colour NavajoWhite3;
531  static const colour NavajoWhite4;
532  static const colour Navy;
533  static const colour NavyBlue;
534  static const colour OldLace;
535  static const colour OliveDrab;
536  static const colour OliveDrab1;
537  static const colour OliveDrab2;
538  static const colour OliveDrab3;
539  static const colour OliveDrab4;
540  static const colour Orange;
541  static const colour Orange1;
542  static const colour Orange2;
543  static const colour Orange3;
544  static const colour Orange4;
545  static const colour OrangeRed;
546  static const colour OrangeRed1;
547  static const colour OrangeRed2;
548  static const colour OrangeRed3;
549  static const colour OrangeRed4;
550  static const colour Orchid;
551  static const colour Orchid1;
552  static const colour Orchid2;
553  static const colour Orchid3;
554  static const colour Orchid4;
555  static const colour PaleGoldenrod;
556  static const colour PaleGreen;
557  static const colour PaleGreen1;
558  static const colour PaleGreen2;
559  static const colour PaleGreen3;
560  static const colour PaleGreen4;
561  static const colour PaleTurquoise;
562  static const colour PaleTurquoise1;
563  static const colour PaleTurquoise2;
564  static const colour PaleTurquoise3;
565  static const colour PaleTurquoise4;
566  static const colour PaleVioletRed;
567  static const colour PaleVioletRed1;
568  static const colour PaleVioletRed2;
569  static const colour PaleVioletRed3;
570  static const colour PaleVioletRed4;
571  static const colour PapayaWhip;
572  static const colour PeachPuff;
573  static const colour PeachPuff1;
574  static const colour PeachPuff2;
575  static const colour PeachPuff3;
576  static const colour PeachPuff4;
577  static const colour Peru;
578  static const colour Pink;
579  static const colour Pink1;
580  static const colour Pink2;
581  static const colour Pink3;
582  static const colour Pink4;
583  static const colour Plum;
584  static const colour Plum1;
585  static const colour Plum2;
586  static const colour Plum3;
587  static const colour Plum4;
588  static const colour PowderBlue;
589  static const colour Purple;
590  static const colour Purple1;
591  static const colour Purple2;
592  static const colour Purple3;
593  static const colour Purple4;
594  static const colour Red;
595  static const colour Red1;
596  static const colour Red2;
597  static const colour Red3;
598  static const colour Red4;
599  static const colour RosyBrown;
600  static const colour RosyBrown1;
601  static const colour RosyBrown2;
602  static const colour RosyBrown3;
603  static const colour RosyBrown4;
604  static const colour RoyalBlue;
605  static const colour RoyalBlue1;
606  static const colour RoyalBlue2;
607  static const colour RoyalBlue3;
608  static const colour RoyalBlue4;
609  static const colour SaddleBrown;
610  static const colour Salmon;
611  static const colour Salmon1;
612  static const colour Salmon2;
613  static const colour Salmon3;
614  static const colour Salmon4;
615  static const colour SandyBrown;
616  static const colour SeaGreen;
617  static const colour SeaGreen1;
618  static const colour SeaGreen2;
619  static const colour SeaGreen3;
620  static const colour SeaGreen4;
621  static const colour Seashell;
622  static const colour Seashell1;
623  static const colour Seashell2;
624  static const colour Seashell3;
625  static const colour Seashell4;
626  static const colour Sienna;
627  static const colour Sienna1;
628  static const colour Sienna2;
629  static const colour Sienna3;
630  static const colour Sienna4;
631  static const colour SkyBlue;
632  static const colour SkyBlue1;
633  static const colour SkyBlue2;
634  static const colour SkyBlue3;
635  static const colour SkyBlue4;
636  static const colour SlateBlue;
637  static const colour SlateBlue1;
638  static const colour SlateBlue2;
639  static const colour SlateBlue3;
640  static const colour SlateBlue4;
641  static const colour SlateGray;
642  static const colour SlateGray1;
643  static const colour SlateGray2;
644  static const colour SlateGray3;
645  static const colour SlateGray4;
646  static const colour SlateGrey;
647  static const colour Snow;
648  static const colour Snow1;
649  static const colour Snow2;
650  static const colour Snow3;
651  static const colour Snow4;
652  static const colour SpringGreen;
653  static const colour SpringGreen1;
654  static const colour SpringGreen2;
655  static const colour SpringGreen3;
656  static const colour SpringGreen4;
657  static const colour SteelBlue;
658  static const colour SteelBlue1;
659  static const colour SteelBlue2;
660  static const colour SteelBlue3;
661  static const colour SteelBlue4;
662  static const colour Tan;
663  static const colour Tan1;
664  static const colour Tan2;
665  static const colour Tan3;
666  static const colour Tan4;
667  static const colour Thistle;
668  static const colour Thistle1;
669  static const colour Thistle2;
670  static const colour Thistle3;
671  static const colour Thistle4;
672  static const colour Tomato;
673  static const colour Tomato1;
674  static const colour Tomato2;
675  static const colour Tomato3;
676  static const colour Tomato4;
677  static const colour Turquoise;
678  static const colour Turquoise1;
679  static const colour Turquoise2;
680  static const colour Turquoise3;
681  static const colour Turquoise4;
682  static const colour Violet;
683  static const colour VioletRed;
684  static const colour VioletRed1;
685  static const colour VioletRed2;
686  static const colour VioletRed3;
687  static const colour VioletRed4;
688  static const colour Wheat;
689  static const colour Wheat1;
690  static const colour Wheat2;
691  static const colour Wheat3;
692  static const colour Wheat4;
693  static const colour White;
694  static const colour WhiteSmoke;
695  static const colour Yellow;
696  static const colour Yellow1;
697  static const colour Yellow2;
698  static const colour Yellow3;
699  static const colour Yellow4;
700  static const colour YellowGreen;
701  public:
702  static const component MinComponetValue = 0x00;
703  static const component MaxComponetValue = 0xFF;
704  private:
705  static const argb AlphaShift = 24;
706  static const argb RedShift = 16;
707  static const argb GreenShift = 8;
708  static const argb BlueShift = 0;
709  // construction
710  public:
711  colour();
712  explicit colour(argb aValue);
713  colour(component aRed, component aGreen, component aBlue, component aAlpha = 0xFF);
714  template <typename T>
715  colour(T aRed, T aGreen, T aBlue, T aAlpha = static_cast<T>(0xFF), typename std::enable_if<std::is_integral<T>::value, void>::type* = nullptr) :
716  colour(static_cast<component>(aRed), static_cast<component>(aGreen), static_cast<component>(aBlue), static_cast<component>(aAlpha))
717  {
718  }
719  colour(const std::string& aTextValue);
720  // operations
721  public:
722  static colour from_hsl(double aHue, double aSaturation, double aLightness, double aAlpha = 1.0);
723  static colour from_hsv(double aHue, double aSaturation, double aValue, double aAlpha = 1.0);
724  static boost::optional<colour> from_name(const std::string& aName);
725  argb value() const;
726  component alpha() const;
727  component red() const;
728  component green() const;
729  component blue() const;
730  template <typename T>
731  T alpha() const { return static_cast<T>(alpha()) / 0xFF; }
732  template <typename T>
733  T red() const { return static_cast<T>(red()) / 0xFF; }
734  template <typename T>
735  T green() const { return static_cast<T>(green()) / 0xFF; }
736  template <typename T>
737  T blue() const { return static_cast<T>(blue()) / 0xFF; }
738  colour& set_alpha(component aNewValue);
739  colour& set_red(component aNewValue);
740  colour& set_green(component aNewValue);
741  colour& set_blue(component aNewValue);
742  colour with_alpha(component aNewValue) const;
743  colour with_red(component aNewValue) const;
744  colour with_green(component aNewValue) const;
745  colour with_blue(component aNewValue) const;
746  colour with_combined_alpha(component aNewValue) const;
747  hsl_colour to_hsl() const;
748  hsv_colour to_hsv() const;
749  double intensity() const;
750  double luma() const;
751  bool similar_intensity(const colour& aOther, double aThreshold = 0.5);
752  colour mid(const colour& aOther) const;
753  bool light(double aThreshold = 0.50) const;
754  bool dark(double aThreshold = 0.50) const;
755  colour& lighten(component aDelta);
756  colour& darken(component aDelta);
757  colour lighter(component aDelta) const;
758  colour darker(component aDelta) const;
759  colour shade(component aDelta) const;
760  colour monochrome() const;
761  colour same_lightness_as(const colour& aOther) const;
762  colour with_lightness(double aLightness) const;
763  colour inverse() const;
764  colour& operator+=(component aDelta);
765  colour& operator-=(component aDelta);
766  colour operator~() const;
767  bool operator==(const colour& aOther) const;
768  bool operator!=(const colour& aOther) const;
769  bool operator<(const colour& aOther) const;
770  std::string to_string() const;
771  std::string to_hex_string() const;
772  // attributes
773  private:
774  argb iValue;
775  };
776 
777  inline colour operator+(const colour& aLeft, colour::component aRight)
778  {
779  colour ret = aLeft;
780  ret += aRight;
781  return ret;
782  }
783 
784  inline colour operator-(const colour& aLeft, colour::component aRight)
785  {
786  colour ret = aLeft;
787  ret -= aRight;
788  return ret;
789  }
790 
791  template <typename Elem, typename Traits>
792  inline std::basic_ostream<Elem, Traits>& operator<<(std::basic_ostream<Elem, Traits>& aStream, const colour& aColour)
793  {
794  aStream << "[0x" << std::hex << (int) aColour.alpha() <<
795  ", 0x" << std::hex << (int) aColour.red() <<
796  ", 0x" << std::hex << (int) aColour.green() <<
797  ", 0x" << std::hex << (int) aColour.blue() << "]" << std::endl;
798  return aStream;
799  }
800 
801  class gradient
802  {
803  // constants
804  public:
805  static const std::size_t MaxStops = 256;
806  // types
807  public:
809  {
810  Vertical = 0,
812  Diagonal = 2,
813  Radial = 3
814  };
815  enum corner_e
816  {
817  TopLeft = 0,
818  TopRight = 1,
819  BottomRight = 2,
820  BottomLeft = 3
821  };
823  enum shape_e
824  {
825  Ellipse = 0,
826  Circle = 1
827  };
828  enum size_e
829  {
830  ClosestSide = 0,
831  FarthestSide = 1,
832  ClosestCorner = 2,
833  FarthestCorner = 3
834  };
835  typedef std::pair<double, colour> colour_stop;
836  typedef std::vector<colour_stop> colour_stop_list;
837  typedef std::pair<double, colour::component> alpha_stop;
838  typedef std::vector<alpha_stop> alpha_stop_list;
839  public:
840  struct bad_position : std::logic_error { bad_position() : std::logic_error("neogfx::gradient::bad_position") {} };
841  // construction
842  public:
843  gradient();
844  gradient(const colour& aColour, direction_e aDirection = Vertical);
845  gradient(const colour& aColour1, const colour& aColour2, direction_e aDirection = Vertical);
846  gradient(const colour_stop_list& aColourStops, direction_e aDirection = Vertical);
847  gradient(const colour_stop_list& aColourStops, const alpha_stop_list& aAlphaStops, direction_e aDirection = Vertical);
848  // operations
849  public:
850  colour_stop_list::const_iterator colour_begin() const;
851  colour_stop_list::const_iterator colour_end() const;
852  alpha_stop_list::const_iterator alpha_begin() const;
853  alpha_stop_list::const_iterator alpha_end() const;
854  colour_stop_list::iterator colour_begin();
855  colour_stop_list::iterator colour_end();
856  alpha_stop_list::iterator alpha_begin();
857  alpha_stop_list::iterator alpha_end();
858  colour_stop_list::iterator find_colour_stop(double aPos, bool aToInsert = false);
859  colour_stop_list::iterator find_colour_stop(double aPos, double aStart, double aEnd, bool aToInsert = false);
860  alpha_stop_list::iterator find_alpha_stop(double aPos, bool aToInsert = false);
861  alpha_stop_list::iterator find_alpha_stop(double aPos, double aStart, double aEnd, bool aToInsert = false);
862  colour_stop_list::iterator insert_colour_stop(double aPos);
863  colour_stop_list::iterator insert_colour_stop(double aPos, double aStart, double aEnd);
864  alpha_stop_list::iterator insert_alpha_stop(double aPos);
865  alpha_stop_list::iterator insert_alpha_stop(double aPos, double aStart, double aEnd);
866  void erase_stop(colour_stop_list::iterator aStop);
867  void erase_stop(alpha_stop_list::iterator aStop);
868  std::size_t colour_stop_count() const;
869  std::size_t alpha_stop_count() const;
870  colour_stop_list combined_stops() const;
871  colour at(double aPos) const;
872  colour at(double aPos, double aStart, double aEnd) const;
873  colour colour_at(double aPos) const;
874  colour colour_at(double aPos, double aStart, double aEnd) const;
875  colour::component alpha_at(double aPos) const;
876  colour::component alpha_at(double aPos, double aStart, double aEnd) const;
877  gradient with_alpha(colour::component aAlpha) const;
879  direction_e direction() const;
880  void set_direction(direction_e aDirection);
881  gradient with_direction(direction_e aDirection) const;
882  orientation_type orientation() const;
883  void set_orientation(orientation_type aOrientation);
884  gradient with_orientation(orientation_type aOrientation) const;
885  shape_e shape() const;
886  void set_shape(shape_e aShape);
887  gradient with_shape(shape_e aShape) const;
888  size_e size() const;
889  void set_size(size_e aSize);
890  gradient with_size(size_e aSize) const;
891  const optional_point& centre() const;
892  void set_centre(const optional_point& aCentre);
893  gradient with_centre(const optional_point& aCentre) const;
894  double smoothness() const;
895  void set_smoothness(double aSmoothness);
896  gradient with_smoothness(double aSmoothness) const;
897  const optional_rect& rect() const;
898  void set_rect(const optional_rect& aRect);
899  gradient with_rect(const optional_rect& aRect) const;
900  public:
901  bool operator==(const gradient& aOther) const;
902  bool operator!=(const gradient& aOther) const;
903  bool operator<(const gradient& aOther) const;
904  public:
905  static double normalized_position(double aPos, double aStart, double aEnd);
906  private:
907  const colour_stop_list& colour_stops() const;
908  colour_stop_list& colour_stops();
909  const alpha_stop_list& alpha_stops() const;
910  alpha_stop_list& alpha_stops();
911  void fix();
912  // attributes
913  private:
914  colour_stop_list iColourStops;
915  alpha_stop_list iAlphaStops;
916  direction_e iDirection;
917  orientation_type iOrientation;
918  shape_e iShape;
919  size_e iSize;
920  optional_point iCentre;
921  double iSmoothness;
922  optional_rect iRect;
923  };
924 
925  typedef boost::optional<colour> optional_colour;
926  typedef boost::optional<gradient> optional_gradient;
927 
929  typedef boost::optional<colour_or_gradient> optional_colour_or_gradient;
930 }
static const colour DarkSalmon
Definition: colour.hpp:142
static const colour DarkOrchid1
Definition: colour.hpp:137
hsl_colour to_hsl() const
static const colour Aquamarine3
Definition: colour.hpp:52
static const colour DebianRed
Definition: colour.hpp:157
static const colour Cornsilk2
Definition: colour.hpp:106
static const colour Grey77
Definition: colour.hpp:379
static const colour DodgerBlue1
Definition: colour.hpp:171
static const colour NavajoWhite4
Definition: colour.hpp:531
static const colour Grey86
Definition: colour.hpp:389
static const colour Grey55
Definition: colour.hpp:355
static const colour Gray98
Definition: colour.hpp:294
static boost::optional< colour > from_name(const std::string &aName)
static const colour DarkOliveGreen2
Definition: colour.hpp:128
static const colour Gray35
Definition: colour.hpp:225
static const colour DeepPink1
Definition: colour.hpp:159
static const colour MediumPurple3
Definition: colour.hpp:512
static const colour SkyBlue
Definition: colour.hpp:631
static const colour MediumOrchid
Definition: colour.hpp:504
static const colour Gray61
Definition: colour.hpp:254
static const colour Gray10
Definition: colour.hpp:197
static const colour LightPink4
Definition: colour.hpp:465
static const colour Gray34
Definition: colour.hpp:224
static const colour Purple3
Definition: colour.hpp:592
static const colour Grey51
Definition: colour.hpp:351
static const colour Khaki1
Definition: colour.hpp:425
static const colour DarkOrange
Definition: colour.hpp:131
static const colour Orange
Definition: colour.hpp:540
std::pair< double, colour::component > alpha_stop
Definition: colour.hpp:837
static const colour Gray50
Definition: colour.hpp:242
colour with_red(component aNewValue) const
static const colour DeepSkyBlue
Definition: colour.hpp:163
static const colour Grey90
Definition: colour.hpp:394
static const colour DarkGoldenrod3
Definition: colour.hpp:119
static const colour Gray79
Definition: colour.hpp:273
static const colour Green2
Definition: colour.hpp:298
static const colour LightCyan3
Definition: colour.hpp:450
static const colour Aquamarine2
Definition: colour.hpp:51
static const colour Gray18
Definition: colour.hpp:206
static const colour Khaki4
Definition: colour.hpp:428
static const colour HotPink4
Definition: colour.hpp:413
static const colour SteelBlue2
Definition: colour.hpp:659
static const colour RosyBrown
Definition: colour.hpp:599
static const colour Wheat
Definition: colour.hpp:688
static const colour Wheat3
Definition: colour.hpp:691
colour & operator-=(component aDelta)
static const colour Red1
Definition: colour.hpp:595
static const colour Gray3
Definition: colour.hpp:219
static const colour Gray97
Definition: colour.hpp:293
static const colour Gray63
Definition: colour.hpp:256
static const colour SeaGreen3
Definition: colour.hpp:619
static const colour Grey49
Definition: colour.hpp:348
static const colour DodgerBlue4
Definition: colour.hpp:174
static const colour MediumOrchid1
Definition: colour.hpp:505
static const colour Sienna4
Definition: colour.hpp:630
static const colour DarkSeaGreen1
Definition: colour.hpp:144
static const colour Gray36
Definition: colour.hpp:226
static const colour Grey25
Definition: colour.hpp:322
static const colour Grey99
Definition: colour.hpp:403
static const colour Grey11
Definition: colour.hpp:307
static const colour SkyBlue3
Definition: colour.hpp:634
static const colour RoyalBlue
Definition: colour.hpp:604
static const colour PapayaWhip
Definition: colour.hpp:571
static const colour OrangeRed1
Definition: colour.hpp:546
static const colour Maroon
Definition: colour.hpp:497
static const colour Thistle1
Definition: colour.hpp:668
static const colour DarkSlateGray1
Definition: colour.hpp:150
static const colour Cyan3
Definition: colour.hpp:112
static const colour Gray59
Definition: colour.hpp:251
static const colour LightSteelBlue1
Definition: colour.hpp:481
static const colour Gray5
Definition: colour.hpp:241
boost::optional< point > optional_point
static const colour LavenderBlush
Definition: colour.hpp:430
colour monochrome() const
static const colour Grey70
Definition: colour.hpp:372
static const colour SlateBlue2
Definition: colour.hpp:638
static const colour Brown4
Definition: colour.hpp:77
static const colour Cyan2
Definition: colour.hpp:111
static const colour Gray94
Definition: colour.hpp:290
static const colour LavenderBlush4
Definition: colour.hpp:434
static const colour HotPink2
Definition: colour.hpp:411
colour same_lightness_as(const colour &aOther) const
static const colour CornflowerBlue
Definition: colour.hpp:103
static const colour SlateGray
Definition: colour.hpp:641
static const colour LightSalmon3
Definition: colour.hpp:469
bool operator==(const colour &aOther) const
static const colour Gold3
Definition: colour.hpp:187
static const colour Maroon1
Definition: colour.hpp:498
static const colour MediumSpringGreen
Definition: colour.hpp:516
static const colour Grey30
Definition: colour.hpp:328
static const colour Grey67
Definition: colour.hpp:368
static const colour DarkOliveGreen1
Definition: colour.hpp:127
static const colour Goldenrod2
Definition: colour.hpp:191
static const colour Gray86
Definition: colour.hpp:281
static const colour Red4
Definition: colour.hpp:598
static const colour LightYellow3
Definition: colour.hpp:488
static const colour Gray68
Definition: colour.hpp:261
static const colour Grey69
Definition: colour.hpp:370
static const colour Salmon
Definition: colour.hpp:610
static const colour SkyBlue1
Definition: colour.hpp:632
static const colour Grey95
Definition: colour.hpp:399
static const colour Yellow4
Definition: colour.hpp:699
static const colour Grey54
Definition: colour.hpp:354
static const colour Grey98
Definition: colour.hpp:402
static const colour Gray88
Definition: colour.hpp:283
static const colour LemonChiffon2
Definition: colour.hpp:438
static const colour Gray80
Definition: colour.hpp:275
static const colour Blue1
Definition: colour.hpp:68
static const colour DarkSlateGray
Definition: colour.hpp:149
static const colour Gray30
Definition: colour.hpp:220
static const colour Gray85
Definition: colour.hpp:280
T blue() const
Definition: colour.hpp:737
static const colour Goldenrod4
Definition: colour.hpp:193
component alpha() const
static const colour Grey97
Definition: colour.hpp:401
static const colour SpringGreen3
Definition: colour.hpp:655
static const colour Gray43
Definition: colour.hpp:234
static const colour PaleVioletRed1
Definition: colour.hpp:567
static const colour Grey50
Definition: colour.hpp:350
static const colour OrangeRed2
Definition: colour.hpp:547
static const colour Gray70
Definition: colour.hpp:264
static const colour SteelBlue
Definition: colour.hpp:657
static const colour LightPink
Definition: colour.hpp:461
static const colour Azure1
Definition: colour.hpp:55
static const colour LightGrey
Definition: colour.hpp:460
static const colour Blue
Definition: colour.hpp:67
static const colour Grey94
Definition: colour.hpp:398
static const colour RosyBrown2
Definition: colour.hpp:601
static const colour Gray69
Definition: colour.hpp:262
static const colour Burlywood2
Definition: colour.hpp:80
static const colour Turquoise
Definition: colour.hpp:677
static const colour Cyan
Definition: colour.hpp:109
static const colour Grey13
Definition: colour.hpp:309
static const colour Gray19
Definition: colour.hpp:207
static const colour LemonChiffon
Definition: colour.hpp:436
static const colour Grey66
Definition: colour.hpp:367
boost::optional< colour_or_gradient > optional_colour_or_gradient
Definition: colour.hpp:929
colour & lighten(component aDelta)
static const colour Grey68
Definition: colour.hpp:369
static const colour DarkSlateGray3
Definition: colour.hpp:152
static const colour Orchid3
Definition: colour.hpp:553
static const colour Magenta1
Definition: colour.hpp:493
static const colour Seashell
Definition: colour.hpp:621
static const colour GhostWhite
Definition: colour.hpp:183
static const colour GreenYellow
Definition: colour.hpp:301
static const colour LightSteelBlue
Definition: colour.hpp:480
static const colour Grey38
Definition: colour.hpp:336
static const colour DarkOrchid3
Definition: colour.hpp:139
static const colour Grey22
Definition: colour.hpp:319
static const colour Orange1
Definition: colour.hpp:541
static const colour Plum1
Definition: colour.hpp:584
colour & operator+=(component aDelta)
static const colour LightBlue1
Definition: colour.hpp:442
static const colour SpringGreen2
Definition: colour.hpp:654
static const colour Gray81
Definition: colour.hpp:276
static const colour Gray37
Definition: colour.hpp:227
static const colour DarkGray
Definition: colour.hpp:121
static const colour Gray31
Definition: colour.hpp:221
static const colour DarkCyan
Definition: colour.hpp:115
static const colour SpringGreen
Definition: colour.hpp:652
Definition: uuid.hpp:123
static const colour LightCyan1
Definition: colour.hpp:448
boost::optional< rect > optional_rect
static const colour Sienna
Definition: colour.hpp:626
static const colour Grey33
Definition: colour.hpp:331
static const colour AntiqueWhite3
Definition: colour.hpp:47
static const colour Gray0
Definition: colour.hpp:195
static const colour Grey1
Definition: colour.hpp:304
static const colour Gray33
Definition: colour.hpp:223
static const colour Grey48
Definition: colour.hpp:347
static const colour Tomato2
Definition: colour.hpp:674
static const colour Gray7
Definition: colour.hpp:263
colour operator+(const colour &aLeft, colour::component aRight)
Definition: colour.hpp:777
static const colour Burlywood
Definition: colour.hpp:78
static const colour SteelBlue3
Definition: colour.hpp:660
static const colour Gray52
Definition: colour.hpp:244
static const colour Gray58
Definition: colour.hpp:250
colour with_green(component aNewValue) const
static const colour Grey83
Definition: colour.hpp:386
static const colour Gray62
Definition: colour.hpp:255
static const colour LightGoldenrodYellow
Definition: colour.hpp:457
static const colour Honeydew4
Definition: colour.hpp:408
static const colour Tan1
Definition: colour.hpp:663
static const colour Khaki
Definition: colour.hpp:424
static const colour IndianRed2
Definition: colour.hpp:416
static const colour Bisque3
Definition: colour.hpp:63
static const colour Pink3
Definition: colour.hpp:581
static const colour SlateBlue
Definition: colour.hpp:636
static const colour Gray38
Definition: colour.hpp:228
static const colour IndianRed1
Definition: colour.hpp:415
static const colour VioletRed3
Definition: colour.hpp:686
static const colour Wheat4
Definition: colour.hpp:692
static const colour Aquamarine4
Definition: colour.hpp:53
static const colour Grey76
Definition: colour.hpp:378
static const colour Thistle
Definition: colour.hpp:667
static const colour OliveDrab3
Definition: colour.hpp:538
static const colour SaddleBrown
Definition: colour.hpp:609
static const colour Grey14
Definition: colour.hpp:310
colour & set_green(component aNewValue)
static const colour LightPink2
Definition: colour.hpp:463
static const colour Azure3
Definition: colour.hpp:57
static const colour Yellow2
Definition: colour.hpp:697
static const colour Gray71
Definition: colour.hpp:265
static const colour SlateGray3
Definition: colour.hpp:644
static const colour Moccasin
Definition: colour.hpp:526
static const colour DarkOliveGreen4
Definition: colour.hpp:130
static const colour Gray13
Definition: colour.hpp:201
static const colour Grey23
Definition: colour.hpp:320
static const colour Chartreuse
Definition: colour.hpp:88
static const colour Sienna1
Definition: colour.hpp:627
static const colour Gainsboro
Definition: colour.hpp:182
static const colour AntiqueWhite1
Definition: colour.hpp:45
static const colour Gray84
Definition: colour.hpp:279
static const colour Snow4
Definition: colour.hpp:651
static const colour Magenta3
Definition: colour.hpp:495
static const colour PaleTurquoise2
Definition: colour.hpp:563
static const colour Gray20
Definition: colour.hpp:209
static const colour Gray77
Definition: colour.hpp:271
static const colour Grey96
Definition: colour.hpp:400
static const colour Red
Definition: colour.hpp:594
static const colour Seashell2
Definition: colour.hpp:623
double intensity() const
static const colour DarkGrey
Definition: colour.hpp:123
static const colour SlateGray2
Definition: colour.hpp:643
static const colour Gray99
Definition: colour.hpp:295
T red() const
Definition: colour.hpp:733
static const colour Gray95
Definition: colour.hpp:291
static const colour Gray44
Definition: colour.hpp:235
static const colour Tan4
Definition: colour.hpp:666
static const colour Green3
Definition: colour.hpp:299
static const colour Gold
Definition: colour.hpp:184
static const colour Grey79
Definition: colour.hpp:381
static const colour Grey21
Definition: colour.hpp:318
static const colour DimGrey
Definition: colour.hpp:169
std::string to_string() const
static const colour Grey26
Definition: colour.hpp:323
static const colour Grey61
Definition: colour.hpp:362
static const colour Chocolate
Definition: colour.hpp:93
static const colour PeachPuff
Definition: colour.hpp:572
static const colour SlateGrey
Definition: colour.hpp:646
static const colour Blue2
Definition: colour.hpp:69
static const colour Gray57
Definition: colour.hpp:249
static const colour Burlywood4
Definition: colour.hpp:82
static const colour LightGoldenrod1
Definition: colour.hpp:453
static const colour DarkTurquoise
Definition: colour.hpp:155
static const colour Grey91
Definition: colour.hpp:395
static const colour SteelBlue4
Definition: colour.hpp:661
static const colour Chartreuse1
Definition: colour.hpp:89
static const colour Gray48
Definition: colour.hpp:239
static const colour Gray28
Definition: colour.hpp:217
static const colour PaleTurquoise
Definition: colour.hpp:561
static const colour Aquamarine
Definition: colour.hpp:49
static const colour Bisque2
Definition: colour.hpp:62
static const colour MediumOrchid3
Definition: colour.hpp:507
colour with_combined_alpha(component aNewValue) const
static const colour PeachPuff1
Definition: colour.hpp:573
static const colour Burlywood1
Definition: colour.hpp:79
static const colour Maroon3
Definition: colour.hpp:500
static const colour LavenderBlush1
Definition: colour.hpp:431
static const colour Peru
Definition: colour.hpp:577
static const colour Magenta2
Definition: colour.hpp:494
static const colour Grey46
Definition: colour.hpp:345
static const colour Gray
Definition: colour.hpp:194
static const colour Tomato1
Definition: colour.hpp:673
colour with_lightness(double aLightness) const
static const colour PaleVioletRed4
Definition: colour.hpp:570
static const colour ForestGreen
Definition: colour.hpp:181
basic_rect< coordinate > rect
static const colour Gray24
Definition: colour.hpp:213
colour & set_red(component aNewValue)
static const colour LightCyan2
Definition: colour.hpp:449
static const colour Black
Definition: colour.hpp:65
static const colour BlueViolet
Definition: colour.hpp:72
static const colour DarkOliveGreen
Definition: colour.hpp:126
static const colour LavenderBlush3
Definition: colour.hpp:433
static const colour PaleTurquoise4
Definition: colour.hpp:565
static const colour Gray78
Definition: colour.hpp:272
static const colour Red3
Definition: colour.hpp:597
basic_size< coordinate > size
static const colour CadetBlue1
Definition: colour.hpp:84
static const colour VioletRed
Definition: colour.hpp:683
static const colour Gray60
Definition: colour.hpp:253
static const colour PaleGreen2
Definition: colour.hpp:558
static const colour Ivory
Definition: colour.hpp:419
static const colour Grey34
Definition: colour.hpp:332
std::string to_hex_string() const
static const colour AliceBlue
Definition: colour.hpp:43
static const colour LightGoldenrod
Definition: colour.hpp:452
static const colour Salmon2
Definition: colour.hpp:612
static const colour Pink2
Definition: colour.hpp:580
static const colour Burlywood3
Definition: colour.hpp:81
static const colour Gray49
Definition: colour.hpp:240
static const colour Salmon1
Definition: colour.hpp:611
static const colour Gray9
Definition: colour.hpp:285
static const component MinComponetValue
Definition: colour.hpp:702
static const colour MistyRose1
Definition: colour.hpp:522
static const colour Thistle3
Definition: colour.hpp:670
static const colour Gray8
Definition: colour.hpp:274
static const colour LightYellow4
Definition: colour.hpp:489
static const colour Maroon2
Definition: colour.hpp:499
static const colour Bisque
Definition: colour.hpp:60
static const colour SpringGreen4
Definition: colour.hpp:656
static const colour LightCyan4
Definition: colour.hpp:451
static const colour RosyBrown1
Definition: colour.hpp:600
static const colour PaleGreen1
Definition: colour.hpp:557
static const colour Goldenrod1
Definition: colour.hpp:190
static const colour SteelBlue1
Definition: colour.hpp:658
static const colour Gray93
Definition: colour.hpp:289
static const colour Grey8
Definition: colour.hpp:382
static const colour Azure
Definition: colour.hpp:54
static const colour LightYellow
Definition: colour.hpp:485
static const colour SlateGray1
Definition: colour.hpp:642
static const colour Orange3
Definition: colour.hpp:543
static const colour Turquoise4
Definition: colour.hpp:681
static const colour Orchid1
Definition: colour.hpp:551
static const colour Violet
Definition: colour.hpp:682
static const colour Cyan4
Definition: colour.hpp:113
static const colour LightSalmon2
Definition: colour.hpp:468
static const colour Gray15
Definition: colour.hpp:203
static const colour LightSeaGreen
Definition: colour.hpp:471
static const colour Seashell3
Definition: colour.hpp:624
colour with_blue(component aNewValue) const
static const colour DeepSkyBlue1
Definition: colour.hpp:164
static const colour Grey63
Definition: colour.hpp:364
static const colour Gray75
Definition: colour.hpp:269
static const colour Ivory2
Definition: colour.hpp:421
static const colour LemonChiffon1
Definition: colour.hpp:437
static const colour LightPink3
Definition: colour.hpp:464
static const colour DarkOrange4
Definition: colour.hpp:135
static const colour DarkOrchid
Definition: colour.hpp:136
static const colour MediumBlue
Definition: colour.hpp:503
static const colour Grey74
Definition: colour.hpp:376
static const colour Brown
Definition: colour.hpp:73
static const colour Gold1
Definition: colour.hpp:185
colour mid(const colour &aOther) const
static const colour Grey58
Definition: colour.hpp:358
static const colour LightSkyBlue2
Definition: colour.hpp:474
static const colour Grey15
Definition: colour.hpp:311
static const colour Orange4
Definition: colour.hpp:544
std::vector< colour_stop > colour_stop_list
Definition: colour.hpp:836
component green() const
static const colour DarkOrchid2
Definition: colour.hpp:138
static const colour CadetBlue2
Definition: colour.hpp:85
static const colour Grey6
Definition: colour.hpp:360
double luma() const
std::pair< double, colour > colour_stop
Definition: colour.hpp:835
static const colour LightSlateGray
Definition: colour.hpp:478
static const colour Gray17
Definition: colour.hpp:205
static const colour Grey2
Definition: colour.hpp:316
static const colour DarkMagenta
Definition: colour.hpp:125
static const colour Grey36
Definition: colour.hpp:334
static const colour AntiqueWhite4
Definition: colour.hpp:48
static const colour MediumPurple1
Definition: colour.hpp:510
static const colour IndianRed4
Definition: colour.hpp:418
static const colour DeepSkyBlue2
Definition: colour.hpp:165
colour(T aRed, T aGreen, T aBlue, T aAlpha=static_cast< T >(0xFF), typename std::enable_if< std::is_integral< T >::value, void >::type *=nullptr)
Definition: colour.hpp:715
static const colour Grey75
Definition: colour.hpp:377
static const colour DarkRed
Definition: colour.hpp:141
static const colour LightPink1
Definition: colour.hpp:462
static const colour OliveDrab4
Definition: colour.hpp:539
static const colour LightGray
Definition: colour.hpp:458
static const colour Grey35
Definition: colour.hpp:333
static const colour Grey60
Definition: colour.hpp:361
static const colour LightSkyBlue3
Definition: colour.hpp:475
static const colour Gray96
Definition: colour.hpp:292
static const colour LightSalmon1
Definition: colour.hpp:467
static const colour LightGoldenrod4
Definition: colour.hpp:456
static const colour YellowGreen
Definition: colour.hpp:700
static const colour Firebrick3
Definition: colour.hpp:178
static const colour MediumPurple
Definition: colour.hpp:509
static const colour Khaki3
Definition: colour.hpp:427
static const colour Grey82
Definition: colour.hpp:385
static const colour DarkSlateBlue
Definition: colour.hpp:148
static const colour Gray46
Definition: colour.hpp:237
static const colour MediumOrchid4
Definition: colour.hpp:508
static const colour Orchid
Definition: colour.hpp:550
static const colour Snow2
Definition: colour.hpp:649
static const colour DimGray
Definition: colour.hpp:168
static const colour DarkOliveGreen3
Definition: colour.hpp:129
static const colour Grey19
Definition: colour.hpp:315
static const colour DarkOrange3
Definition: colour.hpp:134
static const colour Cyan1
Definition: colour.hpp:110
static const colour Gray53
Definition: colour.hpp:245
static const colour MediumPurple2
Definition: colour.hpp:511
static const colour Ivory3
Definition: colour.hpp:422
static const colour DodgerBlue
Definition: colour.hpp:170
static const colour LightSteelBlue4
Definition: colour.hpp:484
hsv_colour to_hsv() const
static const colour LightGreen
Definition: colour.hpp:459
static const colour Grey100
Definition: colour.hpp:306
boost::optional< gradient > optional_gradient
Definition: colour.hpp:926
static const colour BlanchedAlmond
Definition: colour.hpp:66
static const colour Gray12
Definition: colour.hpp:200
static const colour Grey93
Definition: colour.hpp:397
static const colour Yellow
Definition: colour.hpp:695
neolib::variant< colour, gradient > colour_or_gradient
Definition: colour.hpp:928
static const colour Gray42
Definition: colour.hpp:233
T alpha() const
Definition: colour.hpp:731
static const colour Grey64
Definition: colour.hpp:365
static const colour FloralWhite
Definition: colour.hpp:180
static const colour Grey92
Definition: colour.hpp:396
static const colour CadetBlue3
Definition: colour.hpp:86
colour & set_blue(component aNewValue)
static const colour OliveDrab2
Definition: colour.hpp:537
static const colour SeaGreen
Definition: colour.hpp:616
static const colour Pink
Definition: colour.hpp:578
static const colour Turquoise1
Definition: colour.hpp:678
uint32_t argb
Definition: colour.hpp:35
static const colour VioletRed2
Definition: colour.hpp:685
static const colour Gray55
Definition: colour.hpp:247
static const colour SeaGreen1
Definition: colour.hpp:617
static const colour Grey73
Definition: colour.hpp:375
static const colour Grey87
Definition: colour.hpp:390
static const colour LightCyan
Definition: colour.hpp:447
colour lighter(component aDelta) const
static const colour Grey52
Definition: colour.hpp:352
static const colour LemonChiffon4
Definition: colour.hpp:440
static const colour Gray39
Definition: colour.hpp:229
static const colour OrangeRed4
Definition: colour.hpp:549
static const colour LightCoral
Definition: colour.hpp:446
static const colour LightSalmon
Definition: colour.hpp:466
static const colour Gray22
Definition: colour.hpp:211
static const colour LimeGreen
Definition: colour.hpp:490
static const colour Gray83
Definition: colour.hpp:278
static const colour Coral2
Definition: colour.hpp:100
static const colour NavajoWhite2
Definition: colour.hpp:529
static const colour SlateGray4
Definition: colour.hpp:645
static const colour Lavender
Definition: colour.hpp:429
static const colour Grey37
Definition: colour.hpp:335
static const colour Coral4
Definition: colour.hpp:102
static const colour Coral1
Definition: colour.hpp:99
static const colour PowderBlue
Definition: colour.hpp:588
static const colour Orchid4
Definition: colour.hpp:554
static const colour Azure2
Definition: colour.hpp:56
static const colour Grey16
Definition: colour.hpp:312
static const colour PeachPuff4
Definition: colour.hpp:576
static const colour Salmon3
Definition: colour.hpp:613
bool light(double aThreshold=0.50) const
static const colour Grey9
Definition: colour.hpp:393
static const colour MistyRose4
Definition: colour.hpp:525
static const colour Brown1
Definition: colour.hpp:74
static const colour NavajoWhite
Definition: colour.hpp:527
static const colour DeepSkyBlue3
Definition: colour.hpp:166
static const colour Gray91
Definition: colour.hpp:287
static const colour DeepPink4
Definition: colour.hpp:162
static const colour NavajoWhite1
Definition: colour.hpp:528
static const colour Grey18
Definition: colour.hpp:314
static const colour Grey78
Definition: colour.hpp:380
static const colour Grey47
Definition: colour.hpp:346
colour darker(component aDelta) const
static const colour Gray73
Definition: colour.hpp:267
static colour from_hsl(double aHue, double aSaturation, double aLightness, double aAlpha=1.0)
static const colour Grey41
Definition: colour.hpp:340
static const colour Ivory4
Definition: colour.hpp:423
static const colour Gray72
Definition: colour.hpp:266
static const colour DodgerBlue2
Definition: colour.hpp:172
static const colour Thistle2
Definition: colour.hpp:669
static const colour Wheat1
Definition: colour.hpp:689
colour inverse() const
static const colour SlateBlue1
Definition: colour.hpp:637
static const colour Seashell4
Definition: colour.hpp:625
static const colour Goldenrod3
Definition: colour.hpp:192
static const colour Azure4
Definition: colour.hpp:58
colour shade(component aDelta) const
static const colour SeaGreen4
Definition: colour.hpp:620
static const colour Grey7
Definition: colour.hpp:371
static const colour Gray25
Definition: colour.hpp:214
static const colour PaleVioletRed3
Definition: colour.hpp:569
static const colour Gray14
Definition: colour.hpp:202
static const colour Bisque4
Definition: colour.hpp:64
static const colour Cornsilk
Definition: colour.hpp:104
static const colour Grey80
Definition: colour.hpp:383
static const colour Gray23
Definition: colour.hpp:212
static const colour HotPink1
Definition: colour.hpp:410
static const colour MediumVioletRed
Definition: colour.hpp:518
static const colour Grey88
Definition: colour.hpp:391
static const colour VioletRed1
Definition: colour.hpp:684
static const colour OliveDrab
Definition: colour.hpp:535
uint8_t component
Definition: colour.hpp:36
static const colour Cornsilk4
Definition: colour.hpp:108
static const colour Chocolate1
Definition: colour.hpp:94
static const colour SkyBlue2
Definition: colour.hpp:633
static const colour Gray76
Definition: colour.hpp:270
static const colour Honeydew1
Definition: colour.hpp:405
static const colour LightGoldenrod3
Definition: colour.hpp:455
static const colour Beige
Definition: colour.hpp:59
static const colour Gray29
Definition: colour.hpp:218
static const colour LightGoldenrod2
Definition: colour.hpp:454
static const colour Gray47
Definition: colour.hpp:238
std::vector< alpha_stop > alpha_stop_list
Definition: colour.hpp:838
static const colour Grey10
Definition: colour.hpp:305
static const colour Grey71
Definition: colour.hpp:373
static const colour Gray66
Definition: colour.hpp:259
static const colour LightSlateGrey
Definition: colour.hpp:479
static const colour RosyBrown4
Definition: colour.hpp:603
static const colour DarkSeaGreen3
Definition: colour.hpp:146
static const colour DarkGoldenrod4
Definition: colour.hpp:120
T green() const
Definition: colour.hpp:735
static const colour Cornsilk1
Definition: colour.hpp:105
static const colour Chocolate2
Definition: colour.hpp:95
static const colour DarkSlateGray2
Definition: colour.hpp:151
static const colour OrangeRed3
Definition: colour.hpp:548
static const colour Grey20
Definition: colour.hpp:317
static const colour SlateBlue3
Definition: colour.hpp:639
static const colour Yellow3
Definition: colour.hpp:698
static const colour Orchid2
Definition: colour.hpp:552
static const colour Gray27
Definition: colour.hpp:216
static const colour Tomato4
Definition: colour.hpp:676
static const colour LightSkyBlue4
Definition: colour.hpp:476
static const colour Thistle4
Definition: colour.hpp:671
static const colour Gray74
Definition: colour.hpp:268
static const colour Grey45
Definition: colour.hpp:344
static const colour Gray26
Definition: colour.hpp:215
static const colour Green4
Definition: colour.hpp:300
static const colour MediumTurquoise
Definition: colour.hpp:517
static const colour Grey44
Definition: colour.hpp:343
static const colour PaleTurquoise1
Definition: colour.hpp:562
static const colour Gray100
Definition: colour.hpp:198
static const colour DarkBlue
Definition: colour.hpp:114
static const colour DeepPink3
Definition: colour.hpp:161
static const colour Grey84
Definition: colour.hpp:387
static const colour Gray67
Definition: colour.hpp:260
static const colour DarkGoldenrod2
Definition: colour.hpp:118
static const colour Pink1
Definition: colour.hpp:579
static const colour DodgerBlue3
Definition: colour.hpp:173
static const colour Grey0
Definition: colour.hpp:303
static const colour Tan
Definition: colour.hpp:662
static const colour Aquamarine1
Definition: colour.hpp:50
static const colour MistyRose2
Definition: colour.hpp:523
static const colour Plum3
Definition: colour.hpp:586
static const colour Gray16
Definition: colour.hpp:204
static const colour Blue3
Definition: colour.hpp:70
static const colour VioletRed4
Definition: colour.hpp:687
static const colour MediumOrchid2
Definition: colour.hpp:506
static const colour Gold4
Definition: colour.hpp:188
static const colour Sienna2
Definition: colour.hpp:628
static const colour DarkSeaGreen
Definition: colour.hpp:143
static const colour CadetBlue4
Definition: colour.hpp:87
static const colour AntiqueWhite2
Definition: colour.hpp:46
static const colour AntiqueWhite
Definition: colour.hpp:44
static const component MaxComponetValue
Definition: colour.hpp:703
static const colour DarkOrange2
Definition: colour.hpp:133
static const colour Red2
Definition: colour.hpp:596
static const colour Grey12
Definition: colour.hpp:308
std::string string
Definition: glyph.hpp:31
static const colour Turquoise2
Definition: colour.hpp:679
static const colour SpringGreen1
Definition: colour.hpp:653
static const colour Grey31
Definition: colour.hpp:329
static const colour CadetBlue
Definition: colour.hpp:83
static const colour PaleGreen4
Definition: colour.hpp:560
static const colour Orange2
Definition: colour.hpp:542
static const colour DarkOrchid4
Definition: colour.hpp:140
static const colour Snow
Definition: colour.hpp:647
static const colour PaleGreen
Definition: colour.hpp:556
static const colour HotPink
Definition: colour.hpp:409
static const colour Gray87
Definition: colour.hpp:282
static const colour Grey81
Definition: colour.hpp:384
static const colour PaleTurquoise3
Definition: colour.hpp:564
static const colour LawnGreen
Definition: colour.hpp:435
static const colour LightSteelBlue2
Definition: colour.hpp:482
static const colour Grey29
Definition: colour.hpp:326
static const colour DarkSeaGreen4
Definition: colour.hpp:147
static const colour Gray56
Definition: colour.hpp:248
static const colour Grey32
Definition: colour.hpp:330
static const colour Gray40
Definition: colour.hpp:231
static const colour Gray4
Definition: colour.hpp:230
static const colour Chartreuse3
Definition: colour.hpp:91
static const colour Gray1
Definition: colour.hpp:196
static const colour Firebrick4
Definition: colour.hpp:179
static const colour RoyalBlue1
Definition: colour.hpp:605
static const colour Grey43
Definition: colour.hpp:342
static const colour RosyBrown3
Definition: colour.hpp:602
static const colour Gray51
Definition: colour.hpp:243
static const colour Gray32
Definition: colour.hpp:222
static const colour Chartreuse2
Definition: colour.hpp:90
static const colour Gray64
Definition: colour.hpp:257
static const colour Grey27
Definition: colour.hpp:324
colour operator~() const
static const colour Magenta4
Definition: colour.hpp:496
static const colour DarkGoldenrod1
Definition: colour.hpp:117
static const colour LemonChiffon3
Definition: colour.hpp:439
static const colour Navy
Definition: colour.hpp:532
static const colour Grey39
Definition: colour.hpp:337
static const colour LightBlue4
Definition: colour.hpp:445
static const colour Chocolate3
Definition: colour.hpp:96
colour & darken(component aDelta)
static const colour Turquoise3
Definition: colour.hpp:680
static const colour PeachPuff3
Definition: colour.hpp:575
static const colour OrangeRed
Definition: colour.hpp:545
static const colour Blue4
Definition: colour.hpp:71
neolib::variant< corner_e, double > orientation_type
Definition: colour.hpp:822
static const colour PaleGoldenrod
Definition: colour.hpp:555
static const colour Cornsilk3
Definition: colour.hpp:107
static const colour Grey5
Definition: colour.hpp:349
static const colour Firebrick2
Definition: colour.hpp:177
static const colour LightSkyBlue
Definition: colour.hpp:472
static const colour SlateBlue4
Definition: colour.hpp:640
static const colour Salmon4
Definition: colour.hpp:614
static const colour DeepPink2
Definition: colour.hpp:160
static const colour Tan2
Definition: colour.hpp:664
boost::optional< colour > optional_colour
Definition: colour.hpp:925
static const colour Maroon4
Definition: colour.hpp:501
static const colour Gray82
Definition: colour.hpp:277
static const colour Grey53
Definition: colour.hpp:353
bool operator!=(const colour &aOther) const
static const colour Grey57
Definition: colour.hpp:357
static const colour DarkOrange1
Definition: colour.hpp:132
static const colour Purple4
Definition: colour.hpp:593
static const colour Honeydew2
Definition: colour.hpp:406
static const colour Grey28
Definition: colour.hpp:325
static const colour LightSteelBlue3
Definition: colour.hpp:483
bool similar_intensity(const colour &aOther, double aThreshold=0.5)
static const colour Magenta
Definition: colour.hpp:492
static const colour RoyalBlue3
Definition: colour.hpp:607
static const colour MediumPurple4
Definition: colour.hpp:513
static const colour OldLace
Definition: colour.hpp:534
static const colour Grey40
Definition: colour.hpp:339
static const colour Coral3
Definition: colour.hpp:101
static const colour Honeydew3
Definition: colour.hpp:407
static const colour LightBlue
Definition: colour.hpp:441
static const colour WhiteSmoke
Definition: colour.hpp:694
static const colour Gray21
Definition: colour.hpp:210
static const colour Purple1
Definition: colour.hpp:590
static const colour Grey
Definition: colour.hpp:302
static const colour SeaGreen2
Definition: colour.hpp:618
static const colour LightBlue2
Definition: colour.hpp:443
static const colour MediumSeaGreen
Definition: colour.hpp:514
static const colour Firebrick
Definition: colour.hpp:175
static const colour DarkViolet
Definition: colour.hpp:156
static const colour Pink4
Definition: colour.hpp:582
static const colour SandyBrown
Definition: colour.hpp:615
static const colour Green
Definition: colour.hpp:296
static const colour LightBlue3
Definition: colour.hpp:444
static const colour NavajoWhite3
Definition: colour.hpp:530
static const colour Ivory1
Definition: colour.hpp:420
static const colour Grey4
Definition: colour.hpp:338
colour operator-(const colour &aLeft, colour::component aRight)
Definition: colour.hpp:784
static const colour Grey56
Definition: colour.hpp:356
static const colour Brown3
Definition: colour.hpp:76
static const colour Snow3
Definition: colour.hpp:650
static const colour DeepSkyBlue4
Definition: colour.hpp:167
static const colour Purple2
Definition: colour.hpp:591
static const colour Purple
Definition: colour.hpp:589
static const colour Grey24
Definition: colour.hpp:321
static const colour MidnightBlue
Definition: colour.hpp:519
static const colour Grey62
Definition: colour.hpp:363
static const colour White
Definition: colour.hpp:693
static const colour MintCream
Definition: colour.hpp:520
component red() const
static const colour RoyalBlue2
Definition: colour.hpp:606
static const colour DarkSlateGrey
Definition: colour.hpp:154
static const colour Plum4
Definition: colour.hpp:587
component blue() const
static const colour Wheat2
Definition: colour.hpp:690
static const colour Grey3
Definition: colour.hpp:327
colour with_alpha(component aNewValue) const
static const colour Coral
Definition: colour.hpp:98
static const colour Grey85
Definition: colour.hpp:388
static const colour LightSlateBlue
Definition: colour.hpp:477
static const colour Gray54
Definition: colour.hpp:246
static const colour OliveDrab1
Definition: colour.hpp:536
static const colour Green1
Definition: colour.hpp:297
static const colour Gray6
Definition: colour.hpp:252
static const colour IndianRed
Definition: colour.hpp:414
static const colour Chocolate4
Definition: colour.hpp:97
static const colour Plum
Definition: colour.hpp:583
static const colour Khaki2
Definition: colour.hpp:426
static const colour Goldenrod
Definition: colour.hpp:189
static const colour RoyalBlue4
Definition: colour.hpp:608
static const colour Gray11
Definition: colour.hpp:199
static const colour SkyBlue4
Definition: colour.hpp:635
static const colour Grey42
Definition: colour.hpp:341
static const colour PaleVioletRed
Definition: colour.hpp:566
static const colour LavenderBlush2
Definition: colour.hpp:432
static const colour Grey17
Definition: colour.hpp:313
static const colour Sienna3
Definition: colour.hpp:629
static const colour Seashell1
Definition: colour.hpp:622
static const colour Tan3
Definition: colour.hpp:665
static const colour Gray92
Definition: colour.hpp:288
static const colour DarkKhaki
Definition: colour.hpp:124
static const colour HotPink3
Definition: colour.hpp:412
static const colour Firebrick1
Definition: colour.hpp:176
static const colour MediumAquamarine
Definition: colour.hpp:502
static const colour IndianRed3
Definition: colour.hpp:417
static const colour Grey65
Definition: colour.hpp:366
static const colour Gray89
Definition: colour.hpp:284
static const colour MediumSlateBlue
Definition: colour.hpp:515
bool operator<(const colour &aOther) const
static const colour Grey89
Definition: colour.hpp:392
static colour from_hsv(double aHue, double aSaturation, double aValue, double aAlpha=1.0)
static const colour Gray2
Definition: colour.hpp:208
static const colour LightYellow1
Definition: colour.hpp:486
colour & set_alpha(component aNewValue)
static const colour Bisque1
Definition: colour.hpp:61
static const colour Gray45
Definition: colour.hpp:236
static const colour DarkSeaGreen2
Definition: colour.hpp:145
static const colour NavyBlue
Definition: colour.hpp:533
static const colour Gold2
Definition: colour.hpp:186
static const colour Grey72
Definition: colour.hpp:374
static const colour Brown2
Definition: colour.hpp:75
static const colour Chartreuse4
Definition: colour.hpp:92
static const colour LightSkyBlue1
Definition: colour.hpp:473
static const colour MistyRose
Definition: colour.hpp:521
static const colour Grey59
Definition: colour.hpp:359
static const colour Gray65
Definition: colour.hpp:258
static const colour DarkGoldenrod
Definition: colour.hpp:116
static const colour Linen
Definition: colour.hpp:491
static const colour DarkGreen
Definition: colour.hpp:122
static const colour MistyRose3
Definition: colour.hpp:524
bool dark(double aThreshold=0.50) const
static const colour DeepPink
Definition: colour.hpp:158
static const colour LightYellow2
Definition: colour.hpp:487
static const colour Plum2
Definition: colour.hpp:585
argb value() const
static const colour Tomato
Definition: colour.hpp:672
static const colour LightSalmon4
Definition: colour.hpp:470
static const colour Gray90
Definition: colour.hpp:286
static const colour PaleVioletRed2
Definition: colour.hpp:568
static const colour DarkSlateGray4
Definition: colour.hpp:153
static const colour Snow1
Definition: colour.hpp:648
static const colour Honeydew
Definition: colour.hpp:404
static const colour PaleGreen3
Definition: colour.hpp:559
static const colour Gray41
Definition: colour.hpp:232
static const colour PeachPuff2
Definition: colour.hpp:574
static const colour Tomato3
Definition: colour.hpp:675
static const colour Yellow1
Definition: colour.hpp:696