ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/nff2rad.c
Revision: 2.7
Committed: Sat Nov 15 17:54:06 2003 UTC (20 years, 10 months ago) by schorsch
Content type: text/plain
Branch: MAIN
CVS Tags: rad5R4, rad5R2, rad4R2P2, rad5R0, rad5R1, rad3R7P2, rad3R7P1, rad4R2, rad4R1, rad4R0, rad3R6, rad3R6P1, rad3R8, rad3R9, rad4R2P1, rad5R3, HEAD
Changes since 2.6: +76 -41 lines
Log Message:
Continued ANSIfication and reduced compile warnings.

File Contents

# Content
1 #ifndef lint
2 static const char RCSid[] = "$Id: nff2rad.c,v 2.6 2003/07/27 22:12:01 schorsch Exp $";
3 #endif
4 /*
5 * Convert Neutral File Format input to Radiance scene description.
6 *
7 * 12/9/90 Greg Ward
8 * 02/7/92 Peter Averkamp added X11(MTV)color names &
9 * fixed some lf's for direct import of MTV
10 * source files
11 */
12
13 /******************************************************************
14
15 Since Eric Haines wrote such excellent documentation of his
16 Neutral File Format, I am just going to reprint it here with
17 my added comments in braces {}.
18
19 Neutral File Format (NFF), by Eric Haines
20
21 Draft document #1, 10/3/88
22
23 The NFF (Neutral File Format) is designed as a minimal scene description
24 language. The language was designed in order to test various rendering
25 algorithms and efficiency schemes. It is meant to describe the geometry and
26 basic surface characteristics of objects, the placement of lights, and the
27 viewing frustum for the eye. Some additional information is provided for
28 esthetic reasons (such as the color of the objects, which is not strictly
29 necessary for testing rendering algorithms).
30
31 Future enhancements include: circle and torus objects, spline surfaces
32 with trimming curves, directional lights, characteristics for positional
33 lights, CSG descriptions, and probably more by the time you read this.
34 Comments, suggestions, and criticisms are all welcome.
35
36 At present the NFF file format is used in conjunction with the SPD (Standard
37 Procedural Database) software, a package designed to create a variety of
38 databases for testing rendering schemes. The SPD package is available
39 from Netlib and via ftp from drizzle.cs.uoregon.edu. For more information
40 about SPD see "A Proposal for Standard Graphics Environments," IEEE Computer
41 Graphics and Applications, vol. 7, no. 11, November 1987, pp. 3-5.
42
43 By providing a minimal interface, NFF is meant to act as a simple format to
44 allow the programmer to quickly write filters to move from NFF to the
45 local file format. Presently the following entities are supported:
46 A simple perspective frustum
47 A positional (vs. directional) light source description
48 A background color description
49 A surface properties description
50 Polygon, polygonal patch, cylinder/cone, and sphere descriptions
51
52 Files are output as lines of text. For each entity, the first line
53 defines its type. The rest of the first line and possibly other lines
54 contain further information about the entity. Entities include:
55
56 "v" - viewing vectors and angles { optionally creates view file }
57 "l" - positional light location { it's there, but bad to use }
58 "b" - background color { ditto }
59 "f" - object material properties { this is flakey }
60 "c" - cone or cylinder primitive
61 "s" - sphere primitive
62 "p" - polygon primitive
63 "pp" - polygonal patch primitive { interpreted same as p for now }
64
65 These are explained in depth below: { see conversion routines }
66
67 ***********************************************************************/
68
69 #include <stdlib.h>
70 #include <stdio.h>
71 #include <string.h>
72
73 #include "rtmath.h"
74
75 typedef double Flt ;
76 typedef Flt Vec[3] ;
77 typedef Vec Point ;
78 typedef Vec Color ;
79
80 #define VecCopy(a,b) (b)[0]=(a)[0];(b)[1]=(a)[1];(b)[2]=(a)[2];
81 #define NCOLORS (738)
82
83 typedef struct t_color_entry {
84 char * ce_name ;
85 Vec ce_color ;
86 } ColorEntry ;
87
88 #define LESS_THAN -1
89 #define GREATER_THAN 1
90 #define EQUAL_TO 0
91
92 char *viewfile = NULL; /* view parameters file */
93
94 char *progname;
95
96 void init(void);
97 void nff2rad(void);
98 void comment(void);
99 void view(void);
100 void light(void);
101 void background(void);
102 void fill(void);
103 void cone(void);
104 void sphere(void);
105 void poly(void);
106 int LookupColorByName(char * name, Vec color);
107 int BinarySearch(char * name, int l, int h, ColorEntry array[]);
108
109
110 int
111 main( /* convert NFF file to Radiance */
112 int argc,
113 char *argv[]
114 )
115 {
116 int i;
117
118 progname = argv[0];
119 for (i = 1; i < argc; i++)
120 if (argc-i > 1 && !strcmp(argv[i], "-vf"))
121 viewfile = argv[++i];
122 else if (!strncmp(argv[i], "-h",2))
123 goto userr;
124 else
125 break;
126 if (argc-i > 1)
127 goto userr;
128 if (argc-i == 1 && freopen(argv[i], "r", stdin) == NULL) {
129 perror(argv[i]);
130 exit(1);
131 }
132 init();
133 nff2rad();
134 exit(0);
135 userr:
136 fprintf(stderr, "Usage: %s [-vf viewfile] [input]\n", progname);
137 exit(1);
138 }
139
140
141 void
142 init(void) /* spit out initial definitions */
143 {
144 printf("# File created by %s\n", progname);
145 printf("\nvoid light light\n");
146 printf("0\n0\n3 1e6 1e6 1e6\n");
147 printf("\nvoid plastic fill\n");
148 printf("0\n0\n5 .5 .5 .5 0 0\n");
149 }
150
151
152 void
153 nff2rad(void) /* convert NFF on stdin to Radiance on stdout */
154 {
155 register int c;
156
157 while ((c = getchar()) != EOF)
158 switch (c) {
159 case ' ': /* white space */
160 case '\t':
161 case '\n':
162 case '\f':
163 case '\r':
164 continue;
165 case '#': /* comment */
166 comment();
167 break;
168 case 'v': /* view point */
169 view();
170 break;
171 case 'l': /* light source */
172 light();
173 break;
174 case 'b': /* background color */
175 background();
176 break;
177 case 'f': /* fill material */
178 fill();
179 break;
180 case 'c': /* cylinder or cone */
181 cone();
182 break;
183 case 's': /* sphere */
184 sphere();
185 break;
186 case 'p': /* polygon or patch */
187 poly();
188 break;
189 default: /* unknown */
190 fprintf(stderr, "%c: unknown NFF primitive\n", c);
191 exit(1);
192 }
193 }
194
195
196 /*******************************************
197
198 Comment. Description:
199 "#" [ string ]
200
201 Format:
202 # [ string ]
203
204 As soon as a "#" character is detected, the rest of the line is considered
205 a comment.
206
207 ******************/
208
209 void
210 comment(void)
211 {
212 register int c;
213
214 putchar('#');
215 while ((c = getchar()) != EOF) {
216 putchar(c);
217 if (c == '\n')
218 break;
219 }
220 }
221
222
223 /***************************************************
224
225 Viewpoint location. Description:
226 "v"
227 "from" Fx Fy Fz
228 "at" Ax Ay Az
229 "up" Ux Uy Uz
230 "angle" angle
231 "hither" hither
232 "resolution" xres yres
233
234 Format:
235
236 v
237 from %g %g %g
238 at %g %g %g
239 up %g %g %g
240 angle %g
241 hither %g
242 resolution %d %d
243
244 The parameters are:
245
246 From: the eye location in XYZ.
247 At: a position to be at the center of the image, in XYZ world
248 coordinates. A.k.a. "lookat".
249 Up: a vector defining which direction is up, as an XYZ vector.
250 Angle: in degrees, defined as from the center of top pixel row to
251 bottom pixel row and left column to right column.
252 Resolution: in pixels, in x and in y.
253
254 Note that no assumptions are made about normalizing the data (e.g. the
255 from-at distance does not have to be 1). Also, vectors are not
256 required to be perpendicular to each other.
257
258 For all databases some viewing parameters are always the same:
259 Yon is "at infinity."
260 Aspect ratio is 1.0.
261
262 A view entity must be defined before any objects are defined (this
263 requirement is so that NFF files can be used by hidden surface machines).
264
265 ***************/
266
267 void
268 view(void)
269 {
270 static FILE *fp = NULL;
271 float from[3], at[3], up[3], angle;
272
273 if (scanf(" from %f %f %f", &from[0], &from[1], &from[2]) != 3)
274 goto fmterr;
275 if (scanf(" at %f %f %f", &at[0], &at[1], &at[2]) != 3)
276 goto fmterr;
277 if (scanf(" up %f %f %f", &up[0], &up[1], &up[2]) != 3)
278 goto fmterr;
279 if (scanf(" angle %f", &angle) != 1)
280 goto fmterr;
281 scanf(" hither %*f");
282 scanf(" resolution %*d %*d");
283 if (viewfile != NULL) {
284 if (fp == NULL && (fp = fopen(viewfile, "a")) == NULL) {
285 perror(viewfile);
286 exit(1);
287 }
288 fprintf(fp,
289 "VIEW= -vp %g %g %g -vd %g %g %g -vu %g %g %g -vh %g -vv %g\n",
290 from[0], from[1], from[2],
291 at[0]-from[0], at[1]-from[1], at[2]-from[2],
292 up[0], up[1], up[2],
293 angle, angle);
294 }
295 return;
296 fmterr:
297 fprintf(stderr, "%s: view syntax error\n", progname);
298 exit(1);
299 }
300
301
302 /********************************
303
304 Positional light. A light is defined by XYZ position. Description:
305 "l" X Y Z
306
307 Format:
308 l %g %g %g
309
310 All light entities must be defined before any objects are defined (this
311 requirement is so that NFF files can be used by hidden surface machines).
312 Lights have a non-zero intensity of no particular value [this definition
313 may change soon, with the addition of an intensity and/or color].
314
315 **************************/
316
317 void
318 light(void)
319 {
320 static int nlights = 0;
321 register int c;
322 float x, y, z;
323
324 if (scanf("%f %f %f",&x, &y, &z) != 3) {
325 fprintf(stderr, "%s: light source syntax error\n", progname);
326 exit(1);
327 }
328 while ((c = getchar()) != EOF && c != '\n')
329 ;
330 printf("\nlight sphere l%d \n", ++nlights);
331 printf("0\n0\n4 %g %g %g .01\n", x, y, z);
332 }
333
334
335 /**************************************************
336
337 Background color. A color is simply RGB with values between 0 and 1:
338 "b" R G B
339
340 Format:
341 b %g %g %g
342
343 If no background color is set, assume RGB = {0,0,0}.
344
345 ********************/
346
347 void
348 background(void)
349 {
350 float r, g, b;
351 char colname[50];
352 double cvec[3];
353
354 if (scanf("%s", colname) != 1) {
355 fprintf(stderr,"%s: background syntax error\n",progname);exit(1);
356 }
357 if(LookupColorByName(colname,cvec)==1){
358 r=cvec[0];g=cvec[1];b=cvec[2];
359 }else{
360 if(sscanf(colname,"%f",&r)!=1 ||
361 scanf("%f %f", &g, &b) !=2) {
362 fprintf(stderr, "%s: background syntax error\n", progname);
363 exit(1);
364 }
365 }
366 printf("\nvoid glow backg_color\n");
367 printf("0\n0\n4 %g %g %g 0\n", r, g, b);
368 printf("\nbackg_color source background\n");
369 printf("0\n0\n4 0 0 1 360\n");
370 }
371
372
373 /****************************************************
374
375 Fill color and shading parameters. Description:
376 "f" red green blue Kd Ks Shine T index_of_refraction
377
378 Format:
379 f %g %g %g %g %g %g %g %g
380
381 RGB is in terms of 0.0 to 1.0.
382
383 Kd is the diffuse component, Ks the specular, Shine is the Phong cosine
384 power for highlights, T is transmittance (fraction of light passed per
385 unit). Usually, 0 <= Kd <= 1 and 0 <= Ks <= 1, though it is not required
386 that Kd + Ks == 1. Note that transmitting objects ( T > 0 ) are considered
387 to have two sides for algorithms that need these (normally objects have
388 one side).
389
390 The fill color is used to color the objects following it until a new color
391 is assigned.
392
393 *********************/
394
395 void
396 fill(void)
397 {
398 float r, g, b, d, s, p, t, n;
399 char colname[50];
400 double cvec[3];
401
402 if (scanf("%s", colname) != 1) {
403 fprintf(stderr,"%s: fill syntax error\n",progname);exit(1);
404 }
405 if(LookupColorByName(colname,cvec)==1){
406 r=cvec[0];g=cvec[1];b=cvec[2];
407 }else{
408 if(sscanf(colname,"%f",&r)!=1 ||
409 scanf("%f %f", &g, &b) !=2) {
410 fprintf(stderr, "%s: fill syntax error\n", progname);
411 exit(1);
412 }
413 }
414 if (scanf("%f %f %f %f %f", &d, &s, &p, &t, &n) != 5) {
415 fprintf(stderr, "%s: fill material syntax error\n", progname);
416 exit(1);
417 }
418 if (p > 1.)
419 p = 1./p;
420 if (t > .001) { /* has transmission */
421 if (n > 1.1) { /* has index of refraction */
422 printf("\nvoid dielectric fill\n");
423 printf("0\n0\n5 %g %g %g %g 0\n", r, g, b, n);
424 } else { /* transmits w/o refraction */
425 printf("\nvoid trans fill\n");
426 printf("0\n0\n7 %g %g %g %g 0 %g 1\n",
427 r*d, g*d, b*d, s, t);
428 }
429 } else { /* no transmission */
430 printf("\nvoid plastic fill\n");
431 printf("0\n0\n5 %g %g %g %g %g\n", r*d, g*d, b*d, s, p);
432 }
433 }
434
435
436 /*****************************************************
437
438 Cylinder or cone. A cylinder is defined as having a radius and an axis
439 defined by two points, which also define the top and bottom edge of the
440 cylinder. A cone is defined similarly, the difference being that the apex
441 and base radii are different. The apex radius is defined as being smaller
442 than the base radius. Note that the surface exists without endcaps. The
443 cone or cylinder description:
444
445 "c"
446 base.x base.y base.z base_radius
447 apex.x apex.y apex.z apex_radius
448
449 Format:
450 c
451 %g %g %g %g
452 %g %g %g %g
453
454 A negative value for both radii means that only the inside of the object is
455 visible (objects are normally considered one sided, with the outside
456 visible). Note that the base and apex cannot be coincident for a cylinder
457 or cone.
458
459 ************************/
460
461 void
462 cone(void)
463 {
464 static int ncs = 0;
465 int invert;
466 float x0, y0, z0, x1, y1, z1, r0, r1;
467
468 if (scanf("%f %f %f %f %f %f %f %f", &x0, &y0, &z0, &r0,
469 &x1, &y1, &z1, &r1) != 8) {
470 fprintf(stderr, "%s: cylinder or cone syntax error\n",
471 progname);
472 exit(1);
473 }
474 if ( (invert = r0 < 0.) ) {
475 r0 = -r0;
476 r1 = -r1;
477 }
478 if (r0-r1 < .001 && r1-r0 < .001) { /* cylinder */
479 printf("\nfill %s c%d \n", invert?"tube":"cylinder", ++ncs);
480 printf("0\n0\n7\n");
481 printf("\t%g\t%g\t%g\n", x0, y0, z0);
482 printf("\t%g\t%g\t%g\n", x1, y1, z1);
483 printf("\t%g\n", r0);
484 } else { /* cone */
485 printf("\nfill %s c%d \n", invert?"cup":"cone", ++ncs);
486 printf("0\n0\n8\n");
487 printf("\t%g\t%g\t%g\n", x0, y0, z0);
488 printf("\t%g\t%g\t%g\n", x1, y1, z1);
489 printf("\t%g\t%g\n", r0, r1);
490 }
491 }
492
493
494 /*****************************************
495
496 Sphere. A sphere is defined by a radius and center position:
497 "s" center.x center.y center.z radius
498
499 Format:
500 s %g %g %g %g
501
502 If the radius is negative, then only the sphere's inside is visible
503 (objects are normally considered one sided, with the outside visible).
504
505 ******************/
506
507 void
508 sphere(void)
509 {
510 static int nspheres = 0;
511 float x, y, z, r;
512
513 if (scanf("%f %f %f %f", &x, &y, &z, &r) != 4) {
514 fprintf(stderr, "%s: sphere syntax error\n", progname);
515 exit(1);
516 }
517 if (r < 0.) {
518 printf("\nfill bubble s%d \n", ++nspheres);
519 printf("0\n0\n4 %g %g %g %g\n", x, y, z, -r);
520 } else {
521 printf("\nfill sphere s%d \n", ++nspheres);
522 printf("0\n0\n4 %g %g %g %g\n", x, y, z, r);
523 }
524 }
525
526
527 /*********************************************
528
529 Polygon. A polygon is defined by a set of vertices. With these databases,
530 a polygon is defined to have all points coplanar. A polygon has only
531 one side, with the order of the vertices being counterclockwise as you
532 face the polygon (right-handed coordinate system). The first two edges
533 must form a non-zero convex angle, so that the normal and side visibility
534 can be determined. Description:
535
536 "p" total_vertices
537 vert1.x vert1.y vert1.z
538 [etc. for total_vertices vertices]
539
540 Format:
541 p %d
542 [ %g %g %g ] <-- for total_vertices vertices
543
544 --------
545
546 Polygonal patch. A patch is defined by a set of vertices and their normals.
547 With these databases, a patch is defined to have all points coplanar.
548 A patch has only one side, with the order of the vertices being
549 counterclockwise as you face the patch (right-handed coordinate system).
550 The first two edges must form a non-zero convex angle, so that the normal
551 and side visibility can be determined. Description:
552
553 "pp" total_vertices
554 vert1.x vert1.y vert1.z norm1.x norm1.y norm1.z
555 [etc. for total_vertices vertices]
556
557 Format:
558 pp %d
559 [ %g %g %g %g %g %g ] <-- for total_vertices vertices
560
561 *******************/
562
563 void
564 poly(void)
565 {
566 static int npolys = 0;
567 int ispatch;
568 int nverts;
569 float x, y, z;
570
571 ispatch = getchar();
572 if (ispatch != 'p') {
573 ungetc(ispatch, stdin);
574 ispatch = 0;
575 }
576 if (scanf("%d", &nverts) != 1)
577 goto fmterr;
578 printf("\nfill polygon p%d \n", ++npolys);
579 printf("0\n0\n%d\n", 3*nverts);
580 while (nverts-- > 0) {
581 if (scanf("%f %f %f", &x, &y, &z) != 3)
582 goto fmterr;
583 if (ispatch)
584 scanf("%*f %*f %*f");
585 printf("\t%g\t%g\t%g\n", x, y, z);
586 }
587 return;
588 fmterr:
589 fprintf(stderr, "%s: polygon or patch syntax error\n", progname);
590 exit(1);
591 }
592 /***********************************************************************
593 * $Author: schorsch $ (Mark VandeWettering, drizzle.cs.uoregon.edu)
594 * $Revision: 2.6 $
595 * $Date: 2003/07/27 22:12:01 $
596 * $Log: nff2rad.c,v $
597 * Revision 2.6 2003/07/27 22:12:01 schorsch
598 * Added grouping parens to reduce ambiguity warnings.
599 *
600 * Revision 2.5 2003/02/22 02:07:23 greg
601 * Changes and check-in for 3.5 release
602 * Includes new source files and modifications not recorded for many years
603 * See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release
604 *
605 * Revision 1.2 88/09/12 12:53:47 markv
606 * Fixed problem in LookupColorbyName, had return ; and return(0).
607 * [ Thank you lint! ]
608 *
609 * Revision 1.1 88/09/11 11:00:37 markv
610 * Initial revision
611 *
612 * Peter Averkamp 92/02/01
613 * added complete X11R5 rgb.txt-table, hacked standalone version
614 * for nff2rad
615 *
616 ***********************************************************************/
617
618 /*
619 * Note: These colors must be in sorted order, because we binary search
620 * for them.
621 *
622 * They were swiped from the X-11 distribution. Sorry....
623 */
624
625 ColorEntry Colors[] = {
626 {"AliceBlue", {0.941176 , 0.972549 , 1.000000 }},
627 {"AntiqueWhite", {0.980392 , 0.921569 , 0.843137 }},
628 {"AntiqueWhite1", {1.000000 , 0.937255 , 0.858824 }},
629 {"AntiqueWhite2", {0.933333 , 0.874510 , 0.800000 }},
630 {"AntiqueWhite3", {0.803922 , 0.752941 , 0.690196 }},
631 {"AntiqueWhite4", {0.545098 , 0.513725 , 0.470588 }},
632 {"BlanchedAlmond", {1.000000 , 0.921569 , 0.803922 }},
633 {"BlueViolet", {0.541176 , 0.168627 , 0.886275 }},
634 {"CadetBlue", {0.372549 , 0.619608 , 0.627451 }},
635 {"CadetBlue1", {0.596078 , 0.960784 , 1.000000 }},
636 {"CadetBlue2", {0.556863 , 0.898039 , 0.933333 }},
637 {"CadetBlue3", {0.478431 , 0.772549 , 0.803922 }},
638 {"CadetBlue4", {0.325490 , 0.525490 , 0.545098 }},
639 {"CornflowerBlue", {0.392157 , 0.584314 , 0.929412 }},
640 {"DarkGoldenrod", {0.721569 , 0.525490 , 0.043137 }},
641 {"DarkGoldenrod1", {1.000000 , 0.725490 , 0.058824 }},
642 {"DarkGoldenrod2", {0.933333 , 0.678431 , 0.054902 }},
643 {"DarkGoldenrod3", {0.803922 , 0.584314 , 0.047059 }},
644 {"DarkGoldenrod4", {0.545098 , 0.396078 , 0.031373 }},
645 {"DarkGreen", {0.000000 , 0.392157 , 0.000000 }},
646 {"DarkKhaki", {0.741176 , 0.717647 , 0.419608 }},
647 {"DarkOliveGreen", {0.333333 , 0.419608 , 0.184314 }},
648 {"DarkOliveGreen1", {0.792157 , 1.000000 , 0.439216 }},
649 {"DarkOliveGreen2", {0.737255 , 0.933333 , 0.407843 }},
650 {"DarkOliveGreen3", {0.635294 , 0.803922 , 0.352941 }},
651 {"DarkOliveGreen4", {0.431373 , 0.545098 , 0.239216 }},
652 {"DarkOrange", {1.000000 , 0.549020 , 0.000000 }},
653 {"DarkOrange1", {1.000000 , 0.498039 , 0.000000 }},
654 {"DarkOrange2", {0.933333 , 0.462745 , 0.000000 }},
655 {"DarkOrange3", {0.803922 , 0.400000 , 0.000000 }},
656 {"DarkOrange4", {0.545098 , 0.270588 , 0.000000 }},
657 {"DarkOrchid", {0.600000 , 0.196078 , 0.800000 }},
658 {"DarkOrchid1", {0.749020 , 0.243137 , 1.000000 }},
659 {"DarkOrchid2", {0.698039 , 0.227451 , 0.933333 }},
660 {"DarkOrchid3", {0.603922 , 0.196078 , 0.803922 }},
661 {"DarkOrchid4", {0.407843 , 0.133333 , 0.545098 }},
662 {"DarkSalmon", {0.913725 , 0.588235 , 0.478431 }},
663 {"DarkSeaGreen", {0.560784 , 0.737255 , 0.560784 }},
664 {"DarkSeaGreen1", {0.756863 , 1.000000 , 0.756863 }},
665 {"DarkSeaGreen2", {0.705882 , 0.933333 , 0.705882 }},
666 {"DarkSeaGreen3", {0.607843 , 0.803922 , 0.607843 }},
667 {"DarkSeaGreen4", {0.411765 , 0.545098 , 0.411765 }},
668 {"DarkSlateBlue", {0.282353 , 0.239216 , 0.545098 }},
669 {"DarkSlateGray", {0.184314 , 0.309804 , 0.309804 }},
670 {"DarkSlateGray1", {0.592157 , 1.000000 , 1.000000 }},
671 {"DarkSlateGray2", {0.552941 , 0.933333 , 0.933333 }},
672 {"DarkSlateGray3", {0.474510 , 0.803922 , 0.803922 }},
673 {"DarkSlateGray4", {0.321569 , 0.545098 , 0.545098 }},
674 {"DarkSlateGrey", {0.184314 , 0.309804 , 0.309804 }},
675 {"DarkTurquoise", {0.000000 , 0.807843 , 0.819608 }},
676 {"DarkViolet", {0.580392 , 0.000000 , 0.827451 }},
677 {"DeepPink", {1.000000 , 0.078431 , 0.576471 }},
678 {"DeepPink1", {1.000000 , 0.078431 , 0.576471 }},
679 {"DeepPink2", {0.933333 , 0.070588 , 0.537255 }},
680 {"DeepPink3", {0.803922 , 0.062745 , 0.462745 }},
681 {"DeepPink4", {0.545098 , 0.039216 , 0.313725 }},
682 {"DeepSkyBlue", {0.000000 , 0.749020 , 1.000000 }},
683 {"DeepSkyBlue1", {0.000000 , 0.749020 , 1.000000 }},
684 {"DeepSkyBlue2", {0.000000 , 0.698039 , 0.933333 }},
685 {"DeepSkyBlue3", {0.000000 , 0.603922 , 0.803922 }},
686 {"DeepSkyBlue4", {0.000000 , 0.407843 , 0.545098 }},
687 {"DimGray", {0.411765 , 0.411765 , 0.411765 }},
688 {"DimGrey", {0.411765 , 0.411765 , 0.411765 }},
689 {"DodgerBlue", {0.117647 , 0.564706 , 1.000000 }},
690 {"DodgerBlue1", {0.117647 , 0.564706 , 1.000000 }},
691 {"DodgerBlue2", {0.109804 , 0.525490 , 0.933333 }},
692 {"DodgerBlue3", {0.094118 , 0.454902 , 0.803922 }},
693 {"DodgerBlue4", {0.062745 , 0.305882 , 0.545098 }},
694 {"FloralWhite", {1.000000 , 0.980392 , 0.941176 }},
695 {"ForestGreen", {0.133333 , 0.545098 , 0.133333 }},
696 {"GhostWhite", {0.972549 , 0.972549 , 1.000000 }},
697 {"GreenYellow", {0.678431 , 1.000000 , 0.184314 }},
698 {"HotPink", {1.000000 , 0.411765 , 0.705882 }},
699 {"HotPink1", {1.000000 , 0.431373 , 0.705882 }},
700 {"HotPink2", {0.933333 , 0.415686 , 0.654902 }},
701 {"HotPink3", {0.803922 , 0.376471 , 0.564706 }},
702 {"HotPink4", {0.545098 , 0.227451 , 0.384314 }},
703 {"IndianRed", {0.803922 , 0.360784 , 0.360784 }},
704 {"IndianRed1", {1.000000 , 0.415686 , 0.415686 }},
705 {"IndianRed2", {0.933333 , 0.388235 , 0.388235 }},
706 {"IndianRed3", {0.803922 , 0.333333 , 0.333333 }},
707 {"IndianRed4", {0.545098 , 0.227451 , 0.227451 }},
708 {"LavenderBlush", {1.000000 , 0.941176 , 0.960784 }},
709 {"LavenderBlush1", {1.000000 , 0.941176 , 0.960784 }},
710 {"LavenderBlush2", {0.933333 , 0.878431 , 0.898039 }},
711 {"LavenderBlush3", {0.803922 , 0.756863 , 0.772549 }},
712 {"LavenderBlush4", {0.545098 , 0.513725 , 0.525490 }},
713 {"LawnGreen", {0.486275 , 0.988235 , 0.000000 }},
714 {"LemonChiffon", {1.000000 , 0.980392 , 0.803922 }},
715 {"LemonChiffon1", {1.000000 , 0.980392 , 0.803922 }},
716 {"LemonChiffon2", {0.933333 , 0.913725 , 0.749020 }},
717 {"LemonChiffon3", {0.803922 , 0.788235 , 0.647059 }},
718 {"LemonChiffon4", {0.545098 , 0.537255 , 0.439216 }},
719 {"LightBlue", {0.678431 , 0.847059 , 0.901961 }},
720 {"LightBlue1", {0.749020 , 0.937255 , 1.000000 }},
721 {"LightBlue2", {0.698039 , 0.874510 , 0.933333 }},
722 {"LightBlue3", {0.603922 , 0.752941 , 0.803922 }},
723 {"LightBlue4", {0.407843 , 0.513725 , 0.545098 }},
724 {"LightCoral", {0.941176 , 0.501961 , 0.501961 }},
725 {"LightCyan", {0.878431 , 1.000000 , 1.000000 }},
726 {"LightCyan1", {0.878431 , 1.000000 , 1.000000 }},
727 {"LightCyan2", {0.819608 , 0.933333 , 0.933333 }},
728 {"LightCyan3", {0.705882 , 0.803922 , 0.803922 }},
729 {"LightCyan4", {0.478431 , 0.545098 , 0.545098 }},
730 {"LightGoldenrod", {0.933333 , 0.866667 , 0.509804 }},
731 {"LightGoldenrod1", {1.000000 , 0.925490 , 0.545098 }},
732 {"LightGoldenrod2", {0.933333 , 0.862745 , 0.509804 }},
733 {"LightGoldenrod3", {0.803922 , 0.745098 , 0.439216 }},
734 {"LightGoldenrod4", {0.545098 , 0.505882 , 0.298039 }},
735 {"LightGoldenrodYellow", {0.980392 , 0.980392 , 0.823529 }},
736 {"LightGray", {0.827451 , 0.827451 , 0.827451 }},
737 {"LightGrey", {0.827451 , 0.827451 , 0.827451 }},
738 {"LightPink", {1.000000 , 0.713725 , 0.756863 }},
739 {"LightPink1", {1.000000 , 0.682353 , 0.725490 }},
740 {"LightPink2", {0.933333 , 0.635294 , 0.678431 }},
741 {"LightPink3", {0.803922 , 0.549020 , 0.584314 }},
742 {"LightPink4", {0.545098 , 0.372549 , 0.396078 }},
743 {"LightSalmon", {1.000000 , 0.627451 , 0.478431 }},
744 {"LightSalmon1", {1.000000 , 0.627451 , 0.478431 }},
745 {"LightSalmon2", {0.933333 , 0.584314 , 0.447059 }},
746 {"LightSalmon3", {0.803922 , 0.505882 , 0.384314 }},
747 {"LightSalmon4", {0.545098 , 0.341176 , 0.258824 }},
748 {"LightSeaGreen", {0.125490 , 0.698039 , 0.666667 }},
749 {"LightSkyBlue", {0.529412 , 0.807843 , 0.980392 }},
750 {"LightSkyBlue1", {0.690196 , 0.886275 , 1.000000 }},
751 {"LightSkyBlue2", {0.643137 , 0.827451 , 0.933333 }},
752 {"LightSkyBlue3", {0.552941 , 0.713725 , 0.803922 }},
753 {"LightSkyBlue4", {0.376471 , 0.482353 , 0.545098 }},
754 {"LightSlateBlue", {0.517647 , 0.439216 , 1.000000 }},
755 {"LightSlateGray", {0.466667 , 0.533333 , 0.600000 }},
756 {"LightSlateGrey", {0.466667 , 0.533333 , 0.600000 }},
757 {"LightSteelBlue", {0.690196 , 0.768627 , 0.870588 }},
758 {"LightSteelBlue1", {0.792157 , 0.882353 , 1.000000 }},
759 {"LightSteelBlue2", {0.737255 , 0.823529 , 0.933333 }},
760 {"LightSteelBlue3", {0.635294 , 0.709804 , 0.803922 }},
761 {"LightSteelBlue4", {0.431373 , 0.482353 , 0.545098 }},
762 {"LightYellow", {1.000000 , 1.000000 , 0.878431 }},
763 {"LightYellow1", {1.000000 , 1.000000 , 0.878431 }},
764 {"LightYellow2", {0.933333 , 0.933333 , 0.819608 }},
765 {"LightYellow3", {0.803922 , 0.803922 , 0.705882 }},
766 {"LightYellow4", {0.545098 , 0.545098 , 0.478431 }},
767 {"LimeGreen", {0.196078 , 0.803922 , 0.196078 }},
768 {"MediumAquamarine", {0.400000 , 0.803922 , 0.666667 }},
769 {"MediumBlue", {0.000000 , 0.000000 , 0.803922 }},
770 {"MediumOrchid", {0.729412 , 0.333333 , 0.827451 }},
771 {"MediumOrchid1", {0.878431 , 0.400000 , 1.000000 }},
772 {"MediumOrchid2", {0.819608 , 0.372549 , 0.933333 }},
773 {"MediumOrchid3", {0.705882 , 0.321569 , 0.803922 }},
774 {"MediumOrchid4", {0.478431 , 0.215686 , 0.545098 }},
775 {"MediumPurple", {0.576471 , 0.439216 , 0.858824 }},
776 {"MediumPurple1", {0.670588 , 0.509804 , 1.000000 }},
777 {"MediumPurple2", {0.623529 , 0.474510 , 0.933333 }},
778 {"MediumPurple3", {0.537255 , 0.407843 , 0.803922 }},
779 {"MediumPurple4", {0.364706 , 0.278431 , 0.545098 }},
780 {"MediumSeaGreen", {0.235294 , 0.701961 , 0.443137 }},
781 {"MediumSlateBlue", {0.482353 , 0.407843 , 0.933333 }},
782 {"MediumSpringGreen", {0.000000 , 0.980392 , 0.603922 }},
783 {"MediumTurquoise", {0.282353 , 0.819608 , 0.800000 }},
784 {"MediumVioletRed", {0.780392 , 0.082353 , 0.521569 }},
785 {"MidnightBlue", {0.098039 , 0.098039 , 0.439216 }},
786 {"MintCream", {0.960784 , 1.000000 , 0.980392 }},
787 {"MistyRose", {1.000000 , 0.894118 , 0.882353 }},
788 {"MistyRose1", {1.000000 , 0.894118 , 0.882353 }},
789 {"MistyRose2", {0.933333 , 0.835294 , 0.823529 }},
790 {"MistyRose3", {0.803922 , 0.717647 , 0.709804 }},
791 {"MistyRose4", {0.545098 , 0.490196 , 0.482353 }},
792 {"NavajoWhite", {1.000000 , 0.870588 , 0.678431 }},
793 {"NavajoWhite1", {1.000000 , 0.870588 , 0.678431 }},
794 {"NavajoWhite2", {0.933333 , 0.811765 , 0.631373 }},
795 {"NavajoWhite3", {0.803922 , 0.701961 , 0.545098 }},
796 {"NavajoWhite4", {0.545098 , 0.474510 , 0.368627 }},
797 {"NavyBlue", {0.000000 , 0.000000 , 0.501961 }},
798 {"OldLace", {0.992157 , 0.960784 , 0.901961 }},
799 {"OliveDrab", {0.419608 , 0.556863 , 0.137255 }},
800 {"OliveDrab1", {0.752941 , 1.000000 , 0.243137 }},
801 {"OliveDrab2", {0.701961 , 0.933333 , 0.227451 }},
802 {"OliveDrab3", {0.603922 , 0.803922 , 0.196078 }},
803 {"OliveDrab4", {0.411765 , 0.545098 , 0.133333 }},
804 {"OrangeRed", {1.000000 , 0.270588 , 0.000000 }},
805 {"OrangeRed1", {1.000000 , 0.270588 , 0.000000 }},
806 {"OrangeRed2", {0.933333 , 0.250980 , 0.000000 }},
807 {"OrangeRed3", {0.803922 , 0.215686 , 0.000000 }},
808 {"OrangeRed4", {0.545098 , 0.145098 , 0.000000 }},
809 {"PaleGoldenrod", {0.933333 , 0.909804 , 0.666667 }},
810 {"PaleGreen", {0.596078 , 0.984314 , 0.596078 }},
811 {"PaleGreen1", {0.603922 , 1.000000 , 0.603922 }},
812 {"PaleGreen2", {0.564706 , 0.933333 , 0.564706 }},
813 {"PaleGreen3", {0.486275 , 0.803922 , 0.486275 }},
814 {"PaleGreen4", {0.329412 , 0.545098 , 0.329412 }},
815 {"PaleTurquoise", {0.686275 , 0.933333 , 0.933333 }},
816 {"PaleTurquoise1", {0.733333 , 1.000000 , 1.000000 }},
817 {"PaleTurquoise2", {0.682353 , 0.933333 , 0.933333 }},
818 {"PaleTurquoise3", {0.588235 , 0.803922 , 0.803922 }},
819 {"PaleTurquoise4", {0.400000 , 0.545098 , 0.545098 }},
820 {"PaleVioletRed", {0.858824 , 0.439216 , 0.576471 }},
821 {"PaleVioletRed1", {1.000000 , 0.509804 , 0.670588 }},
822 {"PaleVioletRed2", {0.933333 , 0.474510 , 0.623529 }},
823 {"PaleVioletRed3", {0.803922 , 0.407843 , 0.537255 }},
824 {"PaleVioletRed4", {0.545098 , 0.278431 , 0.364706 }},
825 {"PapayaWhip", {1.000000 , 0.937255 , 0.835294 }},
826 {"PeachPuff", {1.000000 , 0.854902 , 0.725490 }},
827 {"PeachPuff1", {1.000000 , 0.854902 , 0.725490 }},
828 {"PeachPuff2", {0.933333 , 0.796078 , 0.678431 }},
829 {"PeachPuff3", {0.803922 , 0.686275 , 0.584314 }},
830 {"PeachPuff4", {0.545098 , 0.466667 , 0.396078 }},
831 {"PowderBlue", {0.690196 , 0.878431 , 0.901961 }},
832 {"RosyBrown", {0.737255 , 0.560784 , 0.560784 }},
833 {"RosyBrown1", {1.000000 , 0.756863 , 0.756863 }},
834 {"RosyBrown2", {0.933333 , 0.705882 , 0.705882 }},
835 {"RosyBrown3", {0.803922 , 0.607843 , 0.607843 }},
836 {"RosyBrown4", {0.545098 , 0.411765 , 0.411765 }},
837 {"RoyalBlue", {0.254902 , 0.411765 , 0.882353 }},
838 {"RoyalBlue1", {0.282353 , 0.462745 , 1.000000 }},
839 {"RoyalBlue2", {0.262745 , 0.431373 , 0.933333 }},
840 {"RoyalBlue3", {0.227451 , 0.372549 , 0.803922 }},
841 {"RoyalBlue4", {0.152941 , 0.250980 , 0.545098 }},
842 {"SaddleBrown", {0.545098 , 0.270588 , 0.074510 }},
843 {"SandyBrown", {0.956863 , 0.643137 , 0.376471 }},
844 {"SeaGreen", {0.180392 , 0.545098 , 0.341176 }},
845 {"SeaGreen1", {0.329412 , 1.000000 , 0.623529 }},
846 {"SeaGreen2", {0.305882 , 0.933333 , 0.580392 }},
847 {"SeaGreen3", {0.262745 , 0.803922 , 0.501961 }},
848 {"SeaGreen4", {0.180392 , 0.545098 , 0.341176 }},
849 {"SkyBlue", {0.529412 , 0.807843 , 0.921569 }},
850 {"SkyBlue1", {0.529412 , 0.807843 , 1.000000 }},
851 {"SkyBlue2", {0.494118 , 0.752941 , 0.933333 }},
852 {"SkyBlue3", {0.423529 , 0.650980 , 0.803922 }},
853 {"SkyBlue4", {0.290196 , 0.439216 , 0.545098 }},
854 {"SlateBlue", {0.415686 , 0.352941 , 0.803922 }},
855 {"SlateBlue1", {0.513725 , 0.435294 , 1.000000 }},
856 {"SlateBlue2", {0.478431 , 0.403922 , 0.933333 }},
857 {"SlateBlue3", {0.411765 , 0.349020 , 0.803922 }},
858 {"SlateBlue4", {0.278431 , 0.235294 , 0.545098 }},
859 {"SlateGray", {0.439216 , 0.501961 , 0.564706 }},
860 {"SlateGray1", {0.776471 , 0.886275 , 1.000000 }},
861 {"SlateGray2", {0.725490 , 0.827451 , 0.933333 }},
862 {"SlateGray3", {0.623529 , 0.713725 , 0.803922 }},
863 {"SlateGray4", {0.423529 , 0.482353 , 0.545098 }},
864 {"SlateGrey", {0.439216 , 0.501961 , 0.564706 }},
865 {"SpringGreen", {0.000000 , 1.000000 , 0.498039 }},
866 {"SpringGreen1", {0.000000 , 1.000000 , 0.498039 }},
867 {"SpringGreen2", {0.000000 , 0.933333 , 0.462745 }},
868 {"SpringGreen3", {0.000000 , 0.803922 , 0.400000 }},
869 {"SpringGreen4", {0.000000 , 0.545098 , 0.270588 }},
870 {"SteelBlue", {0.274510 , 0.509804 , 0.705882 }},
871 {"SteelBlue1", {0.388235 , 0.721569 , 1.000000 }},
872 {"SteelBlue2", {0.360784 , 0.674510 , 0.933333 }},
873 {"SteelBlue3", {0.309804 , 0.580392 , 0.803922 }},
874 {"SteelBlue4", {0.211765 , 0.392157 , 0.545098 }},
875 {"VioletRed", {0.815686 , 0.125490 , 0.564706 }},
876 {"VioletRed1", {1.000000 , 0.243137 , 0.588235 }},
877 {"VioletRed2", {0.933333 , 0.227451 , 0.549020 }},
878 {"VioletRed3", {0.803922 , 0.196078 , 0.470588 }},
879 {"VioletRed4", {0.545098 , 0.133333 , 0.321569 }},
880 {"WhiteSmoke", {0.960784 , 0.960784 , 0.960784 }},
881 {"YellowGreen", {0.603922 , 0.803922 , 0.196078 }},
882 {"alice_blue", {0.941176 , 0.972549 , 1.000000 }},
883 {"antique_white", {0.980392 , 0.921569 , 0.843137 }},
884 {"aquamarine", {0.498039 , 1.000000 , 0.831373 }},
885 {"aquamarine1", {0.498039 , 1.000000 , 0.831373 }},
886 {"aquamarine2", {0.462745 , 0.933333 , 0.776471 }},
887 {"aquamarine3", {0.400000 , 0.803922 , 0.666667 }},
888 {"aquamarine4", {0.270588 , 0.545098 , 0.454902 }},
889 {"azure", {0.941176 , 1.000000 , 1.000000 }},
890 {"azure1", {0.941176 , 1.000000 , 1.000000 }},
891 {"azure2", {0.878431 , 0.933333 , 0.933333 }},
892 {"azure3", {0.756863 , 0.803922 , 0.803922 }},
893 {"azure4", {0.513725 , 0.545098 , 0.545098 }},
894 {"beige", {0.960784 , 0.960784 , 0.862745 }},
895 {"bisque", {1.000000 , 0.894118 , 0.768627 }},
896 {"bisque1", {1.000000 , 0.894118 , 0.768627 }},
897 {"bisque2", {0.933333 , 0.835294 , 0.717647 }},
898 {"bisque3", {0.803922 , 0.717647 , 0.619608 }},
899 {"bisque4", {0.545098 , 0.490196 , 0.419608 }},
900 {"black", {0.000000 , 0.000000 , 0.000000 }},
901 {"blanched_almond", {1.000000 , 0.921569 , 0.803922 }},
902 {"blue", {0.000000 , 0.000000 , 1.000000 }},
903 {"blue1", {0.000000 , 0.000000 , 1.000000 }},
904 {"blue2", {0.000000 , 0.000000 , 0.933333 }},
905 {"blue3", {0.000000 , 0.000000 , 0.803922 }},
906 {"blue4", {0.000000 , 0.000000 , 0.545098 }},
907 {"blue_violet", {0.541176 , 0.168627 , 0.886275 }},
908 {"brown", {0.647059 , 0.164706 , 0.164706 }},
909 {"brown1", {1.000000 , 0.250980 , 0.250980 }},
910 {"brown2", {0.933333 , 0.231373 , 0.231373 }},
911 {"brown3", {0.803922 , 0.200000 , 0.200000 }},
912 {"brown4", {0.545098 , 0.137255 , 0.137255 }},
913 {"burlywood", {0.870588 , 0.721569 , 0.529412 }},
914 {"burlywood1", {1.000000 , 0.827451 , 0.607843 }},
915 {"burlywood2", {0.933333 , 0.772549 , 0.568627 }},
916 {"burlywood3", {0.803922 , 0.666667 , 0.490196 }},
917 {"burlywood4", {0.545098 , 0.450980 , 0.333333 }},
918 {"cadet_blue", {0.372549 , 0.619608 , 0.627451 }},
919 {"chartreuse", {0.498039 , 1.000000 , 0.000000 }},
920 {"chartreuse1", {0.498039 , 1.000000 , 0.000000 }},
921 {"chartreuse2", {0.462745 , 0.933333 , 0.000000 }},
922 {"chartreuse3", {0.400000 , 0.803922 , 0.000000 }},
923 {"chartreuse4", {0.270588 , 0.545098 , 0.000000 }},
924 {"chocolate", {0.823529 , 0.411765 , 0.117647 }},
925 {"chocolate1", {1.000000 , 0.498039 , 0.141176 }},
926 {"chocolate2", {0.933333 , 0.462745 , 0.129412 }},
927 {"chocolate3", {0.803922 , 0.400000 , 0.113725 }},
928 {"chocolate4", {0.545098 , 0.270588 , 0.074510 }},
929 {"coral", {1.000000 , 0.498039 , 0.313725 }},
930 {"coral1", {1.000000 , 0.447059 , 0.337255 }},
931 {"coral2", {0.933333 , 0.415686 , 0.313725 }},
932 {"coral3", {0.803922 , 0.356863 , 0.270588 }},
933 {"coral4", {0.545098 , 0.243137 , 0.184314 }},
934 {"cornflower_blue", {0.392157 , 0.584314 , 0.929412 }},
935 {"cornsilk", {1.000000 , 0.972549 , 0.862745 }},
936 {"cornsilk1", {1.000000 , 0.972549 , 0.862745 }},
937 {"cornsilk2", {0.933333 , 0.909804 , 0.803922 }},
938 {"cornsilk3", {0.803922 , 0.784314 , 0.694118 }},
939 {"cornsilk4", {0.545098 , 0.533333 , 0.470588 }},
940 {"cyan", {0.000000 , 1.000000 , 1.000000 }},
941 {"cyan1", {0.000000 , 1.000000 , 1.000000 }},
942 {"cyan2", {0.000000 , 0.933333 , 0.933333 }},
943 {"cyan3", {0.000000 , 0.803922 , 0.803922 }},
944 {"cyan4", {0.000000 , 0.545098 , 0.545098 }},
945 {"dark_goldenrod", {0.721569 , 0.525490 , 0.043137 }},
946 {"dark_green", {0.000000 , 0.392157 , 0.000000 }},
947 {"dark_khaki", {0.741176 , 0.717647 , 0.419608 }},
948 {"dark_olive_green", {0.333333 , 0.419608 , 0.184314 }},
949 {"dark_orange", {1.000000 , 0.549020 , 0.000000 }},
950 {"dark_orchid", {0.600000 , 0.196078 , 0.800000 }},
951 {"dark_salmon", {0.913725 , 0.588235 , 0.478431 }},
952 {"dark_sea_green", {0.560784 , 0.737255 , 0.560784 }},
953 {"dark_slate_blue", {0.282353 , 0.239216 , 0.545098 }},
954 {"dark_slate_gray", {0.184314 , 0.309804 , 0.309804 }},
955 {"dark_slate_grey", {0.184314 , 0.309804 , 0.309804 }},
956 {"dark_turquoise", {0.000000 , 0.807843 , 0.819608 }},
957 {"dark_violet", {0.580392 , 0.000000 , 0.827451 }},
958 {"deep_pink", {1.000000 , 0.078431 , 0.576471 }},
959 {"deep_sky_blue", {0.000000 , 0.749020 , 1.000000 }},
960 {"dim_gray", {0.411765 , 0.411765 , 0.411765 }},
961 {"dim_grey", {0.411765 , 0.411765 , 0.411765 }},
962 {"dodger_blue", {0.117647 , 0.564706 , 1.000000 }},
963 {"firebrick", {0.698039 , 0.133333 , 0.133333 }},
964 {"firebrick1", {1.000000 , 0.188235 , 0.188235 }},
965 {"firebrick2", {0.933333 , 0.172549 , 0.172549 }},
966 {"firebrick3", {0.803922 , 0.149020 , 0.149020 }},
967 {"firebrick4", {0.545098 , 0.101961 , 0.101961 }},
968 {"floral_white", {1.000000 , 0.980392 , 0.941176 }},
969 {"forest_green", {0.133333 , 0.545098 , 0.133333 }},
970 {"gainsboro", {0.862745 , 0.862745 , 0.862745 }},
971 {"ghost_white", {0.972549 , 0.972549 , 1.000000 }},
972 {"gold", {1.000000 , 0.843137 , 0.000000 }},
973 {"gold1", {1.000000 , 0.843137 , 0.000000 }},
974 {"gold2", {0.933333 , 0.788235 , 0.000000 }},
975 {"gold3", {0.803922 , 0.678431 , 0.000000 }},
976 {"gold4", {0.545098 , 0.458824 , 0.000000 }},
977 {"goldenrod", {0.854902 , 0.647059 , 0.125490 }},
978 {"goldenrod1", {1.000000 , 0.756863 , 0.145098 }},
979 {"goldenrod2", {0.933333 , 0.705882 , 0.133333 }},
980 {"goldenrod3", {0.803922 , 0.607843 , 0.113725 }},
981 {"goldenrod4", {0.545098 , 0.411765 , 0.078431 }},
982 {"gray", {0.752941 , 0.752941 , 0.752941 }},
983 {"gray0", {0.000000 , 0.000000 , 0.000000 }},
984 {"gray1", {0.011765 , 0.011765 , 0.011765 }},
985 {"gray10", {0.101961 , 0.101961 , 0.101961 }},
986 {"gray100", {1.000000 , 1.000000 , 1.000000 }},
987 {"gray11", {0.109804 , 0.109804 , 0.109804 }},
988 {"gray12", {0.121569 , 0.121569 , 0.121569 }},
989 {"gray13", {0.129412 , 0.129412 , 0.129412 }},
990 {"gray14", {0.141176 , 0.141176 , 0.141176 }},
991 {"gray15", {0.149020 , 0.149020 , 0.149020 }},
992 {"gray16", {0.160784 , 0.160784 , 0.160784 }},
993 {"gray17", {0.168627 , 0.168627 , 0.168627 }},
994 {"gray18", {0.180392 , 0.180392 , 0.180392 }},
995 {"gray19", {0.188235 , 0.188235 , 0.188235 }},
996 {"gray2", {0.019608 , 0.019608 , 0.019608 }},
997 {"gray20", {0.200000 , 0.200000 , 0.200000 }},
998 {"gray21", {0.211765 , 0.211765 , 0.211765 }},
999 {"gray22", {0.219608 , 0.219608 , 0.219608 }},
1000 {"gray23", {0.231373 , 0.231373 , 0.231373 }},
1001 {"gray24", {0.239216 , 0.239216 , 0.239216 }},
1002 {"gray25", {0.250980 , 0.250980 , 0.250980 }},
1003 {"gray26", {0.258824 , 0.258824 , 0.258824 }},
1004 {"gray27", {0.270588 , 0.270588 , 0.270588 }},
1005 {"gray28", {0.278431 , 0.278431 , 0.278431 }},
1006 {"gray29", {0.290196 , 0.290196 , 0.290196 }},
1007 {"gray3", {0.031373 , 0.031373 , 0.031373 }},
1008 {"gray30", {0.301961 , 0.301961 , 0.301961 }},
1009 {"gray31", {0.309804 , 0.309804 , 0.309804 }},
1010 {"gray32", {0.321569 , 0.321569 , 0.321569 }},
1011 {"gray33", {0.329412 , 0.329412 , 0.329412 }},
1012 {"gray34", {0.341176 , 0.341176 , 0.341176 }},
1013 {"gray35", {0.349020 , 0.349020 , 0.349020 }},
1014 {"gray36", {0.360784 , 0.360784 , 0.360784 }},
1015 {"gray37", {0.368627 , 0.368627 , 0.368627 }},
1016 {"gray38", {0.380392 , 0.380392 , 0.380392 }},
1017 {"gray39", {0.388235 , 0.388235 , 0.388235 }},
1018 {"gray4", {0.039216 , 0.039216 , 0.039216 }},
1019 {"gray40", {0.400000 , 0.400000 , 0.400000 }},
1020 {"gray41", {0.411765 , 0.411765 , 0.411765 }},
1021 {"gray42", {0.419608 , 0.419608 , 0.419608 }},
1022 {"gray43", {0.431373 , 0.431373 , 0.431373 }},
1023 {"gray44", {0.439216 , 0.439216 , 0.439216 }},
1024 {"gray45", {0.450980 , 0.450980 , 0.450980 }},
1025 {"gray46", {0.458824 , 0.458824 , 0.458824 }},
1026 {"gray47", {0.470588 , 0.470588 , 0.470588 }},
1027 {"gray48", {0.478431 , 0.478431 , 0.478431 }},
1028 {"gray49", {0.490196 , 0.490196 , 0.490196 }},
1029 {"gray5", {0.050980 , 0.050980 , 0.050980 }},
1030 {"gray50", {0.498039 , 0.498039 , 0.498039 }},
1031 {"gray51", {0.509804 , 0.509804 , 0.509804 }},
1032 {"gray52", {0.521569 , 0.521569 , 0.521569 }},
1033 {"gray53", {0.529412 , 0.529412 , 0.529412 }},
1034 {"gray54", {0.541176 , 0.541176 , 0.541176 }},
1035 {"gray55", {0.549020 , 0.549020 , 0.549020 }},
1036 {"gray56", {0.560784 , 0.560784 , 0.560784 }},
1037 {"gray57", {0.568627 , 0.568627 , 0.568627 }},
1038 {"gray58", {0.580392 , 0.580392 , 0.580392 }},
1039 {"gray59", {0.588235 , 0.588235 , 0.588235 }},
1040 {"gray6", {0.058824 , 0.058824 , 0.058824 }},
1041 {"gray60", {0.600000 , 0.600000 , 0.600000 }},
1042 {"gray61", {0.611765 , 0.611765 , 0.611765 }},
1043 {"gray62", {0.619608 , 0.619608 , 0.619608 }},
1044 {"gray63", {0.631373 , 0.631373 , 0.631373 }},
1045 {"gray64", {0.639216 , 0.639216 , 0.639216 }},
1046 {"gray65", {0.650980 , 0.650980 , 0.650980 }},
1047 {"gray66", {0.658824 , 0.658824 , 0.658824 }},
1048 {"gray67", {0.670588 , 0.670588 , 0.670588 }},
1049 {"gray68", {0.678431 , 0.678431 , 0.678431 }},
1050 {"gray69", {0.690196 , 0.690196 , 0.690196 }},
1051 {"gray7", {0.070588 , 0.070588 , 0.070588 }},
1052 {"gray70", {0.701961 , 0.701961 , 0.701961 }},
1053 {"gray71", {0.709804 , 0.709804 , 0.709804 }},
1054 {"gray72", {0.721569 , 0.721569 , 0.721569 }},
1055 {"gray73", {0.729412 , 0.729412 , 0.729412 }},
1056 {"gray74", {0.741176 , 0.741176 , 0.741176 }},
1057 {"gray75", {0.749020 , 0.749020 , 0.749020 }},
1058 {"gray76", {0.760784 , 0.760784 , 0.760784 }},
1059 {"gray77", {0.768627 , 0.768627 , 0.768627 }},
1060 {"gray78", {0.780392 , 0.780392 , 0.780392 }},
1061 {"gray79", {0.788235 , 0.788235 , 0.788235 }},
1062 {"gray8", {0.078431 , 0.078431 , 0.078431 }},
1063 {"gray80", {0.800000 , 0.800000 , 0.800000 }},
1064 {"gray81", {0.811765 , 0.811765 , 0.811765 }},
1065 {"gray82", {0.819608 , 0.819608 , 0.819608 }},
1066 {"gray83", {0.831373 , 0.831373 , 0.831373 }},
1067 {"gray84", {0.839216 , 0.839216 , 0.839216 }},
1068 {"gray85", {0.850980 , 0.850980 , 0.850980 }},
1069 {"gray86", {0.858824 , 0.858824 , 0.858824 }},
1070 {"gray87", {0.870588 , 0.870588 , 0.870588 }},
1071 {"gray88", {0.878431 , 0.878431 , 0.878431 }},
1072 {"gray89", {0.890196 , 0.890196 , 0.890196 }},
1073 {"gray9", {0.090196 , 0.090196 , 0.090196 }},
1074 {"gray90", {0.898039 , 0.898039 , 0.898039 }},
1075 {"gray91", {0.909804 , 0.909804 , 0.909804 }},
1076 {"gray92", {0.921569 , 0.921569 , 0.921569 }},
1077 {"gray93", {0.929412 , 0.929412 , 0.929412 }},
1078 {"gray94", {0.941176 , 0.941176 , 0.941176 }},
1079 {"gray95", {0.949020 , 0.949020 , 0.949020 }},
1080 {"gray96", {0.960784 , 0.960784 , 0.960784 }},
1081 {"gray97", {0.968627 , 0.968627 , 0.968627 }},
1082 {"gray98", {0.980392 , 0.980392 , 0.980392 }},
1083 {"gray99", {0.988235 , 0.988235 , 0.988235 }},
1084 {"green", {0.000000 , 1.000000 , 0.000000 }},
1085 {"green1", {0.000000 , 1.000000 , 0.000000 }},
1086 {"green2", {0.000000 , 0.933333 , 0.000000 }},
1087 {"green3", {0.000000 , 0.803922 , 0.000000 }},
1088 {"green4", {0.000000 , 0.545098 , 0.000000 }},
1089 {"green_yellow", {0.678431 , 1.000000 , 0.184314 }},
1090 {"grey", {0.752941 , 0.752941 , 0.752941 }},
1091 {"grey0", {0.000000 , 0.000000 , 0.000000 }},
1092 {"grey1", {0.011765 , 0.011765 , 0.011765 }},
1093 {"grey10", {0.101961 , 0.101961 , 0.101961 }},
1094 {"grey100", {1.000000 , 1.000000 , 1.000000 }},
1095 {"grey11", {0.109804 , 0.109804 , 0.109804 }},
1096 {"grey12", {0.121569 , 0.121569 , 0.121569 }},
1097 {"grey13", {0.129412 , 0.129412 , 0.129412 }},
1098 {"grey14", {0.141176 , 0.141176 , 0.141176 }},
1099 {"grey15", {0.149020 , 0.149020 , 0.149020 }},
1100 {"grey16", {0.160784 , 0.160784 , 0.160784 }},
1101 {"grey17", {0.168627 , 0.168627 , 0.168627 }},
1102 {"grey18", {0.180392 , 0.180392 , 0.180392 }},
1103 {"grey19", {0.188235 , 0.188235 , 0.188235 }},
1104 {"grey2", {0.019608 , 0.019608 , 0.019608 }},
1105 {"grey20", {0.200000 , 0.200000 , 0.200000 }},
1106 {"grey21", {0.211765 , 0.211765 , 0.211765 }},
1107 {"grey22", {0.219608 , 0.219608 , 0.219608 }},
1108 {"grey23", {0.231373 , 0.231373 , 0.231373 }},
1109 {"grey24", {0.239216 , 0.239216 , 0.239216 }},
1110 {"grey25", {0.250980 , 0.250980 , 0.250980 }},
1111 {"grey26", {0.258824 , 0.258824 , 0.258824 }},
1112 {"grey27", {0.270588 , 0.270588 , 0.270588 }},
1113 {"grey28", {0.278431 , 0.278431 , 0.278431 }},
1114 {"grey29", {0.290196 , 0.290196 , 0.290196 }},
1115 {"grey3", {0.031373 , 0.031373 , 0.031373 }},
1116 {"grey30", {0.301961 , 0.301961 , 0.301961 }},
1117 {"grey31", {0.309804 , 0.309804 , 0.309804 }},
1118 {"grey32", {0.321569 , 0.321569 , 0.321569 }},
1119 {"grey33", {0.329412 , 0.329412 , 0.329412 }},
1120 {"grey34", {0.341176 , 0.341176 , 0.341176 }},
1121 {"grey35", {0.349020 , 0.349020 , 0.349020 }},
1122 {"grey36", {0.360784 , 0.360784 , 0.360784 }},
1123 {"grey37", {0.368627 , 0.368627 , 0.368627 }},
1124 {"grey38", {0.380392 , 0.380392 , 0.380392 }},
1125 {"grey39", {0.388235 , 0.388235 , 0.388235 }},
1126 {"grey4", {0.039216 , 0.039216 , 0.039216 }},
1127 {"grey40", {0.400000 , 0.400000 , 0.400000 }},
1128 {"grey41", {0.411765 , 0.411765 , 0.411765 }},
1129 {"grey42", {0.419608 , 0.419608 , 0.419608 }},
1130 {"grey43", {0.431373 , 0.431373 , 0.431373 }},
1131 {"grey44", {0.439216 , 0.439216 , 0.439216 }},
1132 {"grey45", {0.450980 , 0.450980 , 0.450980 }},
1133 {"grey46", {0.458824 , 0.458824 , 0.458824 }},
1134 {"grey47", {0.470588 , 0.470588 , 0.470588 }},
1135 {"grey48", {0.478431 , 0.478431 , 0.478431 }},
1136 {"grey49", {0.490196 , 0.490196 , 0.490196 }},
1137 {"grey5", {0.050980 , 0.050980 , 0.050980 }},
1138 {"grey50", {0.498039 , 0.498039 , 0.498039 }},
1139 {"grey51", {0.509804 , 0.509804 , 0.509804 }},
1140 {"grey52", {0.521569 , 0.521569 , 0.521569 }},
1141 {"grey53", {0.529412 , 0.529412 , 0.529412 }},
1142 {"grey54", {0.541176 , 0.541176 , 0.541176 }},
1143 {"grey55", {0.549020 , 0.549020 , 0.549020 }},
1144 {"grey56", {0.560784 , 0.560784 , 0.560784 }},
1145 {"grey57", {0.568627 , 0.568627 , 0.568627 }},
1146 {"grey58", {0.580392 , 0.580392 , 0.580392 }},
1147 {"grey59", {0.588235 , 0.588235 , 0.588235 }},
1148 {"grey6", {0.058824 , 0.058824 , 0.058824 }},
1149 {"grey60", {0.600000 , 0.600000 , 0.600000 }},
1150 {"grey61", {0.611765 , 0.611765 , 0.611765 }},
1151 {"grey62", {0.619608 , 0.619608 , 0.619608 }},
1152 {"grey63", {0.631373 , 0.631373 , 0.631373 }},
1153 {"grey64", {0.639216 , 0.639216 , 0.639216 }},
1154 {"grey65", {0.650980 , 0.650980 , 0.650980 }},
1155 {"grey66", {0.658824 , 0.658824 , 0.658824 }},
1156 {"grey67", {0.670588 , 0.670588 , 0.670588 }},
1157 {"grey68", {0.678431 , 0.678431 , 0.678431 }},
1158 {"grey69", {0.690196 , 0.690196 , 0.690196 }},
1159 {"grey7", {0.070588 , 0.070588 , 0.070588 }},
1160 {"grey70", {0.701961 , 0.701961 , 0.701961 }},
1161 {"grey71", {0.709804 , 0.709804 , 0.709804 }},
1162 {"grey72", {0.721569 , 0.721569 , 0.721569 }},
1163 {"grey73", {0.729412 , 0.729412 , 0.729412 }},
1164 {"grey74", {0.741176 , 0.741176 , 0.741176 }},
1165 {"grey75", {0.749020 , 0.749020 , 0.749020 }},
1166 {"grey76", {0.760784 , 0.760784 , 0.760784 }},
1167 {"grey77", {0.768627 , 0.768627 , 0.768627 }},
1168 {"grey78", {0.780392 , 0.780392 , 0.780392 }},
1169 {"grey79", {0.788235 , 0.788235 , 0.788235 }},
1170 {"grey8", {0.078431 , 0.078431 , 0.078431 }},
1171 {"grey80", {0.800000 , 0.800000 , 0.800000 }},
1172 {"grey81", {0.811765 , 0.811765 , 0.811765 }},
1173 {"grey82", {0.819608 , 0.819608 , 0.819608 }},
1174 {"grey83", {0.831373 , 0.831373 , 0.831373 }},
1175 {"grey84", {0.839216 , 0.839216 , 0.839216 }},
1176 {"grey85", {0.850980 , 0.850980 , 0.850980 }},
1177 {"grey86", {0.858824 , 0.858824 , 0.858824 }},
1178 {"grey87", {0.870588 , 0.870588 , 0.870588 }},
1179 {"grey88", {0.878431 , 0.878431 , 0.878431 }},
1180 {"grey89", {0.890196 , 0.890196 , 0.890196 }},
1181 {"grey9", {0.090196 , 0.090196 , 0.090196 }},
1182 {"grey90", {0.898039 , 0.898039 , 0.898039 }},
1183 {"grey91", {0.909804 , 0.909804 , 0.909804 }},
1184 {"grey92", {0.921569 , 0.921569 , 0.921569 }},
1185 {"grey93", {0.929412 , 0.929412 , 0.929412 }},
1186 {"grey94", {0.941176 , 0.941176 , 0.941176 }},
1187 {"grey95", {0.949020 , 0.949020 , 0.949020 }},
1188 {"grey96", {0.960784 , 0.960784 , 0.960784 }},
1189 {"grey97", {0.968627 , 0.968627 , 0.968627 }},
1190 {"grey98", {0.980392 , 0.980392 , 0.980392 }},
1191 {"grey99", {0.988235 , 0.988235 , 0.988235 }},
1192 {"honeydew", {0.941176 , 1.000000 , 0.941176 }},
1193 {"honeydew1", {0.941176 , 1.000000 , 0.941176 }},
1194 {"honeydew2", {0.878431 , 0.933333 , 0.878431 }},
1195 {"honeydew3", {0.756863 , 0.803922 , 0.756863 }},
1196 {"honeydew4", {0.513725 , 0.545098 , 0.513725 }},
1197 {"hot_pink", {1.000000 , 0.411765 , 0.705882 }},
1198 {"indian_red", {0.803922 , 0.360784 , 0.360784 }},
1199 {"ivory", {1.000000 , 1.000000 , 0.941176 }},
1200 {"ivory1", {1.000000 , 1.000000 , 0.941176 }},
1201 {"ivory2", {0.933333 , 0.933333 , 0.878431 }},
1202 {"ivory3", {0.803922 , 0.803922 , 0.756863 }},
1203 {"ivory4", {0.545098 , 0.545098 , 0.513725 }},
1204 {"khaki", {0.941176 , 0.901961 , 0.549020 }},
1205 {"khaki1", {1.000000 , 0.964706 , 0.560784 }},
1206 {"khaki2", {0.933333 , 0.901961 , 0.521569 }},
1207 {"khaki3", {0.803922 , 0.776471 , 0.450980 }},
1208 {"khaki4", {0.545098 , 0.525490 , 0.305882 }},
1209 {"lavender", {0.901961 , 0.901961 , 0.980392 }},
1210 {"lavender_blush", {1.000000 , 0.941176 , 0.960784 }},
1211 {"lawn_green", {0.486275 , 0.988235 , 0.000000 }},
1212 {"lemon_chiffon", {1.000000 , 0.980392 , 0.803922 }},
1213 {"light_blue", {0.678431 , 0.847059 , 0.901961 }},
1214 {"light_coral", {0.941176 , 0.501961 , 0.501961 }},
1215 {"light_cyan", {0.878431 , 1.000000 , 1.000000 }},
1216 {"light_goldenrod", {0.933333 , 0.866667 , 0.509804 }},
1217 {"light_goldenrod_yellow", {0.980392 , 0.980392 , 0.823529 }},
1218 {"light_gray", {0.827451 , 0.827451 , 0.827451 }},
1219 {"light_grey", {0.827451 , 0.827451 , 0.827451 }},
1220 {"light_pink", {1.000000 , 0.713725 , 0.756863 }},
1221 {"light_salmon", {1.000000 , 0.627451 , 0.478431 }},
1222 {"light_sea_green", {0.125490 , 0.698039 , 0.666667 }},
1223 {"light_sky_blue", {0.529412 , 0.807843 , 0.980392 }},
1224 {"light_slate_blue", {0.517647 , 0.439216 , 1.000000 }},
1225 {"light_slate_gray", {0.466667 , 0.533333 , 0.600000 }},
1226 {"light_slate_grey", {0.466667 , 0.533333 , 0.600000 }},
1227 {"light_steel_blue", {0.690196 , 0.768627 , 0.870588 }},
1228 {"light_yellow", {1.000000 , 1.000000 , 0.878431 }},
1229 {"lime_green", {0.196078 , 0.803922 , 0.196078 }},
1230 {"linen", {0.980392 , 0.941176 , 0.901961 }},
1231 {"magenta", {1.000000 , 0.000000 , 1.000000 }},
1232 {"magenta1", {1.000000 , 0.000000 , 1.000000 }},
1233 {"magenta2", {0.933333 , 0.000000 , 0.933333 }},
1234 {"magenta3", {0.803922 , 0.000000 , 0.803922 }},
1235 {"magenta4", {0.545098 , 0.000000 , 0.545098 }},
1236 {"maroon", {0.690196 , 0.188235 , 0.376471 }},
1237 {"maroon1", {1.000000 , 0.203922 , 0.701961 }},
1238 {"maroon2", {0.933333 , 0.188235 , 0.654902 }},
1239 {"maroon3", {0.803922 , 0.160784 , 0.564706 }},
1240 {"maroon4", {0.545098 , 0.109804 , 0.384314 }},
1241 {"medium_aquamarine", {0.400000 , 0.803922 , 0.666667 }},
1242 {"medium_blue", {0.000000 , 0.000000 , 0.803922 }},
1243 {"medium_orchid", {0.729412 , 0.333333 , 0.827451 }},
1244 {"medium_purple", {0.576471 , 0.439216 , 0.858824 }},
1245 {"medium_sea_green", {0.235294 , 0.701961 , 0.443137 }},
1246 {"medium_slate_blue", {0.482353 , 0.407843 , 0.933333 }},
1247 {"medium_spring_green", {0.000000 , 0.980392 , 0.603922 }},
1248 {"medium_turquoise", {0.282353 , 0.819608 , 0.800000 }},
1249 {"medium_violet_red", {0.780392 , 0.082353 , 0.521569 }},
1250 {"midnight_blue", {0.098039 , 0.098039 , 0.439216 }},
1251 {"mint_cream", {0.960784 , 1.000000 , 0.980392 }},
1252 {"misty_rose", {1.000000 , 0.894118 , 0.882353 }},
1253 {"moccasin", {1.000000 , 0.894118 , 0.709804 }},
1254 {"navajo_white", {1.000000 , 0.870588 , 0.678431 }},
1255 {"navy", {0.000000 , 0.000000 , 0.501961 }},
1256 {"navy_blue", {0.000000 , 0.000000 , 0.501961 }},
1257 {"old_lace", {0.992157 , 0.960784 , 0.901961 }},
1258 {"olive_drab", {0.419608 , 0.556863 , 0.137255 }},
1259 {"orange", {1.000000 , 0.647059 , 0.000000 }},
1260 {"orange1", {1.000000 , 0.647059 , 0.000000 }},
1261 {"orange2", {0.933333 , 0.603922 , 0.000000 }},
1262 {"orange3", {0.803922 , 0.521569 , 0.000000 }},
1263 {"orange4", {0.545098 , 0.352941 , 0.000000 }},
1264 {"orange_red", {1.000000 , 0.270588 , 0.000000 }},
1265 {"orchid", {0.854902 , 0.439216 , 0.839216 }},
1266 {"orchid1", {1.000000 , 0.513725 , 0.980392 }},
1267 {"orchid2", {0.933333 , 0.478431 , 0.913725 }},
1268 {"orchid3", {0.803922 , 0.411765 , 0.788235 }},
1269 {"orchid4", {0.545098 , 0.278431 , 0.537255 }},
1270 {"pale_goldenrod", {0.933333 , 0.909804 , 0.666667 }},
1271 {"pale_green", {0.596078 , 0.984314 , 0.596078 }},
1272 {"pale_turquoise", {0.686275 , 0.933333 , 0.933333 }},
1273 {"pale_violet_red", {0.858824 , 0.439216 , 0.576471 }},
1274 {"papaya_whip", {1.000000 , 0.937255 , 0.835294 }},
1275 {"peach_puff", {1.000000 , 0.854902 , 0.725490 }},
1276 {"peru", {0.803922 , 0.521569 , 0.247059 }},
1277 {"pink", {1.000000 , 0.752941 , 0.796078 }},
1278 {"pink1", {1.000000 , 0.709804 , 0.772549 }},
1279 {"pink2", {0.933333 , 0.662745 , 0.721569 }},
1280 {"pink3", {0.803922 , 0.568627 , 0.619608 }},
1281 {"pink4", {0.545098 , 0.388235 , 0.423529 }},
1282 {"plum", {0.866667 , 0.627451 , 0.866667 }},
1283 {"plum1", {1.000000 , 0.733333 , 1.000000 }},
1284 {"plum2", {0.933333 , 0.682353 , 0.933333 }},
1285 {"plum3", {0.803922 , 0.588235 , 0.803922 }},
1286 {"plum4", {0.545098 , 0.400000 , 0.545098 }},
1287 {"powder_blue", {0.690196 , 0.878431 , 0.901961 }},
1288 {"purple", {0.627451 , 0.125490 , 0.941176 }},
1289 {"purple1", {0.607843 , 0.188235 , 1.000000 }},
1290 {"purple2", {0.568627 , 0.172549 , 0.933333 }},
1291 {"purple3", {0.490196 , 0.149020 , 0.803922 }},
1292 {"purple4", {0.333333 , 0.101961 , 0.545098 }},
1293 {"red", {1.000000 , 0.000000 , 0.000000 }},
1294 {"red1", {1.000000 , 0.000000 , 0.000000 }},
1295 {"red2", {0.933333 , 0.000000 , 0.000000 }},
1296 {"red3", {0.803922 , 0.000000 , 0.000000 }},
1297 {"red4", {0.545098 , 0.000000 , 0.000000 }},
1298 {"rosy_brown", {0.737255 , 0.560784 , 0.560784 }},
1299 {"royal_blue", {0.254902 , 0.411765 , 0.882353 }},
1300 {"saddle_brown", {0.545098 , 0.270588 , 0.074510 }},
1301 {"salmon", {0.980392 , 0.501961 , 0.447059 }},
1302 {"salmon1", {1.000000 , 0.549020 , 0.411765 }},
1303 {"salmon2", {0.933333 , 0.509804 , 0.384314 }},
1304 {"salmon3", {0.803922 , 0.439216 , 0.329412 }},
1305 {"salmon4", {0.545098 , 0.298039 , 0.223529 }},
1306 {"sandy_brown", {0.956863 , 0.643137 , 0.376471 }},
1307 {"sea_green", {0.180392 , 0.545098 , 0.341176 }},
1308 {"seashell", {1.000000 , 0.960784 , 0.933333 }},
1309 {"seashell1", {1.000000 , 0.960784 , 0.933333 }},
1310 {"seashell2", {0.933333 , 0.898039 , 0.870588 }},
1311 {"seashell3", {0.803922 , 0.772549 , 0.749020 }},
1312 {"seashell4", {0.545098 , 0.525490 , 0.509804 }},
1313 {"sienna", {0.627451 , 0.321569 , 0.176471 }},
1314 {"sienna1", {1.000000 , 0.509804 , 0.278431 }},
1315 {"sienna2", {0.933333 , 0.474510 , 0.258824 }},
1316 {"sienna3", {0.803922 , 0.407843 , 0.223529 }},
1317 {"sienna4", {0.545098 , 0.278431 , 0.149020 }},
1318 {"sky_blue", {0.529412 , 0.807843 , 0.921569 }},
1319 {"slate_blue", {0.415686 , 0.352941 , 0.803922 }},
1320 {"slate_gray", {0.439216 , 0.501961 , 0.564706 }},
1321 {"slate_grey", {0.439216 , 0.501961 , 0.564706 }},
1322 {"snow", {1.000000 , 0.980392 , 0.980392 }},
1323 {"snow1", {1.000000 , 0.980392 , 0.980392 }},
1324 {"snow2", {0.933333 , 0.913725 , 0.913725 }},
1325 {"snow3", {0.803922 , 0.788235 , 0.788235 }},
1326 {"snow4", {0.545098 , 0.537255 , 0.537255 }},
1327 {"spring_green", {0.000000 , 1.000000 , 0.498039 }},
1328 {"steel_blue", {0.274510 , 0.509804 , 0.705882 }},
1329 {"tan", {0.823529 , 0.705882 , 0.549020 }},
1330 {"tan1", {1.000000 , 0.647059 , 0.309804 }},
1331 {"tan2", {0.933333 , 0.603922 , 0.286275 }},
1332 {"tan3", {0.803922 , 0.521569 , 0.247059 }},
1333 {"tan4", {0.545098 , 0.352941 , 0.168627 }},
1334 {"thistle", {0.847059 , 0.749020 , 0.847059 }},
1335 {"thistle1", {1.000000 , 0.882353 , 1.000000 }},
1336 {"thistle2", {0.933333 , 0.823529 , 0.933333 }},
1337 {"thistle3", {0.803922 , 0.709804 , 0.803922 }},
1338 {"thistle4", {0.545098 , 0.482353 , 0.545098 }},
1339 {"tomato", {1.000000 , 0.388235 , 0.278431 }},
1340 {"tomato1", {1.000000 , 0.388235 , 0.278431 }},
1341 {"tomato2", {0.933333 , 0.360784 , 0.258824 }},
1342 {"tomato3", {0.803922 , 0.309804 , 0.223529 }},
1343 {"tomato4", {0.545098 , 0.211765 , 0.149020 }},
1344 {"turquoise", {0.250980 , 0.878431 , 0.815686 }},
1345 {"turquoise1", {0.000000 , 0.960784 , 1.000000 }},
1346 {"turquoise2", {0.000000 , 0.898039 , 0.933333 }},
1347 {"turquoise3", {0.000000 , 0.772549 , 0.803922 }},
1348 {"turquoise4", {0.000000 , 0.525490 , 0.545098 }},
1349 {"violet", {0.933333 , 0.509804 , 0.933333 }},
1350 {"violet_red", {0.815686 , 0.125490 , 0.564706 }},
1351 {"wheat", {0.960784 , 0.870588 , 0.701961 }},
1352 {"wheat1", {1.000000 , 0.905882 , 0.729412 }},
1353 {"wheat2", {0.933333 , 0.847059 , 0.682353 }},
1354 {"wheat3", {0.803922 , 0.729412 , 0.588235 }},
1355 {"wheat4", {0.545098 , 0.494118 , 0.400000 }},
1356 {"white", {1.000000 , 1.000000 , 1.000000 }},
1357 {"white_smoke", {0.960784 , 0.960784 , 0.960784 }},
1358 {"yellow", {1.000000 , 1.000000 , 0.000000 }},
1359 {"yellow1", {1.000000 , 1.000000 , 0.000000 }},
1360 {"yellow2", {0.933333 , 0.933333 , 0.000000 }},
1361 {"yellow3", {0.803922 , 0.803922 , 0.000000 }},
1362 {"yellow4", {0.545098 , 0.545098 , 0.000000 }},
1363 {"yellow_green", {0.603922 , 0.803922 , 0.196078} }
1364 } ;
1365
1366 int
1367 LookupColorByName(
1368 char * name,
1369 Vec color
1370 )
1371 {
1372 int rc ;
1373 rc = BinarySearch(name, 0, NCOLORS - 1 , Colors) ;
1374 if (rc < 0) {
1375 return(0) ;
1376 }
1377
1378 VecCopy(Colors[rc].ce_color, color) ;
1379 return 1 ;
1380 }
1381
1382
1383 int
1384 BinarySearch(
1385 char * name,
1386 int l,
1387 int h,
1388 ColorEntry array[]
1389 )
1390 {
1391 int m, rc ;
1392 if (l > h)
1393 return(-1) ;
1394
1395 m = (l + h) / 2 ;
1396
1397 rc = strcmp(name, array[m].ce_name) ;
1398 if (rc == 0)
1399 return m ;
1400 else if (rc < 0)
1401 return BinarySearch(name, l, m-1, array) ;
1402 else
1403 return BinarySearch(name, m + 1, h, array) ;
1404 }