From 139b1d4daf9cd15015f3ec07fe334a5d79814cd7 Mon Sep 17 00:00:00 2001 From: Nikita Kitaev Date: Thu, 1 Apr 2010 20:39:04 -0700 Subject: [PATCH] Add support for SVG color keywords --- synfig-core/src/modules/mod_svg/svg_parser.cpp | 165 ++++++++++++++++++++++++- synfig-core/src/modules/mod_svg/svg_parser.h | 1 + 2 files changed, 163 insertions(+), 3 deletions(-) diff --git a/synfig-core/src/modules/mod_svg/svg_parser.cpp b/synfig-core/src/modules/mod_svg/svg_parser.cpp index 1a35849..18e66b4 100644 --- a/synfig-core/src/modules/mod_svg/svg_parser.cpp +++ b/synfig-core/src/modules/mod_svg/svg_parser.cpp @@ -32,6 +32,7 @@ #endif #include +#include #include "svg_parser.h" /* === U S I N G =========================================================== */ @@ -1862,7 +1863,7 @@ Svg_parser::getRed(String hex){ String aux=tokenize(hex.substr(start,end-start),",").at(0); return atoi(aux.data()); } - return 0; + return getColor(hex,1); } int Svg_parser::getGreen(String hex){ @@ -1875,7 +1876,7 @@ Svg_parser::getGreen(String hex){ String aux=tokenize(hex.substr(start,end-start),",").at(1); return atoi(aux.data()); } - return 0; + return getColor(hex,2); } int Svg_parser::getBlue(String hex){ @@ -1888,7 +1889,7 @@ Svg_parser::getBlue(String hex){ String aux=tokenize(hex.substr(start,end-start),",").at(2); return atoi(aux.data()); } - return 0; + return getColor(hex,3); } int Svg_parser::hextodec(String hex){ @@ -2021,3 +2022,161 @@ Svg_parser::new_guid(){ return GUID::hasher(uid).get_string(); } + +#define COLOR_NAME(color, r, g, b) else if(name.compare(0,strlen(color),color)==0) \ + {switch(position) \ + {case 1: return r; case 2: return g; case 3: return b;} } + +int +Svg_parser::getColor(String name, int position){ + if (position<1 || position>3) return 0; + COLOR_NAME("aliceblue",240, 248, 255) + COLOR_NAME("antiquewhite",250, 235, 215) + COLOR_NAME("aqua", 0, 255, 255) + COLOR_NAME("aquamarine",127, 255, 212) + COLOR_NAME("azure",240, 255, 255) + COLOR_NAME("beige",245, 245, 220) + COLOR_NAME("bisque",255, 228, 196) + COLOR_NAME("black", 0, 0, 0) + COLOR_NAME("blanchedalmond",255, 235, 205) + COLOR_NAME("blue", 0, 0, 255) + COLOR_NAME("blueviolet",138, 43, 226) + COLOR_NAME("brown",165, 42, 42) + COLOR_NAME("burlywood",222, 184, 135) + COLOR_NAME("cadetblue", 95, 158, 160) + COLOR_NAME("chartreuse",127, 255, 0) + COLOR_NAME("chocolate",210, 105, 30) + COLOR_NAME("coral",255, 127, 80) + COLOR_NAME("cornflowerblue",100, 149, 237) + COLOR_NAME("cornsilk",255, 248, 220) + COLOR_NAME("crimson",220, 20, 60) + COLOR_NAME("cyan", 0, 255, 255) + COLOR_NAME("darkblue", 0, 0, 139) + COLOR_NAME("darkcyan", 0, 139, 139) + COLOR_NAME("darkgoldenrod",184, 134, 11) + COLOR_NAME("darkgray",169, 169, 169) + COLOR_NAME("darkgreen", 0, 100, 0) + COLOR_NAME("darkgrey",169, 169, 169) + COLOR_NAME("darkkhaki",189, 183, 107) + COLOR_NAME("darkmagenta",139, 0, 139) + COLOR_NAME("darkolivegreen", 85, 107, 47) + COLOR_NAME("darkorange",255, 140, 0) + COLOR_NAME("darkorchid",153, 50, 204) + COLOR_NAME("darkred",139, 0, 0) + COLOR_NAME("darksalmon",233, 150, 122) + COLOR_NAME("darkseagreen",143, 188, 143) + COLOR_NAME("darkslateblue", 72, 61, 139) + COLOR_NAME("darkslategray", 47, 79, 79) + COLOR_NAME("darkslategrey", 47, 79, 79) + COLOR_NAME("darkturquoise", 0, 206, 209) + COLOR_NAME("darkviolet",148, 0, 211) + COLOR_NAME("deeppink",255, 20, 147) + COLOR_NAME("deepskyblue", 0, 191, 255) + COLOR_NAME("dimgray",105, 105, 105) + COLOR_NAME("dimgrey",105, 105, 105) + COLOR_NAME("dodgerblue", 30, 144, 255) + COLOR_NAME("firebrick",178, 34, 34) + COLOR_NAME("floralwhite",255, 250, 240) + COLOR_NAME("forestgreen", 34, 139, 34) + COLOR_NAME("fuchsia",255, 0, 255) + COLOR_NAME("gainsboro",220, 220, 220) + COLOR_NAME("ghostwhite",248, 248, 255) + COLOR_NAME("gold",255, 215, 0) + COLOR_NAME("goldenrod",218, 165, 32) + COLOR_NAME("gray",128, 128, 128) + COLOR_NAME("grey",128, 128, 128) + COLOR_NAME("green", 0, 128, 0) + COLOR_NAME("greenyellow",173, 255, 47) + COLOR_NAME("honeydew",240, 255, 240) + COLOR_NAME("hotpink",255, 105, 180) + COLOR_NAME("indianred",205, 92, 92) + COLOR_NAME("indigo", 75, 0, 130) + COLOR_NAME("ivory",255, 255, 240) + COLOR_NAME("khaki",240, 230, 140) + COLOR_NAME("lavender",230, 230, 250) + COLOR_NAME("lavenderblush",255, 240, 245) + COLOR_NAME("lawngreen",124, 252, 0) + COLOR_NAME("lemonchiffon",255, 250, 205) + COLOR_NAME("lightblue",173, 216, 230) + COLOR_NAME("lightcoral",240, 128, 128) + COLOR_NAME("lightcyan",224, 255, 255) + COLOR_NAME("lightgoldenrodyellow",250, 250, 210) + COLOR_NAME("lightgray",211, 211, 211) + COLOR_NAME("lightgreen",144, 238, 144) + COLOR_NAME("lightgrey",211, 211, 211) + COLOR_NAME("lightpink",255, 182, 193) + COLOR_NAME("lightsalmon",255, 160, 122) + COLOR_NAME("lightseagreen", 32, 178, 170) + COLOR_NAME("lightskyblue",135, 206, 250) + COLOR_NAME("lightslategray",119, 136, 153) + COLOR_NAME("lightslategrey",119, 136, 153) + COLOR_NAME("lightsteelblue",176, 196, 222) + COLOR_NAME("lightyellow",255, 255, 224) + COLOR_NAME("lime", 0, 255, 0) + COLOR_NAME("limegreen", 50, 205, 50) + COLOR_NAME("linen",250, 240, 230) + COLOR_NAME("magenta",255, 0, 255) + COLOR_NAME("maroon",128, 0, 0) + COLOR_NAME("mediumaquamarine",102, 205, 170) + COLOR_NAME("mediumblue", 0, 0, 205) + COLOR_NAME("mediumorchid",186, 85, 211) + COLOR_NAME("mediumpurple",147, 112, 219) + COLOR_NAME("mediumseagreen", 60, 179, 113) + COLOR_NAME("mediumslateblue",123, 104, 238) + COLOR_NAME("mediumspringgreen", 0, 250, 154) + COLOR_NAME("mediumturquoise", 72, 209, 204) + COLOR_NAME("mediumvioletred",199, 21, 133) + COLOR_NAME("midnightblue", 25, 25, 112) + COLOR_NAME("mintcream",245, 255, 250) + COLOR_NAME("mistyrose",255, 228, 225) + COLOR_NAME("moccasin",255, 228, 181) + COLOR_NAME("navajowhite",255, 222, 173) + COLOR_NAME("navy", 0, 0, 128) + COLOR_NAME("oldlace",253, 245, 230) + COLOR_NAME("olive",128, 128, 0) + COLOR_NAME("olivedrab",107, 142, 35) + COLOR_NAME("orange",255, 165, 0) + COLOR_NAME("orangered",255, 69, 0) + COLOR_NAME("orchid",218, 112, 214) + COLOR_NAME("palegoldenrod",238, 232, 170) + COLOR_NAME("palegreen",152, 251, 152) + COLOR_NAME("paleturquoise",175, 238, 238) + COLOR_NAME("palevioletred",219, 112, 147) + COLOR_NAME("papayawhip",255, 239, 213) + COLOR_NAME("peachpuff",255, 218, 185) + COLOR_NAME("peru",205, 133, 63) + COLOR_NAME("pink",255, 192, 203) + COLOR_NAME("plum",221, 160, 221) + COLOR_NAME("powderblue",176, 224, 230) + COLOR_NAME("purple",128, 0, 128) + COLOR_NAME("red",255, 0, 0) + COLOR_NAME("rosybrown",188, 143, 143) + COLOR_NAME("royalblue", 65, 105, 225) + COLOR_NAME("saddlebrown",139, 69, 19) + COLOR_NAME("salmon",250, 128, 114) + COLOR_NAME("sandybrown",244, 164, 96) + COLOR_NAME("seagreen", 46, 139, 87) + COLOR_NAME("seashell",255, 245, 238) + COLOR_NAME("sienna",160, 82, 45) + COLOR_NAME("silver",192, 192, 192) + COLOR_NAME("skyblue",135, 206, 235) + COLOR_NAME("slateblue",106, 90, 205) + COLOR_NAME("slategray",112, 128, 144) + COLOR_NAME("slategrey",112, 128, 144) + COLOR_NAME("snow",255, 250, 250) + COLOR_NAME("springgreen", 0, 255, 127) + COLOR_NAME("steelblue", 70, 130, 180) + COLOR_NAME("tan",210, 180, 140) + COLOR_NAME("teal", 0, 128, 128) + COLOR_NAME("thistle",216, 191, 216) + COLOR_NAME("tomato",255, 99, 71) + COLOR_NAME("turquoise", 64, 224, 208) + COLOR_NAME("violet",238, 130, 238) + COLOR_NAME("wheat",245, 222, 179) + COLOR_NAME("white",255, 255, 255) + COLOR_NAME("whitesmoke",245, 245, 245) + COLOR_NAME("yellow",255, 255, 0) + COLOR_NAME("yellowgreen",154, 205, 50) + return 0; +} +#undef COLOR_NAME diff --git a/synfig-core/src/modules/mod_svg/svg_parser.h b/synfig-core/src/modules/mod_svg/svg_parser.h index 6402f69..a1190d8 100644 --- a/synfig-core/src/modules/mod_svg/svg_parser.h +++ b/synfig-core/src/modules/mod_svg/svg_parser.h @@ -213,6 +213,7 @@ private: int getGreen(String hex); int getBlue(String hex); int hextodec(String hex); + int getColor(String name, int position); float getDimension(const String ac); //string functions void removeS(String *input); -- 2.7.4