1 /********************************************************************************
2 * *
3 * C o l o r N a m e F u n c t i o n s *
4 * *
5 *********************************************************************************
6 * Copyright (C) 1997,2020 by Jeroen van der Zijp. All Rights Reserved. *
7 *********************************************************************************
8 * This library is free software; you can redistribute it and/or modify *
9 * it under the terms of the GNU Lesser General Public License as published by *
10 * the Free Software Foundation; either version 3 of the License, or *
11 * (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16 * GNU Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public License *
19 * along with this program. If not, see <http://www.gnu.org/licenses/> *
20 ********************************************************************************/
21 #include "xincs.h"
22 #include "fxver.h"
23 #include "fxdefs.h"
24 #include "fxmath.h"
25 #include "fxkeys.h"
26 #include "fxascii.h"
27 #include "FXArray.h"
28 #include "FXHash.h"
29 #include "FXStream.h"
30 #include "FXString.h"
31 #include "FXColors.h"
32
33 /*
34 Notes:
35
36 - Color constants inside FXColors namespace so as to avoid potential name clashes
37 in application code.
38 - Added color name to FXString and vice versa. Is more convenient.
39 - API of nameFromColor() is not safe; would prefer to pass size parameter.
40 - The old color named "None" was renamed to "Clear". X11 defines a preprocessor
41 constant called None and namespaces can't protect against #defines [one more
42 reason we like C++].
43 - At some point, we would like faster color -> name mapping [name -> color is
44 OK, its a binary search].
45 */
46
47 #define MAXCOLORNAME 24
48
49
50 using namespace FX;
51
52 /*******************************************************************************/
53
54 namespace FX {
55
56 // Names of commonly used colors
57 const FXchar *const colorName[683]={
58 "AliceBlue",
59 "AntiqueWhite",
60 "AntiqueWhite1",
61 "AntiqueWhite2",
62 "AntiqueWhite3",
63 "AntiqueWhite4",
64 "Aqua",
65 "Aquamarine",
66 "Aquamarine1",
67 "Aquamarine2",
68 "Aquamarine3",
69 "Aquamarine4",
70 "Azure",
71 "Azure1",
72 "Azure2",
73 "Azure3",
74 "Azure4",
75 "Banana",
76 "Beige",
77 "Bisque",
78 "Bisque1",
79 "Bisque2",
80 "Bisque3",
81 "Bisque4",
82 "Black",
83 "BlanchedAlmond",
84 "Blue",
85 "Blue1",
86 "Blue2",
87 "Blue3",
88 "Blue4",
89 "BlueViolet",
90 "Brick",
91 "Brown",
92 "Brown1",
93 "Brown2",
94 "Brown3",
95 "Brown4",
96 "Burlywood",
97 "Burlywood1",
98 "Burlywood2",
99 "Burlywood3",
100 "Burlywood4",
101 "BurnedSienna",
102 "BurnedUmber",
103 "CadetBlue",
104 "CadetBlue1",
105 "CadetBlue2",
106 "CadetBlue3",
107 "CadetBlue4",
108 "CadmiumOrange",
109 "CadmiumRed",
110 "CadmiumYellow",
111 "Carrot",
112 "Chartreuse",
113 "Chartreuse1",
114 "Chartreuse2",
115 "Chartreuse3",
116 "Chartreuse4",
117 "Chocolate",
118 "Chocolate1",
119 "Chocolate2",
120 "Chocolate3",
121 "Chocolate4",
122 "Cobalt",
123 "CobaltGreen",
124 "ColdGrey",
125 "Coral",
126 "Coral1",
127 "Coral2",
128 "Coral3",
129 "Coral4",
130 "CornflowerBlue",
131 "Cornsilk",
132 "Cornsilk1",
133 "Cornsilk2",
134 "Cornsilk3",
135 "Cornsilk4",
136 "Crimson",
137 "Cyan",
138 "Cyan1",
139 "Cyan2",
140 "Cyan3",
141 "Cyan4",
142 "DarkBlue",
143 "DarkCyan",
144 "DarkGoldenrod",
145 "DarkGoldenrod1",
146 "DarkGoldenrod2",
147 "DarkGoldenrod3",
148 "DarkGoldenrod4",
149 "DarkGray",
150 "DarkGreen",
151 "DarkGrey",
152 "DarkKhaki",
153 "DarkMagenta",
154 "DarkOliveGreen",
155 "DarkOliveGreen1",
156 "DarkOliveGreen2",
157 "DarkOliveGreen3",
158 "DarkOliveGreen4",
159 "DarkOrange",
160 "DarkOrange1",
161 "DarkOrange2",
162 "DarkOrange3",
163 "DarkOrange4",
164 "DarkOrchid",
165 "DarkOrchid1",
166 "DarkOrchid2",
167 "DarkOrchid3",
168 "DarkOrchid4",
169 "DarkRed",
170 "DarkSalmon",
171 "DarkSeaGreen",
172 "DarkSeaGreen1",
173 "DarkSeaGreen2",
174 "DarkSeaGreen3",
175 "DarkSeaGreen4",
176 "DarkSlateBlue",
177 "DarkSlateGray",
178 "DarkSlateGray1",
179 "DarkSlateGray2",
180 "DarkSlateGray3",
181 "DarkSlateGray4",
182 "DarkSlateGrey",
183 "DarkTurquoise",
184 "DarkViolet",
185 "DeepPink",
186 "DeepPink1",
187 "DeepPink2",
188 "DeepPink3",
189 "DeepPink4",
190 "DeepSkyBlue",
191 "DeepSkyBlue1",
192 "DeepSkyBlue2",
193 "DeepSkyBlue3",
194 "DeepSkyBlue4",
195 "DimGray",
196 "DimGrey",
197 "DodgerBlue",
198 "DodgerBlue1",
199 "DodgerBlue2",
200 "DodgerBlue3",
201 "DodgerBlue4",
202 "Eggshell",
203 "EmeraldGreen",
204 "Firebrick",
205 "Firebrick1",
206 "Firebrick2",
207 "Firebrick3",
208 "Firebrick4",
209 "FloralWhite",
210 "ForestGreen",
211 "Fuchsia",
212 "Gainsboro",
213 "GhostWhite",
214 "Gold",
215 "Gold1",
216 "Gold2",
217 "Gold3",
218 "Gold4",
219 "Goldenrod",
220 "Goldenrod1",
221 "Goldenrod2",
222 "Goldenrod3",
223 "Goldenrod4",
224 "Gray",
225 "Gray0",
226 "Gray1",
227 "Gray10",
228 "Gray100",
229 "Gray11",
230 "Gray12",
231 "Gray13",
232 "Gray14",
233 "Gray15",
234 "Gray16",
235 "Gray17",
236 "Gray18",
237 "Gray19",
238 "Gray2",
239 "Gray20",
240 "Gray21",
241 "Gray22",
242 "Gray23",
243 "Gray24",
244 "Gray25",
245 "Gray26",
246 "Gray27",
247 "Gray28",
248 "Gray29",
249 "Gray3",
250 "Gray30",
251 "Gray31",
252 "Gray32",
253 "Gray33",
254 "Gray34",
255 "Gray35",
256 "Gray36",
257 "Gray37",
258 "Gray38",
259 "Gray39",
260 "Gray4",
261 "Gray40",
262 "Gray41",
263 "Gray42",
264 "Gray43",
265 "Gray44",
266 "Gray45",
267 "Gray46",
268 "Gray47",
269 "Gray48",
270 "Gray49",
271 "Gray5",
272 "Gray50",
273 "Gray51",
274 "Gray52",
275 "Gray53",
276 "Gray54",
277 "Gray55",
278 "Gray56",
279 "Gray57",
280 "Gray58",
281 "Gray59",
282 "Gray6",
283 "Gray60",
284 "Gray61",
285 "Gray62",
286 "Gray63",
287 "Gray64",
288 "Gray65",
289 "Gray66",
290 "Gray67",
291 "Gray68",
292 "Gray69",
293 "Gray7",
294 "Gray70",
295 "Gray71",
296 "Gray72",
297 "Gray73",
298 "Gray74",
299 "Gray75",
300 "Gray76",
301 "Gray77",
302 "Gray78",
303 "Gray79",
304 "Gray8",
305 "Gray80",
306 "Gray81",
307 "Gray82",
308 "Gray83",
309 "Gray84",
310 "Gray85",
311 "Gray86",
312 "Gray87",
313 "Gray88",
314 "Gray89",
315 "Gray9",
316 "Gray90",
317 "Gray91",
318 "Gray92",
319 "Gray93",
320 "Gray94",
321 "Gray95",
322 "Gray96",
323 "Gray97",
324 "Gray98",
325 "Gray99",
326 "Green",
327 "Green1",
328 "Green2",
329 "Green3",
330 "Green4",
331 "GreenYellow",
332 "Grey",
333 "Grey0",
334 "Grey1",
335 "Grey10",
336 "Grey100",
337 "Grey11",
338 "Grey12",
339 "Grey13",
340 "Grey14",
341 "Grey15",
342 "Grey16",
343 "Grey17",
344 "Grey18",
345 "Grey19",
346 "Grey2",
347 "Grey20",
348 "Grey21",
349 "Grey22",
350 "Grey23",
351 "Grey24",
352 "Grey25",
353 "Grey26",
354 "Grey27",
355 "Grey28",
356 "Grey29",
357 "Grey3",
358 "Grey30",
359 "Grey31",
360 "Grey32",
361 "Grey33",
362 "Grey34",
363 "Grey35",
364 "Grey36",
365 "Grey37",
366 "Grey38",
367 "Grey39",
368 "Grey4",
369 "Grey40",
370 "Grey41",
371 "Grey42",
372 "Grey43",
373 "Grey44",
374 "Grey45",
375 "Grey46",
376 "Grey47",
377 "Grey48",
378 "Grey49",
379 "Grey5",
380 "Grey50",
381 "Grey51",
382 "Grey52",
383 "Grey53",
384 "Grey54",
385 "Grey55",
386 "Grey56",
387 "Grey57",
388 "Grey58",
389 "Grey59",
390 "Grey6",
391 "Grey60",
392 "Grey61",
393 "Grey62",
394 "Grey63",
395 "Grey64",
396 "Grey65",
397 "Grey66",
398 "Grey67",
399 "Grey68",
400 "Grey69",
401 "Grey7",
402 "Grey70",
403 "Grey71",
404 "Grey72",
405 "Grey73",
406 "Grey74",
407 "Grey75",
408 "Grey76",
409 "Grey77",
410 "Grey78",
411 "Grey79",
412 "Grey8",
413 "Grey80",
414 "Grey81",
415 "Grey82",
416 "Grey83",
417 "Grey84",
418 "Grey85",
419 "Grey86",
420 "Grey87",
421 "Grey88",
422 "Grey89",
423 "Grey9",
424 "Grey90",
425 "Grey91",
426 "Grey92",
427 "Grey93",
428 "Grey94",
429 "Grey95",
430 "Grey96",
431 "Grey97",
432 "Grey98",
433 "Grey99",
434 "Honeydew",
435 "Honeydew1",
436 "Honeydew2",
437 "Honeydew3",
438 "Honeydew4",
439 "HotPink",
440 "HotPink1",
441 "HotPink2",
442 "HotPink3",
443 "HotPink4",
444 "IndianRed",
445 "IndianRed1",
446 "IndianRed2",
447 "IndianRed3",
448 "IndianRed4",
449 "Indigo",
450 "Ivory",
451 "Ivory1",
452 "Ivory2",
453 "Ivory3",
454 "Ivory4",
455 "Khaki",
456 "Khaki1",
457 "Khaki2",
458 "Khaki3",
459 "Khaki4",
460 "Lavender",
461 "LavenderBlush",
462 "LavenderBlush1",
463 "LavenderBlush2",
464 "LavenderBlush3",
465 "LavenderBlush4",
466 "LawnGreen",
467 "LemonChiffon",
468 "LemonChiffon1",
469 "LemonChiffon2",
470 "LemonChiffon3",
471 "LemonChiffon4",
472 "LightBlue",
473 "LightBlue1",
474 "LightBlue2",
475 "LightBlue3",
476 "LightBlue4",
477 "LightCoral",
478 "LightCyan",
479 "LightCyan1",
480 "LightCyan2",
481 "LightCyan3",
482 "LightCyan4",
483 "LightGoldenrod",
484 "LightGoldenrod1",
485 "LightGoldenrod2",
486 "LightGoldenrod3",
487 "LightGoldenrod4",
488 "LightGoldenrodYellow",
489 "LightGray",
490 "LightGreen",
491 "LightGrey",
492 "LightPink",
493 "LightPink1",
494 "LightPink2",
495 "LightPink3",
496 "LightPink4",
497 "LightSalmon",
498 "LightSalmon1",
499 "LightSalmon2",
500 "LightSalmon3",
501 "LightSalmon4",
502 "LightSeaGreen",
503 "LightSkyBlue",
504 "LightSkyBlue1",
505 "LightSkyBlue2",
506 "LightSkyBlue3",
507 "LightSkyBlue4",
508 "LightSlateBlue",
509 "LightSlateGray",
510 "LightSlateGrey",
511 "LightSteelBlue",
512 "LightSteelBlue1",
513 "LightSteelBlue2",
514 "LightSteelBlue3",
515 "LightSteelBlue4",
516 "LightYellow",
517 "LightYellow1",
518 "LightYellow2",
519 "LightYellow3",
520 "LightYellow4",
521 "Lime",
522 "LimeGreen",
523 "Linen",
524 "Magenta",
525 "Magenta1",
526 "Magenta2",
527 "Magenta3",
528 "Magenta4",
529 "Maroon",
530 "Maroon1",
531 "Maroon2",
532 "Maroon3",
533 "Maroon4",
534 "MediumAquamarine",
535 "MediumBlue",
536 "MediumOrchid",
537 "MediumOrchid1",
538 "MediumOrchid2",
539 "MediumOrchid3",
540 "MediumOrchid4",
541 "MediumPurple",
542 "MediumPurple1",
543 "MediumPurple2",
544 "MediumPurple3",
545 "MediumPurple4",
546 "MediumSeaGreen",
547 "MediumSlateBlue",
548 "MediumSpringGreen",
549 "MediumTurquoise",
550 "MediumVioletRed",
551 "MidnightBlue",
552 "MintCream",
553 "MistyRose",
554 "MistyRose1",
555 "MistyRose2",
556 "MistyRose3",
557 "MistyRose4",
558 "Moccasin",
559 "NavajoWhite",
560 "NavajoWhite1",
561 "NavajoWhite2",
562 "NavajoWhite3",
563 "NavajoWhite4",
564 "Navy",
565 "NavyBlue",
566 "None",
567 "OldLace",
568 "Olive",
569 "OliveDrab",
570 "OliveDrab1",
571 "OliveDrab2",
572 "OliveDrab3",
573 "OliveDrab4",
574 "Orange",
575 "Orange1",
576 "Orange2",
577 "Orange3",
578 "Orange4",
579 "OrangeRed",
580 "OrangeRed1",
581 "OrangeRed2",
582 "OrangeRed3",
583 "OrangeRed4",
584 "Orchid",
585 "Orchid1",
586 "Orchid2",
587 "Orchid3",
588 "Orchid4",
589 "PaleGoldenrod",
590 "PaleGreen",
591 "PaleGreen1",
592 "PaleGreen2",
593 "PaleGreen3",
594 "PaleGreen4",
595 "PaleTurquoise",
596 "PaleTurquoise1",
597 "PaleTurquoise2",
598 "PaleTurquoise3",
599 "PaleTurquoise4",
600 "PaleVioletRed",
601 "PaleVioletRed1",
602 "PaleVioletRed2",
603 "PaleVioletRed3",
604 "PaleVioletRed4",
605 "PapayaWhip",
606 "PeachPuff",
607 "PeachPuff1",
608 "PeachPuff2",
609 "PeachPuff3",
610 "PeachPuff4",
611 "Peru",
612 "Pink",
613 "Pink1",
614 "Pink2",
615 "Pink3",
616 "Pink4",
617 "Plum",
618 "Plum1",
619 "Plum2",
620 "Plum3",
621 "Plum4",
622 "PowderBlue",
623 "Purple",
624 "Purple1",
625 "Purple2",
626 "Purple3",
627 "Purple4",
628 "Raspberry",
629 "Red",
630 "Red1",
631 "Red2",
632 "Red3",
633 "Red4",
634 "RosyBrown",
635 "RosyBrown1",
636 "RosyBrown2",
637 "RosyBrown3",
638 "RosyBrown4",
639 "RoyalBlue",
640 "RoyalBlue1",
641 "RoyalBlue2",
642 "RoyalBlue3",
643 "RoyalBlue4",
644 "SaddleBrown",
645 "Salmon",
646 "Salmon1",
647 "Salmon2",
648 "Salmon3",
649 "Salmon4",
650 "SandyBrown",
651 "SeaGreen",
652 "SeaGreen1",
653 "SeaGreen2",
654 "SeaGreen3",
655 "SeaGreen4",
656 "Seashell",
657 "Seashell1",
658 "Seashell2",
659 "Seashell3",
660 "Seashell4",
661 "Sepia",
662 "Sienna",
663 "Sienna1",
664 "Sienna2",
665 "Sienna3",
666 "Sienna4",
667 "Silver",
668 "SkyBlue",
669 "SkyBlue1",
670 "SkyBlue2",
671 "SkyBlue3",
672 "SkyBlue4",
673 "SlateBlue",
674 "SlateBlue1",
675 "SlateBlue2",
676 "SlateBlue3",
677 "SlateBlue4",
678 "SlateGray",
679 "SlateGray1",
680 "SlateGray2",
681 "SlateGray3",
682 "SlateGray4",
683 "SlateGrey",
684 "Snow",
685 "Snow1",
686 "Snow2",
687 "Snow3",
688 "Snow4",
689 "SpringGreen",
690 "SpringGreen1",
691 "SpringGreen2",
692 "SpringGreen3",
693 "SpringGreen4",
694 "SteelBlue",
695 "SteelBlue1",
696 "SteelBlue2",
697 "SteelBlue3",
698 "SteelBlue4",
699 "Tan",
700 "Tan1",
701 "Tan2",
702 "Tan3",
703 "Tan4",
704 "Teal",
705 "Thistle",
706 "Thistle1",
707 "Thistle2",
708 "Thistle3",
709 "Thistle4",
710 "Tomato",
711 "Tomato1",
712 "Tomato2",
713 "Tomato3",
714 "Tomato4",
715 "Turquoise",
716 "Turquoise1",
717 "Turquoise2",
718 "Turquoise3",
719 "Turquoise4",
720 "Ultramarine",
721 "Violet",
722 "VioletRed",
723 "VioletRed1",
724 "VioletRed2",
725 "VioletRed3",
726 "VioletRed4",
727 "WarmGrey",
728 "Wheat",
729 "Wheat1",
730 "Wheat2",
731 "Wheat3",
732 "Wheat4",
733 "White",
734 "WhiteSmoke",
735 "Yellow",
736 "Yellow1",
737 "Yellow2",
738 "Yellow3",
739 "Yellow4",
740 "YellowGreen",
741 };
742
743
744 // Values of corresponding colors
745 const FXColor colorValue[683]={
746 FXColors::AliceBlue,
747 FXColors::AntiqueWhite,
748 FXColors::AntiqueWhite1,
749 FXColors::AntiqueWhite2,
750 FXColors::AntiqueWhite3,
751 FXColors::AntiqueWhite4,
752 FXColors::Aqua,
753 FXColors::Aquamarine,
754 FXColors::Aquamarine1,
755 FXColors::Aquamarine2,
756 FXColors::Aquamarine3,
757 FXColors::Aquamarine4,
758 FXColors::Azure,
759 FXColors::Azure1,
760 FXColors::Azure2,
761 FXColors::Azure3,
762 FXColors::Azure4,
763 FXColors::Banana,
764 FXColors::Beige,
765 FXColors::Bisque,
766 FXColors::Bisque1,
767 FXColors::Bisque2,
768 FXColors::Bisque3,
769 FXColors::Bisque4,
770 FXColors::Black,
771 FXColors::BlanchedAlmond,
772 FXColors::Blue,
773 FXColors::Blue1,
774 FXColors::Blue2,
775 FXColors::Blue3,
776 FXColors::Blue4,
777 FXColors::BlueViolet,
778 FXColors::Brick,
779 FXColors::Brown,
780 FXColors::Brown1,
781 FXColors::Brown2,
782 FXColors::Brown3,
783 FXColors::Brown4,
784 FXColors::Burlywood,
785 FXColors::Burlywood1,
786 FXColors::Burlywood2,
787 FXColors::Burlywood3,
788 FXColors::Burlywood4,
789 FXColors::BurnedSienna,
790 FXColors::BurnedUmber,
791 FXColors::CadetBlue,
792 FXColors::CadetBlue1,
793 FXColors::CadetBlue2,
794 FXColors::CadetBlue3,
795 FXColors::CadetBlue4,
796 FXColors::CadmiumOrange,
797 FXColors::CadmiumRed,
798 FXColors::CadmiumYellow,
799 FXColors::Carrot,
800 FXColors::Chartreuse,
801 FXColors::Chartreuse1,
802 FXColors::Chartreuse2,
803 FXColors::Chartreuse3,
804 FXColors::Chartreuse4,
805 FXColors::Chocolate,
806 FXColors::Chocolate1,
807 FXColors::Chocolate2,
808 FXColors::Chocolate3,
809 FXColors::Chocolate4,
810 FXColors::Cobalt,
811 FXColors::CobaltGreen,
812 FXColors::ColdGray,
813 FXColors::Coral,
814 FXColors::Coral1,
815 FXColors::Coral2,
816 FXColors::Coral3,
817 FXColors::Coral4,
818 FXColors::CornflowerBlue,
819 FXColors::Cornsilk,
820 FXColors::Cornsilk1,
821 FXColors::Cornsilk2,
822 FXColors::Cornsilk3,
823 FXColors::Cornsilk4,
824 FXColors::Crimson,
825 FXColors::Cyan,
826 FXColors::Cyan1,
827 FXColors::Cyan2,
828 FXColors::Cyan3,
829 FXColors::Cyan4,
830 FXColors::DarkBlue,
831 FXColors::DarkCyan,
832 FXColors::DarkGoldenrod,
833 FXColors::DarkGoldenrod1,
834 FXColors::DarkGoldenrod2,
835 FXColors::DarkGoldenrod3,
836 FXColors::DarkGoldenrod4,
837 FXColors::DarkGray,
838 FXColors::DarkGreen,
839 FXColors::DarkGray,
840 FXColors::DarkKhaki,
841 FXColors::DarkMagenta,
842 FXColors::DarkOliveGreen,
843 FXColors::DarkOliveGreen1,
844 FXColors::DarkOliveGreen2,
845 FXColors::DarkOliveGreen3,
846 FXColors::DarkOliveGreen4,
847 FXColors::DarkOrange,
848 FXColors::DarkOrange1,
849 FXColors::DarkOrange2,
850 FXColors::DarkOrange3,
851 FXColors::DarkOrange4,
852 FXColors::DarkOrchid,
853 FXColors::DarkOrchid1,
854 FXColors::DarkOrchid2,
855 FXColors::DarkOrchid3,
856 FXColors::DarkOrchid4,
857 FXColors::DarkRed,
858 FXColors::DarkSalmon,
859 FXColors::DarkSeaGreen,
860 FXColors::DarkSeaGreen1,
861 FXColors::DarkSeaGreen2,
862 FXColors::DarkSeaGreen3,
863 FXColors::DarkSeaGreen4,
864 FXColors::DarkSlateBlue,
865 FXColors::DarkSlateGray,
866 FXColors::DarkSlateGray1,
867 FXColors::DarkSlateGray2,
868 FXColors::DarkSlateGray3,
869 FXColors::DarkSlateGray4,
870 FXColors::DarkSlateGray,
871 FXColors::DarkTurquoise,
872 FXColors::DarkViolet,
873 FXColors::DeepPink,
874 FXColors::DeepPink1,
875 FXColors::DeepPink2,
876 FXColors::DeepPink3,
877 FXColors::DeepPink4,
878 FXColors::DeepSkyBlue,
879 FXColors::DeepSkyBlue1,
880 FXColors::DeepSkyBlue2,
881 FXColors::DeepSkyBlue3,
882 FXColors::DeepSkyBlue4,
883 FXColors::DimGray,
884 FXColors::DimGray,
885 FXColors::DodgerBlue,
886 FXColors::DodgerBlue1,
887 FXColors::DodgerBlue2,
888 FXColors::DodgerBlue3,
889 FXColors::DodgerBlue4,
890 FXColors::Eggshell,
891 FXColors::EmeraldGreen,
892 FXColors::Firebrick,
893 FXColors::Firebrick1,
894 FXColors::Firebrick2,
895 FXColors::Firebrick3,
896 FXColors::Firebrick4,
897 FXColors::FloralWhite,
898 FXColors::ForestGreen,
899 FXColors::Fuchsia,
900 FXColors::Gainsboro,
901 FXColors::GhostWhite,
902 FXColors::Gold,
903 FXColors::Gold1,
904 FXColors::Gold2,
905 FXColors::Gold3,
906 FXColors::Gold4,
907 FXColors::Goldenrod,
908 FXColors::Goldenrod1,
909 FXColors::Goldenrod2,
910 FXColors::Goldenrod3,
911 FXColors::Goldenrod4,
912 FXColors::Gray,
913 FXColors::Gray0,
914 FXColors::Gray1,
915 FXColors::Gray10,
916 FXColors::Gray100,
917 FXColors::Gray11,
918 FXColors::Gray12,
919 FXColors::Gray13,
920 FXColors::Gray14,
921 FXColors::Gray15,
922 FXColors::Gray16,
923 FXColors::Gray17,
924 FXColors::Gray18,
925 FXColors::Gray19,
926 FXColors::Gray2,
927 FXColors::Gray20,
928 FXColors::Gray21,
929 FXColors::Gray22,
930 FXColors::Gray23,
931 FXColors::Gray24,
932 FXColors::Gray25,
933 FXColors::Gray26,
934 FXColors::Gray27,
935 FXColors::Gray28,
936 FXColors::Gray29,
937 FXColors::Gray3,
938 FXColors::Gray30,
939 FXColors::Gray31,
940 FXColors::Gray32,
941 FXColors::Gray33,
942 FXColors::Gray34,
943 FXColors::Gray35,
944 FXColors::Gray36,
945 FXColors::Gray37,
946 FXColors::Gray38,
947 FXColors::Gray39,
948 FXColors::Gray4,
949 FXColors::Gray40,
950 FXColors::Gray41,
951 FXColors::Gray42,
952 FXColors::Gray43,
953 FXColors::Gray44,
954 FXColors::Gray45,
955 FXColors::Gray46,
956 FXColors::Gray47,
957 FXColors::Gray48,
958 FXColors::Gray49,
959 FXColors::Gray5,
960 FXColors::Gray50,
961 FXColors::Gray51,
962 FXColors::Gray52,
963 FXColors::Gray53,
964 FXColors::Gray54,
965 FXColors::Gray55,
966 FXColors::Gray56,
967 FXColors::Gray57,
968 FXColors::Gray58,
969 FXColors::Gray59,
970 FXColors::Gray6,
971 FXColors::Gray60,
972 FXColors::Gray61,
973 FXColors::Gray62,
974 FXColors::Gray63,
975 FXColors::Gray64,
976 FXColors::Gray65,
977 FXColors::Gray66,
978 FXColors::Gray67,
979 FXColors::Gray68,
980 FXColors::Gray69,
981 FXColors::Gray7,
982 FXColors::Gray70,
983 FXColors::Gray71,
984 FXColors::Gray72,
985 FXColors::Gray73,
986 FXColors::Gray74,
987 FXColors::Gray75,
988 FXColors::Gray76,
989 FXColors::Gray77,
990 FXColors::Gray78,
991 FXColors::Gray79,
992 FXColors::Gray8,
993 FXColors::Gray80,
994 FXColors::Gray81,
995 FXColors::Gray82,
996 FXColors::Gray83,
997 FXColors::Gray84,
998 FXColors::Gray85,
999 FXColors::Gray86,
1000 FXColors::Gray87,
1001 FXColors::Gray88,
1002 FXColors::Gray89,
1003 FXColors::Gray9,
1004 FXColors::Gray90,
1005 FXColors::Gray91,
1006 FXColors::Gray92,
1007 FXColors::Gray93,
1008 FXColors::Gray94,
1009 FXColors::Gray95,
1010 FXColors::Gray96,
1011 FXColors::Gray97,
1012 FXColors::Gray98,
1013 FXColors::Gray99,
1014 FXColors::Green,
1015 FXColors::Green1,
1016 FXColors::Green2,
1017 FXColors::Green3,
1018 FXColors::Green4,
1019 FXColors::GreenYellow,
1020 FXColors::Gray,
1021 FXColors::Gray0,
1022 FXColors::Gray1,
1023 FXColors::Gray10,
1024 FXColors::Gray100,
1025 FXColors::Gray11,
1026 FXColors::Gray12,
1027 FXColors::Gray13,
1028 FXColors::Gray14,
1029 FXColors::Gray15,
1030 FXColors::Gray16,
1031 FXColors::Gray17,
1032 FXColors::Gray18,
1033 FXColors::Gray19,
1034 FXColors::Gray2,
1035 FXColors::Gray20,
1036 FXColors::Gray21,
1037 FXColors::Gray22,
1038 FXColors::Gray23,
1039 FXColors::Gray24,
1040 FXColors::Gray25,
1041 FXColors::Gray26,
1042 FXColors::Gray27,
1043 FXColors::Gray28,
1044 FXColors::Gray29,
1045 FXColors::Gray3,
1046 FXColors::Gray30,
1047 FXColors::Gray31,
1048 FXColors::Gray32,
1049 FXColors::Gray33,
1050 FXColors::Gray34,
1051 FXColors::Gray35,
1052 FXColors::Gray36,
1053 FXColors::Gray37,
1054 FXColors::Gray38,
1055 FXColors::Gray39,
1056 FXColors::Gray4,
1057 FXColors::Gray40,
1058 FXColors::Gray41,
1059 FXColors::Gray42,
1060 FXColors::Gray43,
1061 FXColors::Gray44,
1062 FXColors::Gray45,
1063 FXColors::Gray46,
1064 FXColors::Gray47,
1065 FXColors::Gray48,
1066 FXColors::Gray49,
1067 FXColors::Gray5,
1068 FXColors::Gray50,
1069 FXColors::Gray51,
1070 FXColors::Gray52,
1071 FXColors::Gray53,
1072 FXColors::Gray54,
1073 FXColors::Gray55,
1074 FXColors::Gray56,
1075 FXColors::Gray57,
1076 FXColors::Gray58,
1077 FXColors::Gray59,
1078 FXColors::Gray6,
1079 FXColors::Gray60,
1080 FXColors::Gray61,
1081 FXColors::Gray62,
1082 FXColors::Gray63,
1083 FXColors::Gray64,
1084 FXColors::Gray65,
1085 FXColors::Gray66,
1086 FXColors::Gray67,
1087 FXColors::Gray68,
1088 FXColors::Gray69,
1089 FXColors::Gray7,
1090 FXColors::Gray70,
1091 FXColors::Gray71,
1092 FXColors::Gray72,
1093 FXColors::Gray73,
1094 FXColors::Gray74,
1095 FXColors::Gray75,
1096 FXColors::Gray76,
1097 FXColors::Gray77,
1098 FXColors::Gray78,
1099 FXColors::Gray79,
1100 FXColors::Gray8,
1101 FXColors::Gray80,
1102 FXColors::Gray81,
1103 FXColors::Gray82,
1104 FXColors::Gray83,
1105 FXColors::Gray84,
1106 FXColors::Gray85,
1107 FXColors::Gray86,
1108 FXColors::Gray87,
1109 FXColors::Gray88,
1110 FXColors::Gray89,
1111 FXColors::Gray9,
1112 FXColors::Gray90,
1113 FXColors::Gray91,
1114 FXColors::Gray92,
1115 FXColors::Gray93,
1116 FXColors::Gray94,
1117 FXColors::Gray95,
1118 FXColors::Gray96,
1119 FXColors::Gray97,
1120 FXColors::Gray98,
1121 FXColors::Gray99,
1122 FXColors::Honeydew,
1123 FXColors::Honeydew1,
1124 FXColors::Honeydew2,
1125 FXColors::Honeydew3,
1126 FXColors::Honeydew4,
1127 FXColors::HotPink,
1128 FXColors::HotPink1,
1129 FXColors::HotPink2,
1130 FXColors::HotPink3,
1131 FXColors::HotPink4,
1132 FXColors::IndianRed,
1133 FXColors::IndianRed1,
1134 FXColors::IndianRed2,
1135 FXColors::IndianRed3,
1136 FXColors::IndianRed4,
1137 FXColors::Indigo,
1138 FXColors::Ivory,
1139 FXColors::Ivory1,
1140 FXColors::Ivory2,
1141 FXColors::Ivory3,
1142 FXColors::Ivory4,
1143 FXColors::Khaki,
1144 FXColors::Khaki1,
1145 FXColors::Khaki2,
1146 FXColors::Khaki3,
1147 FXColors::Khaki4,
1148 FXColors::Lavender,
1149 FXColors::LavenderBlush,
1150 FXColors::LavenderBlush1,
1151 FXColors::LavenderBlush2,
1152 FXColors::LavenderBlush3,
1153 FXColors::LavenderBlush4,
1154 FXColors::LawnGreen,
1155 FXColors::LemonChiffon,
1156 FXColors::LemonChiffon1,
1157 FXColors::LemonChiffon2,
1158 FXColors::LemonChiffon3,
1159 FXColors::LemonChiffon4,
1160 FXColors::LightBlue,
1161 FXColors::LightBlue1,
1162 FXColors::LightBlue2,
1163 FXColors::LightBlue3,
1164 FXColors::LightBlue4,
1165 FXColors::LightCoral,
1166 FXColors::LightCyan,
1167 FXColors::LightCyan1,
1168 FXColors::LightCyan2,
1169 FXColors::LightCyan3,
1170 FXColors::LightCyan4,
1171 FXColors::LightGoldenrod,
1172 FXColors::LightGoldenrod1,
1173 FXColors::LightGoldenrod2,
1174 FXColors::LightGoldenrod3,
1175 FXColors::LightGoldenrod4,
1176 FXColors::LightGoldenrodYellow,
1177 FXColors::LightGray,
1178 FXColors::LightGreen,
1179 FXColors::LightGray,
1180 FXColors::LightPink,
1181 FXColors::LightPink1,
1182 FXColors::LightPink2,
1183 FXColors::LightPink3,
1184 FXColors::LightPink4,
1185 FXColors::LightSalmon,
1186 FXColors::LightSalmon1,
1187 FXColors::LightSalmon2,
1188 FXColors::LightSalmon3,
1189 FXColors::LightSalmon4,
1190 FXColors::LightSeaGreen,
1191 FXColors::LightSkyBlue,
1192 FXColors::LightSkyBlue1,
1193 FXColors::LightSkyBlue2,
1194 FXColors::LightSkyBlue3,
1195 FXColors::LightSkyBlue4,
1196 FXColors::LightSlateBlue,
1197 FXColors::LightSlateGray,
1198 FXColors::LightSlateGray,
1199 FXColors::LightSteelBlue,
1200 FXColors::LightSteelBlue1,
1201 FXColors::LightSteelBlue2,
1202 FXColors::LightSteelBlue3,
1203 FXColors::LightSteelBlue4,
1204 FXColors::LightYellow,
1205 FXColors::LightYellow1,
1206 FXColors::LightYellow2,
1207 FXColors::LightYellow3,
1208 FXColors::LightYellow4,
1209 FXColors::Lime,
1210 FXColors::LimeGreen,
1211 FXColors::Linen,
1212 FXColors::Magenta,
1213 FXColors::Magenta1,
1214 FXColors::Magenta2,
1215 FXColors::Magenta3,
1216 FXColors::Magenta4,
1217 FXColors::Maroon,
1218 FXColors::Maroon1,
1219 FXColors::Maroon2,
1220 FXColors::Maroon3,
1221 FXColors::Maroon4,
1222 FXColors::MediumAquamarine,
1223 FXColors::MediumBlue,
1224 FXColors::MediumOrchid,
1225 FXColors::MediumOrchid1,
1226 FXColors::MediumOrchid2,
1227 FXColors::MediumOrchid3,
1228 FXColors::MediumOrchid4,
1229 FXColors::MediumPurple,
1230 FXColors::MediumPurple1,
1231 FXColors::MediumPurple2,
1232 FXColors::MediumPurple3,
1233 FXColors::MediumPurple4,
1234 FXColors::MediumSeaGreen,
1235 FXColors::MediumSlateBlue,
1236 FXColors::MediumSpringGreen,
1237 FXColors::MediumTurquoise,
1238 FXColors::MediumVioletRed,
1239 FXColors::MidnightBlue,
1240 FXColors::MintCream,
1241 FXColors::MistyRose,
1242 FXColors::MistyRose1,
1243 FXColors::MistyRose2,
1244 FXColors::MistyRose3,
1245 FXColors::MistyRose4,
1246 FXColors::Moccasin,
1247 FXColors::NavajoWhite,
1248 FXColors::NavajoWhite1,
1249 FXColors::NavajoWhite2,
1250 FXColors::NavajoWhite3,
1251 FXColors::NavajoWhite4,
1252 FXColors::Navy,
1253 FXColors::NavyBlue,
1254 FXColors::Clear,
1255 FXColors::OldLace,
1256 FXColors::Olive,
1257 FXColors::OliveDrab,
1258 FXColors::OliveDrab1,
1259 FXColors::OliveDrab2,
1260 FXColors::OliveDrab3,
1261 FXColors::OliveDrab4,
1262 FXColors::Orange,
1263 FXColors::Orange1,
1264 FXColors::Orange2,
1265 FXColors::Orange3,
1266 FXColors::Orange4,
1267 FXColors::OrangeRed,
1268 FXColors::OrangeRed1,
1269 FXColors::OrangeRed2,
1270 FXColors::OrangeRed3,
1271 FXColors::OrangeRed4,
1272 FXColors::Orchid,
1273 FXColors::Orchid1,
1274 FXColors::Orchid2,
1275 FXColors::Orchid3,
1276 FXColors::Orchid4,
1277 FXColors::PaleGoldenrod,
1278 FXColors::PaleGreen,
1279 FXColors::PaleGreen1,
1280 FXColors::PaleGreen2,
1281 FXColors::PaleGreen3,
1282 FXColors::PaleGreen4,
1283 FXColors::PaleTurquoise,
1284 FXColors::PaleTurquoise1,
1285 FXColors::PaleTurquoise2,
1286 FXColors::PaleTurquoise3,
1287 FXColors::PaleTurquoise4,
1288 FXColors::PaleVioletRed,
1289 FXColors::PaleVioletRed1,
1290 FXColors::PaleVioletRed2,
1291 FXColors::PaleVioletRed3,
1292 FXColors::PaleVioletRed4,
1293 FXColors::PapayaWhip,
1294 FXColors::PeachPuff,
1295 FXColors::PeachPuff1,
1296 FXColors::PeachPuff2,
1297 FXColors::PeachPuff3,
1298 FXColors::PeachPuff4,
1299 FXColors::Peru,
1300 FXColors::Pink,
1301 FXColors::Pink1,
1302 FXColors::Pink2,
1303 FXColors::Pink3,
1304 FXColors::Pink4,
1305 FXColors::Plum,
1306 FXColors::Plum1,
1307 FXColors::Plum2,
1308 FXColors::Plum3,
1309 FXColors::Plum4,
1310 FXColors::PowderBlue,
1311 FXColors::Purple,
1312 FXColors::Purple1,
1313 FXColors::Purple2,
1314 FXColors::Purple3,
1315 FXColors::Purple4,
1316 FXColors::Raspberry,
1317 FXColors::Red,
1318 FXColors::Red1,
1319 FXColors::Red2,
1320 FXColors::Red3,
1321 FXColors::Red4,
1322 FXColors::RosyBrown,
1323 FXColors::RosyBrown1,
1324 FXColors::RosyBrown2,
1325 FXColors::RosyBrown3,
1326 FXColors::RosyBrown4,
1327 FXColors::RoyalBlue,
1328 FXColors::RoyalBlue1,
1329 FXColors::RoyalBlue2,
1330 FXColors::RoyalBlue3,
1331 FXColors::RoyalBlue4,
1332 FXColors::SaddleBrown,
1333 FXColors::Salmon,
1334 FXColors::Salmon1,
1335 FXColors::Salmon2,
1336 FXColors::Salmon3,
1337 FXColors::Salmon4,
1338 FXColors::SandyBrown,
1339 FXColors::SeaGreen,
1340 FXColors::SeaGreen1,
1341 FXColors::SeaGreen2,
1342 FXColors::SeaGreen3,
1343 FXColors::SeaGreen4,
1344 FXColors::Seashell,
1345 FXColors::Seashell1,
1346 FXColors::Seashell2,
1347 FXColors::Seashell3,
1348 FXColors::Seashell4,
1349 FXColors::Sepia,
1350 FXColors::Sienna,
1351 FXColors::Sienna1,
1352 FXColors::Sienna2,
1353 FXColors::Sienna3,
1354 FXColors::Sienna4,
1355 FXColors::Silver,
1356 FXColors::SkyBlue,
1357 FXColors::SkyBlue1,
1358 FXColors::SkyBlue2,
1359 FXColors::SkyBlue3,
1360 FXColors::SkyBlue4,
1361 FXColors::SlateBlue,
1362 FXColors::SlateBlue1,
1363 FXColors::SlateBlue2,
1364 FXColors::SlateBlue3,
1365 FXColors::SlateBlue4,
1366 FXColors::SlateGray,
1367 FXColors::SlateGray1,
1368 FXColors::SlateGray2,
1369 FXColors::SlateGray3,
1370 FXColors::SlateGray4,
1371 FXColors::SlateGray,
1372 FXColors::Snow,
1373 FXColors::Snow1,
1374 FXColors::Snow2,
1375 FXColors::Snow3,
1376 FXColors::Snow4,
1377 FXColors::SpringGreen,
1378 FXColors::SpringGreen1,
1379 FXColors::SpringGreen2,
1380 FXColors::SpringGreen3,
1381 FXColors::SpringGreen4,
1382 FXColors::SteelBlue,
1383 FXColors::SteelBlue1,
1384 FXColors::SteelBlue2,
1385 FXColors::SteelBlue3,
1386 FXColors::SteelBlue4,
1387 FXColors::Tan,
1388 FXColors::Tan1,
1389 FXColors::Tan2,
1390 FXColors::Tan3,
1391 FXColors::Tan4,
1392 FXColors::Teal,
1393 FXColors::Thistle,
1394 FXColors::Thistle1,
1395 FXColors::Thistle2,
1396 FXColors::Thistle3,
1397 FXColors::Thistle4,
1398 FXColors::Tomato,
1399 FXColors::Tomato1,
1400 FXColors::Tomato2,
1401 FXColors::Tomato3,
1402 FXColors::Tomato4,
1403 FXColors::Turquoise,
1404 FXColors::Turquoise1,
1405 FXColors::Turquoise2,
1406 FXColors::Turquoise3,
1407 FXColors::Turquoise4,
1408 FXColors::Ultramarine,
1409 FXColors::Violet,
1410 FXColors::VioletRed,
1411 FXColors::VioletRed1,
1412 FXColors::VioletRed2,
1413 FXColors::VioletRed3,
1414 FXColors::VioletRed4,
1415 FXColors::WarmGray,
1416 FXColors::Wheat,
1417 FXColors::Wheat1,
1418 FXColors::Wheat2,
1419 FXColors::Wheat3,
1420 FXColors::Wheat4,
1421 FXColors::White,
1422 FXColors::WhiteSmoke,
1423 FXColors::Yellow,
1424 FXColors::Yellow1,
1425 FXColors::Yellow2,
1426 FXColors::Yellow3,
1427 FXColors::Yellow4,
1428 FXColors::YellowGreen
1429 };
1430
1431
1432 // Furnish our own version
1433 extern FXAPI FXint __sscanf(const FXchar* string,const FXchar* format,...);
1434 extern FXAPI FXint __snprintf(FXchar* string,FXint length,const FXchar* format,...);
1435
1436
1437 // Get RGB value from color name
colorFromName(const FXchar * name)1438 FXColor colorFromName(const FXchar* name){
1439 FXchar temp[MAXCOLORNAME],*tail=temp,c;
1440 FXint l,h,m,eq,r,g,b,a;
1441 if(name){
1442 while((c=*name++)!='\0' && tail<&temp[MAXCOLORNAME-1]){ // Squeeze out embedded spaces
1443 if(!Ascii::isSpace(c)) *tail++=c;
1444 }
1445 *tail='\0';
1446 if(temp[0]=='#'){
1447 switch(tail-temp-1){
1448 case 3:
1449 __sscanf(temp+1,"%01x%01x%01x",&r,&g,&b);
1450 return FXRGB((r*17),(g*17),(b*17));
1451 case 4:
1452 __sscanf(temp+1,"%01x%01x%01x%01x",&r,&g,&b,&a);
1453 return FXRGBA((r*17),(g*17),(b*17),(a*17));
1454 case 6:
1455 __sscanf(temp+1,"%02x%02x%02x",&r,&g,&b);
1456 return FXRGB(r,g,b);
1457 case 8:
1458 __sscanf(temp+1,"%02x%02x%02x%02x",&r,&g,&b,&a);
1459 return FXRGBA(r,g,b,a);
1460 case 9:
1461 __sscanf(temp+1,"%03x%03x%03x",&r,&g,&b);
1462 return FXRGB((r/16),(g/16),(b/16));
1463 case 12:
1464 __sscanf(temp+1,"%04x%04x%04x",&r,&g,&b);
1465 return FXRGB((r/257),(g/257),(b/257));
1466 case 16:
1467 __sscanf(temp+1,"%04x%04x%04x%04x",&r,&g,&b,&a);
1468 return FXRGBA((r/257),(g/257),(b/257),(a/257));
1469 }
1470 }
1471 else{
1472 l=0;
1473 h=ARRAYNUMBER(colorName)-1;
1474 do{
1475 m=(h+l)>>1;
1476 eq=comparecase(temp,colorName[m]);
1477 if(eq==0) return colorValue[m];
1478 if(eq<0) h=m-1; else l=m+1;
1479 }
1480 while(h>=l);
1481 }
1482 }
1483 return FXRGBA(0,0,0,0);
1484 }
1485
1486
1487 // Get rgb value from color name
colorFromName(const FXString & name)1488 FXColor colorFromName(const FXString& name){
1489 return colorFromName(name.text());
1490 }
1491
1492
1493 // Get color name from rgb value
nameFromColor(FXchar * name,FXColor color)1494 FXchar* nameFromColor(FXchar* name,FXColor color){
1495 if(!name){ fxerror("FXColorName::nameFromColor: NULL name argument.\n"); }
1496 if(color && FXALPHAVAL(color)<255){
1497 __snprintf(name,MAXCOLORNAME,"#%02x%02x%02x%02x",FXREDVAL(color),FXGREENVAL(color),FXBLUEVAL(color),FXALPHAVAL(color));
1498 }
1499 else{
1500 for(FXuint i=0; i<ARRAYNUMBER(colorValue); i++){
1501 if(colorValue[i]==color){
1502 fxstrlcpy(name,colorName[i],MAXCOLORNAME);
1503 return name;
1504 }
1505 }
1506 __snprintf(name,MAXCOLORNAME,"#%02x%02x%02x",FXREDVAL(color),FXGREENVAL(color),FXBLUEVAL(color));
1507 }
1508 return name;
1509 }
1510
1511
1512 // Get color name from rgb value
nameFromColor(FXColor color)1513 FXString nameFromColor(FXColor color){
1514 FXchar temp[100];
1515 return FXString(nameFromColor(temp,color));
1516 }
1517
1518
1519 // Blend source color over background color
blendOverBackground(FXColor back,FXColor clr)1520 FXColor blendOverBackground(FXColor back,FXColor clr){
1521 FXint as=FXALPHAVAL(clr);
1522 FXint rb=FXREDVAL(back);
1523 FXint gb=FXGREENVAL(back);
1524 FXint bb=FXBLUEVAL(back);
1525 FXint rs=(FXREDVAL(clr)-rb)*as;
1526 FXint gs=(FXGREENVAL(clr)-gb)*as;
1527 FXint bs=(FXBLUEVAL(clr)-bb)*as;
1528 rb+=((rs+(rs>>8)+128)>>8);
1529 gb+=((gs+(gs>>8)+128)>>8);
1530 bb+=((gs+(bs>>8)+128)>>8);
1531 return FXRGB(rb,gb,bb);
1532 }
1533
1534
1535 // Blend source color over black background color
blendOverBlack(FXColor clr)1536 FXColor blendOverBlack(FXColor clr){
1537 FXint as=FXALPHAVAL(clr);
1538 FXint rs=FXREDVAL(clr)*as;
1539 FXint gs=FXGREENVAL(clr)*as;
1540 FXint bs=FXBLUEVAL(clr)*as;
1541 FXint rd=((rs+(rs>>8)+128)>>8);
1542 FXint gd=((gs+(gs>>8)+128)>>8);
1543 FXint bd=((bs+(bs>>8)+128)>>8);
1544 return FXRGB(rd,gd,bd);
1545 }
1546
1547
1548 // Blend source color over white background color
blendOverWhite(FXColor clr)1549 FXColor blendOverWhite(FXColor clr){
1550 FXint as=FXALPHAVAL(clr);
1551 FXint rs=(FXREDVAL(clr)-255)*as;
1552 FXint gs=(FXGREENVAL(clr)-255)*as;
1553 FXint bs=(FXBLUEVAL(clr)-255)*as;
1554 FXint rd=255+((rs+(rs>>8)+128)>>8);
1555 FXint gd=255+((gs+(gs>>8)+128)>>8);
1556 FXint bd=255+((bs+(bs>>8)+128)>>8);
1557 return FXRGB(rd,gd,bd);
1558 }
1559
1560
1561 // Blend color src toward color dst by a given percentage
makeBlendColor(FXColor src,FXColor dst,FXint percent)1562 FXColor makeBlendColor(FXColor src,FXColor dst,FXint percent){
1563 FXuint r,g,b,tnecrep=100-percent;
1564 r=(FXREDVAL(dst)*percent+FXREDVAL(src)*tnecrep+50)/100;
1565 g=(FXGREENVAL(dst)*percent+FXGREENVAL(src)*tnecrep+50)/100;
1566 b=(FXBLUEVAL(dst)*percent+FXBLUEVAL(src)*tnecrep+50)/100;
1567 return FXRGB(r,g,b);
1568 }
1569
1570
1571 // Get highlight color
makeHiliteColor(FXColor clr,FXint percent)1572 FXColor makeHiliteColor(FXColor clr,FXint percent){
1573 FXuint r,g,b,tnecrep=100-percent;
1574 r=(255*percent+FXREDVAL(clr)*tnecrep+50)/100;
1575 g=(255*percent+FXGREENVAL(clr)*tnecrep+50)/100;
1576 b=(255*percent+FXBLUEVAL(clr)*tnecrep+50)/100;
1577 return FXRGB(r,g,b);
1578 }
1579
1580
1581 // Get shadow color
makeShadowColor(FXColor clr,FXint percent)1582 FXColor makeShadowColor(FXColor clr,FXint percent){
1583 FXuint r,g,b,tnecrep=100-percent;
1584 r=(FXREDVAL(clr)*tnecrep+50)/100;
1585 g=(FXGREENVAL(clr)*tnecrep+50)/100;
1586 b=(FXBLUEVAL(clr)*tnecrep+50)/100;
1587 return FXRGB(r,g,b);
1588 }
1589
1590
1591 }
1592