33 static const CRRgb gv_standard_colors[] = {
34 {(
const guchar*)
"aliceblue", 240, 248, 255, FALSE, FALSE, FALSE, {0,0,0}},
35 {(
const guchar*)
"antiquewhite", 250, 235, 215, FALSE, FALSE, FALSE, {0,0,0}},
36 {(
const guchar*)
"aqua", 0, 255, 255, FALSE, FALSE, FALSE, {0,0,0}},
37 {(
const guchar*)
"aquamarine", 127, 255, 212, FALSE, FALSE, FALSE, {0,0,0}},
38 {(
const guchar*)
"azure", 240, 255, 255, FALSE, FALSE, FALSE, {0,0,0}},
39 {(
const guchar*)
"beige", 245, 245, 220, FALSE, FALSE, FALSE, {0,0,0}},
40 {(
const guchar*)
"bisque", 255, 228, 196, FALSE, FALSE, FALSE, {0,0,0}},
41 {(
const guchar*)
"black", 0, 0, 0, FALSE, FALSE, FALSE, {0,0,0}},
42 {(
const guchar*)
"blanchedalmond", 255, 235, 205, FALSE, FALSE, FALSE, {0,0,0}},
43 {(
const guchar*)
"blue", 0, 0, 255, FALSE, FALSE, FALSE, {0,0,0}},
44 {(
const guchar*)
"blueviolet", 138, 43, 226, FALSE, FALSE, FALSE, {0,0,0}},
45 {(
const guchar*)
"brown", 165, 42, 42, FALSE, FALSE, FALSE, {0,0,0}},
46 {(
const guchar*)
"burlywood", 222, 184, 135, FALSE, FALSE, FALSE, {0,0,0}},
47 {(
const guchar*)
"cadetblue", 95, 158, 160, FALSE, FALSE, FALSE, {0,0,0}},
48 {(
const guchar*)
"chartreuse", 127, 255, 0, FALSE, FALSE, FALSE, {0,0,0}},
49 {(
const guchar*)
"chocolate", 210, 105, 30, FALSE, FALSE, FALSE, {0,0,0}},
50 {(
const guchar*)
"coral", 255, 127, 80, FALSE, FALSE, FALSE, {0,0,0}},
51 {(
const guchar*)
"cornflowerblue", 100, 149, 237, FALSE, FALSE, FALSE, {0,0,0}},
52 {(
const guchar*)
"cornsilk", 255, 248, 220, FALSE, FALSE, FALSE, {0,0,0}},
53 {(
const guchar*)
"crimson", 220, 20, 60, FALSE, FALSE, FALSE, {0,0,0}},
54 {(
const guchar*)
"cyan", 0, 255, 255, FALSE, FALSE, FALSE, {0,0,0}},
55 {(
const guchar*)
"darkblue", 0, 0, 139, FALSE, FALSE, FALSE, {0,0,0}},
56 {(
const guchar*)
"darkcyan", 0, 139, 139, FALSE, FALSE, FALSE, {0,0,0}},
57 {(
const guchar*)
"darkgoldenrod", 184, 134, 11, FALSE, FALSE, FALSE, {0,0,0}},
58 {(
const guchar*)
"darkgray", 169, 169, 169, FALSE, FALSE, FALSE, {0,0,0}},
59 {(
const guchar*)
"darkgreen", 0, 100, 0, FALSE, FALSE, FALSE, {0,0,0}},
60 {(
const guchar*)
"darkgrey", 169, 169, 169, FALSE, FALSE, FALSE, {0,0,0}},
61 {(
const guchar*)
"darkkhaki", 189, 183, 107, FALSE, FALSE, FALSE, {0,0,0}},
62 {(
const guchar*)
"darkmagenta", 139, 0, 139, FALSE, FALSE, FALSE, {0,0,0}},
63 {(
const guchar*)
"darkolivegreen", 85, 107, 47, FALSE, FALSE, FALSE, {0,0,0}},
64 {(
const guchar*)
"darkorange", 255, 140, 0, FALSE, FALSE, FALSE, {0,0,0}},
65 {(
const guchar*)
"darkorchid", 153, 50, 204, FALSE, FALSE, FALSE, {0,0,0}},
66 {(
const guchar*)
"darkred", 139, 0, 0, FALSE, FALSE, FALSE, {0,0,0}},
67 {(
const guchar*)
"darksalmon", 233, 150, 122, FALSE, FALSE, FALSE, {0,0,0}},
68 {(
const guchar*)
"darkseagreen", 143, 188, 143, FALSE, FALSE, FALSE, {0,0,0}},
69 {(
const guchar*)
"darkslateblue", 72, 61, 139, FALSE, FALSE, FALSE, {0,0,0}},
70 {(
const guchar*)
"darkslategray", 47, 79, 79, FALSE, FALSE, FALSE, {0,0,0}},
71 {(
const guchar*)
"darkslategrey", 47, 79, 79, FALSE, FALSE, FALSE, {0,0,0}},
72 {(
const guchar*)
"darkturquoise", 0, 206, 209, FALSE, FALSE, FALSE, {0,0,0}},
73 {(
const guchar*)
"darkviolet", 148, 0, 211, FALSE, FALSE, FALSE, {0,0,0}},
74 {(
const guchar*)
"deeppink", 255, 20, 147, FALSE, FALSE, FALSE, {0,0,0}},
75 {(
const guchar*)
"deepskyblue", 0, 191, 255, FALSE, FALSE, FALSE, {0,0,0}},
76 {(
const guchar*)
"dimgray", 105, 105, 105, FALSE, FALSE, FALSE, {0,0,0}},
77 {(
const guchar*)
"dimgrey", 105, 105, 105, FALSE, FALSE, FALSE, {0,0,0}},
78 {(
const guchar*)
"dodgerblue", 30, 144, 255, FALSE, FALSE, FALSE, {0,0,0}},
79 {(
const guchar*)
"firebrick", 178, 34, 34, FALSE, FALSE, FALSE, {0,0,0}},
80 {(
const guchar*)
"floralwhite", 255, 250, 240, FALSE, FALSE, FALSE, {0,0,0}},
81 {(
const guchar*)
"forestgreen", 34, 139, 34, FALSE, FALSE, FALSE, {0,0,0}},
82 {(
const guchar*)
"fuchsia", 255, 0, 255, FALSE, FALSE, FALSE, {0,0,0}},
83 {(
const guchar*)
"gainsboro", 220, 220, 220, FALSE, FALSE, FALSE, {0,0,0}},
84 {(
const guchar*)
"ghostwhite", 248, 248, 255, FALSE, FALSE, FALSE, {0,0,0}},
85 {(
const guchar*)
"gold", 255, 215, 0, FALSE, FALSE, FALSE, {0,0,0}},
86 {(
const guchar*)
"goldenrod", 218, 165, 32, FALSE, FALSE, FALSE, {0,0,0}},
87 {(
const guchar*)
"gray", 128, 128, 128, FALSE, FALSE, FALSE, {0,0,0}},
88 {(
const guchar*)
"green", 0, 128, 0, FALSE, FALSE, FALSE, {0,0,0}},
89 {(
const guchar*)
"greenyellow", 173, 255, 47, FALSE, FALSE, FALSE, {0,0,0}},
90 {(
const guchar*)
"grey", 128, 128, 128, FALSE, FALSE, FALSE, {0,0,0}},
91 {(
const guchar*)
"honeydew", 240, 255, 240, FALSE, FALSE, FALSE, {0,0,0}},
92 {(
const guchar*)
"hotpink", 255, 105, 180, FALSE, FALSE, FALSE, {0,0,0}},
93 {(
const guchar*)
"indianred", 205, 92, 92, FALSE, FALSE, FALSE, {0,0,0}},
94 {(
const guchar*)
"indigo", 75, 0, 130, FALSE, FALSE, FALSE, {0,0,0}},
95 {(
const guchar*)
"ivory", 255, 255, 240, FALSE, FALSE, FALSE, {0,0,0}},
96 {(
const guchar*)
"khaki", 240, 230, 140, FALSE, FALSE, FALSE, {0,0,0}},
97 {(
const guchar*)
"lavender", 230, 230, 250, FALSE, FALSE, FALSE, {0,0,0}},
98 {(
const guchar*)
"lavenderblush", 255, 240, 245, FALSE, FALSE, FALSE, {0,0,0}},
99 {(
const guchar*)
"lawngreen", 124, 252, 0, FALSE, FALSE, FALSE, {0,0,0}},
100 {(
const guchar*)
"lemonchiffon", 255, 250, 205, FALSE, FALSE, FALSE, {0,0,0}},
101 {(
const guchar*)
"lightblue", 173, 216, 230, FALSE, FALSE, FALSE, {0,0,0}},
102 {(
const guchar*)
"lightcoral", 240, 128, 128, FALSE, FALSE, FALSE, {0,0,0}},
103 {(
const guchar*)
"lightcyan", 224, 255, 255, FALSE, FALSE, FALSE, {0,0,0}},
104 {(
const guchar*)
"lightgoldenrodyellow", 250, 250, 210, FALSE, FALSE, FALSE, {0,0,0}},
105 {(
const guchar*)
"lightgray", 211, 211, 211, FALSE, FALSE, FALSE, {0,0,0}},
106 {(
const guchar*)
"lightgreen", 144, 238, 144, FALSE, FALSE, FALSE, {0,0,0}},
107 {(
const guchar*)
"lightgrey", 211, 211, 211, FALSE, FALSE, FALSE, {0,0,0}},
108 {(
const guchar*)
"lightpink", 255, 182, 193, FALSE, FALSE, FALSE, {0,0,0}},
109 {(
const guchar*)
"lightsalmon", 255, 160, 122, FALSE, FALSE, FALSE, {0,0,0}},
110 {(
const guchar*)
"lightseagreen", 32, 178, 170, FALSE, FALSE, FALSE, {0,0,0}},
111 {(
const guchar*)
"lightskyblue", 135, 206, 250, FALSE, FALSE, FALSE, {0,0,0}},
112 {(
const guchar*)
"lightslategray", 119, 136, 153, FALSE, FALSE, FALSE, {0,0,0}},
113 {(
const guchar*)
"lightslategrey", 119, 136, 153, FALSE, FALSE, FALSE, {0,0,0}},
114 {(
const guchar*)
"lightsteelblue", 176, 196, 222, FALSE, FALSE, FALSE, {0,0,0}},
115 {(
const guchar*)
"lightyellow", 255, 255, 224, FALSE, FALSE, FALSE, {0,0,0}},
116 {(
const guchar*)
"lime", 0, 255, 0, FALSE, FALSE, FALSE, {0,0,0}},
117 {(
const guchar*)
"limegreen", 50, 205, 50, FALSE, FALSE, FALSE, {0,0,0}},
118 {(
const guchar*)
"linen", 250, 240, 230, FALSE, FALSE, FALSE, {0,0,0}},
119 {(
const guchar*)
"magenta", 255, 0, 255, FALSE, FALSE, FALSE, {0,0,0}},
120 {(
const guchar*)
"maroon", 128, 0, 0, FALSE, FALSE, FALSE, {0,0,0}},
121 {(
const guchar*)
"mediumaquamarine", 102, 205, 170, FALSE, FALSE, FALSE, {0,0,0}},
122 {(
const guchar*)
"mediumblue", 0, 0, 205, FALSE, FALSE, FALSE, {0,0,0}},
123 {(
const guchar*)
"mediumorchid", 186, 85, 211, FALSE, FALSE, FALSE, {0,0,0}},
124 {(
const guchar*)
"mediumpurple", 147, 112, 219, FALSE, FALSE, FALSE, {0,0,0}},
125 {(
const guchar*)
"mediumseagreen", 60, 179, 113, FALSE, FALSE, FALSE, {0,0,0}},
126 {(
const guchar*)
"mediumslateblue", 123, 104, 238, FALSE, FALSE, FALSE, {0,0,0}},
127 {(
const guchar*)
"mediumspringgreen", 0, 250, 154, FALSE, FALSE, FALSE, {0,0,0}},
128 {(
const guchar*)
"mediumturquoise", 72, 209, 204, FALSE, FALSE, FALSE, {0,0,0}},
129 {(
const guchar*)
"mediumvioletred", 199, 21, 133, FALSE, FALSE, FALSE, {0,0,0}},
130 {(
const guchar*)
"midnightblue", 25, 25, 112, FALSE, FALSE, FALSE, {0,0,0}},
131 {(
const guchar*)
"mintcream", 245, 255, 250, FALSE, FALSE, FALSE, {0,0,0}},
132 {(
const guchar*)
"mistyrose", 255, 228, 225, FALSE, FALSE, FALSE, {0,0,0}},
133 {(
const guchar*)
"moccasin", 255, 228, 181, FALSE, FALSE, FALSE, {0,0,0}},
134 {(
const guchar*)
"navajowhite", 255, 222, 173, FALSE, FALSE, FALSE, {0,0,0}},
135 {(
const guchar*)
"navy", 0, 0, 128, FALSE, FALSE, FALSE, {0,0,0}},
136 {(
const guchar*)
"oldlace", 253, 245, 230, FALSE, FALSE, FALSE, {0,0,0}},
137 {(
const guchar*)
"olive", 128, 128, 0, FALSE, FALSE, FALSE, {0,0,0}},
138 {(
const guchar*)
"olivedrab", 107, 142, 35, FALSE, FALSE, FALSE, {0,0,0}},
139 {(
const guchar*)
"orange", 255, 165, 0, FALSE, FALSE, FALSE, {0,0,0}},
140 {(
const guchar*)
"orangered", 255, 69, 0, FALSE, FALSE, FALSE, {0,0,0}},
141 {(
const guchar*)
"orchid", 218, 112, 214, FALSE, FALSE, FALSE, {0,0,0}},
142 {(
const guchar*)
"palegoldenrod", 238, 232, 170, FALSE, FALSE, FALSE, {0,0,0}},
143 {(
const guchar*)
"palegreen", 152, 251, 152, FALSE, FALSE, FALSE, {0,0,0}},
144 {(
const guchar*)
"paleturquoise", 175, 238, 238, FALSE, FALSE, FALSE, {0,0,0}},
145 {(
const guchar*)
"palevioletred", 219, 112, 147, FALSE, FALSE, FALSE, {0,0,0}},
146 {(
const guchar*)
"papayawhip", 255, 239, 213, FALSE, FALSE, FALSE, {0,0,0}},
147 {(
const guchar*)
"peachpuff", 255, 218, 185, FALSE, FALSE, FALSE, {0,0,0}},
148 {(
const guchar*)
"peru", 205, 133, 63, FALSE, FALSE, FALSE, {0,0,0}},
149 {(
const guchar*)
"pink", 255, 192, 203, FALSE, FALSE, FALSE, {0,0,0}},
150 {(
const guchar*)
"plum", 221, 160, 221, FALSE, FALSE, FALSE, {0,0,0}},
151 {(
const guchar*)
"powderblue", 176, 224, 230, FALSE, FALSE, FALSE, {0,0,0}},
152 {(
const guchar*)
"purple", 128, 0, 128, FALSE, FALSE, FALSE, {0,0,0}},
153 {(
const guchar*)
"red", 255, 0, 0, FALSE, FALSE, FALSE, {0,0,0}},
154 {(
const guchar*)
"rosybrown", 188, 143, 143, FALSE, FALSE, FALSE, {0,0,0}},
155 {(
const guchar*)
"royalblue", 65, 105, 225, FALSE, FALSE, FALSE, {0,0,0}},
156 {(
const guchar*)
"saddlebrown", 139, 69, 19, FALSE, FALSE, FALSE, {0,0,0}},
157 {(
const guchar*)
"salmon", 250, 128, 114, FALSE, FALSE, FALSE, {0,0,0}},
158 {(
const guchar*)
"sandybrown", 244, 164, 96, FALSE, FALSE, FALSE, {0,0,0}},
159 {(
const guchar*)
"seagreen", 46, 139, 87, FALSE, FALSE, FALSE, {0,0,0}},
160 {(
const guchar*)
"seashell", 255, 245, 238, FALSE, FALSE, FALSE, {0,0,0}},
161 {(
const guchar*)
"sienna", 160, 82, 45, FALSE, FALSE, FALSE, {0,0,0}},
162 {(
const guchar*)
"silver", 192, 192, 192, FALSE, FALSE, FALSE, {0,0,0}},
163 {(
const guchar*)
"skyblue", 135, 206, 235, FALSE, FALSE, FALSE, {0,0,0}},
164 {(
const guchar*)
"slateblue", 106, 90, 205, FALSE, FALSE, FALSE, {0,0,0}},
165 {(
const guchar*)
"slategray", 112, 128, 144, FALSE, FALSE, FALSE, {0,0,0}},
166 {(
const guchar*)
"slategrey", 112, 128, 144, FALSE, FALSE, FALSE, {0,0,0}},
167 {(
const guchar*)
"snow", 255, 250, 250, FALSE, FALSE, FALSE, {0,0,0}},
168 {(
const guchar*)
"springgreen", 0, 255, 127, FALSE, FALSE, FALSE, {0,0,0}},
169 {(
const guchar*)
"steelblue", 70, 130, 180, FALSE, FALSE, FALSE, {0,0,0}},
170 {(
const guchar*)
"tan", 210, 180, 140, FALSE, FALSE, FALSE, {0,0,0}},
171 {(
const guchar*)
"teal", 0, 128, 128, FALSE, FALSE, FALSE, {0,0,0}},
172 {(
const guchar*)
"thistle", 216, 191, 216, FALSE, FALSE, FALSE, {0,0,0}},
173 {(
const guchar*)
"tomato", 255, 99, 71, FALSE, FALSE, FALSE, {0,0,0}},
174 {(
const guchar*)
"transparent", 255, 255, 255, FALSE, FALSE, TRUE, {0,0,0}},
175 {(
const guchar*)
"turquoise", 64, 224, 208, FALSE, FALSE, FALSE, {0,0,0}},
176 {(
const guchar*)
"violet", 238, 130, 238, FALSE, FALSE, FALSE, {0,0,0}},
177 {(
const guchar*)
"wheat", 245, 222, 179, FALSE, FALSE, FALSE, {0,0,0}},
178 {(
const guchar*)
"white", 255, 255, 255, FALSE, FALSE, FALSE, {0,0,0}},
179 {(
const guchar*)
"whitesmoke", 245, 245, 245, FALSE, FALSE, FALSE, {0,0,0}},
180 {(
const guchar*)
"yellow", 255, 255, 0, FALSE, FALSE, FALSE, {0,0,0}},
181 {(
const guchar*)
"yellowgreen", 154, 205, 50, FALSE, FALSE, FALSE, {0,0,0}}
194 CRRgb *result = NULL;
196 result = g_try_malloc (
sizeof (
CRRgb));
198 if (result == NULL) {
203 memset (result, 0,
sizeof (
CRRgb));
222 gulong a_blue, gboolean a_is_percentage)
224 CRRgb *result = NULL;
228 g_return_val_if_fail (result, NULL);
231 result->green = a_green;
232 result->blue = a_blue;
233 result->is_percentage = a_is_percentage;
250 guchar *result = NULL;
251 GString *str_buf = NULL;
253 str_buf = g_string_new (NULL);
254 g_return_val_if_fail (str_buf, NULL);
256 if (a_this->is_percentage == 1) {
257 g_string_append_printf (str_buf,
"%ld", a_this->red);
259 g_string_append (str_buf,
"%, ");
261 g_string_append_printf (str_buf,
"%ld", a_this->green);
262 g_string_append (str_buf,
"%, ");
264 g_string_append_printf (str_buf,
"%ld", a_this->blue);
265 g_string_append_c (str_buf,
'%');
267 g_string_append_printf (str_buf,
"%ld", a_this->red);
268 g_string_append (str_buf,
", ");
270 g_string_append_printf (str_buf,
"%ld", a_this->green);
271 g_string_append (str_buf,
", ");
273 g_string_append_printf (str_buf,
"%ld", a_this->blue);
277 result = (guchar *) str_buf->str;
278 g_string_free (str_buf, FALSE);
298 g_return_if_fail (a_this);
303 fprintf (a_fp,
"%s", str);
323 if (a_this->is_percentage == FALSE)
325 a_this->red = a_this->red * 255 / 100;
326 a_this->green = a_this->green * 255 / 100;
327 a_this->blue = a_this->blue * 255 / 100;
328 a_this->is_percentage = FALSE;
346 gulong a_green, gulong a_blue, gboolean a_is_percentage)
349 if (a_is_percentage != FALSE) {
350 g_return_val_if_fail (a_red <= 100
355 a_this->is_percentage = a_is_percentage;
358 a_this->green = a_green;
359 a_this->blue = a_blue;
360 a_this->inherit = FALSE ;
361 a_this->is_transparent = FALSE ;
380 a_this->inherit = a_inherit ;
397 return a_this->inherit ;
414 g_return_val_if_fail (a_this, FALSE) ;
415 return a_this->is_transparent ;
429 gboolean a_is_transparent)
432 a_this->is_transparent = a_is_transparent ;
456 cr_rgb_color_name_compare (
const void *a,
459 const char *a_color_name = a;
460 const CRRgb *rgb = b;
462 return g_ascii_strcasecmp (a_color_name, (
const char *) rgb->name);
480 result = bsearch (a_color_name,
482 G_N_ELEMENTS (gv_standard_colors),
483 sizeof (gv_standard_colors[0]),
484 cr_rgb_color_name_compare);
505 guchar colors[3] = { 0 };
509 if (strlen ((
const char *) a_hex) == 3) {
510 for (i = 0; i < 3; i++) {
511 if (a_hex[i] >=
'0' && a_hex[i] <=
'9') {
512 colors[i] = a_hex[i] -
'0';
513 colors[i] = (colors[i] << 4) | colors[i];
514 }
else if (a_hex[i] >=
'a' && a_hex[i] <=
'z') {
515 colors[i] = 10 + a_hex[i] -
'a';
516 colors[i] = (colors[i] << 4) | colors[i];
517 }
else if (a_hex[i] >=
'A' && a_hex[i] <=
'Z') {
518 colors[i] = 10 + a_hex[i] -
'A';
519 colors[i] = (colors[i] << 4) | colors[i];
524 }
else if (strlen ((
const char *) a_hex) == 6) {
525 for (i = 0; i < 6; i++) {
526 if (a_hex[i] >=
'0' && a_hex[i] <=
'9') {
528 colors[i / 2] |= a_hex[i] -
'0';
530 }
else if (a_hex[i] >=
'a' && a_hex[i] <=
'z') {
532 colors[i / 2] |= 10 + a_hex[i] -
'a';
534 }
else if (a_hex[i] >=
'A' && a_hex[i] <=
'Z') {
536 colors[i / 2] |= 10 + a_hex[i] -
'A';
546 if (status ==
CR_OK) {
548 colors[1], colors[2], FALSE);
567 g_return_val_if_fail (a_this && a_value,
570 switch(a_value->
type) {
581 if (!strncmp (
"inherit",
583 sizeof (
"inherit")-1)) {
584 a_this->inherit = TRUE;
585 a_this->is_transparent = FALSE ;
589 (
const guchar *) a_value->
content.
str->stryng->str) ;
593 (
"a_value has NULL string value") ;
602 (
const guchar *) a_value->
content.
str->stryng->str) ;
605 (
"a_value has NULL string value") ;
617 g_return_val_if_fail (a_dest && a_src,
620 memcpy (a_dest, a_src,
sizeof (
CRRgb)) ;
634 g_return_if_fail (a_this);
654 CRRgb *result = NULL;
656 g_return_val_if_fail (a_str, NULL);
660 g_return_val_if_fail (parser, NULL);