/******************************************************************************** * * * C o l o r N a m e F u n c t i o n s * * * ********************************************************************************* * Copyright (C) 1997,2020 by Jeroen van der Zijp. All Rights Reserved. * ********************************************************************************* * This library is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as published by * * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public License * * along with this program. If not, see * ********************************************************************************/ #include "xincs.h" #include "fxver.h" #include "fxdefs.h" #include "fxmath.h" #include "fxkeys.h" #include "fxascii.h" #include "FXArray.h" #include "FXHash.h" #include "FXStream.h" #include "FXString.h" #include "FXColors.h" /* Notes: - Color constants inside FXColors namespace so as to avoid potential name clashes in application code. - Added color name to FXString and vice versa. Is more convenient. - API of nameFromColor() is not safe; would prefer to pass size parameter. - The old color named "None" was renamed to "Clear". X11 defines a preprocessor constant called None and namespaces can't protect against #defines [one more reason we like C++]. - At some point, we would like faster color -> name mapping [name -> color is OK, its a binary search]. */ #define MAXCOLORNAME 24 using namespace FX; /*******************************************************************************/ namespace FX { // Names of commonly used colors const FXchar *const colorName[683]={ "AliceBlue", "AntiqueWhite", "AntiqueWhite1", "AntiqueWhite2", "AntiqueWhite3", "AntiqueWhite4", "Aqua", "Aquamarine", "Aquamarine1", "Aquamarine2", "Aquamarine3", "Aquamarine4", "Azure", "Azure1", "Azure2", "Azure3", "Azure4", "Banana", "Beige", "Bisque", "Bisque1", "Bisque2", "Bisque3", "Bisque4", "Black", "BlanchedAlmond", "Blue", "Blue1", "Blue2", "Blue3", "Blue4", "BlueViolet", "Brick", "Brown", "Brown1", "Brown2", "Brown3", "Brown4", "Burlywood", "Burlywood1", "Burlywood2", "Burlywood3", "Burlywood4", "BurnedSienna", "BurnedUmber", "CadetBlue", "CadetBlue1", "CadetBlue2", "CadetBlue3", "CadetBlue4", "CadmiumOrange", "CadmiumRed", "CadmiumYellow", "Carrot", "Chartreuse", "Chartreuse1", "Chartreuse2", "Chartreuse3", "Chartreuse4", "Chocolate", "Chocolate1", "Chocolate2", "Chocolate3", "Chocolate4", "Cobalt", "CobaltGreen", "ColdGrey", "Coral", "Coral1", "Coral2", "Coral3", "Coral4", "CornflowerBlue", "Cornsilk", "Cornsilk1", "Cornsilk2", "Cornsilk3", "Cornsilk4", "Crimson", "Cyan", "Cyan1", "Cyan2", "Cyan3", "Cyan4", "DarkBlue", "DarkCyan", "DarkGoldenrod", "DarkGoldenrod1", "DarkGoldenrod2", "DarkGoldenrod3", "DarkGoldenrod4", "DarkGray", "DarkGreen", "DarkGrey", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "DarkOliveGreen1", "DarkOliveGreen2", "DarkOliveGreen3", "DarkOliveGreen4", "DarkOrange", "DarkOrange1", "DarkOrange2", "DarkOrange3", "DarkOrange4", "DarkOrchid", "DarkOrchid1", "DarkOrchid2", "DarkOrchid3", "DarkOrchid4", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSeaGreen1", "DarkSeaGreen2", "DarkSeaGreen3", "DarkSeaGreen4", "DarkSlateBlue", "DarkSlateGray", "DarkSlateGray1", "DarkSlateGray2", "DarkSlateGray3", "DarkSlateGray4", "DarkSlateGrey", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepPink1", "DeepPink2", "DeepPink3", "DeepPink4", "DeepSkyBlue", "DeepSkyBlue1", "DeepSkyBlue2", "DeepSkyBlue3", "DeepSkyBlue4", "DimGray", "DimGrey", "DodgerBlue", "DodgerBlue1", "DodgerBlue2", "DodgerBlue3", "DodgerBlue4", "Eggshell", "EmeraldGreen", "Firebrick", "Firebrick1", "Firebrick2", "Firebrick3", "Firebrick4", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "Gold1", "Gold2", "Gold3", "Gold4", "Goldenrod", "Goldenrod1", "Goldenrod2", "Goldenrod3", "Goldenrod4", "Gray", "Gray0", "Gray1", "Gray10", "Gray100", "Gray11", "Gray12", "Gray13", "Gray14", "Gray15", "Gray16", "Gray17", "Gray18", "Gray19", "Gray2", "Gray20", "Gray21", "Gray22", "Gray23", "Gray24", "Gray25", "Gray26", "Gray27", "Gray28", "Gray29", "Gray3", "Gray30", "Gray31", "Gray32", "Gray33", "Gray34", "Gray35", "Gray36", "Gray37", "Gray38", "Gray39", "Gray4", "Gray40", "Gray41", "Gray42", "Gray43", "Gray44", "Gray45", "Gray46", "Gray47", "Gray48", "Gray49", "Gray5", "Gray50", "Gray51", "Gray52", "Gray53", "Gray54", "Gray55", "Gray56", "Gray57", "Gray58", "Gray59", "Gray6", "Gray60", "Gray61", "Gray62", "Gray63", "Gray64", "Gray65", "Gray66", "Gray67", "Gray68", "Gray69", "Gray7", "Gray70", "Gray71", "Gray72", "Gray73", "Gray74", "Gray75", "Gray76", "Gray77", "Gray78", "Gray79", "Gray8", "Gray80", "Gray81", "Gray82", "Gray83", "Gray84", "Gray85", "Gray86", "Gray87", "Gray88", "Gray89", "Gray9", "Gray90", "Gray91", "Gray92", "Gray93", "Gray94", "Gray95", "Gray96", "Gray97", "Gray98", "Gray99", "Green", "Green1", "Green2", "Green3", "Green4", "GreenYellow", "Grey", "Grey0", "Grey1", "Grey10", "Grey100", "Grey11", "Grey12", "Grey13", "Grey14", "Grey15", "Grey16", "Grey17", "Grey18", "Grey19", "Grey2", "Grey20", "Grey21", "Grey22", "Grey23", "Grey24", "Grey25", "Grey26", "Grey27", "Grey28", "Grey29", "Grey3", "Grey30", "Grey31", "Grey32", "Grey33", "Grey34", "Grey35", "Grey36", "Grey37", "Grey38", "Grey39", "Grey4", "Grey40", "Grey41", "Grey42", "Grey43", "Grey44", "Grey45", "Grey46", "Grey47", "Grey48", "Grey49", "Grey5", "Grey50", "Grey51", "Grey52", "Grey53", "Grey54", "Grey55", "Grey56", "Grey57", "Grey58", "Grey59", "Grey6", "Grey60", "Grey61", "Grey62", "Grey63", "Grey64", "Grey65", "Grey66", "Grey67", "Grey68", "Grey69", "Grey7", "Grey70", "Grey71", "Grey72", "Grey73", "Grey74", "Grey75", "Grey76", "Grey77", "Grey78", "Grey79", "Grey8", "Grey80", "Grey81", "Grey82", "Grey83", "Grey84", "Grey85", "Grey86", "Grey87", "Grey88", "Grey89", "Grey9", "Grey90", "Grey91", "Grey92", "Grey93", "Grey94", "Grey95", "Grey96", "Grey97", "Grey98", "Grey99", "Honeydew", "Honeydew1", "Honeydew2", "Honeydew3", "Honeydew4", "HotPink", "HotPink1", "HotPink2", "HotPink3", "HotPink4", "IndianRed", "IndianRed1", "IndianRed2", "IndianRed3", "IndianRed4", "Indigo", "Ivory", "Ivory1", "Ivory2", "Ivory3", "Ivory4", "Khaki", "Khaki1", "Khaki2", "Khaki3", "Khaki4", "Lavender", "LavenderBlush", "LavenderBlush1", "LavenderBlush2", "LavenderBlush3", "LavenderBlush4", "LawnGreen", "LemonChiffon", "LemonChiffon1", "LemonChiffon2", "LemonChiffon3", "LemonChiffon4", "LightBlue", "LightBlue1", "LightBlue2", "LightBlue3", "LightBlue4", "LightCoral", "LightCyan", "LightCyan1", "LightCyan2", "LightCyan3", "LightCyan4", "LightGoldenrod", "LightGoldenrod1", "LightGoldenrod2", "LightGoldenrod3", "LightGoldenrod4", "LightGoldenrodYellow", "LightGray", "LightGreen", "LightGrey", "LightPink", "LightPink1", "LightPink2", "LightPink3", "LightPink4", "LightSalmon", "LightSalmon1", "LightSalmon2", "LightSalmon3", "LightSalmon4", "LightSeaGreen", "LightSkyBlue", "LightSkyBlue1", "LightSkyBlue2", "LightSkyBlue3", "LightSkyBlue4", "LightSlateBlue", "LightSlateGray", "LightSlateGrey", "LightSteelBlue", "LightSteelBlue1", "LightSteelBlue2", "LightSteelBlue3", "LightSteelBlue4", "LightYellow", "LightYellow1", "LightYellow2", "LightYellow3", "LightYellow4", "Lime", "LimeGreen", "Linen", "Magenta", "Magenta1", "Magenta2", "Magenta3", "Magenta4", "Maroon", "Maroon1", "Maroon2", "Maroon3", "Maroon4", "MediumAquamarine", "MediumBlue", "MediumOrchid", "MediumOrchid1", "MediumOrchid2", "MediumOrchid3", "MediumOrchid4", "MediumPurple", "MediumPurple1", "MediumPurple2", "MediumPurple3", "MediumPurple4", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "MistyRose1", "MistyRose2", "MistyRose3", "MistyRose4", "Moccasin", "NavajoWhite", "NavajoWhite1", "NavajoWhite2", "NavajoWhite3", "NavajoWhite4", "Navy", "NavyBlue", "None", "OldLace", "Olive", "OliveDrab", "OliveDrab1", "OliveDrab2", "OliveDrab3", "OliveDrab4", "Orange", "Orange1", "Orange2", "Orange3", "Orange4", "OrangeRed", "OrangeRed1", "OrangeRed2", "OrangeRed3", "OrangeRed4", "Orchid", "Orchid1", "Orchid2", "Orchid3", "Orchid4", "PaleGoldenrod", "PaleGreen", "PaleGreen1", "PaleGreen2", "PaleGreen3", "PaleGreen4", "PaleTurquoise", "PaleTurquoise1", "PaleTurquoise2", "PaleTurquoise3", "PaleTurquoise4", "PaleVioletRed", "PaleVioletRed1", "PaleVioletRed2", "PaleVioletRed3", "PaleVioletRed4", "PapayaWhip", "PeachPuff", "PeachPuff1", "PeachPuff2", "PeachPuff3", "PeachPuff4", "Peru", "Pink", "Pink1", "Pink2", "Pink3", "Pink4", "Plum", "Plum1", "Plum2", "Plum3", "Plum4", "PowderBlue", "Purple", "Purple1", "Purple2", "Purple3", "Purple4", "Raspberry", "Red", "Red1", "Red2", "Red3", "Red4", "RosyBrown", "RosyBrown1", "RosyBrown2", "RosyBrown3", "RosyBrown4", "RoyalBlue", "RoyalBlue1", "RoyalBlue2", "RoyalBlue3", "RoyalBlue4", "SaddleBrown", "Salmon", "Salmon1", "Salmon2", "Salmon3", "Salmon4", "SandyBrown", "SeaGreen", "SeaGreen1", "SeaGreen2", "SeaGreen3", "SeaGreen4", "Seashell", "Seashell1", "Seashell2", "Seashell3", "Seashell4", "Sepia", "Sienna", "Sienna1", "Sienna2", "Sienna3", "Sienna4", "Silver", "SkyBlue", "SkyBlue1", "SkyBlue2", "SkyBlue3", "SkyBlue4", "SlateBlue", "SlateBlue1", "SlateBlue2", "SlateBlue3", "SlateBlue4", "SlateGray", "SlateGray1", "SlateGray2", "SlateGray3", "SlateGray4", "SlateGrey", "Snow", "Snow1", "Snow2", "Snow3", "Snow4", "SpringGreen", "SpringGreen1", "SpringGreen2", "SpringGreen3", "SpringGreen4", "SteelBlue", "SteelBlue1", "SteelBlue2", "SteelBlue3", "SteelBlue4", "Tan", "Tan1", "Tan2", "Tan3", "Tan4", "Teal", "Thistle", "Thistle1", "Thistle2", "Thistle3", "Thistle4", "Tomato", "Tomato1", "Tomato2", "Tomato3", "Tomato4", "Turquoise", "Turquoise1", "Turquoise2", "Turquoise3", "Turquoise4", "Ultramarine", "Violet", "VioletRed", "VioletRed1", "VioletRed2", "VioletRed3", "VioletRed4", "WarmGrey", "Wheat", "Wheat1", "Wheat2", "Wheat3", "Wheat4", "White", "WhiteSmoke", "Yellow", "Yellow1", "Yellow2", "Yellow3", "Yellow4", "YellowGreen", }; // Values of corresponding colors const FXColor colorValue[683]={ FXColors::AliceBlue, FXColors::AntiqueWhite, FXColors::AntiqueWhite1, FXColors::AntiqueWhite2, FXColors::AntiqueWhite3, FXColors::AntiqueWhite4, FXColors::Aqua, FXColors::Aquamarine, FXColors::Aquamarine1, FXColors::Aquamarine2, FXColors::Aquamarine3, FXColors::Aquamarine4, FXColors::Azure, FXColors::Azure1, FXColors::Azure2, FXColors::Azure3, FXColors::Azure4, FXColors::Banana, FXColors::Beige, FXColors::Bisque, FXColors::Bisque1, FXColors::Bisque2, FXColors::Bisque3, FXColors::Bisque4, FXColors::Black, FXColors::BlanchedAlmond, FXColors::Blue, FXColors::Blue1, FXColors::Blue2, FXColors::Blue3, FXColors::Blue4, FXColors::BlueViolet, FXColors::Brick, FXColors::Brown, FXColors::Brown1, FXColors::Brown2, FXColors::Brown3, FXColors::Brown4, FXColors::Burlywood, FXColors::Burlywood1, FXColors::Burlywood2, FXColors::Burlywood3, FXColors::Burlywood4, FXColors::BurnedSienna, FXColors::BurnedUmber, FXColors::CadetBlue, FXColors::CadetBlue1, FXColors::CadetBlue2, FXColors::CadetBlue3, FXColors::CadetBlue4, FXColors::CadmiumOrange, FXColors::CadmiumRed, FXColors::CadmiumYellow, FXColors::Carrot, FXColors::Chartreuse, FXColors::Chartreuse1, FXColors::Chartreuse2, FXColors::Chartreuse3, FXColors::Chartreuse4, FXColors::Chocolate, FXColors::Chocolate1, FXColors::Chocolate2, FXColors::Chocolate3, FXColors::Chocolate4, FXColors::Cobalt, FXColors::CobaltGreen, FXColors::ColdGray, FXColors::Coral, FXColors::Coral1, FXColors::Coral2, FXColors::Coral3, FXColors::Coral4, FXColors::CornflowerBlue, FXColors::Cornsilk, FXColors::Cornsilk1, FXColors::Cornsilk2, FXColors::Cornsilk3, FXColors::Cornsilk4, FXColors::Crimson, FXColors::Cyan, FXColors::Cyan1, FXColors::Cyan2, FXColors::Cyan3, FXColors::Cyan4, FXColors::DarkBlue, FXColors::DarkCyan, FXColors::DarkGoldenrod, FXColors::DarkGoldenrod1, FXColors::DarkGoldenrod2, FXColors::DarkGoldenrod3, FXColors::DarkGoldenrod4, FXColors::DarkGray, FXColors::DarkGreen, FXColors::DarkGray, FXColors::DarkKhaki, FXColors::DarkMagenta, FXColors::DarkOliveGreen, FXColors::DarkOliveGreen1, FXColors::DarkOliveGreen2, FXColors::DarkOliveGreen3, FXColors::DarkOliveGreen4, FXColors::DarkOrange, FXColors::DarkOrange1, FXColors::DarkOrange2, FXColors::DarkOrange3, FXColors::DarkOrange4, FXColors::DarkOrchid, FXColors::DarkOrchid1, FXColors::DarkOrchid2, FXColors::DarkOrchid3, FXColors::DarkOrchid4, FXColors::DarkRed, FXColors::DarkSalmon, FXColors::DarkSeaGreen, FXColors::DarkSeaGreen1, FXColors::DarkSeaGreen2, FXColors::DarkSeaGreen3, FXColors::DarkSeaGreen4, FXColors::DarkSlateBlue, FXColors::DarkSlateGray, FXColors::DarkSlateGray1, FXColors::DarkSlateGray2, FXColors::DarkSlateGray3, FXColors::DarkSlateGray4, FXColors::DarkSlateGray, FXColors::DarkTurquoise, FXColors::DarkViolet, FXColors::DeepPink, FXColors::DeepPink1, FXColors::DeepPink2, FXColors::DeepPink3, FXColors::DeepPink4, FXColors::DeepSkyBlue, FXColors::DeepSkyBlue1, FXColors::DeepSkyBlue2, FXColors::DeepSkyBlue3, FXColors::DeepSkyBlue4, FXColors::DimGray, FXColors::DimGray, FXColors::DodgerBlue, FXColors::DodgerBlue1, FXColors::DodgerBlue2, FXColors::DodgerBlue3, FXColors::DodgerBlue4, FXColors::Eggshell, FXColors::EmeraldGreen, FXColors::Firebrick, FXColors::Firebrick1, FXColors::Firebrick2, FXColors::Firebrick3, FXColors::Firebrick4, FXColors::FloralWhite, FXColors::ForestGreen, FXColors::Fuchsia, FXColors::Gainsboro, FXColors::GhostWhite, FXColors::Gold, FXColors::Gold1, FXColors::Gold2, FXColors::Gold3, FXColors::Gold4, FXColors::Goldenrod, FXColors::Goldenrod1, FXColors::Goldenrod2, FXColors::Goldenrod3, FXColors::Goldenrod4, FXColors::Gray, FXColors::Gray0, FXColors::Gray1, FXColors::Gray10, FXColors::Gray100, FXColors::Gray11, FXColors::Gray12, FXColors::Gray13, FXColors::Gray14, FXColors::Gray15, FXColors::Gray16, FXColors::Gray17, FXColors::Gray18, FXColors::Gray19, FXColors::Gray2, FXColors::Gray20, FXColors::Gray21, FXColors::Gray22, FXColors::Gray23, FXColors::Gray24, FXColors::Gray25, FXColors::Gray26, FXColors::Gray27, FXColors::Gray28, FXColors::Gray29, FXColors::Gray3, FXColors::Gray30, FXColors::Gray31, FXColors::Gray32, FXColors::Gray33, FXColors::Gray34, FXColors::Gray35, FXColors::Gray36, FXColors::Gray37, FXColors::Gray38, FXColors::Gray39, FXColors::Gray4, FXColors::Gray40, FXColors::Gray41, FXColors::Gray42, FXColors::Gray43, FXColors::Gray44, FXColors::Gray45, FXColors::Gray46, FXColors::Gray47, FXColors::Gray48, FXColors::Gray49, FXColors::Gray5, FXColors::Gray50, FXColors::Gray51, FXColors::Gray52, FXColors::Gray53, FXColors::Gray54, FXColors::Gray55, FXColors::Gray56, FXColors::Gray57, FXColors::Gray58, FXColors::Gray59, FXColors::Gray6, FXColors::Gray60, FXColors::Gray61, FXColors::Gray62, FXColors::Gray63, FXColors::Gray64, FXColors::Gray65, FXColors::Gray66, FXColors::Gray67, FXColors::Gray68, FXColors::Gray69, FXColors::Gray7, FXColors::Gray70, FXColors::Gray71, FXColors::Gray72, FXColors::Gray73, FXColors::Gray74, FXColors::Gray75, FXColors::Gray76, FXColors::Gray77, FXColors::Gray78, FXColors::Gray79, FXColors::Gray8, FXColors::Gray80, FXColors::Gray81, FXColors::Gray82, FXColors::Gray83, FXColors::Gray84, FXColors::Gray85, FXColors::Gray86, FXColors::Gray87, FXColors::Gray88, FXColors::Gray89, FXColors::Gray9, FXColors::Gray90, FXColors::Gray91, FXColors::Gray92, FXColors::Gray93, FXColors::Gray94, FXColors::Gray95, FXColors::Gray96, FXColors::Gray97, FXColors::Gray98, FXColors::Gray99, FXColors::Green, FXColors::Green1, FXColors::Green2, FXColors::Green3, FXColors::Green4, FXColors::GreenYellow, FXColors::Gray, FXColors::Gray0, FXColors::Gray1, FXColors::Gray10, FXColors::Gray100, FXColors::Gray11, FXColors::Gray12, FXColors::Gray13, FXColors::Gray14, FXColors::Gray15, FXColors::Gray16, FXColors::Gray17, FXColors::Gray18, FXColors::Gray19, FXColors::Gray2, FXColors::Gray20, FXColors::Gray21, FXColors::Gray22, FXColors::Gray23, FXColors::Gray24, FXColors::Gray25, FXColors::Gray26, FXColors::Gray27, FXColors::Gray28, FXColors::Gray29, FXColors::Gray3, FXColors::Gray30, FXColors::Gray31, FXColors::Gray32, FXColors::Gray33, FXColors::Gray34, FXColors::Gray35, FXColors::Gray36, FXColors::Gray37, FXColors::Gray38, FXColors::Gray39, FXColors::Gray4, FXColors::Gray40, FXColors::Gray41, FXColors::Gray42, FXColors::Gray43, FXColors::Gray44, FXColors::Gray45, FXColors::Gray46, FXColors::Gray47, FXColors::Gray48, FXColors::Gray49, FXColors::Gray5, FXColors::Gray50, FXColors::Gray51, FXColors::Gray52, FXColors::Gray53, FXColors::Gray54, FXColors::Gray55, FXColors::Gray56, FXColors::Gray57, FXColors::Gray58, FXColors::Gray59, FXColors::Gray6, FXColors::Gray60, FXColors::Gray61, FXColors::Gray62, FXColors::Gray63, FXColors::Gray64, FXColors::Gray65, FXColors::Gray66, FXColors::Gray67, FXColors::Gray68, FXColors::Gray69, FXColors::Gray7, FXColors::Gray70, FXColors::Gray71, FXColors::Gray72, FXColors::Gray73, FXColors::Gray74, FXColors::Gray75, FXColors::Gray76, FXColors::Gray77, FXColors::Gray78, FXColors::Gray79, FXColors::Gray8, FXColors::Gray80, FXColors::Gray81, FXColors::Gray82, FXColors::Gray83, FXColors::Gray84, FXColors::Gray85, FXColors::Gray86, FXColors::Gray87, FXColors::Gray88, FXColors::Gray89, FXColors::Gray9, FXColors::Gray90, FXColors::Gray91, FXColors::Gray92, FXColors::Gray93, FXColors::Gray94, FXColors::Gray95, FXColors::Gray96, FXColors::Gray97, FXColors::Gray98, FXColors::Gray99, FXColors::Honeydew, FXColors::Honeydew1, FXColors::Honeydew2, FXColors::Honeydew3, FXColors::Honeydew4, FXColors::HotPink, FXColors::HotPink1, FXColors::HotPink2, FXColors::HotPink3, FXColors::HotPink4, FXColors::IndianRed, FXColors::IndianRed1, FXColors::IndianRed2, FXColors::IndianRed3, FXColors::IndianRed4, FXColors::Indigo, FXColors::Ivory, FXColors::Ivory1, FXColors::Ivory2, FXColors::Ivory3, FXColors::Ivory4, FXColors::Khaki, FXColors::Khaki1, FXColors::Khaki2, FXColors::Khaki3, FXColors::Khaki4, FXColors::Lavender, FXColors::LavenderBlush, FXColors::LavenderBlush1, FXColors::LavenderBlush2, FXColors::LavenderBlush3, FXColors::LavenderBlush4, FXColors::LawnGreen, FXColors::LemonChiffon, FXColors::LemonChiffon1, FXColors::LemonChiffon2, FXColors::LemonChiffon3, FXColors::LemonChiffon4, FXColors::LightBlue, FXColors::LightBlue1, FXColors::LightBlue2, FXColors::LightBlue3, FXColors::LightBlue4, FXColors::LightCoral, FXColors::LightCyan, FXColors::LightCyan1, FXColors::LightCyan2, FXColors::LightCyan3, FXColors::LightCyan4, FXColors::LightGoldenrod, FXColors::LightGoldenrod1, FXColors::LightGoldenrod2, FXColors::LightGoldenrod3, FXColors::LightGoldenrod4, FXColors::LightGoldenrodYellow, FXColors::LightGray, FXColors::LightGreen, FXColors::LightGray, FXColors::LightPink, FXColors::LightPink1, FXColors::LightPink2, FXColors::LightPink3, FXColors::LightPink4, FXColors::LightSalmon, FXColors::LightSalmon1, FXColors::LightSalmon2, FXColors::LightSalmon3, FXColors::LightSalmon4, FXColors::LightSeaGreen, FXColors::LightSkyBlue, FXColors::LightSkyBlue1, FXColors::LightSkyBlue2, FXColors::LightSkyBlue3, FXColors::LightSkyBlue4, FXColors::LightSlateBlue, FXColors::LightSlateGray, FXColors::LightSlateGray, FXColors::LightSteelBlue, FXColors::LightSteelBlue1, FXColors::LightSteelBlue2, FXColors::LightSteelBlue3, FXColors::LightSteelBlue4, FXColors::LightYellow, FXColors::LightYellow1, FXColors::LightYellow2, FXColors::LightYellow3, FXColors::LightYellow4, FXColors::Lime, FXColors::LimeGreen, FXColors::Linen, FXColors::Magenta, FXColors::Magenta1, FXColors::Magenta2, FXColors::Magenta3, FXColors::Magenta4, FXColors::Maroon, FXColors::Maroon1, FXColors::Maroon2, FXColors::Maroon3, FXColors::Maroon4, FXColors::MediumAquamarine, FXColors::MediumBlue, FXColors::MediumOrchid, FXColors::MediumOrchid1, FXColors::MediumOrchid2, FXColors::MediumOrchid3, FXColors::MediumOrchid4, FXColors::MediumPurple, FXColors::MediumPurple1, FXColors::MediumPurple2, FXColors::MediumPurple3, FXColors::MediumPurple4, FXColors::MediumSeaGreen, FXColors::MediumSlateBlue, FXColors::MediumSpringGreen, FXColors::MediumTurquoise, FXColors::MediumVioletRed, FXColors::MidnightBlue, FXColors::MintCream, FXColors::MistyRose, FXColors::MistyRose1, FXColors::MistyRose2, FXColors::MistyRose3, FXColors::MistyRose4, FXColors::Moccasin, FXColors::NavajoWhite, FXColors::NavajoWhite1, FXColors::NavajoWhite2, FXColors::NavajoWhite3, FXColors::NavajoWhite4, FXColors::Navy, FXColors::NavyBlue, FXColors::Clear, FXColors::OldLace, FXColors::Olive, FXColors::OliveDrab, FXColors::OliveDrab1, FXColors::OliveDrab2, FXColors::OliveDrab3, FXColors::OliveDrab4, FXColors::Orange, FXColors::Orange1, FXColors::Orange2, FXColors::Orange3, FXColors::Orange4, FXColors::OrangeRed, FXColors::OrangeRed1, FXColors::OrangeRed2, FXColors::OrangeRed3, FXColors::OrangeRed4, FXColors::Orchid, FXColors::Orchid1, FXColors::Orchid2, FXColors::Orchid3, FXColors::Orchid4, FXColors::PaleGoldenrod, FXColors::PaleGreen, FXColors::PaleGreen1, FXColors::PaleGreen2, FXColors::PaleGreen3, FXColors::PaleGreen4, FXColors::PaleTurquoise, FXColors::PaleTurquoise1, FXColors::PaleTurquoise2, FXColors::PaleTurquoise3, FXColors::PaleTurquoise4, FXColors::PaleVioletRed, FXColors::PaleVioletRed1, FXColors::PaleVioletRed2, FXColors::PaleVioletRed3, FXColors::PaleVioletRed4, FXColors::PapayaWhip, FXColors::PeachPuff, FXColors::PeachPuff1, FXColors::PeachPuff2, FXColors::PeachPuff3, FXColors::PeachPuff4, FXColors::Peru, FXColors::Pink, FXColors::Pink1, FXColors::Pink2, FXColors::Pink3, FXColors::Pink4, FXColors::Plum, FXColors::Plum1, FXColors::Plum2, FXColors::Plum3, FXColors::Plum4, FXColors::PowderBlue, FXColors::Purple, FXColors::Purple1, FXColors::Purple2, FXColors::Purple3, FXColors::Purple4, FXColors::Raspberry, FXColors::Red, FXColors::Red1, FXColors::Red2, FXColors::Red3, FXColors::Red4, FXColors::RosyBrown, FXColors::RosyBrown1, FXColors::RosyBrown2, FXColors::RosyBrown3, FXColors::RosyBrown4, FXColors::RoyalBlue, FXColors::RoyalBlue1, FXColors::RoyalBlue2, FXColors::RoyalBlue3, FXColors::RoyalBlue4, FXColors::SaddleBrown, FXColors::Salmon, FXColors::Salmon1, FXColors::Salmon2, FXColors::Salmon3, FXColors::Salmon4, FXColors::SandyBrown, FXColors::SeaGreen, FXColors::SeaGreen1, FXColors::SeaGreen2, FXColors::SeaGreen3, FXColors::SeaGreen4, FXColors::Seashell, FXColors::Seashell1, FXColors::Seashell2, FXColors::Seashell3, FXColors::Seashell4, FXColors::Sepia, FXColors::Sienna, FXColors::Sienna1, FXColors::Sienna2, FXColors::Sienna3, FXColors::Sienna4, FXColors::Silver, FXColors::SkyBlue, FXColors::SkyBlue1, FXColors::SkyBlue2, FXColors::SkyBlue3, FXColors::SkyBlue4, FXColors::SlateBlue, FXColors::SlateBlue1, FXColors::SlateBlue2, FXColors::SlateBlue3, FXColors::SlateBlue4, FXColors::SlateGray, FXColors::SlateGray1, FXColors::SlateGray2, FXColors::SlateGray3, FXColors::SlateGray4, FXColors::SlateGray, FXColors::Snow, FXColors::Snow1, FXColors::Snow2, FXColors::Snow3, FXColors::Snow4, FXColors::SpringGreen, FXColors::SpringGreen1, FXColors::SpringGreen2, FXColors::SpringGreen3, FXColors::SpringGreen4, FXColors::SteelBlue, FXColors::SteelBlue1, FXColors::SteelBlue2, FXColors::SteelBlue3, FXColors::SteelBlue4, FXColors::Tan, FXColors::Tan1, FXColors::Tan2, FXColors::Tan3, FXColors::Tan4, FXColors::Teal, FXColors::Thistle, FXColors::Thistle1, FXColors::Thistle2, FXColors::Thistle3, FXColors::Thistle4, FXColors::Tomato, FXColors::Tomato1, FXColors::Tomato2, FXColors::Tomato3, FXColors::Tomato4, FXColors::Turquoise, FXColors::Turquoise1, FXColors::Turquoise2, FXColors::Turquoise3, FXColors::Turquoise4, FXColors::Ultramarine, FXColors::Violet, FXColors::VioletRed, FXColors::VioletRed1, FXColors::VioletRed2, FXColors::VioletRed3, FXColors::VioletRed4, FXColors::WarmGray, FXColors::Wheat, FXColors::Wheat1, FXColors::Wheat2, FXColors::Wheat3, FXColors::Wheat4, FXColors::White, FXColors::WhiteSmoke, FXColors::Yellow, FXColors::Yellow1, FXColors::Yellow2, FXColors::Yellow3, FXColors::Yellow4, FXColors::YellowGreen }; // Furnish our own version extern FXAPI FXint __sscanf(const FXchar* string,const FXchar* format,...); extern FXAPI FXint __snprintf(FXchar* string,FXint length,const FXchar* format,...); // Get RGB value from color name FXColor colorFromName(const FXchar* name){ FXchar temp[MAXCOLORNAME],*tail=temp,c; FXint l,h,m,eq,r,g,b,a; if(name){ while((c=*name++)!='\0' && tail<&temp[MAXCOLORNAME-1]){ // Squeeze out embedded spaces if(!Ascii::isSpace(c)) *tail++=c; } *tail='\0'; if(temp[0]=='#'){ switch(tail-temp-1){ case 3: __sscanf(temp+1,"%01x%01x%01x",&r,&g,&b); return FXRGB((r*17),(g*17),(b*17)); case 4: __sscanf(temp+1,"%01x%01x%01x%01x",&r,&g,&b,&a); return FXRGBA((r*17),(g*17),(b*17),(a*17)); case 6: __sscanf(temp+1,"%02x%02x%02x",&r,&g,&b); return FXRGB(r,g,b); case 8: __sscanf(temp+1,"%02x%02x%02x%02x",&r,&g,&b,&a); return FXRGBA(r,g,b,a); case 9: __sscanf(temp+1,"%03x%03x%03x",&r,&g,&b); return FXRGB((r/16),(g/16),(b/16)); case 12: __sscanf(temp+1,"%04x%04x%04x",&r,&g,&b); return FXRGB((r/257),(g/257),(b/257)); case 16: __sscanf(temp+1,"%04x%04x%04x%04x",&r,&g,&b,&a); return FXRGBA((r/257),(g/257),(b/257),(a/257)); } } else{ l=0; h=ARRAYNUMBER(colorName)-1; do{ m=(h+l)>>1; eq=comparecase(temp,colorName[m]); if(eq==0) return colorValue[m]; if(eq<0) h=m-1; else l=m+1; } while(h>=l); } } return FXRGBA(0,0,0,0); } // Get rgb value from color name FXColor colorFromName(const FXString& name){ return colorFromName(name.text()); } // Get color name from rgb value FXchar* nameFromColor(FXchar* name,FXColor color){ if(!name){ fxerror("FXColorName::nameFromColor: NULL name argument.\n"); } if(color && FXALPHAVAL(color)<255){ __snprintf(name,MAXCOLORNAME,"#%02x%02x%02x%02x",FXREDVAL(color),FXGREENVAL(color),FXBLUEVAL(color),FXALPHAVAL(color)); } else{ for(FXuint i=0; i>8)+128)>>8); gb+=((gs+(gs>>8)+128)>>8); bb+=((gs+(bs>>8)+128)>>8); return FXRGB(rb,gb,bb); } // Blend source color over black background color FXColor blendOverBlack(FXColor clr){ FXint as=FXALPHAVAL(clr); FXint rs=FXREDVAL(clr)*as; FXint gs=FXGREENVAL(clr)*as; FXint bs=FXBLUEVAL(clr)*as; FXint rd=((rs+(rs>>8)+128)>>8); FXint gd=((gs+(gs>>8)+128)>>8); FXint bd=((bs+(bs>>8)+128)>>8); return FXRGB(rd,gd,bd); } // Blend source color over white background color FXColor blendOverWhite(FXColor clr){ FXint as=FXALPHAVAL(clr); FXint rs=(FXREDVAL(clr)-255)*as; FXint gs=(FXGREENVAL(clr)-255)*as; FXint bs=(FXBLUEVAL(clr)-255)*as; FXint rd=255+((rs+(rs>>8)+128)>>8); FXint gd=255+((gs+(gs>>8)+128)>>8); FXint bd=255+((bs+(bs>>8)+128)>>8); return FXRGB(rd,gd,bd); } // Blend color src toward color dst by a given percentage FXColor makeBlendColor(FXColor src,FXColor dst,FXint percent){ FXuint r,g,b,tnecrep=100-percent; r=(FXREDVAL(dst)*percent+FXREDVAL(src)*tnecrep+50)/100; g=(FXGREENVAL(dst)*percent+FXGREENVAL(src)*tnecrep+50)/100; b=(FXBLUEVAL(dst)*percent+FXBLUEVAL(src)*tnecrep+50)/100; return FXRGB(r,g,b); } // Get highlight color FXColor makeHiliteColor(FXColor clr,FXint percent){ FXuint r,g,b,tnecrep=100-percent; r=(255*percent+FXREDVAL(clr)*tnecrep+50)/100; g=(255*percent+FXGREENVAL(clr)*tnecrep+50)/100; b=(255*percent+FXBLUEVAL(clr)*tnecrep+50)/100; return FXRGB(r,g,b); } // Get shadow color FXColor makeShadowColor(FXColor clr,FXint percent){ FXuint r,g,b,tnecrep=100-percent; r=(FXREDVAL(clr)*tnecrep+50)/100; g=(FXGREENVAL(clr)*tnecrep+50)/100; b=(FXBLUEVAL(clr)*tnecrep+50)/100; return FXRGB(r,g,b); } }