rgba_color.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:42k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: rgba_color.cpp,v $
  4.  * PRODUCTION Revision 1000.2  2004/06/01 21:05:10  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: rgba_color.cpp,v 1000.2 2004/06/01 21:05:10 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Mike DiCuccio, Peter Meric
  35.  *
  36.  * File Description:
  37.  *    CRgbaColor - colors in the RGB colorspace, including transparency
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/utils/rgba_color.hpp>
  41. #include <util/static_map.hpp>
  42. BEGIN_NCBI_SCOPE
  43. // add a color to this color
  44. CRgbaColor& CRgbaColor::operator+=(const CRgbaColor& c1)
  45. {
  46.     m_Rgba[0] += c1.m_Rgba[0];
  47.     m_Rgba[1] += c1.m_Rgba[1];
  48.     m_Rgba[2] += c1.m_Rgba[2];
  49.     m_Rgba[3] += c1.m_Rgba[3];
  50.     return *this;
  51. }
  52. CRgbaColor operator+(const CRgbaColor& c1, const CRgbaColor& c2)
  53. {
  54.     return CRgbaColor(c1.GetRed()   + c2.GetRed(),
  55.                       c1.GetBlue()  + c2.GetBlue(),
  56.                       c1.GetGreen() + c2.GetGreen(),
  57.                       c1.GetAlpha() + c2.GetAlpha());
  58. }
  59. // multiply this color by a scalar
  60. CRgbaColor& CRgbaColor::operator*=(float f)
  61. {
  62.     m_Rgba[0] *= f;
  63.     m_Rgba[1] *= f;
  64.     m_Rgba[2] *= f;
  65.     m_Rgba[3] *= f;
  66.     return *this;
  67. }
  68. CRgbaColor operator*(const CRgbaColor& c1, float f)
  69. {
  70.     return CRgbaColor(c1.GetRed()   * f,
  71.                       c1.GetBlue()  * f,
  72.                       c1.GetGreen() * f,
  73.                       c1.GetAlpha() * f);
  74. }
  75. bool operator==(const CRgbaColor& c1, const CRgbaColor& c2)
  76. {
  77.     return (c1.GetRed()   == c2.GetRed()  &&
  78.             c1.GetGreen() == c2.GetGreen()  &&
  79.             c1.GetBlue()  == c2.GetBlue()  &&
  80.             c1.GetAlpha() == c2.GetAlpha());
  81. }
  82. CRgbaColor::CRgbaColor()
  83. {
  84.     m_Rgba[0] = m_Rgba[1] = m_Rgba[2] = 0.0f;
  85.     m_Rgba[3] = 1.0f;
  86. }
  87. CRgbaColor::CRgbaColor(const string& s)
  88. {
  89.     ScanFrom(s);
  90. }
  91. CRgbaColor::CRgbaColor(const float* color, size_t size)
  92. {
  93.     for (size_t i = 0; i < 4; ++i) {
  94.         m_Rgba[i] = i < size ? color[i] : (i == 3 ? 1.0f : 0.0f);
  95.     }
  96. }
  97. CRgbaColor::CRgbaColor(float r, float g, float b)
  98. {
  99.     m_Rgba[0] = r;
  100.     m_Rgba[1] = g;
  101.     m_Rgba[2] = b;
  102.     m_Rgba[3] = 1.0f;
  103. }
  104. CRgbaColor::CRgbaColor(float r, float g, float b, float a)
  105. {
  106.     m_Rgba[0] = r;
  107.     m_Rgba[1] = g;
  108.     m_Rgba[2] = b;
  109.     m_Rgba[3] = a;
  110. }
  111. CRgbaColor::CRgbaColor(unsigned char r, unsigned char g, unsigned char b)
  112. {
  113.     m_Rgba[0] = (float(r) / 255.0f);
  114.     m_Rgba[1] = (float(g) / 255.0f);
  115.     m_Rgba[2] = (float(b) / 255.0f);
  116.     m_Rgba[3] = 1.0f;
  117. }
  118. CRgbaColor::CRgbaColor(unsigned char r, unsigned char g,
  119.                        unsigned char b, unsigned char a)
  120. {
  121.     m_Rgba[0] = (float(r) / 255.0f);
  122.     m_Rgba[1] = (float(g) / 255.0f);
  123.     m_Rgba[2] = (float(b) / 255.0f);
  124.     m_Rgba[3] = (float(a) / 255.0f);
  125. }
  126. CRgbaColor::~CRgbaColor()
  127. {
  128. }
  129. void CRgbaColor::Set(float r, float g, float b)
  130. {
  131.     m_Rgba[0] = r;
  132.     m_Rgba[1] = g;
  133.     m_Rgba[2] = b;
  134.     m_Rgba[3] = 1.0f;
  135. }
  136. void CRgbaColor::Set(float r, float g, float b, float a)
  137. {
  138.     m_Rgba[0] = r;
  139.     m_Rgba[1] = g;
  140.     m_Rgba[2] = b;
  141.     m_Rgba[3] = a;
  142. }
  143. void CRgbaColor::Set(unsigned char r, unsigned char g, unsigned char b)
  144. {
  145.     m_Rgba[0] = (float(r) / 255.0f);
  146.     m_Rgba[1] = (float(g) / 255.0f);
  147.     m_Rgba[2] = (float(b) / 255.0f);
  148.     m_Rgba[3] = 1.0f;
  149. }
  150. void CRgbaColor::Set(unsigned char r, unsigned char g,
  151.                    unsigned char b, unsigned char a)
  152. {
  153.     m_Rgba[0] = (float(r) / 255.0f);
  154.     m_Rgba[1] = (float(g) / 255.0f);
  155.     m_Rgba[2] = (float(b) / 255.0f);
  156.     m_Rgba[3] = (float(a) / 255.0f);
  157. }
  158. void CRgbaColor::SetRed(float r)
  159. {
  160.     m_Rgba[0] = (r > 1.0f) ? 1.0f : (r < 0.0f) ? 0.0f : r;
  161. }
  162. void CRgbaColor::SetRed(unsigned char r)
  163. {
  164.     m_Rgba[0] = float(r) / 255.0f;
  165. }
  166. void CRgbaColor::SetGreen(float g)
  167. {
  168.     m_Rgba[1] = (g > 1.0f) ? 1.0f : (g < 0.0f) ? 0.0f : g;
  169. }
  170. void CRgbaColor::SetGreen(unsigned char g)
  171. {
  172.     m_Rgba[1] = float(g) / 255.0f;
  173. }
  174. void CRgbaColor::SetBlue(float b)
  175. {
  176.     m_Rgba[2] = (b > 1.0f) ? 1.0f : (b < 0.0f) ? 0.0f : b;
  177. }
  178. void CRgbaColor::SetBlue(unsigned char b)
  179. {
  180.     m_Rgba[2] = float(b) / 255.0f;
  181. }
  182. void CRgbaColor::SetAlpha(float a)
  183. {
  184.     m_Rgba[3] = (a > 1.0f) ? 1.0f : (a < 0.0f) ? 0.0f : a;
  185. }
  186. void CRgbaColor::SetAlpha(unsigned char a)
  187. {
  188.     m_Rgba[3] = float(a) / 255.0f;
  189. }
  190. float CRgbaColor::GetRed(void) const
  191. {
  192.     return m_Rgba[0];
  193. }
  194. float CRgbaColor::GetGreen(void) const
  195. {
  196.     return m_Rgba[1];
  197. }
  198. float CRgbaColor::GetBlue(void) const
  199. {
  200.     return m_Rgba[2];
  201. }
  202. float CRgbaColor::GetAlpha(void) const
  203. {
  204.     return m_Rgba[3];
  205. }
  206. unsigned char CRgbaColor::GetRedUC(void) const
  207. {
  208.     return (unsigned char) (m_Rgba[0] * 255.0f);
  209. }
  210. unsigned char CRgbaColor::GetGreenUC(void) const
  211. {
  212.     return (unsigned char) (m_Rgba[1] * 255.0f);
  213. }
  214. unsigned char CRgbaColor::GetBlueUC(void) const
  215. {
  216.     return (unsigned char) (m_Rgba[2] * 255.0f);
  217. }
  218. unsigned char CRgbaColor::GetAlphaUC(void) const
  219. {
  220.     return (unsigned char) (m_Rgba[3] * 255.0f);
  221. }
  222. void CRgbaColor::PrintTo(CNcbiOstream& strm) const
  223. {
  224.     PrintTo(strm, true);
  225. }
  226. void CRgbaColor::PrintTo(CNcbiOstream& strm, bool printAlpha) const
  227. {
  228.     strm << ToString(printAlpha);
  229. }
  230. string CRgbaColor::ToString(bool printAlpha /* = true */) const
  231. {
  232.     CNcbiOstrstream oss;
  233.     oss << static_cast<unsigned>(GetRedUC()) << " " 
  234.         << static_cast<unsigned>(GetGreenUC()) << " " 
  235.         << static_cast<unsigned>(GetBlueUC());
  236.     if (printAlpha) {
  237.         oss << " " << static_cast<unsigned>(GetAlphaUC());
  238.     }
  239.     return CNcbiOstrstreamToString(oss);
  240. }
  241. void CRgbaColor::ScanFrom(const string& s)
  242. {
  243.     string myStr(s);
  244.     // look up if this is the name of a color ("blue").
  245.     string myColorStr(ColorStrFromName(myStr));
  246.     if ( ! myColorStr.empty()) {
  247.         myStr = myColorStr;
  248.     }
  249.     
  250.     list<string> toks;
  251.     NStr::Split(myStr, " ", toks);
  252.     list<string>::const_iterator iter = toks.begin();
  253.     
  254.     if (toks.size() >= 3) {
  255.         try {
  256.             SetRed(  static_cast<unsigned char>(NStr::StringToUInt(*iter++)));
  257.             SetGreen(static_cast<unsigned char>(NStr::StringToUInt(*iter++)));
  258.             SetBlue( static_cast<unsigned char>(NStr::StringToUInt(*iter++)));
  259.             if (toks.size() > 3) {
  260.                 SetAlpha(static_cast<unsigned char>(NStr::StringToUInt(*iter)));
  261.             } else {
  262.                 SetAlpha(1.0f);
  263.             }
  264.         }
  265.         catch (const CStringException& e) {
  266.             NCBI_THROW2(CStringException, eConvert, "String cannot be converted to a color [" + e.GetMsg() + "]", 0);
  267.         }
  268.     }
  269.     else {
  270.         NCBI_THROW2(CStringException, eConvert, "String cannot be converted to a color", 0);
  271.     }
  272. }
  273. const float* CRgbaColor::GetColorArray(void) const
  274. {
  275.     return m_Rgba;
  276. }
  277. CRgbaColor CRgbaColor::Interpolate(const CRgbaColor& color1,
  278.                                    const CRgbaColor& color2,
  279.                                    float alpha)
  280. {
  281.     _ASSERT(alpha >= 0  &&  alpha <= 1);
  282.     return (color1 * alpha + color2 * (1.0f - alpha));
  283. }
  284. void CRgbaColor::Lighten(float alpha)
  285. {
  286.     m_Rgba[0] = (m_Rgba[0] * (1.0f - alpha) + 1.0f * alpha);
  287.     m_Rgba[1] = (m_Rgba[1] * (1.0f - alpha) + 1.0f * alpha);
  288.     m_Rgba[2] = (m_Rgba[2] * (1.0f - alpha) + 1.0f * alpha);
  289. }
  290. void CRgbaColor::Darken(float alpha)
  291. {
  292.     m_Rgba[0] = (m_Rgba[0] * (1.0f - alpha) + 0.0f * alpha);
  293.     m_Rgba[1] = (m_Rgba[1] * (1.0f - alpha) + 0.0f * alpha);
  294.     m_Rgba[2] = (m_Rgba[2] * (1.0f - alpha) + 0.0f * alpha);
  295. }
  296. //
  297. // the actual color array - put here because of its length
  298. //
  299. typedef pair<const char*, const char*> TColorElem;
  300. static const TColorElem sc_ColorArray[] = {
  301.     TColorElem("alice blue", "240 248 255"),
  302.     TColorElem("aliceblue", "240 248 255"),
  303.     TColorElem("antique white", "250 235 215"),
  304.     TColorElem("antiquewhite", "250 235 215"),
  305.     TColorElem("antiquewhite1", "255 239 219"),
  306.     TColorElem("antiquewhite2", "238 223 204"),
  307.     TColorElem("antiquewhite3", "205 192 176"),
  308.     TColorElem("antiquewhite4", "139 131 120"),
  309.     TColorElem("aquamarine", "127 255 212"),
  310.     TColorElem("aquamarine1", "127 255 212"),
  311.     TColorElem("aquamarine2", "118 238 198"),
  312.     TColorElem("aquamarine3", "102 205 170"),
  313.     TColorElem("aquamarine4", "69 139 116"),
  314.     TColorElem("azure", "240 255 255"),
  315.     TColorElem("azure1", "240 255 255"),
  316.     TColorElem("azure2", "224 238 238"),
  317.     TColorElem("azure3", "193 205 205"),
  318.     TColorElem("azure4", "131 139 139"),
  319.     TColorElem("beige", "245 245 220"),
  320.     TColorElem("bisque", "255 228 196"),
  321.     TColorElem("bisque1", "255 228 196"),
  322.     TColorElem("bisque2", "238 213 183"),
  323.     TColorElem("bisque3", "205 183 158"),
  324.     TColorElem("bisque4", "139 125 107"),
  325.     TColorElem("black", "0 0 0"),
  326.     TColorElem("blanched almond", "255 235 205"),
  327.     TColorElem("blanchedalmond", "255 235 205"),
  328.     TColorElem("blue", "0 0 255"),
  329.     TColorElem("blue violet", "138 43 226"),
  330.     TColorElem("blue1", "0 0 255"),
  331.     TColorElem("blue2", "0 0 238"),
  332.     TColorElem("blue3", "0 0 205"),
  333.     TColorElem("blue4", "0 0 139"),
  334.     TColorElem("blueviolet", "138 43 226"),
  335.     TColorElem("brown", "165 42 42"),
  336.     TColorElem("brown1", "255 64 64"),
  337.     TColorElem("brown2", "238 59 59"),
  338.     TColorElem("brown3", "205 51 51"),
  339.     TColorElem("brown4", "139 35 35"),
  340.     TColorElem("burlywood", "222 184 135"),
  341.     TColorElem("burlywood1", "255 211 155"),
  342.     TColorElem("burlywood2", "238 197 145"),
  343.     TColorElem("burlywood3", "205 170 125"),
  344.     TColorElem("burlywood4", "139 115 85"),
  345.     TColorElem("cadet blue", "95 158 160"),
  346.     TColorElem("cadetblue", "95 158 160"),
  347.     TColorElem("cadetblue1", "152 245 255"),
  348.     TColorElem("cadetblue2", "142 229 238"),
  349.     TColorElem("cadetblue3", "122 197 205"),
  350.     TColorElem("cadetblue4", "83 134 139"),
  351.     TColorElem("chartreuse", "127 255 0"),
  352.     TColorElem("chartreuse1", "127 255 0"),
  353.     TColorElem("chartreuse2", "118 238 0"),
  354.     TColorElem("chartreuse3", "102 205 0"),
  355.     TColorElem("chartreuse4", "69 139 0"),
  356.     TColorElem("chocolate", "210 105 30"),
  357.     TColorElem("chocolate1", "255 127 36"),
  358.     TColorElem("chocolate2", "238 118 33"),
  359.     TColorElem("chocolate3", "205 102 29"),
  360.     TColorElem("chocolate4", "139 69 19"),
  361.     TColorElem("coral", "255 127 80"),
  362.     TColorElem("coral1", "255 114 86"),
  363.     TColorElem("coral2", "238 106 80"),
  364.     TColorElem("coral3", "205 91 69"),
  365.     TColorElem("coral4", "139 62 47"),
  366.     TColorElem("cornflower blue", "100 149 237"),
  367.     TColorElem("cornflowerblue", "100 149 237"),
  368.     TColorElem("cornsilk", "255 248 220"),
  369.     TColorElem("cornsilk1", "255 248 220"),
  370.     TColorElem("cornsilk2", "238 232 205"),
  371.     TColorElem("cornsilk3", "205 200 177"),
  372.     TColorElem("cornsilk4", "139 136 120"),
  373.     TColorElem("cyan", "0 255 255"),
  374.     TColorElem("cyan1", "0 255 255"),
  375.     TColorElem("cyan2", "0 238 238"),
  376.     TColorElem("cyan3", "0 205 205"),
  377.     TColorElem("cyan4", "0 139 139"),
  378.     TColorElem("dark blue", "0 0 139"),
  379.     TColorElem("dark cyan", "0 139 139"),
  380.     TColorElem("dark goldenrod", "184 134 11"),
  381.     TColorElem("dark gray", "169 169 169"),
  382.     TColorElem("dark green", "0 100 0"),
  383.     TColorElem("dark grey", "169 169 169"),
  384.     TColorElem("dark khaki", "189 183 107"),
  385.     TColorElem("dark magenta", "139 0 139"),
  386.     TColorElem("dark olive green", "85 107 47"),
  387.     TColorElem("dark orange", "255 140 0"),
  388.     TColorElem("dark orchid", "153 50 204"),
  389.     TColorElem("dark red", "139 0 0"),
  390.     TColorElem("dark salmon", "233 150 122"),
  391.     TColorElem("dark sea green", "143 188 143"),
  392.     TColorElem("dark slate blue", "72 61 139"),
  393.     TColorElem("dark slate gray", "47 79 79"),
  394.     TColorElem("dark slate grey", "47 79 79"),
  395.     TColorElem("dark turquoise", "0 206 209"),
  396.     TColorElem("dark violet", "148 0 211"),
  397.     TColorElem("darkblue", "0 0 139"),
  398.     TColorElem("darkcyan", "0 139 139"),
  399.     TColorElem("darkgoldenrod", "184 134 11"),
  400.     TColorElem("darkgoldenrod1", "255 185 15"),
  401.     TColorElem("darkgoldenrod2", "238 173 14"),
  402.     TColorElem("darkgoldenrod3", "205 149 12"),
  403.     TColorElem("darkgoldenrod4", "139 101 8"),
  404.     TColorElem("darkgray", "169 169 169"),
  405.     TColorElem("darkgreen", "0 100 0"),
  406.     TColorElem("darkgrey", "169 169 169"),
  407.     TColorElem("darkkhaki", "189 183 107"),
  408.     TColorElem("darkmagenta", "139 0 139"),
  409.     TColorElem("darkolivegreen", "85 107 47"),
  410.     TColorElem("darkolivegreen1", "202 255 112"),
  411.     TColorElem("darkolivegreen2", "188 238 104"),
  412.     TColorElem("darkolivegreen3", "162 205 90"),
  413.     TColorElem("darkolivegreen4", "110 139 61"),
  414.     TColorElem("darkorange", "255 140 0"),
  415.     TColorElem("darkorange1", "255 127 0"),
  416.     TColorElem("darkorange2", "238 118 0"),
  417.     TColorElem("darkorange3", "205 102 0"),
  418.     TColorElem("darkorange4", "139 69 0"),
  419.     TColorElem("darkorchid", "153 50 204"),
  420.     TColorElem("darkorchid1", "191 62 255"),
  421.     TColorElem("darkorchid2", "178 58 238"),
  422.     TColorElem("darkorchid3", "154 50 205"),
  423.     TColorElem("darkorchid4", "104 34 139"),
  424.     TColorElem("darkred", "139 0 0"),
  425.     TColorElem("darksalmon", "233 150 122"),
  426.     TColorElem("darkseagreen", "143 188 143"),
  427.     TColorElem("darkseagreen1", "193 255 193"),
  428.     TColorElem("darkseagreen2", "180 238 180"),
  429.     TColorElem("darkseagreen3", "155 205 155"),
  430.     TColorElem("darkseagreen4", "105 139 105"),
  431.     TColorElem("darkslateblue", "72 61 139"),
  432.     TColorElem("darkslategray", "47 79 79"),
  433.     TColorElem("darkslategray1", "151 255 255"),
  434.     TColorElem("darkslategray2", "141 238 238"),
  435.     TColorElem("darkslategray3", "121 205 205"),
  436.     TColorElem("darkslategray4", "82 139 139"),
  437.     TColorElem("darkslategrey", "47 79 79"),
  438.     TColorElem("darkturquoise", "0 206 209"),
  439.     TColorElem("darkviolet", "148 0 211"),
  440.     TColorElem("deep pink", "255 20 147"),
  441.     TColorElem("deep sky blue", "0 191 255"),
  442.     TColorElem("deeppink", "255 20 147"),
  443.     TColorElem("deeppink1", "255 20 147"),
  444.     TColorElem("deeppink2", "238 18 137"),
  445.     TColorElem("deeppink3", "205 16 118"),
  446.     TColorElem("deeppink4", "139 10 80"),
  447.     TColorElem("deepskyblue", "0 191 255"),
  448.     TColorElem("deepskyblue1", "0 191 255"),
  449.     TColorElem("deepskyblue2", "0 178 238"),
  450.     TColorElem("deepskyblue3", "0 154 205"),
  451.     TColorElem("deepskyblue4", "0 104 139"),
  452.     TColorElem("dim gray", "105 105 105"),
  453.     TColorElem("dim grey", "105 105 105"),
  454.     TColorElem("dimgray", "105 105 105"),
  455.     TColorElem("dimgrey", "105 105 105"),
  456.     TColorElem("dodger blue", "30 144 255"),
  457.     TColorElem("dodgerblue", "30 144 255"),
  458.     TColorElem("dodgerblue1", "30 144 255"),
  459.     TColorElem("dodgerblue2", "28 134 238"),
  460.     TColorElem("dodgerblue3", "24 116 205"),
  461.     TColorElem("dodgerblue4", "16 78 139"),
  462.     TColorElem("firebrick", "178 34 34"),
  463.     TColorElem("firebrick1", "255 48 48"),
  464.     TColorElem("firebrick2", "238 44 44"),
  465.     TColorElem("firebrick3", "205 38 38"),
  466.     TColorElem("firebrick4", "139 26 26"),
  467.     TColorElem("floral white", "255 250 240"),
  468.     TColorElem("floralwhite", "255 250 240"),
  469.     TColorElem("forest green", "34 139 34"),
  470.     TColorElem("forestgreen", "34 139 34"),
  471.     TColorElem("gainsboro", "220 220 220"),
  472.     TColorElem("ghost white", "248 248 255"),
  473.     TColorElem("ghostwhite", "248 248 255"),
  474.     TColorElem("gold", "255 215 0"),
  475.     TColorElem("gold1", "255 215 0"),
  476.     TColorElem("gold2", "238 201 0"),
  477.     TColorElem("gold3", "205 173 0"),
  478.     TColorElem("gold4", "139 117 0"),
  479.     TColorElem("goldenrod", "218 165 32"),
  480.     TColorElem("goldenrod1", "255 193 37"),
  481.     TColorElem("goldenrod2", "238 180 34"),
  482.     TColorElem("goldenrod3", "205 155 29"),
  483.     TColorElem("goldenrod4", "139 105 20"),
  484.     TColorElem("gray", "190 190 190"),
  485.     TColorElem("gray0", "0 0 0"),
  486.     TColorElem("gray1", "3 3 3"),
  487.     TColorElem("gray10", "26 26 26"),
  488.     TColorElem("gray100", "255 255 255"),
  489.     TColorElem("gray11", "28 28 28"),
  490.     TColorElem("gray12", "31 31 31"),
  491.     TColorElem("gray13", "33 33 33"),
  492.     TColorElem("gray14", "36 36 36"),
  493.     TColorElem("gray15", "38 38 38"),
  494.     TColorElem("gray16", "41 41 41"),
  495.     TColorElem("gray17", "43 43 43"),
  496.     TColorElem("gray18", "46 46 46"),
  497.     TColorElem("gray19", "48 48 48"),
  498.     TColorElem("gray2", "5 5 5"),
  499.     TColorElem("gray20", "51 51 51"),
  500.     TColorElem("gray21", "54 54 54"),
  501.     TColorElem("gray22", "56 56 56"),
  502.     TColorElem("gray23", "59 59 59"),
  503.     TColorElem("gray24", "61 61 61"),
  504.     TColorElem("gray25", "64 64 64"),
  505.     TColorElem("gray26", "66 66 66"),
  506.     TColorElem("gray27", "69 69 69"),
  507.     TColorElem("gray28", "71 71 71"),
  508.     TColorElem("gray29", "74 74 74"),
  509.     TColorElem("gray3", "8 8 8"),
  510.     TColorElem("gray30", "77 77 77"),
  511.     TColorElem("gray31", "79 79 79"),
  512.     TColorElem("gray32", "82 82 82"),
  513.     TColorElem("gray33", "84 84 84"),
  514.     TColorElem("gray34", "87 87 87"),
  515.     TColorElem("gray35", "89 89 89"),
  516.     TColorElem("gray36", "92 92 92"),
  517.     TColorElem("gray37", "94 94 94"),
  518.     TColorElem("gray38", "97 97 97"),
  519.     TColorElem("gray39", "99 99 99"),
  520.     TColorElem("gray4", "10 10 10"),
  521.     TColorElem("gray40", "102 102 102"),
  522.     TColorElem("gray41", "105 105 105"),
  523.     TColorElem("gray42", "107 107 107"),
  524.     TColorElem("gray43", "110 110 110"),
  525.     TColorElem("gray44", "112 112 112"),
  526.     TColorElem("gray45", "115 115 115"),
  527.     TColorElem("gray46", "117 117 117"),
  528.     TColorElem("gray47", "120 120 120"),
  529.     TColorElem("gray48", "122 122 122"),
  530.     TColorElem("gray49", "125 125 125"),
  531.     TColorElem("gray5", "13 13 13"),
  532.     TColorElem("gray50", "127 127 127"),
  533.     TColorElem("gray51", "130 130 130"),
  534.     TColorElem("gray52", "133 133 133"),
  535.     TColorElem("gray53", "135 135 135"),
  536.     TColorElem("gray54", "138 138 138"),
  537.     TColorElem("gray55", "140 140 140"),
  538.     TColorElem("gray56", "143 143 143"),
  539.     TColorElem("gray57", "145 145 145"),
  540.     TColorElem("gray58", "148 148 148"),
  541.     TColorElem("gray59", "150 150 150"),
  542.     TColorElem("gray6", "15 15 15"),
  543.     TColorElem("gray60", "153 153 153"),
  544.     TColorElem("gray61", "156 156 156"),
  545.     TColorElem("gray62", "158 158 158"),
  546.     TColorElem("gray63", "161 161 161"),
  547.     TColorElem("gray64", "163 163 163"),
  548.     TColorElem("gray65", "166 166 166"),
  549.     TColorElem("gray66", "168 168 168"),
  550.     TColorElem("gray67", "171 171 171"),
  551.     TColorElem("gray68", "173 173 173"),
  552.     TColorElem("gray69", "176 176 176"),
  553.     TColorElem("gray7", "18 18 18"),
  554.     TColorElem("gray70", "179 179 179"),
  555.     TColorElem("gray71", "181 181 181"),
  556.     TColorElem("gray72", "184 184 184"),
  557.     TColorElem("gray73", "186 186 186"),
  558.     TColorElem("gray74", "189 189 189"),
  559.     TColorElem("gray75", "191 191 191"),
  560.     TColorElem("gray76", "194 194 194"),
  561.     TColorElem("gray77", "196 196 196"),
  562.     TColorElem("gray78", "199 199 199"),
  563.     TColorElem("gray79", "201 201 201"),
  564.     TColorElem("gray8", "20 20 20"),
  565.     TColorElem("gray80", "204 204 204"),
  566.     TColorElem("gray81", "207 207 207"),
  567.     TColorElem("gray82", "209 209 209"),
  568.     TColorElem("gray83", "212 212 212"),
  569.     TColorElem("gray84", "214 214 214"),
  570.     TColorElem("gray85", "217 217 217"),
  571.     TColorElem("gray86", "219 219 219"),
  572.     TColorElem("gray87", "222 222 222"),
  573.     TColorElem("gray88", "224 224 224"),
  574.     TColorElem("gray89", "227 227 227"),
  575.     TColorElem("gray9", "23 23 23"),
  576.     TColorElem("gray90", "229 229 229"),
  577.     TColorElem("gray91", "232 232 232"),
  578.     TColorElem("gray92", "235 235 235"),
  579.     TColorElem("gray93", "237 237 237"),
  580.     TColorElem("gray94", "240 240 240"),
  581.     TColorElem("gray95", "242 242 242"),
  582.     TColorElem("gray96", "245 245 245"),
  583.     TColorElem("gray97", "247 247 247"),
  584.     TColorElem("gray98", "250 250 250"),
  585.     TColorElem("gray99", "252 252 252"),
  586.     TColorElem("green", "0 255 0"),
  587.     TColorElem("green yellow", "173 255 47"),
  588.     TColorElem("green1", "0 255 0"),
  589.     TColorElem("green2", "0 238 0"),
  590.     TColorElem("green3", "0 205 0"),
  591.     TColorElem("green4", "0 139 0"),
  592.     TColorElem("greenyellow", "173 255 47"),
  593.     TColorElem("grey", "190 190 190"),
  594.     TColorElem("grey0", "0 0 0"),
  595.     TColorElem("grey1", "3 3 3"),
  596.     TColorElem("grey10", "26 26 26"),
  597.     TColorElem("grey100", "255 255 255"),
  598.     TColorElem("grey11", "28 28 28"),
  599.     TColorElem("grey12", "31 31 31"),
  600.     TColorElem("grey13", "33 33 33"),
  601.     TColorElem("grey14", "36 36 36"),
  602.     TColorElem("grey15", "38 38 38"),
  603.     TColorElem("grey16", "41 41 41"),
  604.     TColorElem("grey17", "43 43 43"),
  605.     TColorElem("grey18", "46 46 46"),
  606.     TColorElem("grey19", "48 48 48"),
  607.     TColorElem("grey2", "5 5 5"),
  608.     TColorElem("grey20", "51 51 51"),
  609.     TColorElem("grey21", "54 54 54"),
  610.     TColorElem("grey22", "56 56 56"),
  611.     TColorElem("grey23", "59 59 59"),
  612.     TColorElem("grey24", "61 61 61"),
  613.     TColorElem("grey25", "64 64 64"),
  614.     TColorElem("grey26", "66 66 66"),
  615.     TColorElem("grey27", "69 69 69"),
  616.     TColorElem("grey28", "71 71 71"),
  617.     TColorElem("grey29", "74 74 74"),
  618.     TColorElem("grey3", "8 8 8"),
  619.     TColorElem("grey30", "77 77 77"),
  620.     TColorElem("grey31", "79 79 79"),
  621.     TColorElem("grey32", "82 82 82"),
  622.     TColorElem("grey33", "84 84 84"),
  623.     TColorElem("grey34", "87 87 87"),
  624.     TColorElem("grey35", "89 89 89"),
  625.     TColorElem("grey36", "92 92 92"),
  626.     TColorElem("grey37", "94 94 94"),
  627.     TColorElem("grey38", "97 97 97"),
  628.     TColorElem("grey39", "99 99 99"),
  629.     TColorElem("grey4", "10 10 10"),
  630.     TColorElem("grey40", "102 102 102"),
  631.     TColorElem("grey41", "105 105 105"),
  632.     TColorElem("grey42", "107 107 107"),
  633.     TColorElem("grey43", "110 110 110"),
  634.     TColorElem("grey44", "112 112 112"),
  635.     TColorElem("grey45", "115 115 115"),
  636.     TColorElem("grey46", "117 117 117"),
  637.     TColorElem("grey47", "120 120 120"),
  638.     TColorElem("grey48", "122 122 122"),
  639.     TColorElem("grey49", "125 125 125"),
  640.     TColorElem("grey5", "13 13 13"),
  641.     TColorElem("grey50", "127 127 127"),
  642.     TColorElem("grey51", "130 130 130"),
  643.     TColorElem("grey52", "133 133 133"),
  644.     TColorElem("grey53", "135 135 135"),
  645.     TColorElem("grey54", "138 138 138"),
  646.     TColorElem("grey55", "140 140 140"),
  647.     TColorElem("grey56", "143 143 143"),
  648.     TColorElem("grey57", "145 145 145"),
  649.     TColorElem("grey58", "148 148 148"),
  650.     TColorElem("grey59", "150 150 150"),
  651.     TColorElem("grey6", "15 15 15"),
  652.     TColorElem("grey60", "153 153 153"),
  653.     TColorElem("grey61", "156 156 156"),
  654.     TColorElem("grey62", "158 158 158"),
  655.     TColorElem("grey63", "161 161 161"),
  656.     TColorElem("grey64", "163 163 163"),
  657.     TColorElem("grey65", "166 166 166"),
  658.     TColorElem("grey66", "168 168 168"),
  659.     TColorElem("grey67", "171 171 171"),
  660.     TColorElem("grey68", "173 173 173"),
  661.     TColorElem("grey69", "176 176 176"),
  662.     TColorElem("grey7", "18 18 18"),
  663.     TColorElem("grey70", "179 179 179"),
  664.     TColorElem("grey71", "181 181 181"),
  665.     TColorElem("grey72", "184 184 184"),
  666.     TColorElem("grey73", "186 186 186"),
  667.     TColorElem("grey74", "189 189 189"),
  668.     TColorElem("grey75", "191 191 191"),
  669.     TColorElem("grey76", "194 194 194"),
  670.     TColorElem("grey77", "196 196 196"),
  671.     TColorElem("grey78", "199 199 199"),
  672.     TColorElem("grey79", "201 201 201"),
  673.     TColorElem("grey8", "20 20 20"),
  674.     TColorElem("grey80", "204 204 204"),
  675.     TColorElem("grey81", "207 207 207"),
  676.     TColorElem("grey82", "209 209 209"),
  677.     TColorElem("grey83", "212 212 212"),
  678.     TColorElem("grey84", "214 214 214"),
  679.     TColorElem("grey85", "217 217 217"),
  680.     TColorElem("grey86", "219 219 219"),
  681.     TColorElem("grey87", "222 222 222"),
  682.     TColorElem("grey88", "224 224 224"),
  683.     TColorElem("grey89", "227 227 227"),
  684.     TColorElem("grey9", "23 23 23"),
  685.     TColorElem("grey90", "229 229 229"),
  686.     TColorElem("grey91", "232 232 232"),
  687.     TColorElem("grey92", "235 235 235"),
  688.     TColorElem("grey93", "237 237 237"),
  689.     TColorElem("grey94", "240 240 240"),
  690.     TColorElem("grey95", "242 242 242"),
  691.     TColorElem("grey96", "245 245 245"),
  692.     TColorElem("grey97", "247 247 247"),
  693.     TColorElem("grey98", "250 250 250"),
  694.     TColorElem("grey99", "252 252 252"),
  695.     TColorElem("honeydew", "240 255 240"),
  696.     TColorElem("honeydew1", "240 255 240"),
  697.     TColorElem("honeydew2", "224 238 224"),
  698.     TColorElem("honeydew3", "193 205 193"),
  699.     TColorElem("honeydew4", "131 139 131"),
  700.     TColorElem("hot pink", "255 105 180"),
  701.     TColorElem("hotpink", "255 105 180"),
  702.     TColorElem("hotpink1", "255 110 180"),
  703.     TColorElem("hotpink2", "238 106 167"),
  704.     TColorElem("hotpink3", "205 96 144"),
  705.     TColorElem("hotpink4", "139 58 98"),
  706.     TColorElem("indian red", "205 92 92"),
  707.     TColorElem("indianred", "205 92 92"),
  708.     TColorElem("indianred1", "255 106 106"),
  709.     TColorElem("indianred2", "238 99 99"),
  710.     TColorElem("indianred3", "205 85 85"),
  711.     TColorElem("indianred4", "139 58 58"),
  712.     TColorElem("ivory", "255 255 240"),
  713.     TColorElem("ivory1", "255 255 240"),
  714.     TColorElem("ivory2", "238 238 224"),
  715.     TColorElem("ivory3", "205 205 193"),
  716.     TColorElem("ivory4", "139 139 131"),
  717.     TColorElem("khaki", "240 230 140"),
  718.     TColorElem("khaki1", "255 246 143"),
  719.     TColorElem("khaki2", "238 230 133"),
  720.     TColorElem("khaki3", "205 198 115"),
  721.     TColorElem("khaki4", "139 134 78"),
  722.     TColorElem("lavender", "230 230 250"),
  723.     TColorElem("lavender blush", "255 240 245"),
  724.     TColorElem("lavenderblush", "255 240 245"),
  725.     TColorElem("lavenderblush1", "255 240 245"),
  726.     TColorElem("lavenderblush2", "238 224 229"),
  727.     TColorElem("lavenderblush3", "205 193 197"),
  728.     TColorElem("lavenderblush4", "139 131 134"),
  729.     TColorElem("lawn green", "124 252 0"),
  730.     TColorElem("lawngreen", "124 252 0"),
  731.     TColorElem("lemon chiffon", "255 250 205"),
  732.     TColorElem("lemonchiffon", "255 250 205"),
  733.     TColorElem("lemonchiffon1", "255 250 205"),
  734.     TColorElem("lemonchiffon2", "238 233 191"),
  735.     TColorElem("lemonchiffon3", "205 201 165"),
  736.     TColorElem("lemonchiffon4", "139 137 112"),
  737.     TColorElem("light blue", "173 216 230"),
  738.     TColorElem("light coral", "240 128 128"),
  739.     TColorElem("light cyan", "224 255 255"),
  740.     TColorElem("light goldenrod", "238 221 130"),
  741.     TColorElem("light goldenrod yellow", "250 250 210"),
  742.     TColorElem("light gray", "211 211 211"),
  743.     TColorElem("light green", "144 238 144"),
  744.     TColorElem("light grey", "211 211 211"),
  745.     TColorElem("light pink", "255 182 193"),
  746.     TColorElem("light salmon", "255 160 122"),
  747.     TColorElem("light sea green", "32 178 170"),
  748.     TColorElem("light sky blue", "135 206 250"),
  749.     TColorElem("light slate blue", "132 112 255"),
  750.     TColorElem("light slate gray", "119 136 153"),
  751.     TColorElem("light slate grey", "119 136 153"),
  752.     TColorElem("light steel blue", "176 196 222"),
  753.     TColorElem("light yellow", "255 255 224"),
  754.     TColorElem("lightblue", "173 216 230"),
  755.     TColorElem("lightblue1", "191 239 255"),
  756.     TColorElem("lightblue2", "178 223 238"),
  757.     TColorElem("lightblue3", "154 192 205"),
  758.     TColorElem("lightblue4", "104 131 139"),
  759.     TColorElem("lightcoral", "240 128 128"),
  760.     TColorElem("lightcyan", "224 255 255"),
  761.     TColorElem("lightcyan1", "224 255 255"),
  762.     TColorElem("lightcyan2", "209 238 238"),
  763.     TColorElem("lightcyan3", "180 205 205"),
  764.     TColorElem("lightcyan4", "122 139 139"),
  765.     TColorElem("lightgoldenrod", "238 221 130"),
  766.     TColorElem("lightgoldenrod1", "255 236 139"),
  767.     TColorElem("lightgoldenrod2", "238 220 130"),
  768.     TColorElem("lightgoldenrod3", "205 190 112"),
  769.     TColorElem("lightgoldenrod4", "139 129 76"),
  770.     TColorElem("lightgoldenrodyellow", "250 250 210"),
  771.     TColorElem("lightgray", "211 211 211"),
  772.     TColorElem("lightgreen", "144 238 144"),
  773.     TColorElem("lightgrey", "211 211 211"),
  774.     TColorElem("lightpink", "255 182 193"),
  775.     TColorElem("lightpink1", "255 174 185"),
  776.     TColorElem("lightpink2", "238 162 173"),
  777.     TColorElem("lightpink3", "205 140 149"),
  778.     TColorElem("lightpink4", "139 95 101"),
  779.     TColorElem("lightsalmon", "255 160 122"),
  780.     TColorElem("lightsalmon1", "255 160 122"),
  781.     TColorElem("lightsalmon2", "238 149 114"),
  782.     TColorElem("lightsalmon3", "205 129 98"),
  783.     TColorElem("lightsalmon4", "139 87 66"),
  784.     TColorElem("lightseagreen", "32 178 170"),
  785.     TColorElem("lightskyblue", "135 206 250"),
  786.     TColorElem("lightskyblue1", "176 226 255"),
  787.     TColorElem("lightskyblue2", "164 211 238"),
  788.     TColorElem("lightskyblue3", "141 182 205"),
  789.     TColorElem("lightskyblue4", "96 123 139"),
  790.     TColorElem("lightslateblue", "132 112 255"),
  791.     TColorElem("lightslategray", "119 136 153"),
  792.     TColorElem("lightslategrey", "119 136 153"),
  793.     TColorElem("lightsteelblue", "176 196 222"),
  794.     TColorElem("lightsteelblue1", "202 225 255"),
  795.     TColorElem("lightsteelblue2", "188 210 238"),
  796.     TColorElem("lightsteelblue3", "162 181 205"),
  797.     TColorElem("lightsteelblue4", "110 123 139"),
  798.     TColorElem("lightyellow", "255 255 224"),
  799.     TColorElem("lightyellow1", "255 255 224"),
  800.     TColorElem("lightyellow2", "238 238 209"),
  801.     TColorElem("lightyellow3", "205 205 180"),
  802.     TColorElem("lightyellow4", "139 139 122"),
  803.     TColorElem("lime green", "50 205 50"),
  804.     TColorElem("limegreen", "50 205 50"),
  805.     TColorElem("linen", "250 240 230"),
  806.     TColorElem("magenta", "255 0 255"),
  807.     TColorElem("magenta1", "255 0 255"),
  808.     TColorElem("magenta2", "238 0 238"),
  809.     TColorElem("magenta3", "205 0 205"),
  810.     TColorElem("magenta4", "139 0 139"),
  811.     TColorElem("maroon", "176 48 96"),
  812.     TColorElem("maroon1", "255 52 179"),
  813.     TColorElem("maroon2", "238 48 167"),
  814.     TColorElem("maroon3", "205 41 144"),
  815.     TColorElem("maroon4", "139 28 98"),
  816.     TColorElem("medium aquamarine", "102 205 170"),
  817.     TColorElem("medium blue", "0 0 205"),
  818.     TColorElem("medium orchid", "186 85 211"),
  819.     TColorElem("medium purple", "147 112 219"),
  820.     TColorElem("medium sea green", "60 179 113"),
  821.     TColorElem("medium slate blue", "123 104 238"),
  822.     TColorElem("medium spring green", "0 250 154"),
  823.     TColorElem("medium turquoise", "72 209 204"),
  824.     TColorElem("medium violet red", "199 21 133"),
  825.     TColorElem("mediumaquamarine", "102 205 170"),
  826.     TColorElem("mediumblue", "0 0 205"),
  827.     TColorElem("mediumorchid", "186 85 211"),
  828.     TColorElem("mediumorchid1", "224 102 255"),
  829.     TColorElem("mediumorchid2", "209 95 238"),
  830.     TColorElem("mediumorchid3", "180 82 205"),
  831.     TColorElem("mediumorchid4", "122 55 139"),
  832.     TColorElem("mediumpurple", "147 112 219"),
  833.     TColorElem("mediumpurple1", "171 130 255"),
  834.     TColorElem("mediumpurple2", "159 121 238"),
  835.     TColorElem("mediumpurple3", "137 104 205"),
  836.     TColorElem("mediumpurple4", "93 71 139"),
  837.     TColorElem("mediumseagreen", "60 179 113"),
  838.     TColorElem("mediumslateblue", "123 104 238"),
  839.     TColorElem("mediumspringgreen", "0 250 154"),
  840.     TColorElem("mediumturquoise", "72 209 204"),
  841.     TColorElem("mediumvioletred", "199 21 133"),
  842.     TColorElem("midnight blue", "25 25 112"),
  843.     TColorElem("midnightblue", "25 25 112"),
  844.     TColorElem("mint cream", "245 255 250"),
  845.     TColorElem("mintcream", "245 255 250"),
  846.     TColorElem("misty rose", "255 228 225"),
  847.     TColorElem("mistyrose", "255 228 225"),
  848.     TColorElem("mistyrose1", "255 228 225"),
  849.     TColorElem("mistyrose2", "238 213 210"),
  850.     TColorElem("mistyrose3", "205 183 181"),
  851.     TColorElem("mistyrose4", "139 125 123"),
  852.     TColorElem("moccasin", "255 228 181"),
  853.     TColorElem("navajo white", "255 222 173"),
  854.     TColorElem("navajowhite", "255 222 173"),
  855.     TColorElem("navajowhite1", "255 222 173"),
  856.     TColorElem("navajowhite2", "238 207 161"),
  857.     TColorElem("navajowhite3", "205 179 139"),
  858.     TColorElem("navajowhite4", "139 121 94"),
  859.     TColorElem("navy", "0 0 128"),
  860.     TColorElem("navy blue", "0 0 128"),
  861.     TColorElem("navyblue", "0 0 128"),
  862.     TColorElem("old lace", "253 245 230"),
  863.     TColorElem("oldlace", "253 245 230"),
  864.     TColorElem("olive drab", "107 142 35"),
  865.     TColorElem("olivedrab", "107 142 35"),
  866.     TColorElem("olivedrab1", "192 255 62"),
  867.     TColorElem("olivedrab2", "179 238 58"),
  868.     TColorElem("olivedrab3", "154 205 50"),
  869.     TColorElem("olivedrab4", "105 139 34"),
  870.     TColorElem("orange", "255 165 0"),
  871.     TColorElem("orange red", "255 69 0"),
  872.     TColorElem("orange1", "255 165 0"),
  873.     TColorElem("orange2", "238 154 0"),
  874.     TColorElem("orange3", "205 133 0"),
  875.     TColorElem("orange4", "139 90 0"),
  876.     TColorElem("orangered", "255 69 0"),
  877.     TColorElem("orangered1", "255 69 0"),
  878.     TColorElem("orangered2", "238 64 0"),
  879.     TColorElem("orangered3", "205 55 0"),
  880.     TColorElem("orangered4", "139 37 0"),
  881.     TColorElem("orchid", "218 112 214"),
  882.     TColorElem("orchid1", "255 131 250"),
  883.     TColorElem("orchid2", "238 122 233"),
  884.     TColorElem("orchid3", "205 105 201"),
  885.     TColorElem("orchid4", "139 71 137"),
  886.     TColorElem("pale goldenrod", "238 232 170"),
  887.     TColorElem("pale green", "152 251 152"),
  888.     TColorElem("pale turquoise", "175 238 238"),
  889.     TColorElem("pale violet red", "219 112 147"),
  890.     TColorElem("palegoldenrod", "238 232 170"),
  891.     TColorElem("palegreen", "152 251 152"),
  892.     TColorElem("palegreen1", "154 255 154"),
  893.     TColorElem("palegreen2", "144 238 144"),
  894.     TColorElem("palegreen3", "124 205 124"),
  895.     TColorElem("palegreen4", "84 139 84"),
  896.     TColorElem("paleturquoise", "175 238 238"),
  897.     TColorElem("paleturquoise1", "187 255 255"),
  898.     TColorElem("paleturquoise2", "174 238 238"),
  899.     TColorElem("paleturquoise3", "150 205 205"),
  900.     TColorElem("paleturquoise4", "102 139 139"),
  901.     TColorElem("palevioletred", "219 112 147"),
  902.     TColorElem("palevioletred1", "255 130 171"),
  903.     TColorElem("palevioletred2", "238 121 159"),
  904.     TColorElem("palevioletred3", "205 104 137"),
  905.     TColorElem("palevioletred4", "139 71 93"),
  906.     TColorElem("papaya whip", "255 239 213"),
  907.     TColorElem("papayawhip", "255 239 213"),
  908.     TColorElem("peach puff", "255 218 185"),
  909.     TColorElem("peachpuff", "255 218 185"),
  910.     TColorElem("peachpuff1", "255 218 185"),
  911.     TColorElem("peachpuff2", "238 203 173"),
  912.     TColorElem("peachpuff3", "205 175 149"),
  913.     TColorElem("peachpuff4", "139 119 101"),
  914.     TColorElem("peru", "205 133 63"),
  915.     TColorElem("pink", "255 192 203"),
  916.     TColorElem("pink1", "255 181 197"),
  917.     TColorElem("pink2", "238 169 184"),
  918.     TColorElem("pink3", "205 145 158"),
  919.     TColorElem("pink4", "139 99 108"),
  920.     TColorElem("plum", "221 160 221"),
  921.     TColorElem("plum1", "255 187 255"),
  922.     TColorElem("plum2", "238 174 238"),
  923.     TColorElem("plum3", "205 150 205"),
  924.     TColorElem("plum4", "139 102 139"),
  925.     TColorElem("powder blue", "176 224 230"),
  926.     TColorElem("powderblue", "176 224 230"),
  927.     TColorElem("purple", "160 32 240"),
  928.     TColorElem("purple1", "155 48 255"),
  929.     TColorElem("purple2", "145 44 238"),
  930.     TColorElem("purple3", "125 38 205"),
  931.     TColorElem("purple4", "85 26 139"),
  932.     TColorElem("red", "255 0 0"),
  933.     TColorElem("red1", "255 0 0"),
  934.     TColorElem("red2", "238 0 0"),
  935.     TColorElem("red3", "205 0 0"),
  936.     TColorElem("red4", "139 0 0"),
  937.     TColorElem("rosy brown", "188 143 143"),
  938.     TColorElem("rosybrown", "188 143 143"),
  939.     TColorElem("rosybrown1", "255 193 193"),
  940.     TColorElem("rosybrown2", "238 180 180"),
  941.     TColorElem("rosybrown3", "205 155 155"),
  942.     TColorElem("rosybrown4", "139 105 105"),
  943.     TColorElem("royal blue", "65 105 225"),
  944.     TColorElem("royalblue", "65 105 225"),
  945.     TColorElem("royalblue1", "72 118 255"),
  946.     TColorElem("royalblue2", "67 110 238"),
  947.     TColorElem("royalblue3", "58 95 205"),
  948.     TColorElem("royalblue4", "39 64 139"),
  949.     TColorElem("saddle brown", "139 69 19"),
  950.     TColorElem("saddlebrown", "139 69 19"),
  951.     TColorElem("salmon", "250 128 114"),
  952.     TColorElem("salmon1", "255 140 105"),
  953.     TColorElem("salmon2", "238 130 98"),
  954.     TColorElem("salmon3", "205 112 84"),
  955.     TColorElem("salmon4", "139 76 57"),
  956.     TColorElem("sandy brown", "244 164 96"),
  957.     TColorElem("sandybrown", "244 164 96"),
  958.     TColorElem("sea green", "46 139 87"),
  959.     TColorElem("seagreen", "46 139 87"),
  960.     TColorElem("seagreen1", "84 255 159"),
  961.     TColorElem("seagreen2", "78 238 148"),
  962.     TColorElem("seagreen3", "67 205 128"),
  963.     TColorElem("seagreen4", "46 139 87"),
  964.     TColorElem("seashell", "255 245 238"),
  965.     TColorElem("seashell1", "255 245 238"),
  966.     TColorElem("seashell2", "238 229 222"),
  967.     TColorElem("seashell3", "205 197 191"),
  968.     TColorElem("seashell4", "139 134 130"),
  969.     TColorElem("sienna", "160 82 45"),
  970.     TColorElem("sienna1", "255 130 71"),
  971.     TColorElem("sienna2", "238 121 66"),
  972.     TColorElem("sienna3", "205 104 57"),
  973.     TColorElem("sienna4", "139 71 38"),
  974.     TColorElem("sky blue", "135 206 235"),
  975.     TColorElem("skyblue", "135 206 235"),
  976.     TColorElem("skyblue1", "135 206 255"),
  977.     TColorElem("skyblue2", "126 192 238"),
  978.     TColorElem("skyblue3", "108 166 205"),
  979.     TColorElem("skyblue4", "74 112 139"),
  980.     TColorElem("slate blue", "106 90 205"),
  981.     TColorElem("slate gray", "112 128 144"),
  982.     TColorElem("slate grey", "112 128 144"),
  983.     TColorElem("slateblue", "106 90 205"),
  984.     TColorElem("slateblue1", "131 111 255"),
  985.     TColorElem("slateblue2", "122 103 238"),
  986.     TColorElem("slateblue3", "105 89 205"),
  987.     TColorElem("slateblue4", "71 60 139"),
  988.     TColorElem("slategray", "112 128 144"),
  989.     TColorElem("slategray1", "198 226 255"),
  990.     TColorElem("slategray2", "185 211 238"),
  991.     TColorElem("slategray3", "159 182 205"),
  992.     TColorElem("slategray4", "108 123 139"),
  993.     TColorElem("slategrey", "112 128 144"),
  994.     TColorElem("snow", "255 250 250"),
  995.     TColorElem("snow1", "255 250 250"),
  996.     TColorElem("snow2", "238 233 233"),
  997.     TColorElem("snow3", "205 201 201"),
  998.     TColorElem("snow4", "139 137 137"),
  999.     TColorElem("spring green", "0 255 127"),
  1000.     TColorElem("springgreen", "0 255 127"),
  1001.     TColorElem("springgreen1", "0 255 127"),
  1002.     TColorElem("springgreen2", "0 238 118"),
  1003.     TColorElem("springgreen3", "0 205 102"),
  1004.     TColorElem("springgreen4", "0 139 69"),
  1005.     TColorElem("steel blue", "70 130 180"),
  1006.     TColorElem("steelblue", "70 130 180"),
  1007.     TColorElem("steelblue1", "99 184 255"),
  1008.     TColorElem("steelblue2", "92 172 238"),
  1009.     TColorElem("steelblue3", "79 148 205"),
  1010.     TColorElem("steelblue4", "54 100 139"),
  1011.     TColorElem("tan", "210 180 140"),
  1012.     TColorElem("tan1", "255 165 79"),
  1013.     TColorElem("tan2", "238 154 73"),
  1014.     TColorElem("tan3", "205 133 63"),
  1015.     TColorElem("tan4", "139 90 43"),
  1016.     TColorElem("thistle", "216 191 216"),
  1017.     TColorElem("thistle1", "255 225 255"),
  1018.     TColorElem("thistle2", "238 210 238"),
  1019.     TColorElem("thistle3", "205 181 205"),
  1020.     TColorElem("thistle4", "139 123 139"),
  1021.     TColorElem("tomato", "255 99 71"),
  1022.     TColorElem("tomato1", "255 99 71"),
  1023.     TColorElem("tomato2", "238 92 66"),
  1024.     TColorElem("tomato3", "205 79 57"),
  1025.     TColorElem("tomato4", "139 54 38"),
  1026.     TColorElem("turquoise", "64 224 208"),
  1027.     TColorElem("turquoise1", "0 245 255"),
  1028.     TColorElem("turquoise2", "0 229 238"),
  1029.     TColorElem("turquoise3", "0 197 205"),
  1030.     TColorElem("turquoise4", "0 134 139"),
  1031.     TColorElem("violet", "238 130 238"),
  1032.     TColorElem("violet red", "208 32 144"),
  1033.     TColorElem("violetred", "208 32 144"),
  1034.     TColorElem("violetred1", "255 62 150"),
  1035.     TColorElem("violetred2", "238 58 140"),
  1036.     TColorElem("violetred3", "205 50 120"),
  1037.     TColorElem("violetred4", "139 34 82"),
  1038.     TColorElem("wheat", "245 222 179"),
  1039.     TColorElem("wheat1", "255 231 186"),
  1040.     TColorElem("wheat2", "238 216 174"),
  1041.     TColorElem("wheat3", "205 186 150"),
  1042.     TColorElem("wheat4", "139 126 102"),
  1043.     TColorElem("white", "255 255 255"),
  1044.     TColorElem("white smoke", "245 245 245"),
  1045.     TColorElem("whitesmoke", "245 245 245"),
  1046.     TColorElem("yellow", "255 255 0"),
  1047.     TColorElem("yellow green", "154 205 50"),
  1048.     TColorElem("yellow1", "255 255 0"),
  1049.     TColorElem("yellow2", "238 238 0"),
  1050.     TColorElem("yellow3", "205 205 0"),
  1051.     TColorElem("yellow4", "139 139 0"),
  1052.     TColorElem("yellowgreen", "154 205 50")
  1053. };
  1054. typedef CStaticArrayMap<const char*, const char*, PNocase> TColorMap;
  1055. static const TColorMap sc_ColorMap(sc_ColorArray, sizeof(sc_ColorArray));
  1056. const char* CRgbaColor::ColorStrFromName(const string& desc)
  1057. {
  1058.     TColorMap::const_iterator iter = sc_ColorMap.find(desc.c_str());
  1059.     if (iter == sc_ColorMap.end()) {
  1060.         return "";
  1061.     } else {
  1062.         return iter->second;
  1063.     }
  1064. }
  1065. END_NCBI_SCOPE
  1066. /*
  1067.  * ===========================================================================
  1068.  * $Log: rgba_color.cpp,v $
  1069.  * Revision 1000.2  2004/06/01 21:05:10  gouriano
  1070.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.13
  1071.  *
  1072.  * Revision 1.13  2004/05/21 22:27:51  gorelenk
  1073.  * Added PCH ncbi_pch.hpp
  1074.  *
  1075.  * Revision 1.12  2004/05/11 13:47:49  dicuccio
  1076.  * Added Darker(), Lighter()
  1077.  *
  1078.  * Revision 1.11  2004/03/22 16:43:40  rsmith
  1079.  * fix misspelling in Interpolate.
  1080.  *
  1081.  * Revision 1.10  2004/01/27 18:46:38  dicuccio
  1082.  * Moved member operators to global operators.  Added Interpolate().  Added much
  1083.  * more complete handling of named colors
  1084.  *
  1085.  * Revision 1.9  2003/12/22 19:36:40  dicuccio
  1086.  * Added functions to add/scale colors
  1087.  *
  1088.  * Revision 1.8  2003/10/30 14:46:31  rsmith
  1089.  * Add grays.
  1090.  *
  1091.  * Revision 1.7  2003/10/30 13:35:08  rsmith
  1092.  * Add static method ColorStrFromName, converts "blue" to "0 0 255".
  1093.  * ScanFrom now uses ColorStrFromName to convert certain color name strings to
  1094.  * colors.
  1095.  *
  1096.  * Revision 1.6  2003/09/25 16:36:20  rsmith
  1097.  * ToString writes out integer not floating point values, ScanFrom expects the
  1098.  * same. TODO: make ScanFrom accept a wider range of input strings (floats,
  1099.  * named values "blue")
  1100.  *
  1101.  * Revision 1.5  2003/09/01 12:42:36  meric
  1102.  * Added ScanFrom(const string&), which is now used by a ctor
  1103.  *
  1104.  * Revision 1.4  2003/08/28 12:05:11  ucko
  1105.  * Got rid of sstream (not portable to older versions of GCC)
  1106.  *
  1107.  * Revision 1.3  2003/08/25 18:02:19  rsmith
  1108.  * Colors to and from strings.
  1109.  *
  1110.  * Revision 1.2  2003/06/18 18:08:26  meric
  1111.  * Fixed ommission of ~CRgaColor and GetColorArray()
  1112.  *
  1113.  * Revision 1.1  2003/06/18 17:57:50  meric
  1114.  * Moved inlined implementation from header file
  1115.  *
  1116.  *
  1117.  * ===========================================================================
  1118.  */