ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cv/nff2rad.c
Revision: 2.6
Committed: Sun Jul 27 22:12:01 2003 UTC (20 years, 8 months ago) by schorsch
Content type: text/plain
Branch: MAIN
Changes since 2.5: +11 -6 lines
Log Message:
Added grouping parens to reduce ambiguity warnings.

File Contents

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