~ubuntu-branches/ubuntu/vivid/gdk-pixbuf/vivid

« back to all changes in this revision

Viewing changes to gdk-pixbuf/gdk-pixbuf-parse-color.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2004-10-06 22:10:04 UTC
  • Revision ID: james.westby@ubuntu.com-20041006221004-rma9deknj8qctu67
Tags: upstream-0.22.0
ImportĀ upstreamĀ versionĀ 0.22.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* GdkPixbuf library - standalone color parsing
 
2
 *
 
3
 * Copyright (C) 2001 Eazel, Inc.
 
4
 *
 
5
 * Authors: John Harper <jsh@eazel.com>
 
6
 *
 
7
 * This library is free software; you can redistribute it and/or
 
8
 * modify it under the terms of the GNU Library General Public
 
9
 * License as published by the Free Software Foundation; either
 
10
 * version 2 of the License, or (at your option) any later version.
 
11
 *
 
12
 * This library is distributed in the hope that it will be useful,
 
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
15
 * Library General Public License for more details.
 
16
 *
 
17
 * You should have received a copy of the GNU Library General Public
 
18
 * License along with this library; if not, write to the
 
19
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 
20
 * Boston, MA 02111-1307, USA.
 
21
 */
 
22
 
 
23
#ifdef HAVE_CONFIG_H
 
24
# include <config.h>
 
25
#endif
 
26
 
 
27
#ifndef PATH_RGB_TXT
 
28
# define PATH_RGB_TXT "/usr/lib/X11/rgb.txt"
 
29
#endif
 
30
 
 
31
#include "gdk-pixbuf.h"
 
32
#include "gdk-pixbuf-private.h"
 
33
 
 
34
#include <glib.h>
 
35
#include <stdio.h>
 
36
#include <errno.h>
 
37
#include <stdlib.h>
 
38
#include <string.h>
 
39
#include <ctype.h>
 
40
 
 
41
/* Used internally to avoid taking a GDK or Xlib dependency */
 
42
typedef struct {
 
43
        gushort red;
 
44
        gushort green;
 
45
        gushort blue;
 
46
} rgb_color;
 
47
 
 
48
/* Mapping from color name to rgb_color struct */
 
49
static GHashTable *named_colors;
 
50
 
 
51
/* In case we can't find rgb.txt, a local copy */
 
52
struct {
 
53
        char *name;
 
54
        rgb_color rgb;
 
55
} local_rgb_txt[] = {
 
56
        { "alice blue", { 240 + (240 << 8), 248 + (248 << 8), 255 + (255 << 8) } },
 
57
        { "aliceblue", { 240 + (240 << 8), 248 + (248 << 8), 255 + (255 << 8) } },
 
58
        { "antique white", { 250 + (250 << 8), 235 + (235 << 8), 215 + (215 << 8) } },
 
59
        { "antiquewhite", { 250 + (250 << 8), 235 + (235 << 8), 215 + (215 << 8) } },
 
60
        { "antiquewhite1", { 255 + (255 << 8), 239 + (239 << 8), 219 + (219 << 8) } },
 
61
        { "antiquewhite2", { 238 + (238 << 8), 223 + (223 << 8), 204 + (204 << 8) } },
 
62
        { "antiquewhite3", { 205 + (205 << 8), 192 + (192 << 8), 176 + (176 << 8) } },
 
63
        { "antiquewhite4", { 139 + (139 << 8), 131 + (131 << 8), 120 + (120 << 8) } },
 
64
        { "aquamarine", { 127 + (127 << 8), 255 + (255 << 8), 212 + (212 << 8) } },
 
65
        { "aquamarine1", { 127 + (127 << 8), 255 + (255 << 8), 212 + (212 << 8) } },
 
66
        { "aquamarine2", { 118 + (118 << 8), 238 + (238 << 8), 198 + (198 << 8) } },
 
67
        { "aquamarine3", { 102 + (102 << 8), 205 + (205 << 8), 170 + (170 << 8) } },
 
68
        { "aquamarine4", { 69 + (69 << 8), 139 + (139 << 8), 116 + (116 << 8) } },
 
69
        { "azure", { 240 + (240 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
70
        { "azure1", { 240 + (240 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
71
        { "azure2", { 224 + (224 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
72
        { "azure3", { 193 + (193 << 8), 205 + (205 << 8), 205 + (205 << 8) } },
 
73
        { "azure4", { 131 + (131 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
74
        { "beige", { 245 + (245 << 8), 245 + (245 << 8), 220 + (220 << 8) } },
 
75
        { "bisque", { 255 + (255 << 8), 228 + (228 << 8), 196 + (196 << 8) } },
 
76
        { "bisque1", { 255 + (255 << 8), 228 + (228 << 8), 196 + (196 << 8) } },
 
77
        { "bisque2", { 238 + (238 << 8), 213 + (213 << 8), 183 + (183 << 8) } },
 
78
        { "bisque3", { 205 + (205 << 8), 183 + (183 << 8), 158 + (158 << 8) } },
 
79
        { "bisque4", { 139 + (139 << 8), 125 + (125 << 8), 107 + (107 << 8) } },
 
80
        { "black", { 0 + (0 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
81
        { "blanched almond", { 255 + (255 << 8), 235 + (235 << 8), 205 + (205 << 8) } },
 
82
        { "blanchedalmond", { 255 + (255 << 8), 235 + (235 << 8), 205 + (205 << 8) } },
 
83
        { "blue violet", { 138 + (138 << 8), 43 + (43 << 8), 226 + (226 << 8) } },
 
84
        { "blue", { 0 + (0 << 8), 0 + (0 << 8), 255 + (255 << 8) } },
 
85
        { "blue1", { 0 + (0 << 8), 0 + (0 << 8), 255 + (255 << 8) } },
 
86
        { "blue2", { 0 + (0 << 8), 0 + (0 << 8), 238 + (238 << 8) } },
 
87
        { "blue3", { 0 + (0 << 8), 0 + (0 << 8), 205 + (205 << 8) } },
 
88
        { "blue4", { 0 + (0 << 8), 0 + (0 << 8), 139 + (139 << 8) } },
 
89
        { "blueviolet", { 138 + (138 << 8), 43 + (43 << 8), 226 + (226 << 8) } },
 
90
        { "brown", { 165 + (165 << 8), 42 + (42 << 8), 42 + (42 << 8) } },
 
91
        { "brown1", { 255 + (255 << 8), 64 + (64 << 8), 64 + (64 << 8) } },
 
92
        { "brown2", { 238 + (238 << 8), 59 + (59 << 8), 59 + (59 << 8) } },
 
93
        { "brown3", { 205 + (205 << 8), 51 + (51 << 8), 51 + (51 << 8) } },
 
94
        { "brown4", { 139 + (139 << 8), 35 + (35 << 8), 35 + (35 << 8) } },
 
95
        { "burlywood", { 222 + (222 << 8), 184 + (184 << 8), 135 + (135 << 8) } },
 
96
        { "burlywood1", { 255 + (255 << 8), 211 + (211 << 8), 155 + (155 << 8) } },
 
97
        { "burlywood2", { 238 + (238 << 8), 197 + (197 << 8), 145 + (145 << 8) } },
 
98
        { "burlywood3", { 205 + (205 << 8), 170 + (170 << 8), 125 + (125 << 8) } },
 
99
        { "burlywood4", { 139 + (139 << 8), 115 + (115 << 8), 85 + (85 << 8) } },
 
100
        { "cadet blue", { 95 + (95 << 8), 158 + (158 << 8), 160 + (160 << 8) } },
 
101
        { "cadetblue", { 95 + (95 << 8), 158 + (158 << 8), 160 + (160 << 8) } },
 
102
        { "cadetblue1", { 152 + (152 << 8), 245 + (245 << 8), 255 + (255 << 8) } },
 
103
        { "cadetblue2", { 142 + (142 << 8), 229 + (229 << 8), 238 + (238 << 8) } },
 
104
        { "cadetblue3", { 122 + (122 << 8), 197 + (197 << 8), 205 + (205 << 8) } },
 
105
        { "cadetblue4", { 83 + (83 << 8), 134 + (134 << 8), 139 + (139 << 8) } },
 
106
        { "chartreuse", { 127 + (127 << 8), 255 + (255 << 8), 0 + (0 << 8) } },
 
107
        { "chartreuse1", { 127 + (127 << 8), 255 + (255 << 8), 0 + (0 << 8) } },
 
108
        { "chartreuse2", { 118 + (118 << 8), 238 + (238 << 8), 0 + (0 << 8) } },
 
109
        { "chartreuse3", { 102 + (102 << 8), 205 + (205 << 8), 0 + (0 << 8) } },
 
110
        { "chartreuse4", { 69 + (69 << 8), 139 + (139 << 8), 0 + (0 << 8) } },
 
111
        { "chocolate", { 210 + (210 << 8), 105 + (105 << 8), 30 + (30 << 8) } },
 
112
        { "chocolate1", { 255 + (255 << 8), 127 + (127 << 8), 36 + (36 << 8) } },
 
113
        { "chocolate2", { 238 + (238 << 8), 118 + (118 << 8), 33 + (33 << 8) } },
 
114
        { "chocolate3", { 205 + (205 << 8), 102 + (102 << 8), 29 + (29 << 8) } },
 
115
        { "chocolate4", { 139 + (139 << 8), 69 + (69 << 8), 19 + (19 << 8) } },
 
116
        { "coral", { 255 + (255 << 8), 127 + (127 << 8), 80 + (80 << 8) } },
 
117
        { "coral1", { 255 + (255 << 8), 114 + (114 << 8), 86 + (86 << 8) } },
 
118
        { "coral2", { 238 + (238 << 8), 106 + (106 << 8), 80 + (80 << 8) } },
 
119
        { "coral3", { 205 + (205 << 8), 91 + (91 << 8), 69 + (69 << 8) } },
 
120
        { "coral4", { 139 + (139 << 8), 62 + (62 << 8), 47 + (47 << 8) } },
 
121
        { "cornflower blue", { 100 + (100 << 8), 149 + (149 << 8), 237 + (237 << 8) } },
 
122
        { "cornflowerblue", { 100 + (100 << 8), 149 + (149 << 8), 237 + (237 << 8) } },
 
123
        { "cornsilk", { 255 + (255 << 8), 248 + (248 << 8), 220 + (220 << 8) } },
 
124
        { "cornsilk1", { 255 + (255 << 8), 248 + (248 << 8), 220 + (220 << 8) } },
 
125
        { "cornsilk2", { 238 + (238 << 8), 232 + (232 << 8), 205 + (205 << 8) } },
 
126
        { "cornsilk3", { 205 + (205 << 8), 200 + (200 << 8), 177 + (177 << 8) } },
 
127
        { "cornsilk4", { 139 + (139 << 8), 136 + (136 << 8), 120 + (120 << 8) } },
 
128
        { "cyan", { 0 + (0 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
129
        { "cyan1", { 0 + (0 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
130
        { "cyan2", { 0 + (0 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
131
        { "cyan3", { 0 + (0 << 8), 205 + (205 << 8), 205 + (205 << 8) } },
 
132
        { "cyan4", { 0 + (0 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
133
        { "dark blue", { 0 + (0 << 8), 0 + (0 << 8), 139 + (139 << 8) } },
 
134
        { "dark cyan", { 0 + (0 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
135
        { "dark goldenrod", { 184 + (184 << 8), 134 + (134 << 8), 11 + (11 << 8) } },
 
136
        { "dark gray", { 169 + (169 << 8), 169 + (169 << 8), 169 + (169 << 8) } },
 
137
        { "dark green", { 0 + (0 << 8), 100 + (100 << 8), 0 + (0 << 8) } },
 
138
        { "dark grey", { 169 + (169 << 8), 169 + (169 << 8), 169 + (169 << 8) } },
 
139
        { "dark khaki", { 189 + (189 << 8), 183 + (183 << 8), 107 + (107 << 8) } },
 
140
        { "dark magenta", { 139 + (139 << 8), 0 + (0 << 8), 139 + (139 << 8) } },
 
141
        { "dark olive green", { 85 + (85 << 8), 107 + (107 << 8), 47 + (47 << 8) } },
 
142
        { "dark orange", { 255 + (255 << 8), 140 + (140 << 8), 0 + (0 << 8) } },
 
143
        { "dark orchid", { 153 + (153 << 8), 50 + (50 << 8), 204 + (204 << 8) } },
 
144
        { "dark red", { 139 + (139 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
145
        { "dark salmon", { 233 + (233 << 8), 150 + (150 << 8), 122 + (122 << 8) } },
 
146
        { "dark sea green", { 143 + (143 << 8), 188 + (188 << 8), 143 + (143 << 8) } },
 
147
        { "dark slate blue", { 72 + (72 << 8), 61 + (61 << 8), 139 + (139 << 8) } },
 
148
        { "dark slate gray", { 47 + (47 << 8), 79 + (79 << 8), 79 + (79 << 8) } },
 
149
        { "dark slate grey", { 47 + (47 << 8), 79 + (79 << 8), 79 + (79 << 8) } },
 
150
        { "dark turquoise", { 0 + (0 << 8), 206 + (206 << 8), 209 + (209 << 8) } },
 
151
        { "dark violet", { 148 + (148 << 8), 0 + (0 << 8), 211 + (211 << 8) } },
 
152
        { "darkblue", { 0 + (0 << 8), 0 + (0 << 8), 139 + (139 << 8) } },
 
153
        { "darkcyan", { 0 + (0 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
154
        { "darkgoldenrod", { 184 + (184 << 8), 134 + (134 << 8), 11 + (11 << 8) } },
 
155
        { "darkgoldenrod1", { 255 + (255 << 8), 185 + (185 << 8), 15 + (15 << 8) } },
 
156
        { "darkgoldenrod2", { 238 + (238 << 8), 173 + (173 << 8), 14 + (14 << 8) } },
 
157
        { "darkgoldenrod3", { 205 + (205 << 8), 149 + (149 << 8), 12 + (12 << 8) } },
 
158
        { "darkgoldenrod4", { 139 + (139 << 8), 101 + (101 << 8), 8 + (8 << 8) } },
 
159
        { "darkgray", { 169 + (169 << 8), 169 + (169 << 8), 169 + (169 << 8) } },
 
160
        { "darkgreen", { 0 + (0 << 8), 100 + (100 << 8), 0 + (0 << 8) } },
 
161
        { "darkgrey", { 169 + (169 << 8), 169 + (169 << 8), 169 + (169 << 8) } },
 
162
        { "darkkhaki", { 189 + (189 << 8), 183 + (183 << 8), 107 + (107 << 8) } },
 
163
        { "darkmagenta", { 139 + (139 << 8), 0 + (0 << 8), 139 + (139 << 8) } },
 
164
        { "darkolivegreen", { 85 + (85 << 8), 107 + (107 << 8), 47 + (47 << 8) } },
 
165
        { "darkolivegreen1", { 202 + (202 << 8), 255 + (255 << 8), 112 + (112 << 8) } },
 
166
        { "darkolivegreen2", { 188 + (188 << 8), 238 + (238 << 8), 104 + (104 << 8) } },
 
167
        { "darkolivegreen3", { 162 + (162 << 8), 205 + (205 << 8), 90 + (90 << 8) } },
 
168
        { "darkolivegreen4", { 110 + (110 << 8), 139 + (139 << 8), 61 + (61 << 8) } },
 
169
        { "darkorange", { 255 + (255 << 8), 140 + (140 << 8), 0 + (0 << 8) } },
 
170
        { "darkorange1", { 255 + (255 << 8), 127 + (127 << 8), 0 + (0 << 8) } },
 
171
        { "darkorange2", { 238 + (238 << 8), 118 + (118 << 8), 0 + (0 << 8) } },
 
172
        { "darkorange3", { 205 + (205 << 8), 102 + (102 << 8), 0 + (0 << 8) } },
 
173
        { "darkorange4", { 139 + (139 << 8), 69 + (69 << 8), 0 + (0 << 8) } },
 
174
        { "darkorchid", { 153 + (153 << 8), 50 + (50 << 8), 204 + (204 << 8) } },
 
175
        { "darkorchid1", { 191 + (191 << 8), 62 + (62 << 8), 255 + (255 << 8) } },
 
176
        { "darkorchid2", { 178 + (178 << 8), 58 + (58 << 8), 238 + (238 << 8) } },
 
177
        { "darkorchid3", { 154 + (154 << 8), 50 + (50 << 8), 205 + (205 << 8) } },
 
178
        { "darkorchid4", { 104 + (104 << 8), 34 + (34 << 8), 139 + (139 << 8) } },
 
179
        { "darkred", { 139 + (139 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
180
        { "darksalmon", { 233 + (233 << 8), 150 + (150 << 8), 122 + (122 << 8) } },
 
181
        { "darkseagreen", { 143 + (143 << 8), 188 + (188 << 8), 143 + (143 << 8) } },
 
182
        { "darkseagreen1", { 193 + (193 << 8), 255 + (255 << 8), 193 + (193 << 8) } },
 
183
        { "darkseagreen2", { 180 + (180 << 8), 238 + (238 << 8), 180 + (180 << 8) } },
 
184
        { "darkseagreen3", { 155 + (155 << 8), 205 + (205 << 8), 155 + (155 << 8) } },
 
185
        { "darkseagreen4", { 105 + (105 << 8), 139 + (139 << 8), 105 + (105 << 8) } },
 
186
        { "darkslateblue", { 72 + (72 << 8), 61 + (61 << 8), 139 + (139 << 8) } },
 
187
        { "darkslategray", { 47 + (47 << 8), 79 + (79 << 8), 79 + (79 << 8) } },
 
188
        { "darkslategray1", { 151 + (151 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
189
        { "darkslategray2", { 141 + (141 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
190
        { "darkslategray3", { 121 + (121 << 8), 205 + (205 << 8), 205 + (205 << 8) } },
 
191
        { "darkslategray4", { 82 + (82 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
192
        { "darkslategrey", { 47 + (47 << 8), 79 + (79 << 8), 79 + (79 << 8) } },
 
193
        { "darkturquoise", { 0 + (0 << 8), 206 + (206 << 8), 209 + (209 << 8) } },
 
194
        { "darkviolet", { 148 + (148 << 8), 0 + (0 << 8), 211 + (211 << 8) } },
 
195
        { "deep pink", { 255 + (255 << 8), 20 + (20 << 8), 147 + (147 << 8) } },
 
196
        { "deep sky blue", { 0 + (0 << 8), 191 + (191 << 8), 255 + (255 << 8) } },
 
197
        { "deeppink", { 255 + (255 << 8), 20 + (20 << 8), 147 + (147 << 8) } },
 
198
        { "deeppink1", { 255 + (255 << 8), 20 + (20 << 8), 147 + (147 << 8) } },
 
199
        { "deeppink2", { 238 + (238 << 8), 18 + (18 << 8), 137 + (137 << 8) } },
 
200
        { "deeppink3", { 205 + (205 << 8), 16 + (16 << 8), 118 + (118 << 8) } },
 
201
        { "deeppink4", { 139 + (139 << 8), 10 + (10 << 8), 80 + (80 << 8) } },
 
202
        { "deepskyblue", { 0 + (0 << 8), 191 + (191 << 8), 255 + (255 << 8) } },
 
203
        { "deepskyblue1", { 0 + (0 << 8), 191 + (191 << 8), 255 + (255 << 8) } },
 
204
        { "deepskyblue2", { 0 + (0 << 8), 178 + (178 << 8), 238 + (238 << 8) } },
 
205
        { "deepskyblue3", { 0 + (0 << 8), 154 + (154 << 8), 205 + (205 << 8) } },
 
206
        { "deepskyblue4", { 0 + (0 << 8), 104 + (104 << 8), 139 + (139 << 8) } },
 
207
        { "dim gray", { 105 + (105 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
208
        { "dim grey", { 105 + (105 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
209
        { "dimgray", { 105 + (105 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
210
        { "dimgrey", { 105 + (105 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
211
        { "dodger blue", { 30 + (30 << 8), 144 + (144 << 8), 255 + (255 << 8) } },
 
212
        { "dodgerblue", { 30 + (30 << 8), 144 + (144 << 8), 255 + (255 << 8) } },
 
213
        { "dodgerblue1", { 30 + (30 << 8), 144 + (144 << 8), 255 + (255 << 8) } },
 
214
        { "dodgerblue2", { 28 + (28 << 8), 134 + (134 << 8), 238 + (238 << 8) } },
 
215
        { "dodgerblue3", { 24 + (24 << 8), 116 + (116 << 8), 205 + (205 << 8) } },
 
216
        { "dodgerblue4", { 16 + (16 << 8), 78 + (78 << 8), 139 + (139 << 8) } },
 
217
        { "firebrick", { 178 + (178 << 8), 34 + (34 << 8), 34 + (34 << 8) } },
 
218
        { "firebrick1", { 255 + (255 << 8), 48 + (48 << 8), 48 + (48 << 8) } },
 
219
        { "firebrick2", { 238 + (238 << 8), 44 + (44 << 8), 44 + (44 << 8) } },
 
220
        { "firebrick3", { 205 + (205 << 8), 38 + (38 << 8), 38 + (38 << 8) } },
 
221
        { "firebrick4", { 139 + (139 << 8), 26 + (26 << 8), 26 + (26 << 8) } },
 
222
        { "floral white", { 255 + (255 << 8), 250 + (250 << 8), 240 + (240 << 8) } },
 
223
        { "floralwhite", { 255 + (255 << 8), 250 + (250 << 8), 240 + (240 << 8) } },
 
224
        { "forest green", { 34 + (34 << 8), 139 + (139 << 8), 34 + (34 << 8) } },
 
225
        { "forestgreen", { 34 + (34 << 8), 139 + (139 << 8), 34 + (34 << 8) } },
 
226
        { "gainsboro", { 220 + (220 << 8), 220 + (220 << 8), 220 + (220 << 8) } },
 
227
        { "ghost white", { 248 + (248 << 8), 248 + (248 << 8), 255 + (255 << 8) } },
 
228
        { "ghostwhite", { 248 + (248 << 8), 248 + (248 << 8), 255 + (255 << 8) } },
 
229
        { "gold", { 255 + (255 << 8), 215 + (215 << 8), 0 + (0 << 8) } },
 
230
        { "gold1", { 255 + (255 << 8), 215 + (215 << 8), 0 + (0 << 8) } },
 
231
        { "gold2", { 238 + (238 << 8), 201 + (201 << 8), 0 + (0 << 8) } },
 
232
        { "gold3", { 205 + (205 << 8), 173 + (173 << 8), 0 + (0 << 8) } },
 
233
        { "gold4", { 139 + (139 << 8), 117 + (117 << 8), 0 + (0 << 8) } },
 
234
        { "goldenrod", { 218 + (218 << 8), 165 + (165 << 8), 32 + (32 << 8) } },
 
235
        { "goldenrod1", { 255 + (255 << 8), 193 + (193 << 8), 37 + (37 << 8) } },
 
236
        { "goldenrod2", { 238 + (238 << 8), 180 + (180 << 8), 34 + (34 << 8) } },
 
237
        { "goldenrod3", { 205 + (205 << 8), 155 + (155 << 8), 29 + (29 << 8) } },
 
238
        { "goldenrod4", { 139 + (139 << 8), 105 + (105 << 8), 20 + (20 << 8) } },
 
239
        { "gray", { 190 + (190 << 8), 190 + (190 << 8), 190 + (190 << 8) } },
 
240
        { "gray0", { 0 + (0 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
241
        { "gray1", { 3 + (3 << 8), 3 + (3 << 8), 3 + (3 << 8) } },
 
242
        { "gray10", { 26 + (26 << 8), 26 + (26 << 8), 26 + (26 << 8) } },
 
243
        { "gray100", { 255 + (255 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
244
        { "gray11", { 28 + (28 << 8), 28 + (28 << 8), 28 + (28 << 8) } },
 
245
        { "gray12", { 31 + (31 << 8), 31 + (31 << 8), 31 + (31 << 8) } },
 
246
        { "gray13", { 33 + (33 << 8), 33 + (33 << 8), 33 + (33 << 8) } },
 
247
        { "gray14", { 36 + (36 << 8), 36 + (36 << 8), 36 + (36 << 8) } },
 
248
        { "gray15", { 38 + (38 << 8), 38 + (38 << 8), 38 + (38 << 8) } },
 
249
        { "gray16", { 41 + (41 << 8), 41 + (41 << 8), 41 + (41 << 8) } },
 
250
        { "gray17", { 43 + (43 << 8), 43 + (43 << 8), 43 + (43 << 8) } },
 
251
        { "gray18", { 46 + (46 << 8), 46 + (46 << 8), 46 + (46 << 8) } },
 
252
        { "gray19", { 48 + (48 << 8), 48 + (48 << 8), 48 + (48 << 8) } },
 
253
        { "gray2", { 5 + (5 << 8), 5 + (5 << 8), 5 + (5 << 8) } },
 
254
        { "gray20", { 51 + (51 << 8), 51 + (51 << 8), 51 + (51 << 8) } },
 
255
        { "gray21", { 54 + (54 << 8), 54 + (54 << 8), 54 + (54 << 8) } },
 
256
        { "gray22", { 56 + (56 << 8), 56 + (56 << 8), 56 + (56 << 8) } },
 
257
        { "gray23", { 59 + (59 << 8), 59 + (59 << 8), 59 + (59 << 8) } },
 
258
        { "gray24", { 61 + (61 << 8), 61 + (61 << 8), 61 + (61 << 8) } },
 
259
        { "gray25", { 64 + (64 << 8), 64 + (64 << 8), 64 + (64 << 8) } },
 
260
        { "gray26", { 66 + (66 << 8), 66 + (66 << 8), 66 + (66 << 8) } },
 
261
        { "gray27", { 69 + (69 << 8), 69 + (69 << 8), 69 + (69 << 8) } },
 
262
        { "gray28", { 71 + (71 << 8), 71 + (71 << 8), 71 + (71 << 8) } },
 
263
        { "gray29", { 74 + (74 << 8), 74 + (74 << 8), 74 + (74 << 8) } },
 
264
        { "gray3", { 8 + (8 << 8), 8 + (8 << 8), 8 + (8 << 8) } },
 
265
        { "gray30", { 77 + (77 << 8), 77 + (77 << 8), 77 + (77 << 8) } },
 
266
        { "gray31", { 79 + (79 << 8), 79 + (79 << 8), 79 + (79 << 8) } },
 
267
        { "gray32", { 82 + (82 << 8), 82 + (82 << 8), 82 + (82 << 8) } },
 
268
        { "gray33", { 84 + (84 << 8), 84 + (84 << 8), 84 + (84 << 8) } },
 
269
        { "gray34", { 87 + (87 << 8), 87 + (87 << 8), 87 + (87 << 8) } },
 
270
        { "gray35", { 89 + (89 << 8), 89 + (89 << 8), 89 + (89 << 8) } },
 
271
        { "gray36", { 92 + (92 << 8), 92 + (92 << 8), 92 + (92 << 8) } },
 
272
        { "gray37", { 94 + (94 << 8), 94 + (94 << 8), 94 + (94 << 8) } },
 
273
        { "gray38", { 97 + (97 << 8), 97 + (97 << 8), 97 + (97 << 8) } },
 
274
        { "gray39", { 99 + (99 << 8), 99 + (99 << 8), 99 + (99 << 8) } },
 
275
        { "gray4", { 10 + (10 << 8), 10 + (10 << 8), 10 + (10 << 8) } },
 
276
        { "gray40", { 102 + (102 << 8), 102 + (102 << 8), 102 + (102 << 8) } },
 
277
        { "gray41", { 105 + (105 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
278
        { "gray42", { 107 + (107 << 8), 107 + (107 << 8), 107 + (107 << 8) } },
 
279
        { "gray43", { 110 + (110 << 8), 110 + (110 << 8), 110 + (110 << 8) } },
 
280
        { "gray44", { 112 + (112 << 8), 112 + (112 << 8), 112 + (112 << 8) } },
 
281
        { "gray45", { 115 + (115 << 8), 115 + (115 << 8), 115 + (115 << 8) } },
 
282
        { "gray46", { 117 + (117 << 8), 117 + (117 << 8), 117 + (117 << 8) } },
 
283
        { "gray47", { 120 + (120 << 8), 120 + (120 << 8), 120 + (120 << 8) } },
 
284
        { "gray48", { 122 + (122 << 8), 122 + (122 << 8), 122 + (122 << 8) } },
 
285
        { "gray49", { 125 + (125 << 8), 125 + (125 << 8), 125 + (125 << 8) } },
 
286
        { "gray5", { 13 + (13 << 8), 13 + (13 << 8), 13 + (13 << 8) } },
 
287
        { "gray50", { 127 + (127 << 8), 127 + (127 << 8), 127 + (127 << 8) } },
 
288
        { "gray51", { 130 + (130 << 8), 130 + (130 << 8), 130 + (130 << 8) } },
 
289
        { "gray52", { 133 + (133 << 8), 133 + (133 << 8), 133 + (133 << 8) } },
 
290
        { "gray53", { 135 + (135 << 8), 135 + (135 << 8), 135 + (135 << 8) } },
 
291
        { "gray54", { 138 + (138 << 8), 138 + (138 << 8), 138 + (138 << 8) } },
 
292
        { "gray55", { 140 + (140 << 8), 140 + (140 << 8), 140 + (140 << 8) } },
 
293
        { "gray56", { 143 + (143 << 8), 143 + (143 << 8), 143 + (143 << 8) } },
 
294
        { "gray57", { 145 + (145 << 8), 145 + (145 << 8), 145 + (145 << 8) } },
 
295
        { "gray58", { 148 + (148 << 8), 148 + (148 << 8), 148 + (148 << 8) } },
 
296
        { "gray59", { 150 + (150 << 8), 150 + (150 << 8), 150 + (150 << 8) } },
 
297
        { "gray6", { 15 + (15 << 8), 15 + (15 << 8), 15 + (15 << 8) } },
 
298
        { "gray60", { 153 + (153 << 8), 153 + (153 << 8), 153 + (153 << 8) } },
 
299
        { "gray61", { 156 + (156 << 8), 156 + (156 << 8), 156 + (156 << 8) } },
 
300
        { "gray62", { 158 + (158 << 8), 158 + (158 << 8), 158 + (158 << 8) } },
 
301
        { "gray63", { 161 + (161 << 8), 161 + (161 << 8), 161 + (161 << 8) } },
 
302
        { "gray64", { 163 + (163 << 8), 163 + (163 << 8), 163 + (163 << 8) } },
 
303
        { "gray65", { 166 + (166 << 8), 166 + (166 << 8), 166 + (166 << 8) } },
 
304
        { "gray66", { 168 + (168 << 8), 168 + (168 << 8), 168 + (168 << 8) } },
 
305
        { "gray67", { 171 + (171 << 8), 171 + (171 << 8), 171 + (171 << 8) } },
 
306
        { "gray68", { 173 + (173 << 8), 173 + (173 << 8), 173 + (173 << 8) } },
 
307
        { "gray69", { 176 + (176 << 8), 176 + (176 << 8), 176 + (176 << 8) } },
 
308
        { "gray7", { 18 + (18 << 8), 18 + (18 << 8), 18 + (18 << 8) } },
 
309
        { "gray70", { 179 + (179 << 8), 179 + (179 << 8), 179 + (179 << 8) } },
 
310
        { "gray71", { 181 + (181 << 8), 181 + (181 << 8), 181 + (181 << 8) } },
 
311
        { "gray72", { 184 + (184 << 8), 184 + (184 << 8), 184 + (184 << 8) } },
 
312
        { "gray73", { 186 + (186 << 8), 186 + (186 << 8), 186 + (186 << 8) } },
 
313
        { "gray74", { 189 + (189 << 8), 189 + (189 << 8), 189 + (189 << 8) } },
 
314
        { "gray75", { 191 + (191 << 8), 191 + (191 << 8), 191 + (191 << 8) } },
 
315
        { "gray76", { 194 + (194 << 8), 194 + (194 << 8), 194 + (194 << 8) } },
 
316
        { "gray77", { 196 + (196 << 8), 196 + (196 << 8), 196 + (196 << 8) } },
 
317
        { "gray78", { 199 + (199 << 8), 199 + (199 << 8), 199 + (199 << 8) } },
 
318
        { "gray79", { 201 + (201 << 8), 201 + (201 << 8), 201 + (201 << 8) } },
 
319
        { "gray8", { 20 + (20 << 8), 20 + (20 << 8), 20 + (20 << 8) } },
 
320
        { "gray80", { 204 + (204 << 8), 204 + (204 << 8), 204 + (204 << 8) } },
 
321
        { "gray81", { 207 + (207 << 8), 207 + (207 << 8), 207 + (207 << 8) } },
 
322
        { "gray82", { 209 + (209 << 8), 209 + (209 << 8), 209 + (209 << 8) } },
 
323
        { "gray83", { 212 + (212 << 8), 212 + (212 << 8), 212 + (212 << 8) } },
 
324
        { "gray84", { 214 + (214 << 8), 214 + (214 << 8), 214 + (214 << 8) } },
 
325
        { "gray85", { 217 + (217 << 8), 217 + (217 << 8), 217 + (217 << 8) } },
 
326
        { "gray86", { 219 + (219 << 8), 219 + (219 << 8), 219 + (219 << 8) } },
 
327
        { "gray87", { 222 + (222 << 8), 222 + (222 << 8), 222 + (222 << 8) } },
 
328
        { "gray88", { 224 + (224 << 8), 224 + (224 << 8), 224 + (224 << 8) } },
 
329
        { "gray89", { 227 + (227 << 8), 227 + (227 << 8), 227 + (227 << 8) } },
 
330
        { "gray9", { 23 + (23 << 8), 23 + (23 << 8), 23 + (23 << 8) } },
 
331
        { "gray90", { 229 + (229 << 8), 229 + (229 << 8), 229 + (229 << 8) } },
 
332
        { "gray91", { 232 + (232 << 8), 232 + (232 << 8), 232 + (232 << 8) } },
 
333
        { "gray92", { 235 + (235 << 8), 235 + (235 << 8), 235 + (235 << 8) } },
 
334
        { "gray93", { 237 + (237 << 8), 237 + (237 << 8), 237 + (237 << 8) } },
 
335
        { "gray94", { 240 + (240 << 8), 240 + (240 << 8), 240 + (240 << 8) } },
 
336
        { "gray95", { 242 + (242 << 8), 242 + (242 << 8), 242 + (242 << 8) } },
 
337
        { "gray96", { 245 + (245 << 8), 245 + (245 << 8), 245 + (245 << 8) } },
 
338
        { "gray97", { 247 + (247 << 8), 247 + (247 << 8), 247 + (247 << 8) } },
 
339
        { "gray98", { 250 + (250 << 8), 250 + (250 << 8), 250 + (250 << 8) } },
 
340
        { "gray99", { 252 + (252 << 8), 252 + (252 << 8), 252 + (252 << 8) } },
 
341
        { "green yellow", { 173 + (173 << 8), 255 + (255 << 8), 47 + (47 << 8) } },
 
342
        { "green", { 0 + (0 << 8), 255 + (255 << 8), 0 + (0 << 8) } },
 
343
        { "green1", { 0 + (0 << 8), 255 + (255 << 8), 0 + (0 << 8) } },
 
344
        { "green2", { 0 + (0 << 8), 238 + (238 << 8), 0 + (0 << 8) } },
 
345
        { "green3", { 0 + (0 << 8), 205 + (205 << 8), 0 + (0 << 8) } },
 
346
        { "green4", { 0 + (0 << 8), 139 + (139 << 8), 0 + (0 << 8) } },
 
347
        { "greenyellow", { 173 + (173 << 8), 255 + (255 << 8), 47 + (47 << 8) } },
 
348
        { "grey", { 190 + (190 << 8), 190 + (190 << 8), 190 + (190 << 8) } },
 
349
        { "grey0", { 0 + (0 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
350
        { "grey1", { 3 + (3 << 8), 3 + (3 << 8), 3 + (3 << 8) } },
 
351
        { "grey10", { 26 + (26 << 8), 26 + (26 << 8), 26 + (26 << 8) } },
 
352
        { "grey100", { 255 + (255 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
353
        { "grey11", { 28 + (28 << 8), 28 + (28 << 8), 28 + (28 << 8) } },
 
354
        { "grey12", { 31 + (31 << 8), 31 + (31 << 8), 31 + (31 << 8) } },
 
355
        { "grey13", { 33 + (33 << 8), 33 + (33 << 8), 33 + (33 << 8) } },
 
356
        { "grey14", { 36 + (36 << 8), 36 + (36 << 8), 36 + (36 << 8) } },
 
357
        { "grey15", { 38 + (38 << 8), 38 + (38 << 8), 38 + (38 << 8) } },
 
358
        { "grey16", { 41 + (41 << 8), 41 + (41 << 8), 41 + (41 << 8) } },
 
359
        { "grey17", { 43 + (43 << 8), 43 + (43 << 8), 43 + (43 << 8) } },
 
360
        { "grey18", { 46 + (46 << 8), 46 + (46 << 8), 46 + (46 << 8) } },
 
361
        { "grey19", { 48 + (48 << 8), 48 + (48 << 8), 48 + (48 << 8) } },
 
362
        { "grey2", { 5 + (5 << 8), 5 + (5 << 8), 5 + (5 << 8) } },
 
363
        { "grey20", { 51 + (51 << 8), 51 + (51 << 8), 51 + (51 << 8) } },
 
364
        { "grey21", { 54 + (54 << 8), 54 + (54 << 8), 54 + (54 << 8) } },
 
365
        { "grey22", { 56 + (56 << 8), 56 + (56 << 8), 56 + (56 << 8) } },
 
366
        { "grey23", { 59 + (59 << 8), 59 + (59 << 8), 59 + (59 << 8) } },
 
367
        { "grey24", { 61 + (61 << 8), 61 + (61 << 8), 61 + (61 << 8) } },
 
368
        { "grey25", { 64 + (64 << 8), 64 + (64 << 8), 64 + (64 << 8) } },
 
369
        { "grey26", { 66 + (66 << 8), 66 + (66 << 8), 66 + (66 << 8) } },
 
370
        { "grey27", { 69 + (69 << 8), 69 + (69 << 8), 69 + (69 << 8) } },
 
371
        { "grey28", { 71 + (71 << 8), 71 + (71 << 8), 71 + (71 << 8) } },
 
372
        { "grey29", { 74 + (74 << 8), 74 + (74 << 8), 74 + (74 << 8) } },
 
373
        { "grey3", { 8 + (8 << 8), 8 + (8 << 8), 8 + (8 << 8) } },
 
374
        { "grey30", { 77 + (77 << 8), 77 + (77 << 8), 77 + (77 << 8) } },
 
375
        { "grey31", { 79 + (79 << 8), 79 + (79 << 8), 79 + (79 << 8) } },
 
376
        { "grey32", { 82 + (82 << 8), 82 + (82 << 8), 82 + (82 << 8) } },
 
377
        { "grey33", { 84 + (84 << 8), 84 + (84 << 8), 84 + (84 << 8) } },
 
378
        { "grey34", { 87 + (87 << 8), 87 + (87 << 8), 87 + (87 << 8) } },
 
379
        { "grey35", { 89 + (89 << 8), 89 + (89 << 8), 89 + (89 << 8) } },
 
380
        { "grey36", { 92 + (92 << 8), 92 + (92 << 8), 92 + (92 << 8) } },
 
381
        { "grey37", { 94 + (94 << 8), 94 + (94 << 8), 94 + (94 << 8) } },
 
382
        { "grey38", { 97 + (97 << 8), 97 + (97 << 8), 97 + (97 << 8) } },
 
383
        { "grey39", { 99 + (99 << 8), 99 + (99 << 8), 99 + (99 << 8) } },
 
384
        { "grey4", { 10 + (10 << 8), 10 + (10 << 8), 10 + (10 << 8) } },
 
385
        { "grey40", { 102 + (102 << 8), 102 + (102 << 8), 102 + (102 << 8) } },
 
386
        { "grey41", { 105 + (105 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
387
        { "grey42", { 107 + (107 << 8), 107 + (107 << 8), 107 + (107 << 8) } },
 
388
        { "grey43", { 110 + (110 << 8), 110 + (110 << 8), 110 + (110 << 8) } },
 
389
        { "grey44", { 112 + (112 << 8), 112 + (112 << 8), 112 + (112 << 8) } },
 
390
        { "grey45", { 115 + (115 << 8), 115 + (115 << 8), 115 + (115 << 8) } },
 
391
        { "grey46", { 117 + (117 << 8), 117 + (117 << 8), 117 + (117 << 8) } },
 
392
        { "grey47", { 120 + (120 << 8), 120 + (120 << 8), 120 + (120 << 8) } },
 
393
        { "grey48", { 122 + (122 << 8), 122 + (122 << 8), 122 + (122 << 8) } },
 
394
        { "grey49", { 125 + (125 << 8), 125 + (125 << 8), 125 + (125 << 8) } },
 
395
        { "grey5", { 13 + (13 << 8), 13 + (13 << 8), 13 + (13 << 8) } },
 
396
        { "grey50", { 127 + (127 << 8), 127 + (127 << 8), 127 + (127 << 8) } },
 
397
        { "grey51", { 130 + (130 << 8), 130 + (130 << 8), 130 + (130 << 8) } },
 
398
        { "grey52", { 133 + (133 << 8), 133 + (133 << 8), 133 + (133 << 8) } },
 
399
        { "grey53", { 135 + (135 << 8), 135 + (135 << 8), 135 + (135 << 8) } },
 
400
        { "grey54", { 138 + (138 << 8), 138 + (138 << 8), 138 + (138 << 8) } },
 
401
        { "grey55", { 140 + (140 << 8), 140 + (140 << 8), 140 + (140 << 8) } },
 
402
        { "grey56", { 143 + (143 << 8), 143 + (143 << 8), 143 + (143 << 8) } },
 
403
        { "grey57", { 145 + (145 << 8), 145 + (145 << 8), 145 + (145 << 8) } },
 
404
        { "grey58", { 148 + (148 << 8), 148 + (148 << 8), 148 + (148 << 8) } },
 
405
        { "grey59", { 150 + (150 << 8), 150 + (150 << 8), 150 + (150 << 8) } },
 
406
        { "grey6", { 15 + (15 << 8), 15 + (15 << 8), 15 + (15 << 8) } },
 
407
        { "grey60", { 153 + (153 << 8), 153 + (153 << 8), 153 + (153 << 8) } },
 
408
        { "grey61", { 156 + (156 << 8), 156 + (156 << 8), 156 + (156 << 8) } },
 
409
        { "grey62", { 158 + (158 << 8), 158 + (158 << 8), 158 + (158 << 8) } },
 
410
        { "grey63", { 161 + (161 << 8), 161 + (161 << 8), 161 + (161 << 8) } },
 
411
        { "grey64", { 163 + (163 << 8), 163 + (163 << 8), 163 + (163 << 8) } },
 
412
        { "grey65", { 166 + (166 << 8), 166 + (166 << 8), 166 + (166 << 8) } },
 
413
        { "grey66", { 168 + (168 << 8), 168 + (168 << 8), 168 + (168 << 8) } },
 
414
        { "grey67", { 171 + (171 << 8), 171 + (171 << 8), 171 + (171 << 8) } },
 
415
        { "grey68", { 173 + (173 << 8), 173 + (173 << 8), 173 + (173 << 8) } },
 
416
        { "grey69", { 176 + (176 << 8), 176 + (176 << 8), 176 + (176 << 8) } },
 
417
        { "grey7", { 18 + (18 << 8), 18 + (18 << 8), 18 + (18 << 8) } },
 
418
        { "grey70", { 179 + (179 << 8), 179 + (179 << 8), 179 + (179 << 8) } },
 
419
        { "grey71", { 181 + (181 << 8), 181 + (181 << 8), 181 + (181 << 8) } },
 
420
        { "grey72", { 184 + (184 << 8), 184 + (184 << 8), 184 + (184 << 8) } },
 
421
        { "grey73", { 186 + (186 << 8), 186 + (186 << 8), 186 + (186 << 8) } },
 
422
        { "grey74", { 189 + (189 << 8), 189 + (189 << 8), 189 + (189 << 8) } },
 
423
        { "grey75", { 191 + (191 << 8), 191 + (191 << 8), 191 + (191 << 8) } },
 
424
        { "grey76", { 194 + (194 << 8), 194 + (194 << 8), 194 + (194 << 8) } },
 
425
        { "grey77", { 196 + (196 << 8), 196 + (196 << 8), 196 + (196 << 8) } },
 
426
        { "grey78", { 199 + (199 << 8), 199 + (199 << 8), 199 + (199 << 8) } },
 
427
        { "grey79", { 201 + (201 << 8), 201 + (201 << 8), 201 + (201 << 8) } },
 
428
        { "grey8", { 20 + (20 << 8), 20 + (20 << 8), 20 + (20 << 8) } },
 
429
        { "grey80", { 204 + (204 << 8), 204 + (204 << 8), 204 + (204 << 8) } },
 
430
        { "grey81", { 207 + (207 << 8), 207 + (207 << 8), 207 + (207 << 8) } },
 
431
        { "grey82", { 209 + (209 << 8), 209 + (209 << 8), 209 + (209 << 8) } },
 
432
        { "grey83", { 212 + (212 << 8), 212 + (212 << 8), 212 + (212 << 8) } },
 
433
        { "grey84", { 214 + (214 << 8), 214 + (214 << 8), 214 + (214 << 8) } },
 
434
        { "grey85", { 217 + (217 << 8), 217 + (217 << 8), 217 + (217 << 8) } },
 
435
        { "grey86", { 219 + (219 << 8), 219 + (219 << 8), 219 + (219 << 8) } },
 
436
        { "grey87", { 222 + (222 << 8), 222 + (222 << 8), 222 + (222 << 8) } },
 
437
        { "grey88", { 224 + (224 << 8), 224 + (224 << 8), 224 + (224 << 8) } },
 
438
        { "grey89", { 227 + (227 << 8), 227 + (227 << 8), 227 + (227 << 8) } },
 
439
        { "grey9", { 23 + (23 << 8), 23 + (23 << 8), 23 + (23 << 8) } },
 
440
        { "grey90", { 229 + (229 << 8), 229 + (229 << 8), 229 + (229 << 8) } },
 
441
        { "grey91", { 232 + (232 << 8), 232 + (232 << 8), 232 + (232 << 8) } },
 
442
        { "grey92", { 235 + (235 << 8), 235 + (235 << 8), 235 + (235 << 8) } },
 
443
        { "grey93", { 237 + (237 << 8), 237 + (237 << 8), 237 + (237 << 8) } },
 
444
        { "grey94", { 240 + (240 << 8), 240 + (240 << 8), 240 + (240 << 8) } },
 
445
        { "grey95", { 242 + (242 << 8), 242 + (242 << 8), 242 + (242 << 8) } },
 
446
        { "grey96", { 245 + (245 << 8), 245 + (245 << 8), 245 + (245 << 8) } },
 
447
        { "grey97", { 247 + (247 << 8), 247 + (247 << 8), 247 + (247 << 8) } },
 
448
        { "grey98", { 250 + (250 << 8), 250 + (250 << 8), 250 + (250 << 8) } },
 
449
        { "grey99", { 252 + (252 << 8), 252 + (252 << 8), 252 + (252 << 8) } },
 
450
        { "honeydew", { 240 + (240 << 8), 255 + (255 << 8), 240 + (240 << 8) } },
 
451
        { "honeydew1", { 240 + (240 << 8), 255 + (255 << 8), 240 + (240 << 8) } },
 
452
        { "honeydew2", { 224 + (224 << 8), 238 + (238 << 8), 224 + (224 << 8) } },
 
453
        { "honeydew3", { 193 + (193 << 8), 205 + (205 << 8), 193 + (193 << 8) } },
 
454
        { "honeydew4", { 131 + (131 << 8), 139 + (139 << 8), 131 + (131 << 8) } },
 
455
        { "hot pink", { 255 + (255 << 8), 105 + (105 << 8), 180 + (180 << 8) } },
 
456
        { "hotpink", { 255 + (255 << 8), 105 + (105 << 8), 180 + (180 << 8) } },
 
457
        { "hotpink1", { 255 + (255 << 8), 110 + (110 << 8), 180 + (180 << 8) } },
 
458
        { "hotpink2", { 238 + (238 << 8), 106 + (106 << 8), 167 + (167 << 8) } },
 
459
        { "hotpink3", { 205 + (205 << 8), 96 + (96 << 8), 144 + (144 << 8) } },
 
460
        { "hotpink4", { 139 + (139 << 8), 58 + (58 << 8), 98 + (98 << 8) } },
 
461
        { "indian red", { 205 + (205 << 8), 92 + (92 << 8), 92 + (92 << 8) } },
 
462
        { "indianred", { 205 + (205 << 8), 92 + (92 << 8), 92 + (92 << 8) } },
 
463
        { "indianred1", { 255 + (255 << 8), 106 + (106 << 8), 106 + (106 << 8) } },
 
464
        { "indianred2", { 238 + (238 << 8), 99 + (99 << 8), 99 + (99 << 8) } },
 
465
        { "indianred3", { 205 + (205 << 8), 85 + (85 << 8), 85 + (85 << 8) } },
 
466
        { "indianred4", { 139 + (139 << 8), 58 + (58 << 8), 58 + (58 << 8) } },
 
467
        { "ivory", { 255 + (255 << 8), 255 + (255 << 8), 240 + (240 << 8) } },
 
468
        { "ivory1", { 255 + (255 << 8), 255 + (255 << 8), 240 + (240 << 8) } },
 
469
        { "ivory2", { 238 + (238 << 8), 238 + (238 << 8), 224 + (224 << 8) } },
 
470
        { "ivory3", { 205 + (205 << 8), 205 + (205 << 8), 193 + (193 << 8) } },
 
471
        { "ivory4", { 139 + (139 << 8), 139 + (139 << 8), 131 + (131 << 8) } },
 
472
        { "khaki", { 240 + (240 << 8), 230 + (230 << 8), 140 + (140 << 8) } },
 
473
        { "khaki1", { 255 + (255 << 8), 246 + (246 << 8), 143 + (143 << 8) } },
 
474
        { "khaki2", { 238 + (238 << 8), 230 + (230 << 8), 133 + (133 << 8) } },
 
475
        { "khaki3", { 205 + (205 << 8), 198 + (198 << 8), 115 + (115 << 8) } },
 
476
        { "khaki4", { 139 + (139 << 8), 134 + (134 << 8), 78 + (78 << 8) } },
 
477
        { "lavender blush", { 255 + (255 << 8), 240 + (240 << 8), 245 + (245 << 8) } },
 
478
        { "lavender", { 230 + (230 << 8), 230 + (230 << 8), 250 + (250 << 8) } },
 
479
        { "lavenderblush", { 255 + (255 << 8), 240 + (240 << 8), 245 + (245 << 8) } },
 
480
        { "lavenderblush1", { 255 + (255 << 8), 240 + (240 << 8), 245 + (245 << 8) } },
 
481
        { "lavenderblush2", { 238 + (238 << 8), 224 + (224 << 8), 229 + (229 << 8) } },
 
482
        { "lavenderblush3", { 205 + (205 << 8), 193 + (193 << 8), 197 + (197 << 8) } },
 
483
        { "lavenderblush4", { 139 + (139 << 8), 131 + (131 << 8), 134 + (134 << 8) } },
 
484
        { "lawn green", { 124 + (124 << 8), 252 + (252 << 8), 0 + (0 << 8) } },
 
485
        { "lawngreen", { 124 + (124 << 8), 252 + (252 << 8), 0 + (0 << 8) } },
 
486
        { "lemon chiffon", { 255 + (255 << 8), 250 + (250 << 8), 205 + (205 << 8) } },
 
487
        { "lemonchiffon", { 255 + (255 << 8), 250 + (250 << 8), 205 + (205 << 8) } },
 
488
        { "lemonchiffon1", { 255 + (255 << 8), 250 + (250 << 8), 205 + (205 << 8) } },
 
489
        { "lemonchiffon2", { 238 + (238 << 8), 233 + (233 << 8), 191 + (191 << 8) } },
 
490
        { "lemonchiffon3", { 205 + (205 << 8), 201 + (201 << 8), 165 + (165 << 8) } },
 
491
        { "lemonchiffon4", { 139 + (139 << 8), 137 + (137 << 8), 112 + (112 << 8) } },
 
492
        { "light blue", { 173 + (173 << 8), 216 + (216 << 8), 230 + (230 << 8) } },
 
493
        { "light coral", { 240 + (240 << 8), 128 + (128 << 8), 128 + (128 << 8) } },
 
494
        { "light cyan", { 224 + (224 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
495
        { "light goldenrod yellow", { 250 + (250 << 8), 250 + (250 << 8), 210 + (210 << 8) } },
 
496
        { "light goldenrod", { 238 + (238 << 8), 221 + (221 << 8), 130 + (130 << 8) } },
 
497
        { "light gray", { 211 + (211 << 8), 211 + (211 << 8), 211 + (211 << 8) } },
 
498
        { "light green", { 144 + (144 << 8), 238 + (238 << 8), 144 + (144 << 8) } },
 
499
        { "light grey", { 211 + (211 << 8), 211 + (211 << 8), 211 + (211 << 8) } },
 
500
        { "light pink", { 255 + (255 << 8), 182 + (182 << 8), 193 + (193 << 8) } },
 
501
        { "light salmon", { 255 + (255 << 8), 160 + (160 << 8), 122 + (122 << 8) } },
 
502
        { "light sea green", { 32 + (32 << 8), 178 + (178 << 8), 170 + (170 << 8) } },
 
503
        { "light sky blue", { 135 + (135 << 8), 206 + (206 << 8), 250 + (250 << 8) } },
 
504
        { "light slate blue", { 132 + (132 << 8), 112 + (112 << 8), 255 + (255 << 8) } },
 
505
        { "light slate gray", { 119 + (119 << 8), 136 + (136 << 8), 153 + (153 << 8) } },
 
506
        { "light slate grey", { 119 + (119 << 8), 136 + (136 << 8), 153 + (153 << 8) } },
 
507
        { "light steel blue", { 176 + (176 << 8), 196 + (196 << 8), 222 + (222 << 8) } },
 
508
        { "light yellow", { 255 + (255 << 8), 255 + (255 << 8), 224 + (224 << 8) } },
 
509
        { "lightblue", { 173 + (173 << 8), 216 + (216 << 8), 230 + (230 << 8) } },
 
510
        { "lightblue1", { 191 + (191 << 8), 239 + (239 << 8), 255 + (255 << 8) } },
 
511
        { "lightblue2", { 178 + (178 << 8), 223 + (223 << 8), 238 + (238 << 8) } },
 
512
        { "lightblue3", { 154 + (154 << 8), 192 + (192 << 8), 205 + (205 << 8) } },
 
513
        { "lightblue4", { 104 + (104 << 8), 131 + (131 << 8), 139 + (139 << 8) } },
 
514
        { "lightcoral", { 240 + (240 << 8), 128 + (128 << 8), 128 + (128 << 8) } },
 
515
        { "lightcyan", { 224 + (224 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
516
        { "lightcyan1", { 224 + (224 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
517
        { "lightcyan2", { 209 + (209 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
518
        { "lightcyan3", { 180 + (180 << 8), 205 + (205 << 8), 205 + (205 << 8) } },
 
519
        { "lightcyan4", { 122 + (122 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
520
        { "lightgoldenrod", { 238 + (238 << 8), 221 + (221 << 8), 130 + (130 << 8) } },
 
521
        { "lightgoldenrod1", { 255 + (255 << 8), 236 + (236 << 8), 139 + (139 << 8) } },
 
522
        { "lightgoldenrod2", { 238 + (238 << 8), 220 + (220 << 8), 130 + (130 << 8) } },
 
523
        { "lightgoldenrod3", { 205 + (205 << 8), 190 + (190 << 8), 112 + (112 << 8) } },
 
524
        { "lightgoldenrod4", { 139 + (139 << 8), 129 + (129 << 8), 76 + (76 << 8) } },
 
525
        { "lightgoldenrodyellow", { 250 + (250 << 8), 250 + (250 << 8), 210 + (210 << 8) } },
 
526
        { "lightgray", { 211 + (211 << 8), 211 + (211 << 8), 211 + (211 << 8) } },
 
527
        { "lightgreen", { 144 + (144 << 8), 238 + (238 << 8), 144 + (144 << 8) } },
 
528
        { "lightgrey", { 211 + (211 << 8), 211 + (211 << 8), 211 + (211 << 8) } },
 
529
        { "lightpink", { 255 + (255 << 8), 182 + (182 << 8), 193 + (193 << 8) } },
 
530
        { "lightpink1", { 255 + (255 << 8), 174 + (174 << 8), 185 + (185 << 8) } },
 
531
        { "lightpink2", { 238 + (238 << 8), 162 + (162 << 8), 173 + (173 << 8) } },
 
532
        { "lightpink3", { 205 + (205 << 8), 140 + (140 << 8), 149 + (149 << 8) } },
 
533
        { "lightpink4", { 139 + (139 << 8), 95 + (95 << 8), 101 + (101 << 8) } },
 
534
        { "lightsalmon", { 255 + (255 << 8), 160 + (160 << 8), 122 + (122 << 8) } },
 
535
        { "lightsalmon1", { 255 + (255 << 8), 160 + (160 << 8), 122 + (122 << 8) } },
 
536
        { "lightsalmon2", { 238 + (238 << 8), 149 + (149 << 8), 114 + (114 << 8) } },
 
537
        { "lightsalmon3", { 205 + (205 << 8), 129 + (129 << 8), 98 + (98 << 8) } },
 
538
        { "lightsalmon4", { 139 + (139 << 8), 87 + (87 << 8), 66 + (66 << 8) } },
 
539
        { "lightseagreen", { 32 + (32 << 8), 178 + (178 << 8), 170 + (170 << 8) } },
 
540
        { "lightskyblue", { 135 + (135 << 8), 206 + (206 << 8), 250 + (250 << 8) } },
 
541
        { "lightskyblue1", { 176 + (176 << 8), 226 + (226 << 8), 255 + (255 << 8) } },
 
542
        { "lightskyblue2", { 164 + (164 << 8), 211 + (211 << 8), 238 + (238 << 8) } },
 
543
        { "lightskyblue3", { 141 + (141 << 8), 182 + (182 << 8), 205 + (205 << 8) } },
 
544
        { "lightskyblue4", { 96 + (96 << 8), 123 + (123 << 8), 139 + (139 << 8) } },
 
545
        { "lightslateblue", { 132 + (132 << 8), 112 + (112 << 8), 255 + (255 << 8) } },
 
546
        { "lightslategray", { 119 + (119 << 8), 136 + (136 << 8), 153 + (153 << 8) } },
 
547
        { "lightslategrey", { 119 + (119 << 8), 136 + (136 << 8), 153 + (153 << 8) } },
 
548
        { "lightsteelblue", { 176 + (176 << 8), 196 + (196 << 8), 222 + (222 << 8) } },
 
549
        { "lightsteelblue1", { 202 + (202 << 8), 225 + (225 << 8), 255 + (255 << 8) } },
 
550
        { "lightsteelblue2", { 188 + (188 << 8), 210 + (210 << 8), 238 + (238 << 8) } },
 
551
        { "lightsteelblue3", { 162 + (162 << 8), 181 + (181 << 8), 205 + (205 << 8) } },
 
552
        { "lightsteelblue4", { 110 + (110 << 8), 123 + (123 << 8), 139 + (139 << 8) } },
 
553
        { "lightyellow", { 255 + (255 << 8), 255 + (255 << 8), 224 + (224 << 8) } },
 
554
        { "lightyellow1", { 255 + (255 << 8), 255 + (255 << 8), 224 + (224 << 8) } },
 
555
        { "lightyellow2", { 238 + (238 << 8), 238 + (238 << 8), 209 + (209 << 8) } },
 
556
        { "lightyellow3", { 205 + (205 << 8), 205 + (205 << 8), 180 + (180 << 8) } },
 
557
        { "lightyellow4", { 139 + (139 << 8), 139 + (139 << 8), 122 + (122 << 8) } },
 
558
        { "lime green", { 50 + (50 << 8), 205 + (205 << 8), 50 + (50 << 8) } },
 
559
        { "limegreen", { 50 + (50 << 8), 205 + (205 << 8), 50 + (50 << 8) } },
 
560
        { "linen", { 250 + (250 << 8), 240 + (240 << 8), 230 + (230 << 8) } },
 
561
        { "magenta", { 255 + (255 << 8), 0 + (0 << 8), 255 + (255 << 8) } },
 
562
        { "magenta1", { 255 + (255 << 8), 0 + (0 << 8), 255 + (255 << 8) } },
 
563
        { "magenta2", { 238 + (238 << 8), 0 + (0 << 8), 238 + (238 << 8) } },
 
564
        { "magenta3", { 205 + (205 << 8), 0 + (0 << 8), 205 + (205 << 8) } },
 
565
        { "magenta4", { 139 + (139 << 8), 0 + (0 << 8), 139 + (139 << 8) } },
 
566
        { "maroon", { 176 + (176 << 8), 48 + (48 << 8), 96 + (96 << 8) } },
 
567
        { "maroon1", { 255 + (255 << 8), 52 + (52 << 8), 179 + (179 << 8) } },
 
568
        { "maroon2", { 238 + (238 << 8), 48 + (48 << 8), 167 + (167 << 8) } },
 
569
        { "maroon3", { 205 + (205 << 8), 41 + (41 << 8), 144 + (144 << 8) } },
 
570
        { "maroon4", { 139 + (139 << 8), 28 + (28 << 8), 98 + (98 << 8) } },
 
571
        { "medium aquamarine", { 102 + (102 << 8), 205 + (205 << 8), 170 + (170 << 8) } },
 
572
        { "medium blue", { 0 + (0 << 8), 0 + (0 << 8), 205 + (205 << 8) } },
 
573
        { "medium orchid", { 186 + (186 << 8), 85 + (85 << 8), 211 + (211 << 8) } },
 
574
        { "medium purple", { 147 + (147 << 8), 112 + (112 << 8), 219 + (219 << 8) } },
 
575
        { "medium sea green", { 60 + (60 << 8), 179 + (179 << 8), 113 + (113 << 8) } },
 
576
        { "medium slate blue", { 123 + (123 << 8), 104 + (104 << 8), 238 + (238 << 8) } },
 
577
        { "medium spring green", { 0 + (0 << 8), 250 + (250 << 8), 154 + (154 << 8) } },
 
578
        { "medium turquoise", { 72 + (72 << 8), 209 + (209 << 8), 204 + (204 << 8) } },
 
579
        { "medium violet red", { 199 + (199 << 8), 21 + (21 << 8), 133 + (133 << 8) } },
 
580
        { "mediumaquamarine", { 102 + (102 << 8), 205 + (205 << 8), 170 + (170 << 8) } },
 
581
        { "mediumblue", { 0 + (0 << 8), 0 + (0 << 8), 205 + (205 << 8) } },
 
582
        { "mediumorchid", { 186 + (186 << 8), 85 + (85 << 8), 211 + (211 << 8) } },
 
583
        { "mediumorchid1", { 224 + (224 << 8), 102 + (102 << 8), 255 + (255 << 8) } },
 
584
        { "mediumorchid2", { 209 + (209 << 8), 95 + (95 << 8), 238 + (238 << 8) } },
 
585
        { "mediumorchid3", { 180 + (180 << 8), 82 + (82 << 8), 205 + (205 << 8) } },
 
586
        { "mediumorchid4", { 122 + (122 << 8), 55 + (55 << 8), 139 + (139 << 8) } },
 
587
        { "mediumpurple", { 147 + (147 << 8), 112 + (112 << 8), 219 + (219 << 8) } },
 
588
        { "mediumpurple1", { 171 + (171 << 8), 130 + (130 << 8), 255 + (255 << 8) } },
 
589
        { "mediumpurple2", { 159 + (159 << 8), 121 + (121 << 8), 238 + (238 << 8) } },
 
590
        { "mediumpurple3", { 137 + (137 << 8), 104 + (104 << 8), 205 + (205 << 8) } },
 
591
        { "mediumpurple4", { 93 + (93 << 8), 71 + (71 << 8), 139 + (139 << 8) } },
 
592
        { "mediumseagreen", { 60 + (60 << 8), 179 + (179 << 8), 113 + (113 << 8) } },
 
593
        { "mediumslateblue", { 123 + (123 << 8), 104 + (104 << 8), 238 + (238 << 8) } },
 
594
        { "mediumspringgreen", { 0 + (0 << 8), 250 + (250 << 8), 154 + (154 << 8) } },
 
595
        { "mediumturquoise", { 72 + (72 << 8), 209 + (209 << 8), 204 + (204 << 8) } },
 
596
        { "mediumvioletred", { 199 + (199 << 8), 21 + (21 << 8), 133 + (133 << 8) } },
 
597
        { "midnight blue", { 25 + (25 << 8), 25 + (25 << 8), 112 + (112 << 8) } },
 
598
        { "midnightblue", { 25 + (25 << 8), 25 + (25 << 8), 112 + (112 << 8) } },
 
599
        { "mint cream", { 245 + (245 << 8), 255 + (255 << 8), 250 + (250 << 8) } },
 
600
        { "mintcream", { 245 + (245 << 8), 255 + (255 << 8), 250 + (250 << 8) } },
 
601
        { "misty rose", { 255 + (255 << 8), 228 + (228 << 8), 225 + (225 << 8) } },
 
602
        { "mistyrose", { 255 + (255 << 8), 228 + (228 << 8), 225 + (225 << 8) } },
 
603
        { "mistyrose1", { 255 + (255 << 8), 228 + (228 << 8), 225 + (225 << 8) } },
 
604
        { "mistyrose2", { 238 + (238 << 8), 213 + (213 << 8), 210 + (210 << 8) } },
 
605
        { "mistyrose3", { 205 + (205 << 8), 183 + (183 << 8), 181 + (181 << 8) } },
 
606
        { "mistyrose4", { 139 + (139 << 8), 125 + (125 << 8), 123 + (123 << 8) } },
 
607
        { "moccasin", { 255 + (255 << 8), 228 + (228 << 8), 181 + (181 << 8) } },
 
608
        { "navajo white", { 255 + (255 << 8), 222 + (222 << 8), 173 + (173 << 8) } },
 
609
        { "navajowhite", { 255 + (255 << 8), 222 + (222 << 8), 173 + (173 << 8) } },
 
610
        { "navajowhite1", { 255 + (255 << 8), 222 + (222 << 8), 173 + (173 << 8) } },
 
611
        { "navajowhite2", { 238 + (238 << 8), 207 + (207 << 8), 161 + (161 << 8) } },
 
612
        { "navajowhite3", { 205 + (205 << 8), 179 + (179 << 8), 139 + (139 << 8) } },
 
613
        { "navajowhite4", { 139 + (139 << 8), 121 + (121 << 8), 94 + (94 << 8) } },
 
614
        { "navy blue", { 0 + (0 << 8), 0 + (0 << 8), 128 + (128 << 8) } },
 
615
        { "navy", { 0 + (0 << 8), 0 + (0 << 8), 128 + (128 << 8) } },
 
616
        { "navyblue", { 0 + (0 << 8), 0 + (0 << 8), 128 + (128 << 8) } },
 
617
        { "old lace", { 253 + (253 << 8), 245 + (245 << 8), 230 + (230 << 8) } },
 
618
        { "oldlace", { 253 + (253 << 8), 245 + (245 << 8), 230 + (230 << 8) } },
 
619
        { "olive drab", { 107 + (107 << 8), 142 + (142 << 8), 35 + (35 << 8) } },
 
620
        { "olivedrab", { 107 + (107 << 8), 142 + (142 << 8), 35 + (35 << 8) } },
 
621
        { "olivedrab1", { 192 + (192 << 8), 255 + (255 << 8), 62 + (62 << 8) } },
 
622
        { "olivedrab2", { 179 + (179 << 8), 238 + (238 << 8), 58 + (58 << 8) } },
 
623
        { "olivedrab3", { 154 + (154 << 8), 205 + (205 << 8), 50 + (50 << 8) } },
 
624
        { "olivedrab4", { 105 + (105 << 8), 139 + (139 << 8), 34 + (34 << 8) } },
 
625
        { "orange red", { 255 + (255 << 8), 69 + (69 << 8), 0 + (0 << 8) } },
 
626
        { "orange", { 255 + (255 << 8), 165 + (165 << 8), 0 + (0 << 8) } },
 
627
        { "orange1", { 255 + (255 << 8), 165 + (165 << 8), 0 + (0 << 8) } },
 
628
        { "orange2", { 238 + (238 << 8), 154 + (154 << 8), 0 + (0 << 8) } },
 
629
        { "orange3", { 205 + (205 << 8), 133 + (133 << 8), 0 + (0 << 8) } },
 
630
        { "orange4", { 139 + (139 << 8), 90 + (90 << 8), 0 + (0 << 8) } },
 
631
        { "orangered", { 255 + (255 << 8), 69 + (69 << 8), 0 + (0 << 8) } },
 
632
        { "orangered1", { 255 + (255 << 8), 69 + (69 << 8), 0 + (0 << 8) } },
 
633
        { "orangered2", { 238 + (238 << 8), 64 + (64 << 8), 0 + (0 << 8) } },
 
634
        { "orangered3", { 205 + (205 << 8), 55 + (55 << 8), 0 + (0 << 8) } },
 
635
        { "orangered4", { 139 + (139 << 8), 37 + (37 << 8), 0 + (0 << 8) } },
 
636
        { "orchid", { 218 + (218 << 8), 112 + (112 << 8), 214 + (214 << 8) } },
 
637
        { "orchid1", { 255 + (255 << 8), 131 + (131 << 8), 250 + (250 << 8) } },
 
638
        { "orchid2", { 238 + (238 << 8), 122 + (122 << 8), 233 + (233 << 8) } },
 
639
        { "orchid3", { 205 + (205 << 8), 105 + (105 << 8), 201 + (201 << 8) } },
 
640
        { "orchid4", { 139 + (139 << 8), 71 + (71 << 8), 137 + (137 << 8) } },
 
641
        { "pale goldenrod", { 238 + (238 << 8), 232 + (232 << 8), 170 + (170 << 8) } },
 
642
        { "pale green", { 152 + (152 << 8), 251 + (251 << 8), 152 + (152 << 8) } },
 
643
        { "pale turquoise", { 175 + (175 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
644
        { "pale violet red", { 219 + (219 << 8), 112 + (112 << 8), 147 + (147 << 8) } },
 
645
        { "palegoldenrod", { 238 + (238 << 8), 232 + (232 << 8), 170 + (170 << 8) } },
 
646
        { "palegreen", { 152 + (152 << 8), 251 + (251 << 8), 152 + (152 << 8) } },
 
647
        { "palegreen1", { 154 + (154 << 8), 255 + (255 << 8), 154 + (154 << 8) } },
 
648
        { "palegreen2", { 144 + (144 << 8), 238 + (238 << 8), 144 + (144 << 8) } },
 
649
        { "palegreen3", { 124 + (124 << 8), 205 + (205 << 8), 124 + (124 << 8) } },
 
650
        { "palegreen4", { 84 + (84 << 8), 139 + (139 << 8), 84 + (84 << 8) } },
 
651
        { "paleturquoise", { 175 + (175 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
652
        { "paleturquoise1", { 187 + (187 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
653
        { "paleturquoise2", { 174 + (174 << 8), 238 + (238 << 8), 238 + (238 << 8) } },
 
654
        { "paleturquoise3", { 150 + (150 << 8), 205 + (205 << 8), 205 + (205 << 8) } },
 
655
        { "paleturquoise4", { 102 + (102 << 8), 139 + (139 << 8), 139 + (139 << 8) } },
 
656
        { "palevioletred", { 219 + (219 << 8), 112 + (112 << 8), 147 + (147 << 8) } },
 
657
        { "palevioletred1", { 255 + (255 << 8), 130 + (130 << 8), 171 + (171 << 8) } },
 
658
        { "palevioletred2", { 238 + (238 << 8), 121 + (121 << 8), 159 + (159 << 8) } },
 
659
        { "palevioletred3", { 205 + (205 << 8), 104 + (104 << 8), 137 + (137 << 8) } },
 
660
        { "palevioletred4", { 139 + (139 << 8), 71 + (71 << 8), 93 + (93 << 8) } },
 
661
        { "papaya whip", { 255 + (255 << 8), 239 + (239 << 8), 213 + (213 << 8) } },
 
662
        { "papayawhip", { 255 + (255 << 8), 239 + (239 << 8), 213 + (213 << 8) } },
 
663
        { "peach puff", { 255 + (255 << 8), 218 + (218 << 8), 185 + (185 << 8) } },
 
664
        { "peachpuff", { 255 + (255 << 8), 218 + (218 << 8), 185 + (185 << 8) } },
 
665
        { "peachpuff1", { 255 + (255 << 8), 218 + (218 << 8), 185 + (185 << 8) } },
 
666
        { "peachpuff2", { 238 + (238 << 8), 203 + (203 << 8), 173 + (173 << 8) } },
 
667
        { "peachpuff3", { 205 + (205 << 8), 175 + (175 << 8), 149 + (149 << 8) } },
 
668
        { "peachpuff4", { 139 + (139 << 8), 119 + (119 << 8), 101 + (101 << 8) } },
 
669
        { "peru", { 205 + (205 << 8), 133 + (133 << 8), 63 + (63 << 8) } },
 
670
        { "pink", { 255 + (255 << 8), 192 + (192 << 8), 203 + (203 << 8) } },
 
671
        { "pink1", { 255 + (255 << 8), 181 + (181 << 8), 197 + (197 << 8) } },
 
672
        { "pink2", { 238 + (238 << 8), 169 + (169 << 8), 184 + (184 << 8) } },
 
673
        { "pink3", { 205 + (205 << 8), 145 + (145 << 8), 158 + (158 << 8) } },
 
674
        { "pink4", { 139 + (139 << 8), 99 + (99 << 8), 108 + (108 << 8) } },
 
675
        { "plum", { 221 + (221 << 8), 160 + (160 << 8), 221 + (221 << 8) } },
 
676
        { "plum1", { 255 + (255 << 8), 187 + (187 << 8), 255 + (255 << 8) } },
 
677
        { "plum2", { 238 + (238 << 8), 174 + (174 << 8), 238 + (238 << 8) } },
 
678
        { "plum3", { 205 + (205 << 8), 150 + (150 << 8), 205 + (205 << 8) } },
 
679
        { "plum4", { 139 + (139 << 8), 102 + (102 << 8), 139 + (139 << 8) } },
 
680
        { "powder blue", { 176 + (176 << 8), 224 + (224 << 8), 230 + (230 << 8) } },
 
681
        { "powderblue", { 176 + (176 << 8), 224 + (224 << 8), 230 + (230 << 8) } },
 
682
        { "purple", { 160 + (160 << 8), 32 + (32 << 8), 240 + (240 << 8) } },
 
683
        { "purple1", { 155 + (155 << 8), 48 + (48 << 8), 255 + (255 << 8) } },
 
684
        { "purple2", { 145 + (145 << 8), 44 + (44 << 8), 238 + (238 << 8) } },
 
685
        { "purple3", { 125 + (125 << 8), 38 + (38 << 8), 205 + (205 << 8) } },
 
686
        { "purple4", { 85 + (85 << 8), 26 + (26 << 8), 139 + (139 << 8) } },
 
687
        { "red", { 255 + (255 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
688
        { "red1", { 255 + (255 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
689
        { "red2", { 238 + (238 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
690
        { "red3", { 205 + (205 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
691
        { "red4", { 139 + (139 << 8), 0 + (0 << 8), 0 + (0 << 8) } },
 
692
        { "rosy brown", { 188 + (188 << 8), 143 + (143 << 8), 143 + (143 << 8) } },
 
693
        { "rosybrown", { 188 + (188 << 8), 143 + (143 << 8), 143 + (143 << 8) } },
 
694
        { "rosybrown1", { 255 + (255 << 8), 193 + (193 << 8), 193 + (193 << 8) } },
 
695
        { "rosybrown2", { 238 + (238 << 8), 180 + (180 << 8), 180 + (180 << 8) } },
 
696
        { "rosybrown3", { 205 + (205 << 8), 155 + (155 << 8), 155 + (155 << 8) } },
 
697
        { "rosybrown4", { 139 + (139 << 8), 105 + (105 << 8), 105 + (105 << 8) } },
 
698
        { "royal blue", { 65 + (65 << 8), 105 + (105 << 8), 225 + (225 << 8) } },
 
699
        { "royalblue", { 65 + (65 << 8), 105 + (105 << 8), 225 + (225 << 8) } },
 
700
        { "royalblue1", { 72 + (72 << 8), 118 + (118 << 8), 255 + (255 << 8) } },
 
701
        { "royalblue2", { 67 + (67 << 8), 110 + (110 << 8), 238 + (238 << 8) } },
 
702
        { "royalblue3", { 58 + (58 << 8), 95 + (95 << 8), 205 + (205 << 8) } },
 
703
        { "royalblue4", { 39 + (39 << 8), 64 + (64 << 8), 139 + (139 << 8) } },
 
704
        { "saddle brown", { 139 + (139 << 8), 69 + (69 << 8), 19 + (19 << 8) } },
 
705
        { "saddlebrown", { 139 + (139 << 8), 69 + (69 << 8), 19 + (19 << 8) } },
 
706
        { "salmon", { 250 + (250 << 8), 128 + (128 << 8), 114 + (114 << 8) } },
 
707
        { "salmon1", { 255 + (255 << 8), 140 + (140 << 8), 105 + (105 << 8) } },
 
708
        { "salmon2", { 238 + (238 << 8), 130 + (130 << 8), 98 + (98 << 8) } },
 
709
        { "salmon3", { 205 + (205 << 8), 112 + (112 << 8), 84 + (84 << 8) } },
 
710
        { "salmon4", { 139 + (139 << 8), 76 + (76 << 8), 57 + (57 << 8) } },
 
711
        { "sandy brown", { 244 + (244 << 8), 164 + (164 << 8), 96 + (96 << 8) } },
 
712
        { "sandybrown", { 244 + (244 << 8), 164 + (164 << 8), 96 + (96 << 8) } },
 
713
        { "sea green", { 46 + (46 << 8), 139 + (139 << 8), 87 + (87 << 8) } },
 
714
        { "seagreen", { 46 + (46 << 8), 139 + (139 << 8), 87 + (87 << 8) } },
 
715
        { "seagreen1", { 84 + (84 << 8), 255 + (255 << 8), 159 + (159 << 8) } },
 
716
        { "seagreen2", { 78 + (78 << 8), 238 + (238 << 8), 148 + (148 << 8) } },
 
717
        { "seagreen3", { 67 + (67 << 8), 205 + (205 << 8), 128 + (128 << 8) } },
 
718
        { "seagreen4", { 46 + (46 << 8), 139 + (139 << 8), 87 + (87 << 8) } },
 
719
        { "seashell", { 255 + (255 << 8), 245 + (245 << 8), 238 + (238 << 8) } },
 
720
        { "seashell1", { 255 + (255 << 8), 245 + (245 << 8), 238 + (238 << 8) } },
 
721
        { "seashell2", { 238 + (238 << 8), 229 + (229 << 8), 222 + (222 << 8) } },
 
722
        { "seashell3", { 205 + (205 << 8), 197 + (197 << 8), 191 + (191 << 8) } },
 
723
        { "seashell4", { 139 + (139 << 8), 134 + (134 << 8), 130 + (130 << 8) } },
 
724
        { "sienna", { 160 + (160 << 8), 82 + (82 << 8), 45 + (45 << 8) } },
 
725
        { "sienna1", { 255 + (255 << 8), 130 + (130 << 8), 71 + (71 << 8) } },
 
726
        { "sienna2", { 238 + (238 << 8), 121 + (121 << 8), 66 + (66 << 8) } },
 
727
        { "sienna3", { 205 + (205 << 8), 104 + (104 << 8), 57 + (57 << 8) } },
 
728
        { "sienna4", { 139 + (139 << 8), 71 + (71 << 8), 38 + (38 << 8) } },
 
729
        { "sky blue", { 135 + (135 << 8), 206 + (206 << 8), 235 + (235 << 8) } },
 
730
        { "skyblue", { 135 + (135 << 8), 206 + (206 << 8), 235 + (235 << 8) } },
 
731
        { "skyblue1", { 135 + (135 << 8), 206 + (206 << 8), 255 + (255 << 8) } },
 
732
        { "skyblue2", { 126 + (126 << 8), 192 + (192 << 8), 238 + (238 << 8) } },
 
733
        { "skyblue3", { 108 + (108 << 8), 166 + (166 << 8), 205 + (205 << 8) } },
 
734
        { "skyblue4", { 74 + (74 << 8), 112 + (112 << 8), 139 + (139 << 8) } },
 
735
        { "slate blue", { 106 + (106 << 8), 90 + (90 << 8), 205 + (205 << 8) } },
 
736
        { "slate gray", { 112 + (112 << 8), 128 + (128 << 8), 144 + (144 << 8) } },
 
737
        { "slate grey", { 112 + (112 << 8), 128 + (128 << 8), 144 + (144 << 8) } },
 
738
        { "slateblue", { 106 + (106 << 8), 90 + (90 << 8), 205 + (205 << 8) } },
 
739
        { "slateblue1", { 131 + (131 << 8), 111 + (111 << 8), 255 + (255 << 8) } },
 
740
        { "slateblue2", { 122 + (122 << 8), 103 + (103 << 8), 238 + (238 << 8) } },
 
741
        { "slateblue3", { 105 + (105 << 8), 89 + (89 << 8), 205 + (205 << 8) } },
 
742
        { "slateblue4", { 71 + (71 << 8), 60 + (60 << 8), 139 + (139 << 8) } },
 
743
        { "slategray", { 112 + (112 << 8), 128 + (128 << 8), 144 + (144 << 8) } },
 
744
        { "slategray1", { 198 + (198 << 8), 226 + (226 << 8), 255 + (255 << 8) } },
 
745
        { "slategray2", { 185 + (185 << 8), 211 + (211 << 8), 238 + (238 << 8) } },
 
746
        { "slategray3", { 159 + (159 << 8), 182 + (182 << 8), 205 + (205 << 8) } },
 
747
        { "slategray4", { 108 + (108 << 8), 123 + (123 << 8), 139 + (139 << 8) } },
 
748
        { "slategrey", { 112 + (112 << 8), 128 + (128 << 8), 144 + (144 << 8) } },
 
749
        { "snow", { 255 + (255 << 8), 250 + (250 << 8), 250 + (250 << 8) } },
 
750
        { "snow1", { 255 + (255 << 8), 250 + (250 << 8), 250 + (250 << 8) } },
 
751
        { "snow2", { 238 + (238 << 8), 233 + (233 << 8), 233 + (233 << 8) } },
 
752
        { "snow3", { 205 + (205 << 8), 201 + (201 << 8), 201 + (201 << 8) } },
 
753
        { "snow4", { 139 + (139 << 8), 137 + (137 << 8), 137 + (137 << 8) } },
 
754
        { "spring green", { 0 + (0 << 8), 255 + (255 << 8), 127 + (127 << 8) } },
 
755
        { "springgreen", { 0 + (0 << 8), 255 + (255 << 8), 127 + (127 << 8) } },
 
756
        { "springgreen1", { 0 + (0 << 8), 255 + (255 << 8), 127 + (127 << 8) } },
 
757
        { "springgreen2", { 0 + (0 << 8), 238 + (238 << 8), 118 + (118 << 8) } },
 
758
        { "springgreen3", { 0 + (0 << 8), 205 + (205 << 8), 102 + (102 << 8) } },
 
759
        { "springgreen4", { 0 + (0 << 8), 139 + (139 << 8), 69 + (69 << 8) } },
 
760
        { "steel blue", { 70 + (70 << 8), 130 + (130 << 8), 180 + (180 << 8) } },
 
761
        { "steelblue", { 70 + (70 << 8), 130 + (130 << 8), 180 + (180 << 8) } },
 
762
        { "steelblue1", { 99 + (99 << 8), 184 + (184 << 8), 255 + (255 << 8) } },
 
763
        { "steelblue2", { 92 + (92 << 8), 172 + (172 << 8), 238 + (238 << 8) } },
 
764
        { "steelblue3", { 79 + (79 << 8), 148 + (148 << 8), 205 + (205 << 8) } },
 
765
        { "steelblue4", { 54 + (54 << 8), 100 + (100 << 8), 139 + (139 << 8) } },
 
766
        { "tan", { 210 + (210 << 8), 180 + (180 << 8), 140 + (140 << 8) } },
 
767
        { "tan1", { 255 + (255 << 8), 165 + (165 << 8), 79 + (79 << 8) } },
 
768
        { "tan2", { 238 + (238 << 8), 154 + (154 << 8), 73 + (73 << 8) } },
 
769
        { "tan3", { 205 + (205 << 8), 133 + (133 << 8), 63 + (63 << 8) } },
 
770
        { "tan4", { 139 + (139 << 8), 90 + (90 << 8), 43 + (43 << 8) } },
 
771
        { "thistle", { 216 + (216 << 8), 191 + (191 << 8), 216 + (216 << 8) } },
 
772
        { "thistle1", { 255 + (255 << 8), 225 + (225 << 8), 255 + (255 << 8) } },
 
773
        { "thistle2", { 238 + (238 << 8), 210 + (210 << 8), 238 + (238 << 8) } },
 
774
        { "thistle3", { 205 + (205 << 8), 181 + (181 << 8), 205 + (205 << 8) } },
 
775
        { "thistle4", { 139 + (139 << 8), 123 + (123 << 8), 139 + (139 << 8) } },
 
776
        { "tomato", { 255 + (255 << 8), 99 + (99 << 8), 71 + (71 << 8) } },
 
777
        { "tomato1", { 255 + (255 << 8), 99 + (99 << 8), 71 + (71 << 8) } },
 
778
        { "tomato2", { 238 + (238 << 8), 92 + (92 << 8), 66 + (66 << 8) } },
 
779
        { "tomato3", { 205 + (205 << 8), 79 + (79 << 8), 57 + (57 << 8) } },
 
780
        { "tomato4", { 139 + (139 << 8), 54 + (54 << 8), 38 + (38 << 8) } },
 
781
        { "turquoise", { 64 + (64 << 8), 224 + (224 << 8), 208 + (208 << 8) } },
 
782
        { "turquoise1", { 0 + (0 << 8), 245 + (245 << 8), 255 + (255 << 8) } },
 
783
        { "turquoise2", { 0 + (0 << 8), 229 + (229 << 8), 238 + (238 << 8) } },
 
784
        { "turquoise3", { 0 + (0 << 8), 197 + (197 << 8), 205 + (205 << 8) } },
 
785
        { "turquoise4", { 0 + (0 << 8), 134 + (134 << 8), 139 + (139 << 8) } },
 
786
        { "violet red", { 208 + (208 << 8), 32 + (32 << 8), 144 + (144 << 8) } },
 
787
        { "violet", { 238 + (238 << 8), 130 + (130 << 8), 238 + (238 << 8) } },
 
788
        { "violetred", { 208 + (208 << 8), 32 + (32 << 8), 144 + (144 << 8) } },
 
789
        { "violetred1", { 255 + (255 << 8), 62 + (62 << 8), 150 + (150 << 8) } },
 
790
        { "violetred2", { 238 + (238 << 8), 58 + (58 << 8), 140 + (140 << 8) } },
 
791
        { "violetred3", { 205 + (205 << 8), 50 + (50 << 8), 120 + (120 << 8) } },
 
792
        { "violetred4", { 139 + (139 << 8), 34 + (34 << 8), 82 + (82 << 8) } },
 
793
        { "wheat", { 245 + (245 << 8), 222 + (222 << 8), 179 + (179 << 8) } },
 
794
        { "wheat1", { 255 + (255 << 8), 231 + (231 << 8), 186 + (186 << 8) } },
 
795
        { "wheat2", { 238 + (238 << 8), 216 + (216 << 8), 174 + (174 << 8) } },
 
796
        { "wheat3", { 205 + (205 << 8), 186 + (186 << 8), 150 + (150 << 8) } },
 
797
        { "wheat4", { 139 + (139 << 8), 126 + (126 << 8), 102 + (102 << 8) } },
 
798
        { "white smoke", { 245 + (245 << 8), 245 + (245 << 8), 245 + (245 << 8) } },
 
799
        { "white", { 255 + (255 << 8), 255 + (255 << 8), 255 + (255 << 8) } },
 
800
        { "whitesmoke", { 245 + (245 << 8), 245 + (245 << 8), 245 + (245 << 8) } },
 
801
        { "yellow green", { 154 + (154 << 8), 205 + (205 << 8), 50 + (50 << 8) } },
 
802
        { "yellow", { 255 + (255 << 8), 255 + (255 << 8), 0 + (0 << 8) } },
 
803
        { "yellow1", { 255 + (255 << 8), 255 + (255 << 8), 0 + (0 << 8) } },
 
804
        { "yellow2", { 238 + (238 << 8), 238 + (238 << 8), 0 + (0 << 8) } },
 
805
        { "yellow3", { 205 + (205 << 8), 205 + (205 << 8), 0 + (0 << 8) } },
 
806
        { "yellow4", { 139 + (139 << 8), 139 + (139 << 8), 0 + (0 << 8) } },
 
807
        { "yellowgreen", { 154 + (154 << 8), 205 + (205 << 8), 50 + (50 << 8) } },
 
808
        { 0, { 0, 0, 0 } }
 
809
};
 
810
 
 
811
 
 
812
/* utility functions */
 
813
 
 
814
static char *
 
815
string_downcase (const char *in)
 
816
{
 
817
        char *out, *ptr;
 
818
 
 
819
        out = g_strdup (in);
 
820
        for (ptr = out; *ptr != 0; ptr++) {
 
821
                *ptr = tolower (*ptr);
 
822
        }
 
823
 
 
824
        return out;
 
825
}
 
826
 
 
827
static gboolean
 
828
next_int (char **ptr, int *value)
 
829
{
 
830
        errno = 0;
 
831
        *value = strtol (*ptr, ptr, 10);
 
832
        return errno == 0;
 
833
}
 
834
 
 
835
static guint
 
836
read_hex_digits (const char *ptr, int chars)
 
837
{
 
838
        char buf[16];
 
839
        g_assert (chars + 1 < sizeof (buf));
 
840
        memcpy (buf, ptr, chars);
 
841
        buf[chars] = 0;
 
842
        return strtol (buf, 0, 16);
 
843
}
 
844
 
 
845
 
 
846
/* Named color management */
 
847
 
 
848
static void
 
849
load_rgb_txt (void)
 
850
{
 
851
        FILE *fh;
 
852
        char buf[256];
 
853
        char *ptr, *end;
 
854
        int red, green, blue;
 
855
        rgb_color *color;
 
856
        int i;
 
857
 
 
858
        named_colors = g_hash_table_new (g_str_hash, g_str_equal);
 
859
 
 
860
        fh = fopen (PATH_RGB_TXT, "r");
 
861
        if (fh != NULL) {
 
862
                while (fgets (buf, sizeof (buf), fh) != NULL) {
 
863
                        if (buf[0] == '!') {
 
864
                                continue;
 
865
                        }
 
866
 
 
867
                        ptr = buf;
 
868
                        if (next_int (&ptr, &red)
 
869
                            && next_int (&ptr, &green)
 
870
                            && next_int (&ptr, &blue)) {
 
871
                                ptr += strspn (ptr, " \t");
 
872
                                end = strchr (ptr, '\n');
 
873
                                if (end != NULL) {
 
874
                                        *end = 0;
 
875
                                        color = g_new (rgb_color, 1);
 
876
 
 
877
                                        color->red = red | (red << 8);
 
878
                                        color->green = green | (green << 8);
 
879
                                        color->blue = blue | (blue << 8);
 
880
 
 
881
                                        g_hash_table_insert (named_colors,
 
882
                                                             string_downcase (ptr),
 
883
                                                             color);
 
884
                                }
 
885
                        }
 
886
                }
 
887
                fclose (fh);
 
888
        } else {
 
889
                /* use the local copy */
 
890
                for (i = 0; local_rgb_txt[i].name != NULL; i++) {
 
891
                        g_hash_table_insert (named_colors,
 
892
                                             local_rgb_txt[i].name,
 
893
                                             &local_rgb_txt[i].rgb);
 
894
                }
 
895
        }
 
896
}
 
897
 
 
898
 
 
899
/* Color parser */
 
900
 
 
901
/**
 
902
 * gdk_pixbuf_parse_color:
 
903
 * @spec: Color specification string.
 
904
 * @red: Return value for the red component.
 
905
 * @green: Return value for the green component.
 
906
 * @blue: Return value for the blue component.
 
907
 *
 
908
 * Parses a color specification string and returns the RGB components.  The returned
 
909
 * values are 16 bits in length, so the range is [0, 0xffff].
 
910
 *
 
911
 * The color specification must be either of the form "#rrrrggggbbbb", where
 
912
 * "rgb" are hexadecimal digits, or it must be one of the standard color names
 
913
 * from X11's rgb.txt.
 
914
 *
 
915
 * Return value: %TRUE if the color could be parsed successfully, %FALSE otherwise.
 
916
 **/
 
917
gboolean
 
918
gdk_pixbuf_parse_color (const char *spec, gushort *red, gushort *green, gushort *blue)
 
919
{
 
920
        rgb_color *rgb;
 
921
        char *downcase_spec;
 
922
        const char *ptr;
 
923
        int chars;
 
924
 
 
925
        g_return_val_if_fail (spec != NULL, FALSE);
 
926
 
 
927
        if (spec[0] == '#') {
 
928
 
 
929
                chars = 0;
 
930
                for (ptr = spec + 1; isxdigit (*ptr); ptr++) {
 
931
                        chars++;
 
932
                }
 
933
 
 
934
                switch (chars) {
 
935
                case 3:
 
936
                        if (red)
 
937
                                *red = read_hex_digits (spec + 1, 1) << 12;
 
938
 
 
939
                        if (green)
 
940
                                *green = read_hex_digits (spec + 2, 1) << 12;
 
941
 
 
942
                        if (blue)
 
943
                                *blue = read_hex_digits (spec + 3, 1) << 12;
 
944
 
 
945
                        return TRUE;
 
946
 
 
947
                case 6:
 
948
                        if (red)
 
949
                                *red = read_hex_digits (spec + 1, 2) << 8;
 
950
 
 
951
                        if (green)
 
952
                                *green = read_hex_digits (spec + 3, 2) << 8;
 
953
 
 
954
                        if (blue)
 
955
                                *blue = read_hex_digits (spec + 5, 2) << 8;
 
956
 
 
957
                        return TRUE;
 
958
 
 
959
                case 9:
 
960
                        if (red)
 
961
                                *red = read_hex_digits (spec + 1, 3) << 4;
 
962
 
 
963
                        if (green)
 
964
                                *green = read_hex_digits (spec + 4, 3) << 4;
 
965
 
 
966
                        if (blue)
 
967
                                *blue = read_hex_digits (spec + 7, 3) << 4;
 
968
 
 
969
                        return TRUE;
 
970
 
 
971
                case 12:
 
972
                        if (red)
 
973
                                *red = read_hex_digits (spec + 1, 4);
 
974
 
 
975
                        if (green)
 
976
                                *green = read_hex_digits (spec + 5, 4);
 
977
 
 
978
                        if (blue)
 
979
                                *blue = read_hex_digits (spec + 9, 4);
 
980
 
 
981
                        return TRUE;
 
982
 
 
983
                default:
 
984
                        return FALSE;
 
985
                }
 
986
        } else {
 
987
 
 
988
                /* FIXME: handle other X color specs? E.g.
 
989
 
 
990
                   rgb:<red>/<green>/<blue>
 
991
                   rgbi:<red>/<green>/<blue>
 
992
                   CIEXYZ:<X>/<Y>/<Z>
 
993
                   CIEuvY:<u>/<v>/<Y>
 
994
                   CIExyY:<x>/<y>/<Y>
 
995
                   CIELab:<L>/<a>/<b>
 
996
                   CIELuv:<L>/<u>/<v>
 
997
                   TekHVC:<H>/<V>/<C> */
 
998
 
 
999
                if (named_colors == NULL) {
 
1000
                        load_rgb_txt ();
 
1001
                }
 
1002
 
 
1003
                downcase_spec = string_downcase (spec);
 
1004
                rgb = g_hash_table_lookup (named_colors, downcase_spec);
 
1005
                g_free (downcase_spec);
 
1006
 
 
1007
                if (rgb != NULL) {
 
1008
                        if (red)
 
1009
                                *red = rgb->red;
 
1010
 
 
1011
                        if (green)
 
1012
                                *green = rgb->green;
 
1013
 
 
1014
                        if (blue)
 
1015
                                *blue = rgb->blue;
 
1016
 
 
1017
                        return TRUE;
 
1018
                } else {
 
1019
                        return FALSE;
 
1020
                }
 
1021
        }
 
1022
}
 
1023
 
 
1024
 
 
1025
/* Test harness */
 
1026
 
 
1027
#ifdef TEST
 
1028
static void
 
1029
test_color (const char *spec)
 
1030
{
 
1031
        gushort red, green, blue;
 
1032
        if (!gdk_pixbuf_parse_color (spec, &red, &green, &blue)) {
 
1033
                printf ("parsing `%s' -> failed\n", spec);
 
1034
        } else {
 
1035
                printf ("parsing `%s' -> %04x %04x %04x\n",
 
1036
                        spec, red, green, blue);
 
1037
        }
 
1038
}
 
1039
 
 
1040
int
 
1041
main (int argc, char **argv)
 
1042
{
 
1043
        test_color ("red");
 
1044
        test_color ("steelblue1");
 
1045
        test_color ("#fff");
 
1046
        test_color ("#18f");
 
1047
        test_color ("#224466");
 
1048
        test_color ("#333444555");
 
1049
        test_color ("#444455556666");
 
1050
 
 
1051
        test_color ("foobar");
 
1052
        test_color ("#ffff");
 
1053
        test_color ("#ggzz11");
 
1054
 
 
1055
        return 0;
 
1056
}
 
1057
#endif /* TEST */