#include "canvascolor.h" const color CanvasColor::SNOW = color(255, 250, 250); const color CanvasColor::GHOSTWHITE = color(248, 248, 255); const color CanvasColor::WHITESMOKE = color(245, 245, 245); const color CanvasColor::GAINSBORO = color(220, 220, 220); const color CanvasColor::FLORALWHITE = color(255, 250, 240); const color CanvasColor::OLDLACE = color(253, 245, 230); const color CanvasColor::LINEN = color(250, 240, 230); const color CanvasColor::ANTIQUEWHITE = color(250, 235, 215); const color CanvasColor::PAPAYAWHIP = color(255, 239, 213); const color CanvasColor::BLANCHEDALMOND = color(255, 235, 205); const color CanvasColor::BISQUE = color(255, 228, 196); const color CanvasColor::PEACHPUFF = color(255, 218, 185); const color CanvasColor::NAVAJOWHITE = color(255, 222, 173); const color CanvasColor::MOCCASIN = color(255, 228, 181); const color CanvasColor::CORNSILK = color(255, 248, 220); const color CanvasColor::IVORY = color(255, 255, 240); const color CanvasColor::LEMONCHIFFON = color(255, 250, 205); const color CanvasColor::SEASHELL = color(255, 245, 238); const color CanvasColor::HONEYDEW = color(240, 255, 240); const color CanvasColor::MINTCREAM = color(245, 255, 250); const color CanvasColor::AZURE = color(240, 255, 255); const color CanvasColor::ALICEBLUE = color(240, 248, 255); const color CanvasColor::LAVENDER = color(230, 230, 250); const color CanvasColor::LAVENDERBLUSH = color(255, 240, 245); const color CanvasColor::MISTYROSE = color(255, 228, 225); const color CanvasColor::WHITE = color(255, 255, 255); const color CanvasColor::BLACK = color(0, 0, 0); const color CanvasColor::DARKSLATEGRAY = color(47, 79, 79); const color CanvasColor::DARKSLATEGREY = color(47, 79, 79); const color CanvasColor::DIMGRAY = color(105, 105, 105); const color CanvasColor::DIMGREY = color(105, 105, 105); const color CanvasColor::SLATEGRAY = color(112, 128, 144); const color CanvasColor::SLATEGREY = color(112, 128, 144); const color CanvasColor::LIGHTSLATEGRAY = color(119, 136, 153); const color CanvasColor::LIGHTSLATEGREY = color(119, 136, 153); const color CanvasColor::GRAY = color(190, 190, 190); const color CanvasColor::GREY = color(190, 190, 190); const color CanvasColor::LIGHTGREY = color(211, 211, 211); const color CanvasColor::LIGHTGRAY = color(211, 211, 211); const color CanvasColor::MIDNIGHTBLUE = color(25, 25, 112); const color CanvasColor::NAVY = color(0, 0, 128); const color CanvasColor::NAVYBLUE = color(0, 0, 128); const color CanvasColor::CORNFLOWERBLUE = color(100, 149, 237); const color CanvasColor::DARKSLATEBLUE = color(72, 61, 139); const color CanvasColor::SLATEBLUE = color(106, 90, 205); const color CanvasColor::MEDIUMSLATEBLUE = color(123, 104, 238); const color CanvasColor::LIGHTSLATEBLUE = color(132, 112, 255); const color CanvasColor::MEDIUMBLUE = color(0, 0, 205); const color CanvasColor::ROYALBLUE = color(65, 105, 225); const color CanvasColor::BLUE = color(0, 0, 255); const color CanvasColor::DODGERBLUE = color(30, 144, 255); const color CanvasColor::DEEPSKYBLUE = color(0, 191, 255); const color CanvasColor::SKYBLUE = color(135, 206, 235); const color CanvasColor::LIGHTSKYBLUE = color(135, 206, 250); const color CanvasColor::STEELBLUE = color(70, 130, 180); const color CanvasColor::LIGHTSTEELBLUE = color(176, 196, 222); const color CanvasColor::LIGHTBLUE = color(173, 216, 230); const color CanvasColor::POWDERBLUE = color(176, 224, 230); const color CanvasColor::PALETURQUOISE = color(175, 238, 238); const color CanvasColor::DARKTURQUOISE = color(0, 206, 209); const color CanvasColor::MEDIUMTURQUOISE = color(72, 209, 204); const color CanvasColor::TURQUOISE = color(64, 224, 208); const color CanvasColor::CYAN = color(0, 255, 255); const color CanvasColor::LIGHTCYAN = color(224, 255, 255); const color CanvasColor::CADETBLUE = color(95, 158, 160); const color CanvasColor::MEDIUMAQUAMARINE = color(102, 205, 170); const color CanvasColor::AQUAMARINE = color(127, 255, 212); const color CanvasColor::DARKGREEN = color(0, 100, 0); const color CanvasColor::DARKOLIVEGREEN = color(85, 107, 47); const color CanvasColor::DARKSEAGREEN = color(143, 188, 143); const color CanvasColor::SEAGREEN = color(46, 139, 87); const color CanvasColor::MEDIUMSEAGREEN = color(60, 179, 113); const color CanvasColor::LIGHTSEAGREEN = color(32, 178, 170); const color CanvasColor::PALEGREEN = color(152, 251, 152); const color CanvasColor::SPRINGGREEN = color(0, 255, 127); const color CanvasColor::LAWNGREEN = color(124, 252, 0); const color CanvasColor::GREEN = color(0, 255, 0); const color CanvasColor::CHARTREUSE = color(127, 255, 0); const color CanvasColor::MEDIUMSPRINGGREEN = color(0, 250, 154); const color CanvasColor::GREENYELLOW = color(173, 255, 47); const color CanvasColor::LIMEGREEN = color(50, 205, 50); const color CanvasColor::YELLOWGREEN = color(154, 205, 50); const color CanvasColor::FORESTGREEN = color(34, 139, 34); const color CanvasColor::OLIVEDRAB = color(107, 142, 35); const color CanvasColor::DARKKHAKI = color(189, 183, 107); const color CanvasColor::KHAKI = color(240, 230, 140); const color CanvasColor::PALEGOLDENROD = color(238, 232, 170); const color CanvasColor::LIGHTGOLDENRODYELLOW = color(250, 250, 210); const color CanvasColor::LIGHTYELLOW = color(255, 255, 224); const color CanvasColor::YELLOW = color(255, 255, 0); const color CanvasColor::GOLD = color(255, 215, 0); const color CanvasColor::LIGHTGOLDENROD = color(238, 221, 130); const color CanvasColor::GOLDENROD = color(218, 165, 32); const color CanvasColor::DARKGOLDENROD = color(184, 134, 11); const color CanvasColor::ROSYBROWN = color(188, 143, 143); const color CanvasColor::INDIAN = color(205, 92, 92); const color CanvasColor::INDIANRED = color(205, 92, 92); const color CanvasColor::SADDLEBROWN = color(139, 69, 19); const color CanvasColor::SIENNA = color(160, 82, 45); const color CanvasColor::PERU = color(205, 133, 63); const color CanvasColor::BURLYWOOD = color(222, 184, 135); const color CanvasColor::BEIGE = color(245, 245, 220); const color CanvasColor::WHEAT = color(245, 222, 179); const color CanvasColor::SANDYBROWN = color(244, 164, 96); const color CanvasColor::TAN = color(210, 180, 140); const color CanvasColor::CHOCOLATE = color(210, 105, 30); const color CanvasColor::FIREBRICK = color(178, 34, 34); const color CanvasColor::BROWN = color(165, 42, 42); const color CanvasColor::DARKSALMON = color(233, 150, 122); const color CanvasColor::SALMON = color(250, 128, 114); const color CanvasColor::LIGHTSALMON = color(255, 160, 122); const color CanvasColor::ORANGE = color(255, 165, 0); const color CanvasColor::DARKORANGE = color(255, 140, 0); const color CanvasColor::CORAL = color(255, 127, 80); const color CanvasColor::LIGHTCORAL = color(240, 128, 128); const color CanvasColor::TOMATO = color(255, 99, 71); const color CanvasColor::ORANGERED = color(255, 69, 0); const color CanvasColor::RED = color(255, 0, 0); const color CanvasColor::HOTPINK = color(255, 105, 180); const color CanvasColor::DEEPPINK = color(255, 20, 147); const color CanvasColor::PINK = color(255, 192, 203); const color CanvasColor::LIGHTPINK = color(255, 182, 193); const color CanvasColor::PALEVIOLETRED = color(219, 112, 147); const color CanvasColor::MAROON = color(176, 48, 96); const color CanvasColor::MEDIUMVIOLETRED = color(199, 21, 133); const color CanvasColor::VIOLETRED = color(208, 32, 144); const color CanvasColor::MAGENTA = color(255, 0, 255); const color CanvasColor::VIOLET = color(238, 130, 238); const color CanvasColor::PLUM = color(221, 160, 221); const color CanvasColor::ORCHID = color(218, 112, 214); const color CanvasColor::MEDIUMORCHID = color(186, 85, 211); const color CanvasColor::DARKORCHID = color(153, 50, 204); const color CanvasColor::DARKVIOLET = color(148, 0, 211); const color CanvasColor::BLUEVIOLET = color(138, 43, 226); const color CanvasColor::PURPLE = color(160, 32, 240); const color CanvasColor::MEDIUMPURPLE = color(147, 112, 219); const color CanvasColor::THISTLE = color(216, 191, 216); const color CanvasColor::DARKGREY = color(169, 169, 169); const color CanvasColor::DARKGRAY = color(169, 169, 169); const color CanvasColor::DARKBLUE = color(0, 0, 139); const color CanvasColor::DARKCYAN = color(0, 139, 139); const color CanvasColor::DARKMAGENTA = color(139, 0, 139); const color CanvasColor::DARKRED = color(139, 0, 0); const color CanvasColor::LIGHTGREEN = color(144, 238, 144); const color CanvasColor::INDIGO = color(75,0,130); struct Colorizer { unsigned char myRed, myGreen, myBlue; char * myName; }; string CanvasColor::tostring( ) const { Colorizer pairs[] = { {255, 250, 250, "SNOW" }, {248, 248, 255, "GHOSTWHITE" }, {245, 245, 245, "WHITESMOKE" }, {220, 220, 220, "GAINSBORO" }, {255, 250, 240, "FLORALWHITE" }, {253, 245, 230, "OLDLACE" }, {250, 240, 230, "LINEN" }, {250, 235, 215, "ANTIQUEWHITE" }, {255, 239, 213, "PAPAYAWHIP" }, {255, 235, 205, "BLANCHEDALMOND" }, {255, 228, 196, "BISQUE" }, {255, 218, 185, "PEACHPUFF" }, {255, 222, 173, "NAVAJOWHITE" }, {255, 228, 181, "MOCCASIN" }, {255, 248, 220, "CORNSILK" }, {255, 255, 240, "IVORY" }, {255, 250, 205, "LEMONCHIFFON" }, {255, 245, 238, "SEASHELL" }, {240, 255, 240, "HONEYDEW" }, {245, 255, 250, "MINTCREAM" }, {240, 255, 255, "AZURE" }, {240, 248, 255, "ALICEBLUE" }, {230, 230, 250, "LAVENDER" }, {255, 240, 245, "LAVENDERBLUSH" }, {255, 228, 225, "MISTYROSE" }, {255, 255, 255, "WHITE" }, {0, 0, 0, "BLACK" }, {47, 79, 79, "DARKSLATEGRAY" }, {47, 79, 79, "DARKSLATEGREY" }, {105, 105, 105, "DIMGRAY" }, {105, 105, 105, "DIMGREY" }, {112, 128, 144, "SLATEGRAY" }, {112, 128, 144, "SLATEGREY" }, {119, 136, 153, "LIGHTSLATEGRAY" }, {119, 136, 153, "LIGHTSLATEGREY" }, {190, 190, 190, "GRAY" }, {190, 190, 190, "GREY" }, {211, 211, 211, "LIGHTGREY" }, {211, 211, 211, "LIGHTGRAY" }, {25, 25, 112, "MIDNIGHTBLUE" }, {0, 0, 128, "NAVY" }, {0, 0, 128, "NAVYBLUE" }, {100, 149, 237, "CORNFLOWERBLUE" }, {72, 61, 139, "DARKSLATEBLUE" }, {106, 90, 205, "SLATEBLUE" }, {123, 104, 238, "MEDIUMSLATEBLUE" }, {132, 112, 255, "LIGHTSLATEBLUE" }, {0, 0, 205, "MEDIUMBLUE" }, {65, 105, 225, "ROYALBLUE" }, {0, 0, 255, "BLUE" }, {30, 144, 255, "DODGERBLUE" }, {0, 191, 255, "DEEPSKYBLUE" }, {135, 206, 235, "SKYBLUE" }, {135, 206, 250, "LIGHTSKYBLUE" }, {70, 130, 180, "STEELBLUE" }, {176, 196, 222, "LIGHTSTEELBLUE" }, {173, 216, 230, "LIGHTBLUE" }, {176, 224, 230, "POWDERBLUE" }, {175, 238, 238, "PALETURQUOISE" }, {0, 206, 209, "DARKTURQUOISE" }, {72, 209, 204, "MEDIUMTURQUOISE" }, {64, 224, 208, "TURQUOISE" }, {0, 255, 255, "CYAN" }, {224, 255, 255, "LIGHTCYAN" }, {95, 158, 160, "CADETBLUE" }, {102, 205, 170, "MEDIUMAQUAMARINE" }, {127, 255, 212, "AQUAMARINE" }, {0, 100, 0, "DARKGREEN" }, {85, 107, 47, "DARKOLIVEGREEN" }, {143, 188, 143, "DARKSEAGREEN" }, {46, 139, 87, "SEAGREEN" }, {60, 179, 113, "MEDIUMSEAGREEN" }, {32, 178, 170, "LIGHTSEAGREEN" }, {152, 251, 152, "PALEGREEN" }, {0, 255, 127, "SPRINGGREEN" }, {124, 252, 0, "LAWNGREEN" }, {0, 255, 0, "GREEN" }, {127, 255, 0, "CHARTREUSE" }, {0, 250, 154, "MEDIUMSPRINGGREEN" }, {173, 255, 47, "GREENYELLOW" }, {50, 205, 50, "LIMEGREEN" }, {154, 205, 50, "YELLOWGREEN" }, {34, 139, 34, "FORESTGREEN" }, {107, 142, 35, "OLIVEDRAB" }, {189, 183, 107, "DARKKHAKI" }, {240, 230, 140, "KHAKI" }, {238, 232, 170, "PALEGOLDENROD" }, {250, 250, 210, "LIGHTGOLDENRODYELLOW" }, {255, 255, 224, "LIGHTYELLOW" }, {255, 255, 0, "YELLOW" }, {255, 215, 0, "GOLD" }, {238, 221, 130, "LIGHTGOLDENROD" }, {218, 165, 32, "GOLDENROD" }, {184, 134, 11, "DARKGOLDENROD" }, {188, 143, 143, "ROSYBROWN" }, {205, 92, 92, "INDIAN" }, {205, 92, 92, "INDIANRED" }, {139, 69, 19, "SADDLEBROWN" }, {160, 82, 45, "SIENNA" }, {205, 133, 63, "PERU" }, {222, 184, 135, "BURLYWOOD" }, {245, 245, 220, "BEIGE" }, {245, 222, 179, "WHEAT" }, {244, 164, 96, "SANDYBROWN" }, {210, 180, 140, "TAN" }, {210, 105, 30, "CHOCOLATE" }, {178, 34, 34, "FIREBRICK" }, {165, 42, 42, "BROWN" }, {233, 150, 122, "DARKSALMON" }, {250, 128, 114, "SALMON" }, {255, 160, 122, "LIGHTSALMON" }, {255, 165, 0, "ORANGE" }, {255, 140, 0, "DARKORANGE" }, {255, 127, 80, "CORAL" }, {240, 128, 128, "LIGHTCORAL" }, {255, 99, 71, "TOMATO" }, {255, 69, 0, "ORANGERED" }, {255, 0, 0, "RED" }, {255, 105, 180, "HOTPINK" }, {255, 20, 147, "DEEPPINK" }, {255, 192, 203, "PINK" }, {255, 182, 193, "LIGHTPINK" }, {219, 112, 147, "PALEVIOLETRED" }, {176, 48, 96, "MAROON" }, {199, 21, 133, "MEDIUMVIOLETRED" }, {208, 32, 144, "VIOLETRED" }, {255, 0, 255, "MAGENTA" }, {238, 130, 238, "VIOLET" }, {221, 160, 221, "PLUM" }, {218, 112, 214, "ORCHID" }, {186, 85, 211, "MEDIUMORCHID" }, {153, 50, 204, "DARKORCHID" }, {148, 0, 211, "DARKVIOLET" }, {138, 43, 226, "BLUEVIOLET" }, {160, 32, 240, "PURPLE" }, {147, 112, 219, "MEDIUMPURPLE" }, {216, 191, 216, "THISTLE" }, {169, 169, 169, "DARKGREY" }, {169, 169, 169, "DARKGRAY" }, {0, 0, 139, "DARKBLUE" }, {0, 139, 139, "DARKCYAN" }, {139, 0, 139, "DARKMAGENTA" }, {139, 0, 0, "DARKRED" }, {144, 238, 144, "LIGHTGREEN" }, {75,0,130, "INDIGO" } }; int k; int size = sizeof(pairs)/sizeof(Colorizer); for(k=0; k < size; k++) { if (color(pairs[k].myRed, pairs[k].myGreen, pairs[k].myBlue) == color(myRed,myGreen,myBlue)) return pairs[k].myName; } return "UNKNOWN"; } inline bool diffok(int x, int y) { int d = x-y < 0 ? y-x : x-y; return d <= 3; } bool operator == (const color& lhs, const color& rhs) { return diffok(lhs.ucRed,rhs.ucRed) && diffok(lhs.ucGreen,rhs.ucGreen) && diffok(lhs.ucBlue,rhs.ucBlue); }