/*
 *  R : A Computer Language for Statistical Data Analysis
 *  Copyright (C) 1998--1999  Guido Masarotto
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, a copy is available at
 *  https://www.R-project.org/Licenses/
 */

/*
 *
 * File: rgb.c --
 * Guido Masarotto (July, 1998)
 *
 */

/*
   This file is an add-on  to GraphApp, a cross-platform C graphics library.
 */


#include "ga.h"
#include <string.h>

#define RGBCOLORS 657

/* not static and NULL terminated => we can use it in list boxes..*/
const char *ColorName[]= {
    "AliceBlue",
    "AntiqueWhite",
    "AntiqueWhite1",
    "AntiqueWhite2",
    "AntiqueWhite3",
    "AntiqueWhite4",
    "aquamarine",
    "aquamarine1",
    "aquamarine2",
    "aquamarine3",
    "aquamarine4",
    "azure",
    "azure1",
    "azure2",
    "azure3",
    "azure4",
    "beige",
    "bisque",
    "bisque1",
    "bisque2",
    "bisque3",
    "bisque4",
    "black",
    "BlanchedAlmond",
    "blue",
    "blue1",
    "blue2",
    "blue3",
    "blue4",
    "BlueViolet",
    "brown",
    "brown1",
    "brown2",
    "brown3",
    "brown4",
    "burlywood",
    "burlywood1",
    "burlywood2",
    "burlywood3",
    "burlywood4",
    "CadetBlue",
    "CadetBlue1",
    "CadetBlue2",
    "CadetBlue3",
    "CadetBlue4",
    "chartreuse",
    "chartreuse1",
    "chartreuse2",
    "chartreuse3",
    "chartreuse4",
    "chocolate",
    "chocolate1",
    "chocolate2",
    "chocolate3",
    "chocolate4",
    "coral",
    "coral1",
    "coral2",
    "coral3",
    "coral4",
    "CornflowerBlue",
    "cornsilk",
    "cornsilk1",
    "cornsilk2",
    "cornsilk3",
    "cornsilk4",
    "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",
    "firebrick",
    "firebrick1",
    "firebrick2",
    "firebrick3",
    "firebrick4",
    "FloralWhite",
    "ForestGreen",
    "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",
    "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",
    "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",
    "OldLace",
    "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",
    "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",
    "sienna",
    "sienna1",
    "sienna2",
    "sienna3",
    "sienna4",
    "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",
    "thistle",
    "thistle1",
    "thistle2",
    "thistle3",
    "thistle4",
    "tomato",
    "tomato1",
    "tomato2",
    "tomato3",
    "tomato4",
    "turquoise",
    "turquoise1",
    "turquoise2",
    "turquoise3",
    "turquoise4",
    "violet",
    "VioletRed",
    "VioletRed1",
    "VioletRed2",
    "VioletRed3",
    "VioletRed4",
    "wheat",
    "wheat1",
    "wheat2",
    "wheat3",
    "wheat4",
    "white",
    "WhiteSmoke",
    "yellow",
    "yellow1",
    "yellow2",
    "yellow3",
    "yellow4",
    "YellowGreen",
    NULL
};

static int RgbValue[RGBCOLORS][3] = {
    {240,248,255},
    {250,235,215},
    {255,239,219},
    {238,223,204},
    {205,192,176},
    {139,131,120},
    {127,255,212},
    {127,255,212},
    {118,238,198},
    {102,205,170},
    {69,139,116},
    {240,255,255},
    {240,255,255},
    {224,238,238},
    {193,205,205},
    {131,139,139},
    {245,245,220},
    {255,228,196},
    {255,228,196},
    {238,213,183},
    {205,183,158},
    {139,125,107},
    {0,0,0},
    {255,235,205},
    {0,0,255},
    {0,0,255},
    {0,0,238},
    {0,0,205},
    {0,0,139},
    {138,43,226},
    {165,42,42},
    {255,64,64},
    {238,59,59},
    {205,51,51},
    {139,35,35},
    {222,184,135},
    {255,211,155},
    {238,197,145},
    {205,170,125},
    {139,115,85},
    {95,158,160},
    {152,245,255},
    {142,229,238},
    {122,197,205},
    {83,134,139},
    {127,255,0},
    {127,255,0},
    {118,238,0},
    {102,205,0},
    {69,139,0},
    {210,105,30},
    {255,127,36},
    {238,118,33},
    {205,102,29},
    {139,69,19},
    {255,127,80},
    {255,114,86},
    {238,106,80},
    {205,91,69},
    {139,62,47},
    {100,149,237},
    {255,248,220},
    {255,248,220},
    {238,232,205},
    {205,200,177},
    {139,136,120},
    {0,255,255},
    {0,255,255},
    {0,238,238},
    {0,205,205},
    {0,139,139},
    {0,0,139},
    {0,139,139},
    {184,134,11},
    {255,185,15},
    {238,173,14},
    {205,149,12},
    {139,101,8},
    {169,169,169},
    {0,100,0},
    {169,169,169},
    {189,183,107},
    {139,0,139},
    {85,107,47},
    {202,255,112},
    {188,238,104},
    {162,205,90},
    {110,139,61},
    {255,140,0},
    {255,127,0},
    {238,118,0},
    {205,102,0},
    {139,69,0},
    {153,50,204},
    {191,62,255},
    {178,58,238},
    {154,50,205},
    {104,34,139},
    {139,0,0},
    {233,150,122},
    {143,188,143},
    {193,255,193},
    {180,238,180},
    {155,205,155},
    {105,139,105},
    {72,61,139},
    {47,79,79},
    {151,255,255},
    {141,238,238},
    {121,205,205},
    {82,139,139},
    {47,79,79},
    {0,206,209},
    {148,0,211},
    {255,20,147},
    {255,20,147},
    {238,18,137},
    {205,16,118},
    {139,10,80},
    {0,191,255},
    {0,191,255},
    {0,178,238},
    {0,154,205},
    {0,104,139},
    {105,105,105},
    {105,105,105},
    {30,144,255},
    {30,144,255},
    {28,134,238},
    {24,116,205},
    {16,78,139},
    {178,34,34},
    {255,48,48},
    {238,44,44},
    {205,38,38},
    {139,26,26},
    {255,250,240},
    {34,139,34},
    {220,220,220},
    {248,248,255},
    {255,215,0},
    {255,215,0},
    {238,201,0},
    {205,173,0},
    {139,117,0},
    {218,165,32},
    {255,193,37},
    {238,180,34},
    {205,155,29},
    {139,105,20},
    {190,190,190},
    {0,0,0},
    {3,3,3},
    {26,26,26},
    {255,255,255},
    {28,28,28},
    {31,31,31},
    {33,33,33},
    {36,36,36},
    {38,38,38},
    {41,41,41},
    {43,43,43},
    {46,46,46},
    {48,48,48},
    {5,5,5},
    {51,51,51},
    {54,54,54},
    {56,56,56},
    {59,59,59},
    {61,61,61},
    {64,64,64},
    {66,66,66},
    {69,69,69},
    {71,71,71},
    {74,74,74},
    {8,8,8},
    {77,77,77},
    {79,79,79},
    {82,82,82},
    {84,84,84},
    {87,87,87},
    {89,89,89},
    {92,92,92},
    {94,94,94},
    {97,97,97},
    {99,99,99},
    {10,10,10},
    {102,102,102},
    {105,105,105},
    {107,107,107},
    {110,110,110},
    {112,112,112},
    {115,115,115},
    {117,117,117},
    {120,120,120},
    {122,122,122},
    {125,125,125},
    {13,13,13},
    {127,127,127},
    {130,130,130},
    {133,133,133},
    {135,135,135},
    {138,138,138},
    {140,140,140},
    {143,143,143},
    {145,145,145},
    {148,148,148},
    {150,150,150},
    {15,15,15},
    {153,153,153},
    {156,156,156},
    {158,158,158},
    {161,161,161},
    {163,163,163},
    {166,166,166},
    {168,168,168},
    {171,171,171},
    {173,173,173},
    {176,176,176},
    {18,18,18},
    {179,179,179},
    {181,181,181},
    {184,184,184},
    {186,186,186},
    {189,189,189},
    {191,191,191},
    {194,194,194},
    {196,196,196},
    {199,199,199},
    {201,201,201},
    {20,20,20},
    {204,204,204},
    {207,207,207},
    {209,209,209},
    {212,212,212},
    {214,214,214},
    {217,217,217},
    {219,219,219},
    {222,222,222},
    {224,224,224},
    {227,227,227},
    {23,23,23},
    {229,229,229},
    {232,232,232},
    {235,235,235},
    {237,237,237},
    {240,240,240},
    {242,242,242},
    {245,245,245},
    {247,247,247},
    {250,250,250},
    {252,252,252},
    {0,255,0},
    {0,255,0},
    {0,238,0},
    {0,205,0},
    {0,139,0},
    {173,255,47},
    {190,190,190},
    {0,0,0},
    {3,3,3},
    {26,26,26},
    {255,255,255},
    {28,28,28},
    {31,31,31},
    {33,33,33},
    {36,36,36},
    {38,38,38},
    {41,41,41},
    {43,43,43},
    {46,46,46},
    {48,48,48},
    {5,5,5},
    {51,51,51},
    {54,54,54},
    {56,56,56},
    {59,59,59},
    {61,61,61},
    {64,64,64},
    {66,66,66},
    {69,69,69},
    {71,71,71},
    {74,74,74},
    {8,8,8},
    {77,77,77},
    {79,79,79},
    {82,82,82},
    {84,84,84},
    {87,87,87},
    {89,89,89},
    {92,92,92},
    {94,94,94},
    {97,97,97},
    {99,99,99},
    {10,10,10},
    {102,102,102},
    {105,105,105},
    {107,107,107},
    {110,110,110},
    {112,112,112},
    {115,115,115},
    {117,117,117},
    {120,120,120},
    {122,122,122},
    {125,125,125},
    {13,13,13},
    {127,127,127},
    {130,130,130},
    {133,133,133},
    {135,135,135},
    {138,138,138},
    {140,140,140},
    {143,143,143},
    {145,145,145},
    {148,148,148},
    {150,150,150},
    {15,15,15},
    {153,153,153},
    {156,156,156},
    {158,158,158},
    {161,161,161},
    {163,163,163},
    {166,166,166},
    {168,168,168},
    {171,171,171},
    {173,173,173},
    {176,176,176},
    {18,18,18},
    {179,179,179},
    {181,181,181},
    {184,184,184},
    {186,186,186},
    {189,189,189},
    {191,191,191},
    {194,194,194},
    {196,196,196},
    {199,199,199},
    {201,201,201},
    {20,20,20},
    {204,204,204},
    {207,207,207},
    {209,209,209},
    {212,212,212},
    {214,214,214},
    {217,217,217},
    {219,219,219},
    {222,222,222},
    {224,224,224},
    {227,227,227},
    {23,23,23},
    {229,229,229},
    {232,232,232},
    {235,235,235},
    {237,237,237},
    {240,240,240},
    {242,242,242},
    {245,245,245},
    {247,247,247},
    {250,250,250},
    {252,252,252},
    {240,255,240},
    {240,255,240},
    {224,238,224},
    {193,205,193},
    {131,139,131},
    {255,105,180},
    {255,110,180},
    {238,106,167},
    {205,96,144},
    {139,58,98},
    {205,92,92},
    {255,106,106},
    {238,99,99},
    {205,85,85},
    {139,58,58},
    {255,255,240},
    {255,255,240},
    {238,238,224},
    {205,205,193},
    {139,139,131},
    {240,230,140},
    {255,246,143},
    {238,230,133},
    {205,198,115},
    {139,134,78},
    {230,230,250},
    {255,240,245},
    {255,240,245},
    {238,224,229},
    {205,193,197},
    {139,131,134},
    {124,252,0},
    {255,250,205},
    {255,250,205},
    {238,233,191},
    {205,201,165},
    {139,137,112},
    {173,216,230},
    {191,239,255},
    {178,223,238},
    {154,192,205},
    {104,131,139},
    {240,128,128},
    {224,255,255},
    {224,255,255},
    {209,238,238},
    {180,205,205},
    {122,139,139},
    {238,221,130},
    {255,236,139},
    {238,220,130},
    {205,190,112},
    {139,129,76},
    {250,250,210},
    {211,211,211},
    {144,238,144},
    {211,211,211},
    {255,182,193},
    {255,174,185},
    {238,162,173},
    {205,140,149},
    {139,95,101},
    {255,160,122},
    {255,160,122},
    {238,149,114},
    {205,129,98},
    {139,87,66},
    {32,178,170},
    {135,206,250},
    {176,226,255},
    {164,211,238},
    {141,182,205},
    {96,123,139},
    {132,112,255},
    {119,136,153},
    {119,136,153},
    {176,196,222},
    {202,225,255},
    {188,210,238},
    {162,181,205},
    {110,123,139},
    {255,255,224},
    {255,255,224},
    {238,238,209},
    {205,205,180},
    {139,139,122},
    {50,205,50},
    {250,240,230},
    {255,0,255},
    {255,0,255},
    {238,0,238},
    {205,0,205},
    {139,0,139},
    {176,48,96},
    {255,52,179},
    {238,48,167},
    {205,41,144},
    {139,28,98},
    {102,205,170},
    {0,0,205},
    {186,85,211},
    {224,102,255},
    {209,95,238},
    {180,82,205},
    {122,55,139},
    {147,112,219},
    {171,130,255},
    {159,121,238},
    {137,104,205},
    {93,71,139},
    {60,179,113},
    {123,104,238},
    {0,250,154},
    {72,209,204},
    {199,21,133},
    {25,25,112},
    {245,255,250},
    {255,228,225},
    {255,228,225},
    {238,213,210},
    {205,183,181},
    {139,125,123},
    {255,228,181},
    {255,222,173},
    {255,222,173},
    {238,207,161},
    {205,179,139},
    {139,121,94},
    {0,0,128},
    {0,0,128},
    {253,245,230},
    {107,142,35},
    {192,255,62},
    {179,238,58},
    {154,205,50},
    {105,139,34},
    {255,165,0},
    {255,165,0},
    {238,154,0},
    {205,133,0},
    {139,90,0},
    {255,69,0},
    {255,69,0},
    {238,64,0},
    {205,55,0},
    {139,37,0},
    {218,112,214},
    {255,131,250},
    {238,122,233},
    {205,105,201},
    {139,71,137},
    {238,232,170},
    {152,251,152},
    {154,255,154},
    {144,238,144},
    {124,205,124},
    {84,139,84},
    {175,238,238},
    {187,255,255},
    {174,238,238},
    {150,205,205},
    {102,139,139},
    {219,112,147},
    {255,130,171},
    {238,121,159},
    {205,104,137},
    {139,71,93},
    {255,239,213},
    {255,218,185},
    {255,218,185},
    {238,203,173},
    {205,175,149},
    {139,119,101},
    {205,133,63},
    {255,192,203},
    {255,181,197},
    {238,169,184},
    {205,145,158},
    {139,99,108},
    {221,160,221},
    {255,187,255},
    {238,174,238},
    {205,150,205},
    {139,102,139},
    {176,224,230},
    {160,32,240},
    {155,48,255},
    {145,44,238},
    {125,38,205},
    {85,26,139},
    {255,0,0},
    {255,0,0},
    {238,0,0},
    {205,0,0},
    {139,0,0},
    {188,143,143},
    {255,193,193},
    {238,180,180},
    {205,155,155},
    {139,105,105},
    {65,105,225},
    {72,118,255},
    {67,110,238},
    {58,95,205},
    {39,64,139},
    {139,69,19},
    {250,128,114},
    {255,140,105},
    {238,130,98},
    {205,112,84},
    {139,76,57},
    {244,164,96},
    {46,139,87},
    {84,255,159},
    {78,238,148},
    {67,205,128},
    {46,139,87},
    {255,245,238},
    {255,245,238},
    {238,229,222},
    {205,197,191},
    {139,134,130},
    {160,82,45},
    {255,130,71},
    {238,121,66},
    {205,104,57},
    {139,71,38},
    {135,206,235},
    {135,206,255},
    {126,192,238},
    {108,166,205},
    {74,112,139},
    {106,90,205},
    {131,111,255},
    {122,103,238},
    {105,89,205},
    {71,60,139},
    {112,128,144},
    {198,226,255},
    {185,211,238},
    {159,182,205},
    {108,123,139},
    {112,128,144},
    {255,250,250},
    {255,250,250},
    {238,233,233},
    {205,201,201},
    {139,137,137},
    {0,255,127},
    {0,255,127},
    {0,238,118},
    {0,205,102},
    {0,139,69},
    {70,130,180},
    {99,184,255},
    {92,172,238},
    {79,148,205},
    {54,100,139},
    {210,180,140},
    {255,165,79},
    {238,154,73},
    {205,133,63},
    {139,90,43},
    {216,191,216},
    {255,225,255},
    {238,210,238},
    {205,181,205},
    {139,123,139},
    {255,99,71},
    {255,99,71},
    {238,92,66},
    {205,79,57},
    {139,54,38},
    {64,224,208},
    {0,245,255},
    {0,229,238},
    {0,197,205},
    {0,134,139},
    {238,130,238},
    {208,32,144},
    {255,62,150},
    {238,58,140},
    {205,50,120},
    {139,34,82},
    {245,222,179},
    {255,231,186},
    {238,216,174},
    {205,186,150},
    {139,126,102},
    {255,255,255},
    {245,245,245},
    {255,255,0},
    {255,255,0},
    {238,238,0},
    {205,205,0},
    {139,139,0},
    {154,205,50}
};



/* Return transparent if the color doesn't exist.
 *  Case insensitive comparison?
*/
rgb nametorgb(const char *name)
{
    int mid, high, low, cmp;

    low = 0;
    mid = 0; /* for -Wall */
    high = RGBCOLORS - 1;
    while (low <= high) {
	mid = (low + high) / 2;
	cmp = strcmpi(name, ColorName[mid]);
	if (cmp < 0) high = mid-1;
	else if (cmp > 0) low = mid +1;
	else break;
    }
    if (high < low) return Transparent;
    else
	return rgb(RgbValue[mid][0], RgbValue[mid][1], RgbValue[mid][2]);
}

/* return "white" not "gray100" */
const char *rgbtoname(rgb in)
{
    int i;

    for(i = 0; i < RGBCOLORS; i++)
	if(in == rgb(RgbValue[i][0], RgbValue[i][1], RgbValue[i][2])
	   && strcmp(ColorName[i], "gray100")
	   && strcmp(ColorName[i], "grey100")) return ColorName[i];
    return "";
}

int rgbtonum(rgb in)
{
    int i;

    for(i = 0; i < RGBCOLORS; i++)
	if(in == rgb(RgbValue[i][0], RgbValue[i][1], RgbValue[i][2])
	   && strcmp(ColorName[i], "gray100")
	   && strcmp(ColorName[i], "grey100")) return i;
    return -1;
}

#include <windows.h>
/* Windows uses 0x00bbggrr ! */
rgb myGetSysColor(int x)
{
    int col = GetSysColor(x);
    return rgb( (col)&0xFFUL, (col>>8)&0xFFUL, (col>>16)&0x00FFUL );
}

rgb dialog_bg(void)
{
    return myGetSysColor(COLOR_BTNFACE);
}
