ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/nff2rad.c
Revision: 2.4
Committed: Tue Jul 20 11:34:40 1993 UTC (30 years, 9 months ago) by greg
Content type: text/plain
Branch: MAIN
Changes since 2.3: +11 -9 lines
Log Message:
fixes in materials and light sources (hacks all)

File Contents

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