43#include "MagickCore/studio.h"
44#include "MagickCore/blob.h"
45#include "MagickCore/cache-view.h"
46#include "MagickCore/cache.h"
47#include "MagickCore/color.h"
48#include "MagickCore/color-private.h"
49#include "MagickCore/colorspace-private.h"
50#include "MagickCore/client.h"
51#include "MagickCore/configure.h"
52#include "MagickCore/exception.h"
53#include "MagickCore/exception-private.h"
54#include "MagickCore/gem.h"
55#include "MagickCore/gem-private.h"
56#include "MagickCore/geometry.h"
57#include "MagickCore/image-private.h"
58#include "MagickCore/linked-list-private.h"
59#include "MagickCore/memory_.h"
60#include "MagickCore/monitor.h"
61#include "MagickCore/monitor-private.h"
62#include "MagickCore/option.h"
63#include "MagickCore/pixel-accessor.h"
64#include "MagickCore/quantize.h"
65#include "MagickCore/quantum.h"
66#include "MagickCore/quantum-private.h"
67#include "MagickCore/semaphore.h"
68#include "MagickCore/string_.h"
69#include "MagickCore/string-private.h"
70#include "MagickCore/token.h"
71#include "MagickCore/utility.h"
72#include "MagickCore/utility-private.h"
73#include "MagickCore/xml-tree.h"
74#include "MagickCore/xml-tree-private.h"
79#define ColorFilename "colors.xml"
107 {
"none", 0, 0, 0, 0, SVGCompliance | XPMCompliance },
108 {
"black", 0, 0, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
109 {
"red", 255, 0, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
110 {
"magenta", 255, 0, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
111 {
"green", 0, 128, 0, 1, SVGCompliance },
112 {
"cyan", 0, 255, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
113 {
"blue", 0, 0, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
114 {
"yellow", 255, 255, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
115 {
"white", 255, 255, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
116 {
"AliceBlue", 240, 248, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
117 {
"AntiqueWhite", 250, 235, 215, 1, SVGCompliance | X11Compliance | XPMCompliance },
118 {
"AntiqueWhite1", 255, 239, 219, 1, X11Compliance },
119 {
"AntiqueWhite2", 238, 223, 204, 1, X11Compliance },
120 {
"AntiqueWhite3", 205, 192, 176, 1, X11Compliance },
121 {
"AntiqueWhite4", 139, 131, 120, 1, X11Compliance },
122 {
"aqua", 0, 255, 255, 1, SVGCompliance },
123 {
"aquamarine", 127, 255, 212, 1, SVGCompliance | X11Compliance | XPMCompliance },
124 {
"aquamarine1", 127, 255, 212, 1, X11Compliance },
125 {
"aquamarine2", 118, 238, 198, 1, X11Compliance },
126 {
"aquamarine3", 102, 205, 170, 1, X11Compliance },
127 {
"aquamarine4", 69, 139, 116, 1, X11Compliance },
128 {
"azure", 240, 255, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
129 {
"azure1", 240, 255, 255, 1, X11Compliance },
130 {
"azure2", 224, 238, 238, 1, X11Compliance },
131 {
"azure3", 193, 205, 205, 1, X11Compliance },
132 {
"azure4", 131, 139, 139, 1, X11Compliance },
133 {
"beige", 245, 245, 220, 1, SVGCompliance | X11Compliance | XPMCompliance },
134 {
"bisque", 255, 228, 196, 1, SVGCompliance | X11Compliance | XPMCompliance },
135 {
"bisque1", 255, 228, 196, 1, X11Compliance },
136 {
"bisque2", 238, 213, 183, 1, X11Compliance },
137 {
"bisque3", 205, 183, 158, 1, X11Compliance },
138 {
"bisque4", 139, 125, 107, 1, X11Compliance },
139 {
"BlanchedAlmond", 255, 235, 205, 1, SVGCompliance | X11Compliance | XPMCompliance },
140 {
"blue1", 0, 0, 255, 1, X11Compliance },
141 {
"blue2", 0, 0, 238, 1, X11Compliance },
142 {
"blue3", 0, 0, 205, 1, X11Compliance },
143 {
"blue4", 0, 0, 139, 1, X11Compliance },
144 {
"BlueViolet", 138, 43, 226, 1, SVGCompliance | X11Compliance | XPMCompliance },
145 {
"brown", 165, 42, 42, 1, SVGCompliance | X11Compliance | XPMCompliance },
146 {
"brown1", 255, 64, 64, 1, X11Compliance },
147 {
"brown2", 238, 59, 59, 1, X11Compliance },
148 {
"brown3", 205, 51, 51, 1, X11Compliance },
149 {
"brown4", 139, 35, 35, 1, X11Compliance },
150 {
"burlywood", 222, 184, 135, 1, SVGCompliance | X11Compliance | XPMCompliance },
151 {
"burlywood1", 255, 211, 155, 1, X11Compliance },
152 {
"burlywood2", 238, 197, 145, 1, X11Compliance },
153 {
"burlywood3", 205, 170, 125, 1, X11Compliance },
154 {
"burlywood4", 139, 115, 85, 1, X11Compliance },
155 {
"CadetBlue", 95, 158, 160, 1, SVGCompliance | X11Compliance | XPMCompliance },
156 {
"CadetBlue1", 152, 245, 255, 1, X11Compliance },
157 {
"CadetBlue2", 142, 229, 238, 1, X11Compliance },
158 {
"CadetBlue3", 122, 197, 205, 1, X11Compliance },
159 {
"CadetBlue4", 83, 134, 139, 1, X11Compliance },
160 {
"chartreuse", 127, 255, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
161 {
"chartreuse1", 127, 255, 0, 1, X11Compliance },
162 {
"chartreuse2", 118, 238, 0, 1, X11Compliance },
163 {
"chartreuse3", 102, 205, 0, 1, X11Compliance },
164 {
"chartreuse4", 69, 139, 0, 1, X11Compliance },
165 {
"chocolate", 210, 105, 30, 1, SVGCompliance | X11Compliance | XPMCompliance },
166 {
"chocolate1", 255, 127, 36, 1, X11Compliance },
167 {
"chocolate2", 238, 118, 33, 1, X11Compliance },
168 {
"chocolate3", 205, 102, 29, 1, X11Compliance },
169 {
"chocolate4", 139, 69, 19, 1, X11Compliance },
170 {
"coral", 255, 127, 80, 1, SVGCompliance | X11Compliance | XPMCompliance },
171 {
"coral1", 255, 114, 86, 1, X11Compliance },
172 {
"coral2", 238, 106, 80, 1, X11Compliance },
173 {
"coral3", 205, 91, 69, 1, X11Compliance },
174 {
"coral4", 139, 62, 47, 1, X11Compliance },
175 {
"CornflowerBlue", 100, 149, 237, 1, SVGCompliance | X11Compliance | XPMCompliance },
176 {
"cornsilk", 255, 248, 220, 1, SVGCompliance | X11Compliance | XPMCompliance },
177 {
"cornsilk1", 255, 248, 220, 1, X11Compliance },
178 {
"cornsilk2", 238, 232, 205, 1, X11Compliance },
179 {
"cornsilk3", 205, 200, 177, 1, X11Compliance },
180 {
"cornsilk4", 139, 136, 120, 1, X11Compliance },
181 {
"crimson", 220, 20, 60, 1, SVGCompliance },
182 {
"cyan1", 0, 255, 255, 1, X11Compliance },
183 {
"cyan2", 0, 238, 238, 1, X11Compliance },
184 {
"cyan3", 0, 205, 205, 1, X11Compliance },
185 {
"cyan4", 0, 139, 139, 1, X11Compliance },
186 {
"DarkBlue", 0, 0, 139, 1, SVGCompliance | X11Compliance },
187 {
"DarkCyan", 0, 139, 139, 1, SVGCompliance | X11Compliance },
188 {
"DarkGoldenrod", 184, 134, 11, 1, SVGCompliance | X11Compliance | XPMCompliance },
189 {
"DarkGoldenrod1", 255, 185, 15, 1, X11Compliance },
190 {
"DarkGoldenrod2", 238, 173, 14, 1, X11Compliance },
191 {
"DarkGoldenrod3", 205, 149, 12, 1, X11Compliance },
192 {
"DarkGoldenrod4", 139, 101, 8, 1, X11Compliance },
193 {
"DarkGray", 169, 169, 169, 1, SVGCompliance | X11Compliance },
194 {
"DarkGreen", 0, 100, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
195 {
"DarkGrey", 169, 169, 169, 1, SVGCompliance | X11Compliance },
196 {
"DarkKhaki", 189, 183, 107, 1, SVGCompliance | X11Compliance | XPMCompliance },
197 {
"DarkMagenta", 139, 0, 139, 1, SVGCompliance | X11Compliance },
198 {
"DarkOliveGreen", 85, 107, 47, 1, SVGCompliance | X11Compliance | XPMCompliance },
199 {
"DarkOliveGreen1", 202, 255, 112, 1, X11Compliance },
200 {
"DarkOliveGreen2", 188, 238, 104, 1, X11Compliance },
201 {
"DarkOliveGreen3", 162, 205, 90, 1, X11Compliance },
202 {
"DarkOliveGreen4", 110, 139, 61, 1, X11Compliance },
203 {
"DarkOrange", 255, 140, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
204 {
"DarkOrange1", 255, 127, 0, 1, X11Compliance },
205 {
"DarkOrange2", 238, 118, 0, 1, X11Compliance },
206 {
"DarkOrange3", 205, 102, 0, 1, X11Compliance },
207 {
"DarkOrange4", 139, 69, 0, 1, X11Compliance },
208 {
"DarkOrchid", 153, 50, 204, 1, SVGCompliance | X11Compliance | XPMCompliance },
209 {
"DarkOrchid1", 191, 62, 255, 1, X11Compliance },
210 {
"DarkOrchid2", 178, 58, 238, 1, X11Compliance },
211 {
"DarkOrchid3", 154, 50, 205, 1, X11Compliance },
212 {
"DarkOrchid4", 104, 34, 139, 1, X11Compliance },
213 {
"DarkRed", 139, 0, 0, 1, SVGCompliance | X11Compliance },
214 {
"DarkSalmon", 233, 150, 122, 1, SVGCompliance | X11Compliance | XPMCompliance },
215 {
"DarkSeaGreen", 143, 188, 143, 1, SVGCompliance | X11Compliance | XPMCompliance },
216 {
"DarkSeaGreen1", 193, 255, 193, 1, X11Compliance },
217 {
"DarkSeaGreen2", 180, 238, 180, 1, X11Compliance },
218 {
"DarkSeaGreen3", 155, 205, 155, 1, X11Compliance },
219 {
"DarkSeaGreen4", 105, 139, 105, 1, X11Compliance },
220 {
"DarkSlateBlue", 72, 61, 139, 1, SVGCompliance | X11Compliance | XPMCompliance },
221 {
"DarkSlateGray", 47, 79, 79, 1, SVGCompliance | X11Compliance | XPMCompliance },
222 {
"DarkSlateGray1", 151, 255, 255, 1, X11Compliance },
223 {
"DarkSlateGray2", 141, 238, 238, 1, X11Compliance },
224 {
"DarkSlateGray3", 121, 205, 205, 1, X11Compliance },
225 {
"DarkSlateGray4", 82, 139, 139, 1, X11Compliance },
226 {
"DarkSlateGrey", 47, 79, 79, 1, SVGCompliance | X11Compliance },
227 {
"DarkTurquoise", 0, 206, 209, 1, SVGCompliance | X11Compliance | XPMCompliance },
228 {
"DarkViolet", 148, 0, 211, 1, SVGCompliance | X11Compliance | XPMCompliance },
229 {
"DeepPink", 255, 20, 147, 1, SVGCompliance | X11Compliance | XPMCompliance },
230 {
"DeepPink1", 255, 20, 147, 1, X11Compliance },
231 {
"DeepPink2", 238, 18, 137, 1, X11Compliance },
232 {
"DeepPink3", 205, 16, 118, 1, X11Compliance },
233 {
"DeepPink4", 139, 10, 80, 1, X11Compliance },
234 {
"DeepSkyBlue", 0, 191, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
235 {
"DeepSkyBlue1", 0, 191, 255, 1, X11Compliance },
236 {
"DeepSkyBlue2", 0, 178, 238, 1, X11Compliance },
237 {
"DeepSkyBlue3", 0, 154, 205, 1, X11Compliance },
238 {
"DeepSkyBlue4", 0, 104, 139, 1, X11Compliance },
239 {
"DimGray", 105, 105, 105, 1, SVGCompliance | X11Compliance | XPMCompliance },
240 {
"DimGrey", 105, 105, 105, 1, SVGCompliance | X11Compliance },
241 {
"DodgerBlue", 30, 144, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
242 {
"DodgerBlue1", 30, 144, 255, 1, X11Compliance },
243 {
"DodgerBlue2", 28, 134, 238, 1, X11Compliance },
244 {
"DodgerBlue3", 24, 116, 205, 1, X11Compliance },
245 {
"DodgerBlue4", 16, 78, 139, 1, X11Compliance },
246 {
"firebrick", 178, 34, 34, 1, SVGCompliance | X11Compliance | XPMCompliance },
247 {
"firebrick1", 255, 48, 48, 1, X11Compliance },
248 {
"firebrick2", 238, 44, 44, 1, X11Compliance },
249 {
"firebrick3", 205, 38, 38, 1, X11Compliance },
250 {
"firebrick4", 139, 26, 26, 1, X11Compliance },
251 {
"FloralWhite", 255, 250, 240, 1, SVGCompliance | X11Compliance | XPMCompliance },
252 {
"ForestGreen", 34, 139, 34, 1, SVGCompliance | X11Compliance | XPMCompliance },
253 {
"fractal", 128, 128, 128, 1, SVGCompliance },
254 {
"freeze", 0, 0, 0, 0, SVGCompliance },
255 {
"fuchsia", 255, 0, 255, 1, SVGCompliance },
256 {
"gainsboro", 220, 220, 220, 1, SVGCompliance | X11Compliance | XPMCompliance },
257 {
"GhostWhite", 248, 248, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
258 {
"gold", 255, 215, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
259 {
"gold1", 255, 215, 0, 1, X11Compliance },
260 {
"gold2", 238, 201, 0, 1, X11Compliance },
261 {
"gold3", 205, 173, 0, 1, X11Compliance },
262 {
"gold4", 139, 117, 0, 1, X11Compliance },
263 {
"goldenrod", 218, 165, 32, 1, SVGCompliance | X11Compliance | XPMCompliance },
264 {
"goldenrod1", 255, 193, 37, 1, X11Compliance },
265 {
"goldenrod2", 238, 180, 34, 1, X11Compliance },
266 {
"goldenrod3", 205, 155, 29, 1, X11Compliance },
267 {
"goldenrod4", 139, 105, 20, 1, X11Compliance },
268 {
"gray", 126, 126, 126, 1, SVGCompliance },
269 {
"gray", 190, 190, 190, 1, X11Compliance | XPMCompliance },
270 {
"gray0", 0, 0, 0, 1, X11Compliance | XPMCompliance },
271 {
"gray1", 3, 3, 3, 1, X11Compliance | XPMCompliance },
272 {
"gray10", 26, 26, 26, 1, X11Compliance | XPMCompliance },
273 {
"gray100", 255, 255, 255, 1, X11Compliance | XPMCompliance },
274 {
"gray100", 255, 255, 255, 1, X11Compliance | XPMCompliance },
275 {
"gray11", 28, 28, 28, 1, X11Compliance | XPMCompliance },
276 {
"gray12", 31, 31, 31, 1, X11Compliance | XPMCompliance },
277 {
"gray13", 33, 33, 33, 1, X11Compliance | XPMCompliance },
278 {
"gray14", 36, 36, 36, 1, X11Compliance | XPMCompliance },
279 {
"gray15", 38, 38, 38, 1, X11Compliance | XPMCompliance },
280 {
"gray16", 41, 41, 41, 1, X11Compliance | XPMCompliance },
281 {
"gray17", 43, 43, 43, 1, X11Compliance | XPMCompliance },
282 {
"gray18", 46, 46, 46, 1, X11Compliance | XPMCompliance },
283 {
"gray19", 48, 48, 48, 1, X11Compliance | XPMCompliance },
284 {
"gray2", 5, 5, 5, 1, X11Compliance | XPMCompliance },
285 {
"gray20", 51, 51, 51, 1, X11Compliance | XPMCompliance },
286 {
"gray21", 54, 54, 54, 1, X11Compliance | XPMCompliance },
287 {
"gray22", 56, 56, 56, 1, X11Compliance | XPMCompliance },
288 {
"gray23", 59, 59, 59, 1, X11Compliance | XPMCompliance },
289 {
"gray24", 61, 61, 61, 1, X11Compliance | XPMCompliance },
290 {
"gray25", 64, 64, 64, 1, X11Compliance | XPMCompliance },
291 {
"gray26", 66, 66, 66, 1, X11Compliance | XPMCompliance },
292 {
"gray27", 69, 69, 69, 1, X11Compliance | XPMCompliance },
293 {
"gray28", 71, 71, 71, 1, X11Compliance | XPMCompliance },
294 {
"gray29", 74, 74, 74, 1, X11Compliance | XPMCompliance },
295 {
"gray3", 8, 8, 8, 1, X11Compliance | XPMCompliance },
296 {
"gray30", 77, 77, 77, 1, X11Compliance | XPMCompliance },
297 {
"gray31", 79, 79, 79, 1, X11Compliance | XPMCompliance },
298 {
"gray32", 82, 82, 82, 1, X11Compliance | XPMCompliance },
299 {
"gray33", 84, 84, 84, 1, X11Compliance | XPMCompliance },
300 {
"gray34", 87, 87, 87, 1, X11Compliance | XPMCompliance },
301 {
"gray35", 89, 89, 89, 1, X11Compliance | XPMCompliance },
302 {
"gray36", 92, 92, 92, 1, X11Compliance | XPMCompliance },
303 {
"gray37", 94, 94, 94, 1, X11Compliance | XPMCompliance },
304 {
"gray38", 97, 97, 97, 1, X11Compliance | XPMCompliance },
305 {
"gray39", 99, 99, 99, 1, X11Compliance | XPMCompliance },
306 {
"gray4", 10, 10, 10, 1, X11Compliance | XPMCompliance },
307 {
"gray40", 102, 102, 102, 1, X11Compliance | XPMCompliance },
308 {
"gray41", 105, 105, 105, 1, X11Compliance | XPMCompliance },
309 {
"gray42", 107, 107, 107, 1, X11Compliance | XPMCompliance },
310 {
"gray43", 110, 110, 110, 1, X11Compliance | XPMCompliance },
311 {
"gray44", 112, 112, 112, 1, X11Compliance | XPMCompliance },
312 {
"gray45", 115, 115, 115, 1, X11Compliance | XPMCompliance },
313 {
"gray46", 117, 117, 117, 1, X11Compliance | XPMCompliance },
314 {
"gray47", 120, 120, 120, 1, X11Compliance | XPMCompliance },
315 {
"gray48", 122, 122, 122, 1, X11Compliance | XPMCompliance },
316 {
"gray49", 125, 125, 125, 1, X11Compliance | XPMCompliance },
317 {
"gray5", 13, 13, 13, 1, X11Compliance | XPMCompliance },
318 {
"gray50", 127, 127, 127, 1, X11Compliance | XPMCompliance },
319 {
"gray51", 130, 130, 130, 1, X11Compliance | XPMCompliance },
320 {
"gray52", 133, 133, 133, 1, X11Compliance | XPMCompliance },
321 {
"gray53", 135, 135, 135, 1, X11Compliance | XPMCompliance },
322 {
"gray54", 138, 138, 138, 1, X11Compliance | XPMCompliance },
323 {
"gray55", 140, 140, 140, 1, X11Compliance | XPMCompliance },
324 {
"gray56", 143, 143, 143, 1, X11Compliance | XPMCompliance },
325 {
"gray57", 145, 145, 145, 1, X11Compliance | XPMCompliance },
326 {
"gray58", 148, 148, 148, 1, X11Compliance | XPMCompliance },
327 {
"gray59", 150, 150, 150, 1, X11Compliance | XPMCompliance },
328 {
"gray6", 15, 15, 15, 1, X11Compliance | XPMCompliance },
329 {
"gray60", 153, 153, 153, 1, X11Compliance | XPMCompliance },
330 {
"gray61", 156, 156, 156, 1, X11Compliance | XPMCompliance },
331 {
"gray62", 158, 158, 158, 1, X11Compliance | XPMCompliance },
332 {
"gray63", 161, 161, 161, 1, X11Compliance | XPMCompliance },
333 {
"gray64", 163, 163, 163, 1, X11Compliance | XPMCompliance },
334 {
"gray65", 166, 166, 166, 1, X11Compliance | XPMCompliance },
335 {
"gray66", 168, 168, 168, 1, X11Compliance | XPMCompliance },
336 {
"gray67", 171, 171, 171, 1, X11Compliance | XPMCompliance },
337 {
"gray68", 173, 173, 173, 1, X11Compliance | XPMCompliance },
338 {
"gray69", 176, 176, 176, 1, X11Compliance | XPMCompliance },
339 {
"gray7", 18, 18, 18, 1, X11Compliance | XPMCompliance },
340 {
"gray70", 179, 179, 179, 1, X11Compliance | XPMCompliance },
341 {
"gray71", 181, 181, 181, 1, X11Compliance | XPMCompliance },
342 {
"gray72", 184, 184, 184, 1, X11Compliance | XPMCompliance },
343 {
"gray73", 186, 186, 186, 1, X11Compliance | XPMCompliance },
344 {
"gray74", 189, 189, 189, 1, X11Compliance | XPMCompliance },
345 {
"gray75", 191, 191, 191, 1, X11Compliance | XPMCompliance },
346 {
"gray76", 194, 194, 194, 1, X11Compliance | XPMCompliance },
347 {
"gray77", 196, 196, 196, 1, X11Compliance | XPMCompliance },
348 {
"gray78", 199, 199, 199, 1, X11Compliance | XPMCompliance },
349 {
"gray79", 201, 201, 201, 1, X11Compliance | XPMCompliance },
350 {
"gray8", 20, 20, 20, 1, X11Compliance | XPMCompliance },
351 {
"gray80", 204, 204, 204, 1, X11Compliance | XPMCompliance },
352 {
"gray81", 207, 207, 207, 1, X11Compliance | XPMCompliance },
353 {
"gray82", 209, 209, 209, 1, X11Compliance | XPMCompliance },
354 {
"gray83", 212, 212, 212, 1, X11Compliance | XPMCompliance },
355 {
"gray84", 214, 214, 214, 1, X11Compliance | XPMCompliance },
356 {
"gray85", 217, 217, 217, 1, X11Compliance | XPMCompliance },
357 {
"gray86", 219, 219, 219, 1, X11Compliance | XPMCompliance },
358 {
"gray87", 222, 222, 222, 1, X11Compliance | XPMCompliance },
359 {
"gray88", 224, 224, 224, 1, X11Compliance | XPMCompliance },
360 {
"gray89", 227, 227, 227, 1, X11Compliance | XPMCompliance },
361 {
"gray9", 23, 23, 23, 1, X11Compliance | XPMCompliance },
362 {
"gray90", 229, 229, 229, 1, X11Compliance | XPMCompliance },
363 {
"gray91", 232, 232, 232, 1, X11Compliance | XPMCompliance },
364 {
"gray92", 235, 235, 235, 1, X11Compliance | XPMCompliance },
365 {
"gray93", 237, 237, 237, 1, X11Compliance | XPMCompliance },
366 {
"gray94", 240, 240, 240, 1, X11Compliance | XPMCompliance },
367 {
"gray95", 242, 242, 242, 1, X11Compliance | XPMCompliance },
368 {
"gray96", 245, 245, 245, 1, X11Compliance | XPMCompliance },
369 {
"gray97", 247, 247, 247, 1, X11Compliance | XPMCompliance },
370 {
"gray98", 250, 250, 250, 1, X11Compliance | XPMCompliance },
371 {
"gray99", 252, 252, 252, 1, X11Compliance | XPMCompliance },
372 {
"green", 0, 255, 0, 1, X11Compliance | XPMCompliance },
373 {
"green1", 0, 255, 0, 1, X11Compliance },
374 {
"green2", 0, 238, 0, 1, X11Compliance },
375 {
"green3", 0, 205, 0, 1, X11Compliance },
376 {
"green4", 0, 139, 0, 1, X11Compliance },
377 {
"GreenYellow", 173, 255, 47, 1, X11Compliance | XPMCompliance },
378 {
"grey", 190, 190, 190, 1, SVGCompliance | X11Compliance },
379 {
"grey0", 0, 0, 0, 1, SVGCompliance | X11Compliance },
380 {
"grey1", 3, 3, 3, 1, SVGCompliance | X11Compliance },
381 {
"grey10", 26, 26, 26, 1, SVGCompliance | X11Compliance },
382 {
"grey100", 255, 255, 255, 1, SVGCompliance | X11Compliance },
383 {
"grey11", 28, 28, 28, 1, SVGCompliance | X11Compliance },
384 {
"grey12", 31, 31, 31, 1, SVGCompliance | X11Compliance },
385 {
"grey13", 33, 33, 33, 1, SVGCompliance | X11Compliance },
386 {
"grey14", 36, 36, 36, 1, SVGCompliance | X11Compliance },
387 {
"grey15", 38, 38, 38, 1, SVGCompliance | X11Compliance },
388 {
"grey16", 41, 41, 41, 1, SVGCompliance | X11Compliance },
389 {
"grey17", 43, 43, 43, 1, SVGCompliance | X11Compliance },
390 {
"grey18", 46, 46, 46, 1, SVGCompliance | X11Compliance },
391 {
"grey19", 48, 48, 48, 1, SVGCompliance | X11Compliance },
392 {
"grey2", 5, 5, 5, 1, SVGCompliance | X11Compliance },
393 {
"grey20", 51, 51, 51, 1, SVGCompliance | X11Compliance },
394 {
"grey21", 54, 54, 54, 1, SVGCompliance | X11Compliance },
395 {
"grey22", 56, 56, 56, 1, SVGCompliance | X11Compliance },
396 {
"grey23", 59, 59, 59, 1, SVGCompliance | X11Compliance },
397 {
"grey24", 61, 61, 61, 1, SVGCompliance | X11Compliance },
398 {
"grey25", 64, 64, 64, 1, SVGCompliance | X11Compliance },
399 {
"grey26", 66, 66, 66, 1, SVGCompliance | X11Compliance },
400 {
"grey27", 69, 69, 69, 1, SVGCompliance | X11Compliance },
401 {
"grey28", 71, 71, 71, 1, SVGCompliance | X11Compliance },
402 {
"grey29", 74, 74, 74, 1, SVGCompliance | X11Compliance },
403 {
"grey3", 8, 8, 8, 1, SVGCompliance | X11Compliance },
404 {
"grey30", 77, 77, 77, 1, SVGCompliance | X11Compliance },
405 {
"grey31", 79, 79, 79, 1, SVGCompliance | X11Compliance },
406 {
"grey32", 82, 82, 82, 1, SVGCompliance | X11Compliance },
407 {
"grey33", 84, 84, 84, 1, SVGCompliance | X11Compliance },
408 {
"grey34", 87, 87, 87, 1, SVGCompliance | X11Compliance },
409 {
"grey35", 89, 89, 89, 1, SVGCompliance | X11Compliance },
410 {
"grey36", 92, 92, 92, 1, SVGCompliance | X11Compliance },
411 {
"grey37", 94, 94, 94, 1, SVGCompliance | X11Compliance },
412 {
"grey38", 97, 97, 97, 1, SVGCompliance | X11Compliance },
413 {
"grey39", 99, 99, 99, 1, SVGCompliance | X11Compliance },
414 {
"grey4", 10, 10, 10, 1, SVGCompliance | X11Compliance },
415 {
"grey40", 102, 102, 102, 1, SVGCompliance | X11Compliance },
416 {
"grey41", 105, 105, 105, 1, SVGCompliance | X11Compliance },
417 {
"grey42", 107, 107, 107, 1, SVGCompliance | X11Compliance },
418 {
"grey43", 110, 110, 110, 1, SVGCompliance | X11Compliance },
419 {
"grey44", 112, 112, 112, 1, SVGCompliance | X11Compliance },
420 {
"grey45", 115, 115, 115, 1, SVGCompliance | X11Compliance },
421 {
"grey46", 117, 117, 117, 1, SVGCompliance | X11Compliance },
422 {
"grey47", 120, 120, 120, 1, SVGCompliance | X11Compliance },
423 {
"grey48", 122, 122, 122, 1, SVGCompliance | X11Compliance },
424 {
"grey49", 125, 125, 125, 1, SVGCompliance | X11Compliance },
425 {
"grey5", 13, 13, 13, 1, SVGCompliance | X11Compliance },
426 {
"grey50", 127, 127, 127, 1, SVGCompliance | X11Compliance },
427 {
"grey51", 130, 130, 130, 1, SVGCompliance | X11Compliance },
428 {
"grey52", 133, 133, 133, 1, SVGCompliance | X11Compliance },
429 {
"grey53", 135, 135, 135, 1, SVGCompliance | X11Compliance },
430 {
"grey54", 138, 138, 138, 1, SVGCompliance | X11Compliance },
431 {
"grey55", 140, 140, 140, 1, SVGCompliance | X11Compliance },
432 {
"grey56", 143, 143, 143, 1, SVGCompliance | X11Compliance },
433 {
"grey57", 145, 145, 145, 1, SVGCompliance | X11Compliance },
434 {
"grey58", 148, 148, 148, 1, SVGCompliance | X11Compliance },
435 {
"grey59", 150, 150, 150, 1, SVGCompliance | X11Compliance },
436 {
"grey6", 15, 15, 15, 1, SVGCompliance | X11Compliance },
437 {
"grey60", 153, 153, 153, 1, SVGCompliance | X11Compliance },
438 {
"grey61", 156, 156, 156, 1, SVGCompliance | X11Compliance },
439 {
"grey62", 158, 158, 158, 1, SVGCompliance | X11Compliance },
440 {
"grey63", 161, 161, 161, 1, SVGCompliance | X11Compliance },
441 {
"grey64", 163, 163, 163, 1, SVGCompliance | X11Compliance },
442 {
"grey65", 166, 166, 166, 1, SVGCompliance | X11Compliance },
443 {
"grey66", 168, 168, 168, 1, SVGCompliance | X11Compliance },
444 {
"grey67", 171, 171, 171, 1, SVGCompliance | X11Compliance },
445 {
"grey68", 173, 173, 173, 1, SVGCompliance | X11Compliance },
446 {
"grey69", 176, 176, 176, 1, SVGCompliance | X11Compliance },
447 {
"grey7", 18, 18, 18, 1, SVGCompliance | X11Compliance },
448 {
"grey70", 179, 179, 179, 1, SVGCompliance | X11Compliance },
449 {
"grey71", 181, 181, 181, 1, SVGCompliance | X11Compliance },
450 {
"grey72", 184, 184, 184, 1, SVGCompliance | X11Compliance },
451 {
"grey73", 186, 186, 186, 1, SVGCompliance | X11Compliance },
452 {
"grey74", 189, 189, 189, 1, SVGCompliance | X11Compliance },
453 {
"grey75", 191, 191, 191, 1, SVGCompliance | X11Compliance },
454 {
"grey76", 194, 194, 194, 1, SVGCompliance | X11Compliance },
455 {
"grey77", 196, 196, 196, 1, SVGCompliance | X11Compliance },
456 {
"grey78", 199, 199, 199, 1, SVGCompliance | X11Compliance },
457 {
"grey79", 201, 201, 201, 1, SVGCompliance | X11Compliance },
458 {
"grey8", 20, 20, 20, 1, SVGCompliance | X11Compliance },
459 {
"grey80", 204, 204, 204, 1, SVGCompliance | X11Compliance },
460 {
"grey81", 207, 207, 207, 1, SVGCompliance | X11Compliance },
461 {
"grey82", 209, 209, 209, 1, SVGCompliance | X11Compliance },
462 {
"grey83", 212, 212, 212, 1, SVGCompliance | X11Compliance },
463 {
"grey84", 214, 214, 214, 1, SVGCompliance | X11Compliance },
464 {
"grey85", 217, 217, 217, 1, SVGCompliance | X11Compliance },
465 {
"grey86", 219, 219, 219, 1, SVGCompliance | X11Compliance },
466 {
"grey87", 222, 222, 222, 1, SVGCompliance | X11Compliance },
467 {
"grey88", 224, 224, 224, 1, SVGCompliance | X11Compliance },
468 {
"grey89", 227, 227, 227, 1, SVGCompliance | X11Compliance },
469 {
"grey9", 23, 23, 23, 1, SVGCompliance | X11Compliance },
470 {
"grey90", 229, 229, 229, 1, SVGCompliance | X11Compliance },
471 {
"grey91", 232, 232, 232, 1, SVGCompliance | X11Compliance },
472 {
"grey92", 235, 235, 235, 1, SVGCompliance | X11Compliance },
473 {
"grey93", 237, 237, 237, 1, SVGCompliance | X11Compliance },
474 {
"grey94", 240, 240, 240, 1, SVGCompliance | X11Compliance },
475 {
"grey95", 242, 242, 242, 1, SVGCompliance | X11Compliance },
476 {
"grey96", 245, 245, 245, 1, SVGCompliance | X11Compliance },
477 {
"grey97", 247, 247, 247, 1, SVGCompliance | X11Compliance },
478 {
"grey98", 250, 250, 250, 1, SVGCompliance | X11Compliance },
479 {
"grey99", 252, 252, 252, 1, SVGCompliance | X11Compliance },
480 {
"honeydew", 240, 255, 240, 1, SVGCompliance | X11Compliance | XPMCompliance },
481 {
"honeydew1", 240, 255, 240, 1, X11Compliance },
482 {
"honeydew2", 224, 238, 224, 1, X11Compliance },
483 {
"honeydew3", 193, 205, 193, 1, X11Compliance },
484 {
"honeydew4", 131, 139, 131, 1, X11Compliance },
485 {
"HotPink", 255, 105, 180, 1, SVGCompliance | X11Compliance | XPMCompliance },
486 {
"HotPink1", 255, 110, 180, 1, X11Compliance },
487 {
"HotPink2", 238, 106, 167, 1, X11Compliance },
488 {
"HotPink3", 205, 96, 144, 1, X11Compliance },
489 {
"HotPink4", 139, 58, 98, 1, X11Compliance },
490 {
"IndianRed", 205, 92, 92, 1, SVGCompliance | X11Compliance | XPMCompliance },
491 {
"IndianRed1", 255, 106, 106, 1, X11Compliance },
492 {
"IndianRed2", 238, 99, 99, 1, X11Compliance },
493 {
"IndianRed3", 205, 85, 85, 1, X11Compliance },
494 {
"IndianRed4", 139, 58, 58, 1, X11Compliance },
495 {
"indigo", 75, 0, 130, 1, SVGCompliance },
496 {
"ivory", 255, 255, 240, 1, SVGCompliance | X11Compliance | XPMCompliance },
497 {
"ivory1", 255, 255, 240, 1, X11Compliance },
498 {
"ivory2", 238, 238, 224, 1, X11Compliance },
499 {
"ivory3", 205, 205, 193, 1, X11Compliance },
500 {
"ivory4", 139, 139, 131, 1, X11Compliance },
501 {
"khaki", 240, 230, 140, 1, SVGCompliance | X11Compliance | XPMCompliance },
502 {
"khaki1", 255, 246, 143, 1, X11Compliance },
503 {
"khaki2", 238, 230, 133, 1, X11Compliance },
504 {
"khaki3", 205, 198, 115, 1, X11Compliance },
505 {
"khaki4", 139, 134, 78, 1, X11Compliance },
506 {
"lavender", 230, 230, 250, 1, SVGCompliance | X11Compliance | XPMCompliance },
507 {
"LavenderBlush", 255, 240, 245, 1, SVGCompliance | X11Compliance | XPMCompliance },
508 {
"LavenderBlush1", 255, 240, 245, 1, X11Compliance },
509 {
"LavenderBlush2", 238, 224, 229, 1, X11Compliance },
510 {
"LavenderBlush3", 205, 193, 197, 1, X11Compliance },
511 {
"LavenderBlush4", 139, 131, 134, 1, X11Compliance },
512 {
"LawnGreen", 124, 252, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
513 {
"LemonChiffon", 255, 250, 205, 1, SVGCompliance | X11Compliance | XPMCompliance },
514 {
"LemonChiffon1", 255, 250, 205, 1, X11Compliance },
515 {
"LemonChiffon2", 238, 233, 191, 1, X11Compliance },
516 {
"LemonChiffon3", 205, 201, 165, 1, X11Compliance },
517 {
"LemonChiffon4", 139, 137, 112, 1, X11Compliance },
518 {
"LightBlue", 173, 216, 230, 1, SVGCompliance | X11Compliance | XPMCompliance },
519 {
"LightBlue1", 191, 239, 255, 1, X11Compliance },
520 {
"LightBlue2", 178, 223, 238, 1, X11Compliance },
521 {
"LightBlue3", 154, 192, 205, 1, X11Compliance },
522 {
"LightBlue4", 104, 131, 139, 1, X11Compliance },
523 {
"LightCoral", 240, 128, 128, 1, SVGCompliance | X11Compliance | XPMCompliance },
524 {
"LightCyan", 224, 255, 255, 1, SVGCompliance | X11Compliance | XPMCompliance },
525 {
"LightCyan1", 224, 255, 255, 1, X11Compliance },
526 {
"LightCyan2", 209, 238, 238, 1, X11Compliance },
527 {
"LightCyan3", 180, 205, 205, 1, X11Compliance },
528 {
"LightCyan4", 122, 139, 139, 1, X11Compliance },
529 {
"LightGoldenrod", 238, 221, 130, 1, X11Compliance | XPMCompliance },
530 {
"LightGoldenrod1", 255, 236, 139, 1, X11Compliance },
531 {
"LightGoldenrod2", 238, 220, 130, 1, X11Compliance },
532 {
"LightGoldenrod3", 205, 190, 112, 1, X11Compliance },
533 {
"LightGoldenrod4", 139, 129, 76, 1, X11Compliance },
534 {
"LightGoldenrodYellow", 250, 250, 210, 1, SVGCompliance | X11Compliance | XPMCompliance },
535 {
"LightGray", 211, 211, 211, 1, SVGCompliance | X11Compliance | XPMCompliance },
536 {
"LightGreen", 144, 238, 144, 1, SVGCompliance | X11Compliance },
537 {
"LightGrey", 211, 211, 211, 1, SVGCompliance | X11Compliance },
538 {
"LightPink", 255, 182, 193, 1, SVGCompliance | X11Compliance | XPMCompliance },
539 {
"LightPink1", 255, 174, 185, 1, X11Compliance },
540 {
"LightPink2", 238, 162, 173, 1, X11Compliance },
541 {
"LightPink3", 205, 140, 149, 1, X11Compliance },
542 {
"LightPink4", 139, 95, 101, 1, X11Compliance },
543 {
"LightSalmon", 255, 160, 122, 1, SVGCompliance | X11Compliance | XPMCompliance },
544 {
"LightSalmon1", 255, 160, 122, 1, X11Compliance },
545 {
"LightSalmon2", 238, 149, 114, 1, X11Compliance },
546 {
"LightSalmon3", 205, 129, 98, 1, X11Compliance },
547 {
"LightSalmon4", 139, 87, 66, 1, X11Compliance },
548 {
"LightSeaGreen", 32, 178, 170, 1, SVGCompliance | X11Compliance | XPMCompliance },
549 {
"LightSkyBlue", 135, 206, 250, 1, SVGCompliance | X11Compliance | XPMCompliance },
550 {
"LightSkyBlue1", 176, 226, 255, 1, X11Compliance },
551 {
"LightSkyBlue2", 164, 211, 238, 1, X11Compliance },
552 {
"LightSkyBlue3", 141, 182, 205, 1, X11Compliance },
553 {
"LightSkyBlue4", 96, 123, 139, 1, X11Compliance },
554 {
"LightSlateBlue", 132, 112, 255, 1, X11Compliance | XPMCompliance },
555 {
"LightSlateGray", 119, 136, 153, 1, SVGCompliance | X11Compliance | XPMCompliance },
556 {
"LightSlateGrey", 119, 136, 153, 1, SVGCompliance | X11Compliance },
557 {
"LightSteelBlue", 176, 196, 222, 1, SVGCompliance | X11Compliance | XPMCompliance },
558 {
"LightSteelBlue1", 202, 225, 255, 1, X11Compliance },
559 {
"LightSteelBlue2", 188, 210, 238, 1, X11Compliance },
560 {
"LightSteelBlue3", 162, 181, 205, 1, X11Compliance },
561 {
"LightSteelBlue4", 110, 123, 139, 1, X11Compliance },
562 {
"LightYellow", 255, 255, 224, 1, SVGCompliance | X11Compliance | XPMCompliance },
563 {
"LightYellow1", 255, 255, 224, 1, X11Compliance },
564 {
"LightYellow2", 238, 238, 209, 1, X11Compliance },
565 {
"LightYellow3", 205, 205, 180, 1, X11Compliance },
566 {
"LightYellow4", 139, 139, 122, 1, X11Compliance },
567 {
"lime", 0, 255, 0, 1, SVGCompliance },
568 {
"LimeGreen", 50, 205, 50, 1, SVGCompliance | X11Compliance | XPMCompliance },
569 {
"linen", 250, 240, 230, 1, SVGCompliance | X11Compliance | XPMCompliance },
570 {
"magenta1", 255, 0, 255, 1, X11Compliance },
571 {
"magenta2", 238, 0, 238, 1, X11Compliance },
572 {
"magenta3", 205, 0, 205, 1, X11Compliance },
573 {
"magenta4", 139, 0, 139, 1, X11Compliance },
574 {
"maroon", 128, 0, 0, 1, SVGCompliance },
575 {
"maroon", 176, 48, 96, 1, X11Compliance | XPMCompliance },
576 {
"maroon1", 255, 52, 179, 1, X11Compliance },
577 {
"maroon2", 238, 48, 167, 1, X11Compliance },
578 {
"maroon3", 205, 41, 144, 1, X11Compliance },
579 {
"maroon4", 139, 28, 98, 1, X11Compliance },
580 {
"MediumAquamarine", 102, 205, 170, 1, SVGCompliance | X11Compliance | XPMCompliance },
581 {
"MediumBlue", 0, 0, 205, 1, SVGCompliance | X11Compliance | XPMCompliance },
582 {
"MediumForestGreen", 50, 129, 75, 1, X11Compliance | XPMCompliance },
583 {
"MediumGoldenRod", 209, 193, 102, 1, X11Compliance | XPMCompliance },
584 {
"MediumOrchid", 186, 85, 211, 1, SVGCompliance | X11Compliance | XPMCompliance },
585 {
"MediumOrchid1", 224, 102, 255, 1, X11Compliance },
586 {
"MediumOrchid2", 209, 95, 238, 1, X11Compliance },
587 {
"MediumOrchid3", 180, 82, 205, 1, X11Compliance },
588 {
"MediumOrchid4", 122, 55, 139, 1, X11Compliance },
589 {
"MediumPurple", 147, 112, 219, 1, SVGCompliance | X11Compliance | XPMCompliance },
590 {
"MediumPurple1", 171, 130, 255, 1, X11Compliance },
591 {
"MediumPurple2", 159, 121, 238, 1, X11Compliance },
592 {
"MediumPurple3", 137, 104, 205, 1, X11Compliance },
593 {
"MediumPurple4", 93, 71, 139, 1, X11Compliance },
594 {
"MediumSeaGreen", 60, 179, 113, 1, SVGCompliance | X11Compliance | XPMCompliance },
595 {
"MediumSlateBlue", 123, 104, 238, 1, SVGCompliance | X11Compliance | XPMCompliance },
596 {
"MediumSpringGreen", 0, 250, 154, 1, SVGCompliance | X11Compliance | XPMCompliance },
597 {
"MediumTurquoise", 72, 209, 204, 1, SVGCompliance | X11Compliance | XPMCompliance },
598 {
"MediumVioletRed", 199, 21, 133, 1, SVGCompliance | X11Compliance | XPMCompliance },
599 {
"MidnightBlue", 25, 25, 112, 1, SVGCompliance | X11Compliance | XPMCompliance },
600 {
"MintCream", 245, 255, 250, 1, SVGCompliance | X11Compliance | XPMCompliance },
601 {
"MistyRose", 255, 228, 225, 1, SVGCompliance | X11Compliance | XPMCompliance },
602 {
"MistyRose1", 255, 228, 225, 1, X11Compliance },
603 {
"MistyRose2", 238, 213, 210, 1, X11Compliance },
604 {
"MistyRose3", 205, 183, 181, 1, X11Compliance },
605 {
"MistyRose4", 139, 125, 123, 1, X11Compliance },
606 {
"moccasin", 255, 228, 181, 1, SVGCompliance | X11Compliance | XPMCompliance },
607 {
"NavajoWhite", 255, 222, 173, 1, SVGCompliance | X11Compliance | XPMCompliance },
608 {
"NavajoWhite1", 255, 222, 173, 1, X11Compliance },
609 {
"NavajoWhite2", 238, 207, 161, 1, X11Compliance },
610 {
"NavajoWhite3", 205, 179, 139, 1, X11Compliance },
611 {
"NavajoWhite4", 139, 121, 94, 1, X11Compliance },
612 {
"navy", 0, 0, 128, 1, SVGCompliance | X11Compliance | XPMCompliance },
613 {
"NavyBlue", 0, 0, 128, 1, X11Compliance | XPMCompliance },
614 {
"matte", 0, 0, 0, 0, SVGCompliance },
615 {
"OldLace", 253, 245, 230, 1, SVGCompliance | X11Compliance | XPMCompliance },
616 {
"olive", 128, 128, 0, 1, SVGCompliance },
617 {
"OliveDrab", 107, 142, 35, 1, SVGCompliance | X11Compliance | XPMCompliance },
618 {
"OliveDrab1", 192, 255, 62, 1, X11Compliance },
619 {
"OliveDrab2", 179, 238, 58, 1, X11Compliance },
620 {
"OliveDrab3", 154, 205, 50, 1, X11Compliance },
621 {
"OliveDrab4", 105, 139, 34, 1, X11Compliance },
622 {
"opaque", 0, 0, 0, 1, SVGCompliance },
623 {
"orange", 255, 165, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
624 {
"orange1", 255, 165, 0, 1, X11Compliance },
625 {
"orange2", 238, 154, 0, 1, X11Compliance },
626 {
"orange3", 205, 133, 0, 1, X11Compliance },
627 {
"orange4", 139, 90, 0, 1, X11Compliance },
628 {
"OrangeRed", 255, 69, 0, 1, SVGCompliance | X11Compliance | XPMCompliance },
629 {
"OrangeRed1", 255, 69, 0, 1, X11Compliance },
630 {
"OrangeRed2", 238, 64, 0, 1, X11Compliance },
631 {
"OrangeRed3", 205, 55, 0, 1, X11Compliance },
632 {
"OrangeRed4", 139, 37, 0, 1, X11Compliance },
633 {
"orchid", 218, 112, 214, 1, SVGCompliance | X11Compliance | XPMCompliance },
634 {
"orchid1", 255, 131, 250, 1, X11Compliance },
635 {
"orchid2", 238, 122, 233, 1, X11Compliance },
636 {
"orchid3", 205, 105, 201, 1, X11Compliance },
637 {
"orchid4", 139, 71, 137, 1, X11Compliance },
638 {
"PaleGoldenrod", 238, 232, 170, 1, SVGCompliance | X11Compliance | XPMCompliance },
639 {
"PaleGreen", 152, 251, 152, 1, SVGCompliance | X11Compliance | XPMCompliance },
640 {
"PaleGreen1", 154, 255, 154, 1, X11Compliance },
641 {
"PaleGreen2", 144, 238, 144, 1, X11Compliance },
642 {
"PaleGreen3", 124, 205, 124, 1, X11Compliance },
643 {
"PaleGreen4", 84, 139, 84, 1, X11Compliance },
644 {
"PaleTurquoise", 175, 238, 238, 1, SVGCompliance | X11Compliance | XPMCompliance },
645 {
"PaleTurquoise1", 187, 255, 255, 1, X11Compliance },
646 {
"PaleTurquoise2", 174, 238, 238, 1, X11Compliance },
647 {
"PaleTurquoise3", 150, 205, 205, 1, X11Compliance },
648 {
"PaleTurquoise4", 102, 139, 139, 1, X11Compliance },
649 {
"PaleVioletRed", 219, 112, 147, 1, SVGCompliance | X11Compliance | XPMCompliance },
650 {
"PaleVioletRed1", 255, 130, 171, 1, X11Compliance },
651 {
"PaleVioletRed2", 238, 121, 159, 1, X11Compliance },
652 {
"PaleVioletRed3", 205, 104, 137, 1, X11Compliance },
653 {
"PaleVioletRed4", 139, 71, 93, 1, X11Compliance },
654 {
"PapayaWhip", 255, 239, 213, 1, SVGCompliance | X11Compliance | XPMCompliance },
655 {
"PeachPuff", 255, 218, 185, 1, SVGCompliance | X11Compliance | XPMCompliance },
656 {
"PeachPuff1", 255, 218, 185, 1, X11Compliance },
657 {
"PeachPuff2", 238, 203, 173, 1, X11Compliance },
658 {
"PeachPuff3", 205, 175, 149, 1, X11Compliance },
659 {
"PeachPuff4", 139, 119, 101, 1, X11Compliance },
660 {
"peru", 205, 133, 63, 1, SVGCompliance | X11Compliance | XPMCompliance },
661 {
"pink", 255, 192, 203, 1, SVGCompliance | X11Compliance | XPMCompliance },
662 {
"pink1", 255, 181, 197, 1, X11Compliance },
663 {
"pink2", 238, 169, 184, 1, X11Compliance },
664 {
"pink3", 205, 145, 158, 1, X11Compliance },
665 {
"pink4", 139, 99, 108, 1, X11Compliance },
666 {
"plum", 221, 160, 221, 1, SVGCompliance | X11Compliance | XPMCompliance },
667 {
"plum1", 255, 187, 255, 1, X11Compliance },
668 {
"plum2", 238, 174, 238, 1, X11Compliance },
669 {
"plum3", 205, 150, 205, 1, X11Compliance },
670 {
"plum4", 139, 102, 139, 1, X11Compliance },
671 {
"PowderBlue", 176, 224, 230, 1, SVGCompliance | X11Compliance | XPMCompliance },
672 {
"purple", 128, 0, 128, 1, SVGCompliance },
673 {
"purple", 160, 32, 240, 1, X11Compliance | XPMCompliance },
674 {
"purple1", 155, 48, 255, 1, X11Compliance },
675 {
"purple2", 145, 44, 238, 1, X11Compliance },
676 {
"purple3", 125, 38, 205, 1, X11Compliance },
677 {
"purple4", 85, 26, 139, 1, X11Compliance },
678 {
"red1", 255, 0, 0, 1, X11Compliance },
679 {
"red2", 238, 0, 0, 1, X11Compliance },
680 {
"red3", 205, 0, 0, 1, X11Compliance },
681 {
"red4", 139, 0, 0, 1, X11Compliance },
682 {
"RosyBrown", 188, 143, 143, 1, SVGCompliance | X11Compliance | XPMCompliance },
683 {
"RosyBrown1", 255, 193, 193, 1, X11Compliance },
684 {
"RosyBrown2", 238, 180, 180, 1, X11Compliance },
685 {
"RosyBrown3", 205, 155, 155, 1, X11Compliance },
686 {
"RosyBrown4", 139, 105, 105, 1, X11Compliance },
687 {
"RoyalBlue", 65, 105, 225, 1, SVGCompliance | X11Compliance | XPMCompliance },
688 {
"RoyalBlue1", 72, 118, 255, 1, X11Compliance },
689 {
"RoyalBlue2", 67, 110, 238, 1, X11Compliance },
690 {
"RoyalBlue3", 58, 95, 205, 1, X11Compliance },
691 {
"RoyalBlue4", 39, 64, 139, 1, X11Compliance },
692 {
"SaddleBrown", 139, 69, 19, 1, SVGCompliance | X11Compliance | XPMCompliance },
693 {
"salmon", 250, 128, 114, 1, SVGCompliance | X11Compliance | XPMCompliance },
694 {
"salmon1", 255, 140, 105, 1, X11Compliance },
695 {
"salmon2", 238, 130, 98, 1, X11Compliance },
696 {
"salmon3", 205, 112, 84, 1, X11Compliance },
697 {
"salmon4", 139, 76, 57, 1, X11Compliance },
698 {
"SandyBrown", 244, 164, 96, 1, SVGCompliance | X11Compliance | XPMCompliance },
699 {
"SeaGreen", 46, 139, 87, 1, SVGCompliance | X11Compliance | XPMCompliance },
700 {
"SeaGreen1", 84, 255, 159, 1, X11Compliance },
701 {
"SeaGreen2", 78, 238, 148, 1, X11Compliance },
702 {
"SeaGreen3", 67, 205, 128, 1, X11Compliance },
703 {
"SeaGreen4", 46, 139, 87, 1, X11Compliance },
704 {
"seashell", 255, 245, 238, 1, SVGCompliance | X11Compliance | XPMCompliance },
705 {
"seashell1", 255, 245, 238, 1, X11Compliance },
706 {
"seashell2", 238, 229, 222, 1, X11Compliance },
707 {
"seashell3", 205, 197, 191, 1, X11Compliance },
708 {
"seashell4", 139, 134, 130, 1, X11Compliance },
709 {
"sienna", 160, 82, 45, 1, SVGCompliance | X11Compliance | XPMCompliance },
710 {
"sienna1", 255, 130, 71, 1, X11Compliance },
711 {
"sienna2", 238, 121, 66, 1, X11Compliance },
712 {
"sienna3", 205, 104, 57, 1, X11Compliance },
713 {
"sienna4", 139, 71, 38, 1, X11Compliance },
714 {
"silver", 192, 192, 192, 1, SVGCompliance },
715 {
"SkyBlue", 135, 206, 235, 1, SVGCompliance | X11Compliance | XPMCompliance },
716 {
"SkyBlue1", 135, 206, 255, 1, X11Compliance },
717 {
"SkyBlue2", 126, 192, 238, 1, X11Compliance },
718 {
"SkyBlue3", 108, 166, 205, 1, X11Compliance },
719 {
"SkyBlue4", 74, 112, 139, 1, X11Compliance },
720 {
"SlateBlue", 106, 90, 205, 1, SVGCompliance | X11Compliance | XPMCompliance },
721 {
"SlateBlue1", 131, 111, 255, 1, X11Compliance },
722 {
"SlateBlue2", 122, 103, 238, 1, X11Compliance },
723 {
"SlateBlue3", 105, 89, 205, 1, X11Compliance },
724 {
"SlateBlue4", 71, 60, 139, 1, X11Compliance },
725 {
"SlateGray", 112, 128, 144, 1, SVGCompliance | X11Compliance | XPMCompliance },
726 {
"SlateGray1", 198, 226, 255, 1, X11Compliance },
727 {
"SlateGray2", 185, 211, 238, 1, X11Compliance },
728 {
"SlateGray3", 159, 182, 205, 1, X11Compliance },
729 {
"SlateGray4", 108, 123, 139, 1, X11Compliance },
730 {
"SlateGrey", 112, 128, 144, 1, SVGCompliance | X11Compliance },
731 {
"snow", 255, 250, 250, 1, SVGCompliance | X11Compliance | XPMCompliance },
732 {
"snow1", 255, 250, 250, 1, X11Compliance },
733 {
"snow2", 238, 233, 233, 1, X11Compliance },
734 {
"snow3", 205, 201, 201, 1, X11Compliance },
735 {
"snow4", 139, 137, 137, 1, X11Compliance },
736 {
"SpringGreen", 0, 255, 127, 1, SVGCompliance | X11Compliance | XPMCompliance },
737 {
"SpringGreen1", 0, 255, 127, 1, X11Compliance },
738 {
"SpringGreen2", 0, 238, 118, 1, X11Compliance },
739 {
"SpringGreen3", 0, 205, 102, 1, X11Compliance },
740 {
"SpringGreen4", 0, 139, 69, 1, X11Compliance },
741 {
"SteelBlue", 70, 130, 180, 1, SVGCompliance | X11Compliance | XPMCompliance },
742 {
"SteelBlue1", 99, 184, 255, 1, X11Compliance },
743 {
"SteelBlue2", 92, 172, 238, 1, X11Compliance },
744 {
"SteelBlue3", 79, 148, 205, 1, X11Compliance },
745 {
"SteelBlue4", 54, 100, 139, 1, X11Compliance },
746 {
"tan", 210, 180, 140, 1, SVGCompliance | X11Compliance | XPMCompliance },
747 {
"tan1", 255, 165, 79, 1, X11Compliance },
748 {
"tan2", 238, 154, 73, 1, X11Compliance },
749 {
"tan3", 205, 133, 63, 1, X11Compliance },
750 {
"tan4", 139, 90, 43, 1, X11Compliance },
751 {
"teal", 0, 128, 128, 1, SVGCompliance },
752 {
"thistle", 216, 191, 216, 1, SVGCompliance | X11Compliance | XPMCompliance },
753 {
"thistle1", 255, 225, 255, 1, X11Compliance },
754 {
"thistle2", 238, 210, 238, 1, X11Compliance },
755 {
"thistle3", 205, 181, 205, 1, X11Compliance },
756 {
"thistle4", 139, 123, 139, 1, X11Compliance },
757 {
"tomato", 255, 99, 71, 1, SVGCompliance | X11Compliance | XPMCompliance },
758 {
"tomato1", 255, 99, 71, 1, X11Compliance },
759 {
"tomato2", 238, 92, 66, 1, X11Compliance },
760 {
"tomato3", 205, 79, 57, 1, X11Compliance },
761 {
"tomato4", 139, 54, 38, 1, X11Compliance },
762 {
"transparent", 0, 0, 0, 0, SVGCompliance },
763 {
"turquoise", 64, 224, 208, 1, SVGCompliance | X11Compliance | XPMCompliance },
764 {
"turquoise1", 0, 245, 255, 1, X11Compliance },
765 {
"turquoise2", 0, 229, 238, 1, X11Compliance },
766 {
"turquoise3", 0, 197, 205, 1, X11Compliance },
767 {
"turquoise4", 0, 134, 139, 1, X11Compliance },
768 {
"violet", 238, 130, 238, 1, SVGCompliance | X11Compliance | XPMCompliance },
769 {
"VioletRed", 208, 32, 144, 1, X11Compliance | XPMCompliance },
770 {
"VioletRed1", 255, 62, 150, 1, X11Compliance },
771 {
"VioletRed2", 238, 58, 140, 1, X11Compliance },
772 {
"VioletRed3", 205, 50, 120, 1, X11Compliance },
773 {
"VioletRed4", 139, 34, 82, 1, X11Compliance },
774 {
"wheat", 245, 222, 179, 1, SVGCompliance | X11Compliance | XPMCompliance },
775 {
"wheat1", 255, 231, 186, 1, X11Compliance },
776 {
"wheat2", 238, 216, 174, 1, X11Compliance },
777 {
"wheat3", 205, 186, 150, 1, X11Compliance },
778 {
"wheat4", 139, 126, 102, 1, X11Compliance },
779 {
"WhiteSmoke", 245, 245, 245, 1, SVGCompliance | X11Compliance | XPMCompliance },
780 {
"yellow1", 255, 255, 0, 1, X11Compliance },
781 {
"yellow2", 238, 238, 0, 1, X11Compliance },
782 {
"yellow3", 205, 205, 0, 1, X11Compliance },
783 {
"yellow4", 139, 139, 0, 1, X11Compliance },
784 {
"YellowGreen", 154, 205, 50, 1, SVGCompliance | X11Compliance | XPMCompliance }
799static MagickBooleanType
802#if !MAGICKCORE_ZERO_CONFIGURATION_SUPPORT
803static MagickBooleanType
804 LoadColorCache(
LinkedListInfo *,
const char *,
const char *,
const size_t,
849 cache=NewLinkedList(0);
851#if !MAGICKCORE_ZERO_CONFIGURATION_SUPPORT
859 options=GetConfigureOptions(filename,exception);
860 option=(
const StringInfo *) GetNextValueInLinkedList(options);
863 status&=(MagickStatusType) LoadColorCache(cache,(
const char *)
864 GetStringInfoDatum(option),GetStringInfoPath(option),0,exception);
865 option=(
const StringInfo *) GetNextValueInLinkedList(options);
867 options=DestroyConfigureOptions(options);
870 magick_unreferenced(filename);
875 for (i=0; i < (ssize_t) (
sizeof(Colormap)/
sizeof(*Colormap)); i++)
884 color_info=(
ColorInfo *) AcquireMagickMemory(
sizeof(*color_info));
887 (void) ThrowMagickException(exception,GetMagickModule(),
888 ResourceLimitError,
"MemoryAllocationFailed",
"`%s'",p->name);
891 (void) memset(color_info,0,
sizeof(*color_info));
892 color_info->path=(
char *)
"[built-in]";
893 color_info->name=(
char *) p->name;
894 GetPixelInfo((
Image *) NULL,&color_info->color);
895 color_info->color.red=(double) ScaleCharToQuantum(p->red);
896 color_info->color.green=(double) ScaleCharToQuantum(p->green);
897 color_info->color.blue=(double) ScaleCharToQuantum(p->blue);
898 color_info->color.alpha=(double) QuantumRange*(
double) p->alpha;
899 color_info->compliance=(ComplianceType) p->compliance;
900 color_info->exempt=MagickTrue;
901 color_info->signature=MagickCoreSignature;
902 status&=(MagickStatusType) AppendValueToLinkedList(cache,color_info);
903 if (status == MagickFalse)
904 (void) ThrowMagickException(exception,GetMagickModule(),
905 ResourceLimitError,
"MemoryAllocationFailed",
"`%s'",color_info->name);
928MagickPrivate MagickBooleanType ColorComponentGenesis(
void)
931 color_semaphore=AcquireSemaphoreInfo();
954static void *DestroyColorElement(
void *color_info)
960 if (p->exempt == MagickFalse)
962 if (p->path != (
char *) NULL)
963 p->path=DestroyString(p->path);
964 if (p->name != (
char *) NULL)
965 p->name=DestroyString(p->name);
967 p=(
ColorInfo *) RelinquishMagickMemory(p);
968 return((
void *) NULL);
971MagickPrivate
void ColorComponentTerminus(
void)
974 ActivateSemaphoreInfo(&color_semaphore);
975 LockSemaphoreInfo(color_semaphore);
977 color_cache=DestroyLinkedList(color_cache,DestroyColorElement);
978 UnlockSemaphoreInfo(color_semaphore);
979 RelinquishSemaphoreInfo(&color_semaphore);
1010MagickExport
const ColorInfo *GetColorCompliance(
const char *name,
1014 colorname[MagickPathExtent];
1026 if (IsColorCacheInstantiated(exception) == MagickFalse)
1032 if (name != (
const char *) NULL)
1033 (void) CopyMagickString(colorname,name,MagickPathExtent);
1034 for (q=colorname; *q !=
'\0'; q++)
1036 if (isspace((
int) ((
unsigned char) *q)) == 0)
1038 (void) CopyMagickString(q,q+1,MagickPathExtent);
1045 LockSemaphoreInfo(color_semaphore);
1046 p=GetHeadElementInLinkedList(color_cache);
1047 if ((name == (
const char *) NULL) || (LocaleCompare(name,
"*") == 0))
1049 UnlockSemaphoreInfo(color_semaphore);
1057 if (((color->compliance & compliance) != 0) &&
1058 (LocaleCompare(colorname,color->name) == 0))
1064 (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning,
1065 "UnrecognizedColor",
"`%s'",name);
1069 SetHeadElementInLinkedList(color_cache,p);
1070 UnlockSemaphoreInfo(color_semaphore);
1103MagickExport
const ColorInfo *GetColorInfo(
const char *name,
1106 return(GetColorCompliance(name,AllCompliance,exception));
1140static inline MagickBooleanType IsSVGCompliant(
const PixelInfo *pixel)
1142#define SVGCompliant(component) ((double) \
1143 ScaleCharToQuantum(ScaleQuantumToChar(ClampToQuantum(component))))
1144#define SVGEpsilon 1.0e-6
1149 if (fabs((
double) (SVGCompliant(pixel->red)-pixel->red)) >= SVGEpsilon)
1150 return(MagickFalse);
1151 if (fabs((
double) (SVGCompliant(pixel->green)-pixel->green)) >= SVGEpsilon)
1152 return(MagickFalse);
1153 if (fabs((
double) (SVGCompliant(pixel->blue)-pixel->blue)) >= SVGEpsilon)
1154 return(MagickFalse);
1155 if ((pixel->colorspace == CMYKColorspace) &&
1156 (fabs((
double) (SVGCompliant(pixel->black)-pixel->black)) >= SVGEpsilon))
1157 return(MagickFalse);
1161MagickExport
void ConcatenateColorComponent(
const PixelInfo *pixel,
1162 const PixelChannel channel,
const ComplianceType compliance,
char *tuple)
1164#define IsColorComponentFactional(color) \
1165 ((color)-ScaleCharToQuantum(ScaleQuantumToChar(color)))
1168 component[MagickPathExtent];
1176 if ((compliance != NoCompliance) || (pixel->depth <= 8))
1178 if ((compliance != NoCompliance) &&
1179 (IssRGBCompatibleColorspace(pixel->colorspace) != MagickFalse) &&
1180 (IsSVGCompliant(pixel) == MagickFalse))
1184 case RedPixelChannel:
1187 if (IsHueCompatibleColorspace(pixel->colorspace) != MagickFalse)
1189 if ((compliance != NoCompliance) &&
1190 (IsLabCompatibleColorspace(pixel->colorspace) != MagickFalse))
1192 if (pixel->colorspace == XYZColorspace)
1196 case GreenPixelChannel:
1199 if (IsHueCompatibleColorspace(pixel->colorspace) != MagickFalse)
1201 if ((compliance != NoCompliance) &&
1202 (IsLabCompatibleColorspace(pixel->colorspace) != MagickFalse))
1203 color-=QuantumRange/2.0f;
1204 if (pixel->colorspace == XYZColorspace)
1208 case BluePixelChannel:
1211 if (IsHueCompatibleColorspace(pixel->colorspace) != MagickFalse)
1213 if (pixel->colorspace == LabColorspace)
1214 color-=QuantumRange/2.0f;
1215 if ((pixel->colorspace == LCHColorspace) ||
1216 (pixel->colorspace == LCHabColorspace) ||
1217 (pixel->colorspace == LCHuvColorspace))
1218 color*=360.0f/255.0f;
1219 if (pixel->colorspace == XYZColorspace)
1223 case AlphaPixelChannel:
1226 if (compliance != NoCompliance)
1230 case BlackPixelChannel:
1235 case IndexPixelChannel:
1243 if ((scale != 100.0f) ||
1244 (IsLabCompatibleColorspace(pixel->colorspace) != MagickFalse))
1245 (void) FormatLocaleString(component,MagickPathExtent,
"%.*g",
1246 GetMagickPrecision(),(
double) scale*QuantumScale*(
double) color);
1248 (
void) FormatLocaleString(component,MagickPathExtent,
"%.*g%%",
1249 GetMagickPrecision(),(
double) scale*QuantumScale*(
double) color);
1250 (void) ConcatenateMagickString(tuple,component,MagickPathExtent);
1281#if defined(__cplusplus) || defined(c_plusplus)
1285static int ColorInfoCompare(
const void *x,
const void *y)
1296 cmp=LocaleCompare((*p)->path,(*q)->path);
1298 return(LocaleCompare((*p)->name,(*q)->name));
1302#if defined(__cplusplus) || defined(c_plusplus)
1306MagickExport
const ColorInfo **GetColorInfoList(
const char *pattern,
1318 assert(pattern != (
char *) NULL);
1319 assert(number_colors != (
size_t *) NULL);
1320 if (IsEventLogging() != MagickFalse)
1321 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",pattern);
1323 if (IsColorCacheInstantiated(exception) == MagickFalse)
1325 colors=(
const ColorInfo **) AcquireQuantumMemory((
size_t)
1326 GetNumberOfElementsInLinkedList(color_cache)+1UL,
sizeof(*colors));
1327 if (colors == (
const ColorInfo **) NULL)
1329 LockSemaphoreInfo(color_semaphore);
1330 p=GetHeadElementInLinkedList(color_cache);
1337 if ((color->stealth == MagickFalse) &&
1338 (GlobExpression(color->name,pattern,MagickFalse) != MagickFalse))
1342 UnlockSemaphoreInfo(color_semaphore);
1344 colors=(
const ColorInfo **) RelinquishMagickMemory((
void*) colors);
1347 qsort((
void *) colors,(
size_t) i,
sizeof(*colors),ColorInfoCompare);
1350 *number_colors=(size_t) i;
1382#if defined(__cplusplus) || defined(c_plusplus)
1386static int ColorCompare(
const void *x,
const void *y)
1392 p=(
const char **) x;
1393 q=(
const char **) y;
1394 return(LocaleCompare(*p,*q));
1397#if defined(__cplusplus) || defined(c_plusplus)
1401MagickExport
char **GetColorList(
const char *pattern,
1413 assert(pattern != (
char *) NULL);
1414 assert(number_colors != (
size_t *) NULL);
1415 if (IsEventLogging() != MagickFalse)
1416 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",pattern);
1418 if (IsColorCacheInstantiated(exception) == MagickFalse)
1419 return((
char **) NULL);
1420 colors=(
char **) AcquireQuantumMemory((
size_t)
1421 GetNumberOfElementsInLinkedList(color_cache)+1UL,
sizeof(*colors));
1422 if (colors == (
char **) NULL)
1423 return((
char **) NULL);
1424 LockSemaphoreInfo(color_semaphore);
1425 p=GetHeadElementInLinkedList(color_cache);
1432 if ((color->stealth == MagickFalse) &&
1433 (GlobExpression(color->name,pattern,MagickFalse) != MagickFalse))
1434 colors[i++]=ConstantString(color->name);
1437 UnlockSemaphoreInfo(color_semaphore);
1439 colors=(
char **) RelinquishMagickMemory(colors);
1442 qsort((
void *) colors,(
size_t) i,
sizeof(*colors),ColorCompare);
1443 colors[i]=(
char *) NULL;
1445 *number_colors=(size_t) i;
1478static void ConcatenateHexColorComponent(
const PixelInfo *pixel,
1479 const PixelChannel channel,
char *tuple)
1482 component[MagickPathExtent];
1490 case RedPixelChannel:
1495 case GreenPixelChannel:
1500 case BluePixelChannel:
1505 case AlphaPixelChannel:
1510 case BlackPixelChannel:
1518 if (pixel->depth > 32)
1520 (void) FormatLocaleString(component,MagickPathExtent,
"%08lX%08lX",
1521 (
unsigned long) ScaleQuantumToLong(ClampToQuantum(color)),
1522 (
unsigned long) ScaleQuantumToLong(ClampToQuantum(color)));
1523 (void) ConcatenateMagickString(tuple,component,MagickPathExtent);
1526 if (pixel->depth > 16)
1528 (void) FormatLocaleString(component,MagickPathExtent,
"%08X",
1529 (
unsigned int) ScaleQuantumToLong(ClampToQuantum(color)));
1530 (void) ConcatenateMagickString(tuple,component,MagickPathExtent);
1533 if (pixel->depth > 8)
1535 (void) FormatLocaleString(component,MagickPathExtent,
"%04X",
1536 ScaleQuantumToShort(ClampToQuantum(color)));
1537 (void) ConcatenateMagickString(tuple,component,MagickPathExtent);
1540 (void) FormatLocaleString(component,MagickPathExtent,
"%02X",
1541 ScaleQuantumToChar(ClampToQuantum(color)));
1542 (void) ConcatenateMagickString(tuple,component,MagickPathExtent);
1546MagickExport
void GetColorTuple(
const PixelInfo *pixel,
1547 const MagickBooleanType hex,
char *tuple)
1552 assert(pixel != (
const PixelInfo *) NULL);
1553 assert(tuple != (
char *) NULL);
1554 if (IsEventLogging() != MagickFalse)
1555 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",tuple);
1557 if (hex != MagickFalse)
1562 (void) ConcatenateMagickString(tuple,
"#",MagickPathExtent);
1563 ConcatenateHexColorComponent(pixel,RedPixelChannel,tuple);
1564 ConcatenateHexColorComponent(pixel,GreenPixelChannel,tuple);
1565 ConcatenateHexColorComponent(pixel,BluePixelChannel,tuple);
1566 if (pixel->colorspace == CMYKColorspace)
1567 ConcatenateHexColorComponent(pixel,BlackPixelChannel,tuple);
1568 if (pixel->alpha_trait != UndefinedPixelTrait)
1569 ConcatenateHexColorComponent(pixel,AlphaPixelChannel,tuple);
1576 if ((color.depth > 8) && (IsSVGCompliant(pixel) != MagickFalse))
1578 (void) ConcatenateMagickString(tuple,CommandOptionToMnemonic(
1579 MagickColorspaceOptions,(ssize_t) color.colorspace),MagickPathExtent);
1580 if (color.alpha_trait != UndefinedPixelTrait)
1581 (void) ConcatenateMagickString(tuple,
"a",MagickPathExtent);
1582 (void) ConcatenateMagickString(tuple,
"(",MagickPathExtent);
1583 if ((color.colorspace == LinearGRAYColorspace) ||
1584 (color.colorspace == GRAYColorspace))
1585 ConcatenateColorComponent(&color,GrayPixelChannel,SVGCompliance,tuple);
1588 ConcatenateColorComponent(&color,RedPixelChannel,SVGCompliance,tuple);
1589 (void) ConcatenateMagickString(tuple,
",",MagickPathExtent);
1590 ConcatenateColorComponent(&color,GreenPixelChannel,SVGCompliance,tuple);
1591 (void) ConcatenateMagickString(tuple,
",",MagickPathExtent);
1592 ConcatenateColorComponent(&color,BluePixelChannel,SVGCompliance,tuple);
1594 if (color.colorspace == CMYKColorspace)
1596 (void) ConcatenateMagickString(tuple,
",",MagickPathExtent);
1597 ConcatenateColorComponent(&color,BlackPixelChannel,SVGCompliance,tuple);
1599 if (color.alpha_trait != UndefinedPixelTrait)
1601 (void) ConcatenateMagickString(tuple,
",",MagickPathExtent);
1602 ConcatenateColorComponent(&color,AlphaPixelChannel,SVGCompliance,tuple);
1604 (void) ConcatenateMagickString(tuple,
")",MagickPathExtent);
1632static MagickBooleanType IsColorCacheInstantiated(
ExceptionInfo *exception)
1637 ActivateSemaphoreInfo(&color_semaphore);
1638 LockSemaphoreInfo(color_semaphore);
1640 color_cache=AcquireColorCache(ColorFilename,exception);
1641 UnlockSemaphoreInfo(color_semaphore);
1643 return(color_cache != (
LinkedListInfo *) NULL ? MagickTrue : MagickFalse);
1675MagickPrivate MagickBooleanType IsEquivalentAlpha(
const Image *image,
1685 if ((image->alpha_trait & BlendPixelTrait) == 0)
1687 if (p->alpha == q->alpha)
1689 fuzz=MagickMax(image->fuzz,MagickSQ1_2);
1691 pixel=(double) p->alpha-(
double) q->alpha;
1692 distance=pixel*pixel;
1693 if (distance > fuzz)
1694 return(MagickFalse);
1733MagickExport MagickBooleanType IsEquivalentImage(
const Image *image,
1734 const Image *target_image,ssize_t *x_offset,ssize_t *y_offset,
1737#define SearchImageText " Searching image... "
1762 assert(image != (
Image *) NULL);
1763 assert(image->signature == MagickCoreSignature);
1764 assert(target_image != (
Image *) NULL);
1765 assert(target_image->signature == MagickCoreSignature);
1766 assert(x_offset != (ssize_t *) NULL);
1767 assert(y_offset != (ssize_t *) NULL);
1769 if (IsEventLogging() != MagickFalse)
1770 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",image->filename);
1773 GetPixelInfo(image,&pixel);
1774 GetPixelInfo(image,&target);
1775 image_view=AcquireVirtualCacheView(image,exception);
1776 target_view=AcquireVirtualCacheView(target_image,exception);
1777 for (y=(*y_offset); y < (ssize_t) image->rows; y++)
1779 for (x=y == 0 ? *x_offset : 0; x < (ssize_t) image->columns; x++)
1781 for (j=0; j < (ssize_t) target_image->rows; j++)
1783 for (i=0; i < (ssize_t) target_image->columns; i++)
1785 p=GetCacheViewVirtualPixels(image_view,x+i,y+j,1,1,exception);
1786 if (p == (
const Quantum *) NULL)
1788 GetPixelInfoPixel(image,p,&pixel);
1789 q=GetCacheViewVirtualPixels(target_view,i,j,1,1,exception);
1790 if (q == (
const Quantum *) NULL)
1792 GetPixelInfoPixel(image,q,&target);
1793 if (IsFuzzyEquivalencePixelInfo(&pixel,&target) == MagickFalse)
1796 if (i < (ssize_t) target_image->columns)
1799 if (j == (ssize_t) target_image->rows)
1802 if (x < (ssize_t) image->columns)
1804 if (image->progress_monitor != (MagickProgressMonitor) NULL)
1809 proceed=SetImageProgress(image,SearchImageText,(MagickOffsetType) y,
1811 if (proceed == MagickFalse)
1815 target_view=DestroyCacheView(target_view);
1816 image_view=DestroyCacheView(image_view);
1819 if (status == MagickFalse)
1821 return(y < (ssize_t) image->rows ? MagickTrue : MagickFalse);
1852MagickPrivate MagickBooleanType IsEquivalentIntensity(
const Image *image,
1862 if (GetPixelInfoIntensity(image,p) == GetPixelInfoIntensity(image,q))
1864 fuzz=MagickMax(image->fuzz,MagickSQ1_2);
1866 pixel=GetPixelInfoIntensity(image,p)-GetPixelInfoIntensity(image,q);
1867 distance=pixel*pixel;
1868 if (distance > fuzz)
1869 return(MagickFalse);
1899MagickExport MagickBooleanType ListColorInfo(FILE *file,
1903 tuple[MagickPathExtent];
1920 if (file == (
const FILE *) NULL)
1922 color_info=GetColorInfoList(
"*",&number_colors,exception);
1923 if (color_info == (
const ColorInfo **) NULL)
1924 return(MagickFalse);
1925 path=(
const char *) NULL;
1926 for (i=0; i < (ssize_t) number_colors; i++)
1928 if (color_info[i]->stealth != MagickFalse)
1930 if ((path == (
const char *) NULL) ||
1931 (LocaleCompare(path,color_info[i]->path) != 0))
1933 if (color_info[i]->path != (
char *) NULL)
1934 (void) FormatLocaleFile(file,
"\nPath: %s\n\n",color_info[i]->path);
1935 (void) FormatLocaleFile(file,
1938 (void) FormatLocaleFile(file,
1939 "-------------------------------------------------"
1940 "------------------------------\n");
1942 path=color_info[i]->path;
1943 (void) FormatLocaleFile(file,
"%-21.21s ",color_info[i]->name);
1944 GetColorTuple(&color_info[i]->color,MagickFalse,tuple);
1945 (void) FormatLocaleFile(file,
"%-45.45s ",tuple);
1946 if ((color_info[i]->compliance & SVGCompliance) != 0)
1947 (void) FormatLocaleFile(file,
"SVG ");
1948 if ((color_info[i]->compliance & X11Compliance) != 0)
1949 (void) FormatLocaleFile(file,
"X11 ");
1950 if ((color_info[i]->compliance & XPMCompliance) != 0)
1951 (void) FormatLocaleFile(file,
"XPM ");
1952 (void) FormatLocaleFile(file,
"\n");
1954 color_info=(
const ColorInfo **) RelinquishMagickMemory((
void *) color_info);
1955 (void) fflush(file);
1959#if !MAGICKCORE_ZERO_CONFIGURATION_SUPPORT
1990static MagickBooleanType LoadColorCache(
LinkedListInfo *cache,
const char *xml,
1991 const char *filename,
const size_t depth,
ExceptionInfo *exception)
1994 keyword[MagickPathExtent],
2012 (void) LogMagickEvent(ConfigureEvent,GetMagickModule(),
2013 "Loading color file \"%s\" ...",filename);
2014 if (xml == (
char *) NULL)
2015 return(MagickFalse);
2018 token=AcquireString(xml);
2019 extent=strlen(token)+MagickPathExtent;
2020 for (q=(
char *) xml; *q !=
'\0'; )
2025 (void) GetNextToken(q,&q,extent,token);
2028 (void) CopyMagickString(keyword,token,MagickPathExtent);
2029 if (LocaleNCompare(keyword,
"<!DOCTYPE",9) == 0)
2034 while ((LocaleNCompare(q,
"]>",2) != 0) && (*q !=
'\0'))
2035 (void) GetNextToken(q,&q,extent,token);
2038 if (LocaleNCompare(keyword,
"<!--",4) == 0)
2043 while ((LocaleNCompare(q,
"->",2) != 0) && (*q !=
'\0'))
2044 (void) GetNextToken(q,&q,extent,token);
2047 if (LocaleCompare(keyword,
"<include") == 0)
2052 while (((*token !=
'/') && (*(token+1) !=
'>')) && (*q !=
'\0'))
2054 (void) CopyMagickString(keyword,token,MagickPathExtent);
2055 (void) GetNextToken(q,&q,extent,token);
2058 (void) GetNextToken(q,&q,extent,token);
2059 if (LocaleCompare(keyword,
"file") == 0)
2061 if (depth > MagickMaxRecursionDepth)
2062 (void) ThrowMagickException(exception,GetMagickModule(),
2063 ConfigureError,
"IncludeElementNestedTooDeeply",
"`%s'",token);
2067 path[MagickPathExtent],
2070 GetPathComponent(filename,HeadPath,path);
2072 (void) ConcatenateMagickString(path,DirectorySeparator,
2074 if (*token == *DirectorySeparator)
2075 (void) CopyMagickString(path,token,MagickPathExtent);
2077 (
void) ConcatenateMagickString(path,token,MagickPathExtent);
2078 file_xml=FileToXML(path,~0UL);
2079 if (file_xml != (
char *) NULL)
2081 status&=(MagickStatusType) LoadColorCache(cache,file_xml,
2082 path,depth+1,exception);
2083 file_xml=DestroyString(file_xml);
2090 if (LocaleCompare(keyword,
"<color") == 0)
2095 color_info=(
ColorInfo *) AcquireCriticalMemory(
sizeof(*color_info));
2096 (void) memset(color_info,0,
sizeof(*color_info));
2097 color_info->path=ConstantString(filename);
2098 color_info->exempt=MagickFalse;
2099 color_info->signature=MagickCoreSignature;
2104 if ((LocaleCompare(keyword,
"/>") == 0) ||
2105 (LocaleCompare(keyword,
"</policy>") == 0))
2107 status=AppendValueToLinkedList(cache,color_info);
2108 if (status == MagickFalse)
2109 (void) ThrowMagickException(exception,GetMagickModule(),
2110 ResourceLimitError,
"MemoryAllocationFailed",
"`%s'",
2115 (void) GetNextToken(q,(
const char **) NULL,extent,token);
2118 (void) GetNextToken(q,&q,extent,token);
2119 (void) GetNextToken(q,&q,extent,token);
2125 if (LocaleCompare((
char *) keyword,
"color") == 0)
2127 (void) QueryColorCompliance(token,AllCompliance,&color_info->color,
2131 if (LocaleCompare((
char *) keyword,
"compliance") == 0)
2136 compliance=color_info->compliance;
2137 if (StringLocateSubstring(token,
"SVG") != (
char *) NULL)
2138 compliance|=SVGCompliance;
2139 if (StringLocateSubstring(token,
"X11") != (
char *) NULL)
2140 compliance|=X11Compliance;
2141 if (StringLocateSubstring(token,
"XPM") != (
char *) NULL)
2142 compliance|=XPMCompliance;
2143 color_info->compliance=(ComplianceType) compliance;
2151 if (LocaleCompare((
char *) keyword,
"name") == 0)
2153 color_info->name=ConstantString(token);
2161 if (LocaleCompare((
char *) keyword,
"stealth") == 0)
2163 color_info->stealth=IsStringTrue(token);
2172 token=(
char *) RelinquishMagickMemory(token);
2173 return(status != 0 ? MagickTrue : MagickFalse);
2210static MagickStatusType ParseCSSColor(
const char *magick_restrict color,
2222 SetGeometryInfo(geometry_info);
2224 if ((color == (
char *) NULL) || (*color ==
'\0'))
2229 for (i=0; (i < 5) && (*q !=
')') && (*q !=
'\0'); i++)
2238 intensity=(float) StringToDouble(p,&q);
2243 intensity*=0.01*255.0;
2250 geometry_info->rho=intensity;
2252 if (LocaleNCompare(q,
"deg",3) == 0)
2258 geometry_info->sigma=intensity;
2264 geometry_info->xi=intensity;
2270 geometry_info->psi=intensity;
2276 geometry_info->chi=intensity;
2281 while (isspace((
int) ((
unsigned char) *q)) != 0)
2294MagickExport MagickBooleanType QueryColorCompliance(
const char *name,
2317 if ((name == (
char *) NULL) || (*name ==
'\0'))
2318 name=BackgroundColor;
2319 if (IsEventLogging() != MagickFalse)
2320 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"%s",name);
2321 if (strlen(name) > MagickPathExtent)
2323 (void) ThrowMagickException(exception,GetMagickModule(),OptionWarning,
2324 "UnrecognizedColor",
"`%s'",name);
2325 return(MagickFalse);
2327 while (isspace((
int) ((
unsigned char) *name)) != 0)
2329 GetPixelInfo((
Image *) NULL,color);
2336 pixel = { 0, 0, 0, 0, 0 };
2349 for (n=0; isxdigit((
int) ((
unsigned char) name[n])) != 0; n++) ;
2350 if ((n == 3) || (n == 6) || (n == 9) || (n == 12) || (n == 24) ||
2355 pixel.red=pixel.green;
2356 pixel.green=pixel.blue;
2358 for (i=(ssize_t) (n/3-1); i >= 0; i--)
2362 if ((c >=
'0') && (c <=
'9'))
2363 pixel.blue|=(
unsigned int) (c-
'0');
2365 if ((c >=
'A') && (c <=
'F'))
2366 pixel.blue|=(
unsigned int) (c-(
'A'-10));
2368 if ((c >=
'a') && (c <=
'f'))
2369 pixel.blue|=(
unsigned int) (c-(
'a'-10));
2371 return(MagickFalse);
2373 }
while (isxdigit((
int) ((
unsigned char) *name)) != 0);
2378 if ((n != 4) && (n != 8) && (n != 16) && (n != 32) && (n != 64))
2380 (void) ThrowMagickException(exception,GetMagickModule(),
2381 OptionWarning,
"UnrecognizedColor",
"`%s'",name);
2382 return(MagickFalse);
2386 pixel.red=pixel.green;
2387 pixel.green=pixel.blue;
2388 pixel.blue=pixel.alpha;
2390 for (i=(ssize_t) (n/4-1); i >= 0; i--)
2394 if ((c >=
'0') && (c <=
'9'))
2395 pixel.alpha|=(
unsigned int) (c-
'0');
2397 if ((c >=
'A') && (c <=
'F'))
2398 pixel.alpha|=(
unsigned int) c-(
'A'-10);
2400 if ((c >=
'a') && (c <=
'f'))
2401 pixel.alpha|=(
unsigned int) c-(
'a'-10);
2403 return(MagickFalse);
2405 }
while (isxdigit((
int) ((
unsigned char) *name)) != 0);
2408 color->colorspace=sRGBColorspace;
2410 color->alpha_trait=UndefinedPixelTrait;
2411 range=GetQuantumRange(depth);
2412 color->red=(double) ScaleAnyToQuantum(pixel.red,range);
2413 color->green=(double) ScaleAnyToQuantum(pixel.green,range);
2414 color->blue=(double) ScaleAnyToQuantum(pixel.blue,range);
2415 color->alpha=(double) OpaqueAlpha;
2418 color->alpha_trait=BlendPixelTrait;
2419 color->alpha=(double) ScaleAnyToQuantum(pixel.alpha,range);
2424 if (strchr(name,
'(') != (
char *) NULL)
2427 colorspace[2*MagickPathExtent];
2435 (void) memset(colorspace,0,
sizeof(colorspace));
2436 (void) CopyMagickString(colorspace,name,MagickPathExtent);
2437 for (i=0; colorspace[i] !=
'\0'; i++)
2438 if (colorspace[i] ==
'(')
2440 colorspace[i--]=
'\0';
2441 scale=(double) ScaleCharToQuantum(1);
2442 icc_color=MagickFalse;
2443 if (LocaleNCompare(colorspace,
"device-",7) == 0)
2445 (void) CopyMagickString(colorspace,colorspace+7,MagickPathExtent);
2446 if (strchr(name,
'%') == (
char *) NULL)
2447 scale=(double) QuantumRange;
2448 icc_color=MagickTrue;
2450 if ((LocaleCompare(colorspace,
"color") == 0) ||
2451 (LocaleCompare(colorspace,
"icc-color") == 0))
2456 (void) CopyMagickString(colorspace,name+i+2,MagickPathExtent);
2457 for (j=0; colorspace[j] !=
'\0'; j++)
2458 if ((colorspace[j] ==
' ') || (colorspace[j] ==
','))
2460 colorspace[j--]=
'\0';
2462 scale=(double) QuantumRange;
2463 icc_color=MagickTrue;
2465 LocaleLower(colorspace);
2466 color->alpha_trait=UndefinedPixelTrait;
2467 if ((i > 0) && (colorspace[i] ==
'a'))
2470 color->alpha_trait=BlendPixelTrait;
2472 type=ParseCommandOption(MagickColorspaceOptions,MagickFalse,colorspace);
2475 (void) ThrowMagickException(exception,GetMagickModule(),
2476 OptionWarning,
"UnrecognizedColor",
"`%s'",name);
2477 return(MagickFalse);
2479 color->colorspace=(ColorspaceType) type;
2480 if ((icc_color == MagickFalse) && (color->colorspace == RGBColorspace))
2482 color->colorspace=sRGBColorspace;
2485 if (i >= (ssize_t) strlen(name))
2486 flags=ParseCSSColor(name,&geometry_info);
2488 flags=ParseCSSColor(name+i+1,&geometry_info);
2500 colorspaceType=color->colorspace;
2501 if (i >= (ssize_t) strlen(name))
2502 colorname=AcquireString(name);
2504 colorname=AcquireString(name+i+1);
2505 (void) SubstituteString(&colorname,
"(",
"");
2506 (void) SubstituteString(&colorname,
")",
"");
2508 if (LocaleCompare(name,colorname) != 0)
2509 status=QueryColorCompliance(colorname,AllCompliance,color,
2511 color->colorspace=colorspaceType;
2512 if (*colorname ==
'\0')
2514 (void) ThrowMagickException(exception,GetMagickModule(),
2515 OptionWarning,
"UnrecognizedColor",
"`%s'",name);
2518 colorname=DestroyString(colorname);
2521 if ((flags & AlphaValue) != 0)
2522 color->alpha_trait=BlendPixelTrait;
2523 if ((flags & RhoValue) != 0)
2524 color->red=(double) ClampToQuantum((MagickRealType) (scale*
2525 geometry_info.rho));
2526 if ((flags & SigmaValue) != 0)
2527 color->green=(double) ClampToQuantum((MagickRealType) (scale*
2528 geometry_info.sigma));
2529 if ((flags & XiValue) != 0)
2530 color->blue=(double) ClampToQuantum((MagickRealType) (scale*
2532 color->alpha=(double) OpaqueAlpha;
2533 if ((flags & PsiValue) != 0)
2535 if (color->colorspace == CMYKColorspace)
2536 color->black=(double) ClampToQuantum((MagickRealType) (scale*
2537 geometry_info.psi));
2539 if (color->alpha_trait != UndefinedPixelTrait)
2541 if ((flags & AlphaValue) != 0)
2542 color->alpha=(double) ClampToQuantum((MagickRealType) (scale*
2543 geometry_info.psi));
2545 color->alpha=(double) ClampToQuantum((MagickRealType) (
2546 (
double) QuantumRange*geometry_info.psi));
2549 if (((flags & ChiValue) != 0) &&
2550 (color->alpha_trait != UndefinedPixelTrait))
2551 color->alpha=(double) ClampToQuantum((
double) QuantumRange*
2553 if (IsLabCompatibleColorspace(color->colorspace) != MagickFalse)
2555 color->red=(MagickRealType) ClampToQuantum((MagickRealType)
2556 ((
double) QuantumRange*geometry_info.rho/100.0));
2557 if ((flags & SigmaValue) != 0)
2558 color->green=(MagickRealType) ClampToQuantum((MagickRealType)
2559 (scale*geometry_info.sigma+((
double) QuantumRange+1)/2.0));
2560 if ((flags & XiValue) != 0)
2561 color->blue=(MagickRealType) ClampToQuantum((MagickRealType)
2562 (scale*geometry_info.xi+((
double) QuantumRange+1)/2.0));
2564 if ((LocaleCompare(colorspace,
"gray") == 0) ||
2565 (LocaleCompare(colorspace,
"lineargray") == 0))
2567 color->green=color->red;
2568 color->blue=color->red;
2569 if (((flags & SigmaValue) != 0) &&
2570 (color->alpha_trait != UndefinedPixelTrait))
2571 color->alpha=(double) ClampToQuantum((
double) QuantumRange*
2572 geometry_info.sigma);
2574 if ((LocaleCompare(colorspace,
"HCL") == 0) ||
2575 (LocaleCompare(colorspace,
"HSB") == 0) ||
2576 (LocaleCompare(colorspace,
"HSL") == 0) ||
2577 (LocaleCompare(colorspace,
"HSV") == 0) ||
2578 (LocaleCompare(colorspace,
"HWB") == 0))
2586 geometry_info.sigma*=scale;
2587 geometry_info.xi*=scale;
2591 switch (color->colorspace)
2595 ConvertHCLToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
2596 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
2601 ConvertHSBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
2602 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
2607 ConvertHSLToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
2608 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
2613 ConvertHSVToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
2614 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
2619 ConvertHWBToRGB(fmod(fmod(geometry_info.rho,360.0)+360.0,360.0)/
2620 360.0,geometry_info.sigma,geometry_info.xi,&red,&green,&blue);
2626 color->colorspace=sRGBColorspace;
2627 color->red=(MagickRealType) red;
2628 color->green=(MagickRealType) green;
2629 color->blue=(MagickRealType) blue;
2636 p=GetColorCompliance(name,compliance,exception);
2638 return(MagickFalse);
2639 color->colorspace=sRGBColorspace;
2640 if ((LocaleNCompare(name,
"gray",4) == 0) ||
2641 (LocaleNCompare(name,
"grey",4) == 0))
2642 color->colorspace=GRAYColorspace;
2644 color->alpha_trait=p->color.alpha != (double) OpaqueAlpha ? BlendPixelTrait :
2645 UndefinedPixelTrait;
2646 color->red=(double) p->color.red;
2647 color->green=(double) p->color.green;
2648 color->blue=(double) p->color.blue;
2649 color->alpha=(double) p->color.alpha;
2693MagickExport MagickBooleanType QueryColorname(
2695 const ComplianceType compliance,
char *name,
ExceptionInfo *exception)
2706 magick_unreferenced(image);
2708 if (IsColorCacheInstantiated(exception) == MagickFalse)
2709 return(MagickFalse);
2711 if (compliance == XPMCompliance)
2713 pixel.alpha_trait=UndefinedPixelTrait;
2714 if (pixel.depth > 16)
2717 GetColorTuple(&pixel,compliance != SVGCompliance ? MagickTrue : MagickFalse,
2719 if (IssRGBColorspace(pixel.colorspace) == MagickFalse)
2720 return(MagickFalse);
2721 alpha=color->alpha_trait != UndefinedPixelTrait ? (double) color->alpha :
2722 (double) OpaqueAlpha;
2723 (void) GetColorInfo(
"*",exception);
2724 LockSemaphoreInfo(color_semaphore);
2725 p=GetHeadElementInLinkedList(color_cache);
2732 if (((value->compliance & compliance) != 0) &&
2733 ((fabs((
double) (value->color.red-color->red)) < MagickEpsilon)) &&
2734 (fabs((
double) (value->color.green-color->green)) < MagickEpsilon) &&
2735 (fabs((
double) (value->color.blue-color->blue)) < MagickEpsilon) &&
2736 (fabs((
double) (value->color.alpha-alpha)) < MagickEpsilon))
2738 (void) CopyMagickString(name,value->name,MagickPathExtent);
2743 UnlockSemaphoreInfo(color_semaphore);