home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1992 Regents of the University of California */
-
- #ifndef lint
- static char SCCSid[] = "@(#)nff2rad.c 2.2 2/10/92 LBL";
- #endif
-
- /*
- * Convert Neutral File Format input to Radiance scene description.
- *
- * 12/9/90 Greg Ward
- * 02/7/92 Peter Averkamp added X11(MTV)color names &
- * fixed some lf's for direct import of MTV
- * source files
- */
-
- /******************************************************************
-
- Since Eric Haines wrote such excellent documentation of his
- Neutral File Format, I am just going to reprint it here with
- my added comments in braces {}.
-
- Neutral File Format (NFF), by Eric Haines
-
- Draft document #1, 10/3/88
-
- The NFF (Neutral File Format) is designed as a minimal scene description
- language. The language was designed in order to test various rendering
- algorithms and efficiency schemes. It is meant to describe the geometry and
- basic surface characteristics of objects, the placement of lights, and the
- viewing frustum for the eye. Some additional information is provided for
- esthetic reasons (such as the color of the objects, which is not strictly
- necessary for testing rendering algorithms).
-
- Future enhancements include: circle and torus objects, spline surfaces
- with trimming curves, directional lights, characteristics for positional
- lights, CSG descriptions, and probably more by the time you read this.
- Comments, suggestions, and criticisms are all welcome.
-
- At present the NFF file format is used in conjunction with the SPD (Standard
- Procedural Database) software, a package designed to create a variety of
- databases for testing rendering schemes. The SPD package is available
- from Netlib and via ftp from drizzle.cs.uoregon.edu. For more information
- about SPD see "A Proposal for Standard Graphics Environments," IEEE Computer
- Graphics and Applications, vol. 7, no. 11, November 1987, pp. 3-5.
-
- By providing a minimal interface, NFF is meant to act as a simple format to
- allow the programmer to quickly write filters to move from NFF to the
- local file format. Presently the following entities are supported:
- A simple perspective frustum
- A positional (vs. directional) light source description
- A background color description
- A surface properties description
- Polygon, polygonal patch, cylinder/cone, and sphere descriptions
-
- Files are output as lines of text. For each entity, the first line
- defines its type. The rest of the first line and possibly other lines
- contain further information about the entity. Entities include:
-
- "v" - viewing vectors and angles { optionally creates view file }
- "l" - positional light location { it's there, but bad to use }
- "b" - background color { ditto }
- "f" - object material properties { this is flakey }
- "c" - cone or cylinder primitive
- "s" - sphere primitive
- "p" - polygon primitive
- "pp" - polygonal patch primitive { interpreted same as p for now }
-
- These are explained in depth below: { see conversion routines }
-
- ***********************************************************************/
-
- #include <stdio.h>
-
- char *viewfile = NULL; /* view parameters file */
-
- char *progname;
-
-
- main(argc, argv) /* convert NFF file to Radiance */
- int argc;
- char *argv[];
- {
- int i;
-
- progname = argv[0];
- for (i = 1; i < argc; i++)
- if (argc-i > 1 && !strcmp(argv[i], "-vf"))
- viewfile = argv[++i];
- else if (!strncmp(argv[i], "-h",2))
- goto userr;
- else
- break;
- if (argc-i > 1)
- goto userr;
- if (argc-i == 1 && freopen(argv[i], "r", stdin) == NULL) {
- perror(argv[i]);
- exit(1);
- }
- init();
- nff2rad();
- exit(0);
- userr:
- fprintf(stderr, "Usage: %s [-vf viewfile] [input]\n", progname);
- exit(1);
- }
-
-
- init() /* spit out initial definitions */
- {
- printf("# File created by %s\n", progname);
- printf("\nvoid light light\n");
- printf("0\n0\n3 1 1 1\n");
- printf("\nvoid plastic fill\n");
- printf("0\n0\n5 .5 .5 .5 0 0\n");
- }
-
-
- nff2rad() /* convert NFF on stdin to Radiance on stdout */
- {
- register int c;
-
- while ((c = getchar()) != EOF)
- switch (c) {
- case ' ': /* white space */
- case '\t':
- case '\n':
- case '\f':
- case '\r':
- continue;
- case '#': /* comment */
- comment();
- break;
- case 'v': /* view point */
- view();
- break;
- case 'l': /* light source */
- light();
- break;
- case 'b': /* background color */
- background();
- break;
- case 'f': /* fill material */
- fill();
- break;
- case 'c': /* cylinder or cone */
- cone();
- break;
- case 's': /* sphere */
- sphere();
- break;
- case 'p': /* polygon or patch */
- poly();
- break;
- default: /* unknown */
- fprintf(stderr, "%c: unknown NFF primitive\n", c);
- exit(1);
- }
- }
-
-
- /*******************************************
-
- Comment. Description:
- "#" [ string ]
-
- Format:
- # [ string ]
-
- As soon as a "#" character is detected, the rest of the line is considered
- a comment.
-
- ******************/
-
- comment()
- {
- register int c;
-
- putchar('#');
- while ((c = getchar()) != EOF) {
- putchar(c);
- if (c == '\n')
- break;
- }
- }
-
-
- /***************************************************
-
- Viewpoint location. Description:
- "v"
- "from" Fx Fy Fz
- "at" Ax Ay Az
- "up" Ux Uy Uz
- "angle" angle
- "hither" hither
- "resolution" xres yres
-
- Format:
-
- v
- from %g %g %g
- at %g %g %g
- up %g %g %g
- angle %g
- hither %g
- resolution %d %d
-
- The parameters are:
-
- From: the eye location in XYZ.
- At: a position to be at the center of the image, in XYZ world
- coordinates. A.k.a. "lookat".
- Up: a vector defining which direction is up, as an XYZ vector.
- Angle: in degrees, defined as from the center of top pixel row to
- bottom pixel row and left column to right column.
- Resolution: in pixels, in x and in y.
-
- Note that no assumptions are made about normalizing the data (e.g. the
- from-at distance does not have to be 1). Also, vectors are not
- required to be perpendicular to each other.
-
- For all databases some viewing parameters are always the same:
- Yon is "at infinity."
- Aspect ratio is 1.0.
-
- A view entity must be defined before any objects are defined (this
- requirement is so that NFF files can be used by hidden surface machines).
-
- ***************/
-
- view()
- {
- static FILE *fp = NULL;
- float from[3], at[3], up[3], angle;
-
- if (scanf(" from %f %f %f", &from[0], &from[1], &from[2]) != 3)
- goto fmterr;
- if (scanf(" at %f %f %f", &at[0], &at[1], &at[2]) != 3)
- goto fmterr;
- if (scanf(" up %f %f %f", &up[0], &up[1], &up[2]) != 3)
- goto fmterr;
- if (scanf(" angle %f", &angle) != 1)
- goto fmterr;
- scanf(" hither %*f");
- scanf(" resolution %*d %*d");
- if (viewfile != NULL) {
- if (fp == NULL && (fp = fopen(viewfile, "a")) == NULL) {
- perror(viewfile);
- exit(1);
- }
- fprintf(fp,
- "VIEW= -vp %g %g %g -vd %g %g %g -vu %g %g %g -vh %g -vv %g\n",
- from[0], from[1], from[2],
- at[0]-from[0], at[1]-from[1], at[2]-from[2],
- up[0], up[1], up[2],
- angle, angle);
- }
- return;
- fmterr:
- fprintf(stderr, "%s: view syntax error\n", progname);
- exit(1);
- }
-
-
- /********************************
-
- Positional light. A light is defined by XYZ position. Description:
- "l" X Y Z
-
- Format:
- l %g %g %g
-
- All light entities must be defined before any objects are defined (this
- requirement is so that NFF files can be used by hidden surface machines).
- Lights have a non-zero intensity of no particular value [this definition
- may change soon, with the addition of an intensity and/or color].
-
- **************************/
-
- light()
- {
- static int nlights = 0;
- register int c;
- float x, y, z;
-
- if (scanf("%f %f %f",&x, &y, &z) != 3) {
- fprintf(stderr, "%s: light source syntax error\n", progname);
- exit(1);
- }
- while ((c = getchar()) != EOF && c != '\n')
- ;
- printf("\nlight sphere l%d \n", ++nlights);
- printf("0\n0\n4 %g %g %g 1\n", x, y, z);
- }
-
-
- /**************************************************
-
- Background color. A color is simply RGB with values between 0 and 1:
- "b" R G B
-
- Format:
- b %g %g %g
-
- If no background color is set, assume RGB = {0,0,0}.
-
- ********************/
-
- background()
- {
- float r, g, b;
- char colname[50];
- double cvec[3];
-
- if (scanf("%s", colname) != 1) {
- fprintf(stderr,"%s: background syntax error\n",progname);exit(1);
- }
- if(LookupColorByName(colname,cvec)==1){
- r=cvec[0];g=cvec[1];b=cvec[2];
- }else{
- if(sscanf(colname,"%f",&r)!=1 ||
- scanf("%f %f", &g, &b) !=2) {
- fprintf(stderr, "%s: background syntax error\n", progname);
- exit(1);
- }
- }
- printf("\nvoid glow backg_color\n");
- printf("0\n0\n4 %g %g %g 0\n", r, g, b);
- printf("\nbackg_color source background\n");
- printf("0\n0\n4 0 0 1 360\n");
- }
-
-
- /****************************************************
-
- Fill color and shading parameters. Description:
- "f" red green blue Kd Ks Shine T index_of_refraction
-
- Format:
- f %g %g %g %g %g %g %g %g
-
- RGB is in terms of 0.0 to 1.0.
-
- Kd is the diffuse component, Ks the specular, Shine is the Phong cosine
- power for highlights, T is transmittance (fraction of light passed per
- unit). Usually, 0 <= Kd <= 1 and 0 <= Ks <= 1, though it is not required
- that Kd + Ks == 1. Note that transmitting objects ( T > 0 ) are considered
- to have two sides for algorithms that need these (normally objects have
- one side).
-
- The fill color is used to color the objects following it until a new color
- is assigned.
-
- *********************/
-
- fill()
- {
- float r, g, b, d, s, p, t, n;
- char colname[50];
- double cvec[3];
-
- if (scanf("%s", colname) != 1) {
- fprintf(stderr,"%s: fill syntax error\n",progname);exit(1);
- }
- if(LookupColorByName(colname,cvec)==1){
- r=cvec[0];g=cvec[1];b=cvec[2];
- }else{
- if(sscanf(colname,"%f",&r)!=1 ||
- scanf("%f %f", &g, &b) !=2) {
- fprintf(stderr, "%s: fill syntax error\n", progname);
- exit(1);
- }
- }
- if (scanf("%f %f %f %f %f", &d, &s, &p, &t, &n) != 5) {
- fprintf(stderr, "%s: fill material syntax error\n", progname);
- exit(1);
- }
- d /= 1.-s-t;
- r *= d;
- g *= d;
- b *= d;
- if (p > 1.)
- p = 1./p;
- if (t > .001) { /* has transmission */
- printf("\nvoid trans fill\n");
- printf("0\n0\n7 %g %g %g %g 0 %g 1\n", r, g, b, s, t);
- } else { /* no transmission */
- printf("\nvoid plastic fill\n");
- printf("0\n0\n5 %g %g %g %g %g\n", r, g, b, s, p);
- }
- }
-
-
- /*****************************************************
-
- Cylinder or cone. A cylinder is defined as having a radius and an axis
- defined by two points, which also define the top and bottom edge of the
- cylinder. A cone is defined similarly, the difference being that the apex
- and base radii are different. The apex radius is defined as being smaller
- than the base radius. Note that the surface exists without endcaps. The
- cone or cylinder description:
-
- "c"
- base.x base.y base.z base_radius
- apex.x apex.y apex.z apex_radius
-
- Format:
- c
- %g %g %g %g
- %g %g %g %g
-
- A negative value for both radii means that only the inside of the object is
- visible (objects are normally considered one sided, with the outside
- visible). Note that the base and apex cannot be coincident for a cylinder
- or cone.
-
- ************************/
-
- cone()
- {
- static int ncs = 0;
- int invert;
- float x0, y0, z0, x1, y1, z1, r0, r1;
-
- if (scanf("%f %f %f %f %f %f %f %f", &x0, &y0, &z0, &r0,
- &x1, &y1, &z1, &r1) != 8) {
- fprintf(stderr, "%s: cylinder or cone syntax error\n",
- progname);
- exit(1);
- }
- if (invert = r0 < 0.) {
- r0 = -r0;
- r1 = -r1;
- }
- if (r0-r1 < .001 && r1-r0 < .001) { /* cylinder */
- printf("\nfill %s c%d \n", invert?"tube":"cylinder", ++ncs);
- printf("0\n0\n7\n");
- printf("\t%g\t%g\t%g\n", x0, y0, z0);
- printf("\t%g\t%g\t%g\n", x1, y1, z1);
- printf("\t%g\n", r0);
- } else { /* cone */
- printf("\nfill %s c%d \n", invert?"cup":"cone", ++ncs);
- printf("0\n0\n8\n");
- printf("\t%g\t%g\t%g\n", x0, y0, z0);
- printf("\t%g\t%g\t%g\n", x1, y1, z1);
- printf("\t%g\t%g\n", r0, r1);
- }
- }
-
-
- /*****************************************
-
- Sphere. A sphere is defined by a radius and center position:
- "s" center.x center.y center.z radius
-
- Format:
- s %g %g %g %g
-
- If the radius is negative, then only the sphere's inside is visible
- (objects are normally considered one sided, with the outside visible).
-
- ******************/
-
- sphere()
- {
- static int nspheres = 0;
- float x, y, z, r;
-
- if (scanf("%f %f %f %f", &x, &y, &z, &r) != 4) {
- fprintf(stderr, "%s: sphere syntax error\n", progname);
- exit(1);
- }
- if (r < 0.) {
- printf("\nfill bubble s%d \n", ++nspheres);
- printf("0\n0\n4 %g %g %g %g\n", x, y, z, -r);
- } else {
- printf("\nfill sphere s%d \n", ++nspheres);
- printf("0\n0\n4 %g %g %g %g\n", x, y, z, r);
- }
- }
-
-
- /*********************************************
-
- Polygon. A polygon is defined by a set of vertices. With these databases,
- a polygon is defined to have all points coplanar. A polygon has only
- one side, with the order of the vertices being counterclockwise as you
- face the polygon (right-handed coordinate system). The first two edges
- must form a non-zero convex angle, so that the normal and side visibility
- can be determined. Description:
-
- "p" total_vertices
- vert1.x vert1.y vert1.z
- [etc. for total_vertices vertices]
-
- Format:
- p %d
- [ %g %g %g ] <-- for total_vertices vertices
-
- --------
-
- Polygonal patch. A patch is defined by a set of vertices and their normals.
- With these databases, a patch is defined to have all points coplanar.
- A patch has only one side, with the order of the vertices being
- counterclockwise as you face the patch (right-handed coordinate system).
- The first two edges must form a non-zero convex angle, so that the normal
- and side visibility can be determined. Description:
-
- "pp" total_vertices
- vert1.x vert1.y vert1.z norm1.x norm1.y norm1.z
- [etc. for total_vertices vertices]
-
- Format:
- pp %d
- [ %g %g %g %g %g %g ] <-- for total_vertices vertices
-
- *******************/
-
- poly()
- {
- static int npolys = 0;
- int ispatch;
- int nverts;
- float x, y, z;
-
- ispatch = getchar();
- if (ispatch != 'p') {
- ungetc(ispatch, stdin);
- ispatch = 0;
- }
- if (scanf("%d", &nverts) != 1)
- goto fmterr;
- printf("\nfill polygon p%d \n", ++npolys);
- printf("0\n0\n%d\n", 3*nverts);
- while (nverts-- > 0) {
- if (scanf("%f %f %f", &x, &y, &z) != 3)
- goto fmterr;
- if (ispatch)
- scanf("%*f %*f %*f");
- printf("\t%g\t%g\t%g\n", x, y, z);
- }
- return;
- fmterr:
- fprintf(stderr, "%s: polygon or patch syntax error\n", progname);
- exit(1);
- }
- /***********************************************************************
- * $Author: markv $ (Mark VandeWettering, drizzle.cs.uoregon.edu)
- * $Revision: 1.2 $
- * $Date: 88/09/12 12:53:47 $
- * $Log: color.c,v $
- * Revision 1.2 88/09/12 12:53:47 markv
- * Fixed problem in LookupColorbyName, had return ; and return(0).
- * [ Thank you lint! ]
- *
- * Revision 1.1 88/09/11 11:00:37 markv
- * Initial revision
- *
- * Peter Averkamp 92/02/01
- * added complete X11R5 rgb.txt-table, hacked standalone version
- * for nff2rad
- *
- ***********************************************************************/
-
- typedef double Flt ;
- typedef Flt Vec[3] ;
- typedef Vec Point ;
- typedef Vec Color ;
-
- #define VecCopy(a,b) (b)[0]=(a)[0];(b)[1]=(a)[1];(b)[2]=(a)[2];
- #define NCOLORS (738)
-
- typedef struct t_color_entry {
- char * ce_name ;
- Vec ce_color ;
- } ColorEntry ;
-
- #define LESS_THAN -1
- #define GREATER_THAN 1
- #define EQUAL_TO 0
-
- /*
- * Note: These colors must be in sorted order, because we binary search
- * for them.
- *
- * They were swiped from the X-11 distribution. Sorry....
- */
-
- ColorEntry Colors[] = {
- "AliceBlue", {0.941176 , 0.972549 , 1.000000 },
- "AntiqueWhite", {0.980392 , 0.921569 , 0.843137 },
- "AntiqueWhite1", {1.000000 , 0.937255 , 0.858824 },
- "AntiqueWhite2", {0.933333 , 0.874510 , 0.800000 },
- "AntiqueWhite3", {0.803922 , 0.752941 , 0.690196 },
- "AntiqueWhite4", {0.545098 , 0.513725 , 0.470588 },
- "BlanchedAlmond", {1.000000 , 0.921569 , 0.803922 },
- "BlueViolet", {0.541176 , 0.168627 , 0.886275 },
- "CadetBlue", {0.372549 , 0.619608 , 0.627451 },
- "CadetBlue1", {0.596078 , 0.960784 , 1.000000 },
- "CadetBlue2", {0.556863 , 0.898039 , 0.933333 },
- "CadetBlue3", {0.478431 , 0.772549 , 0.803922 },
- "CadetBlue4", {0.325490 , 0.525490 , 0.545098 },
- "CornflowerBlue", {0.392157 , 0.584314 , 0.929412 },
- "DarkGoldenrod", {0.721569 , 0.525490 , 0.043137 },
- "DarkGoldenrod1", {1.000000 , 0.725490 , 0.058824 },
- "DarkGoldenrod2", {0.933333 , 0.678431 , 0.054902 },
- "DarkGoldenrod3", {0.803922 , 0.584314 , 0.047059 },
- "DarkGoldenrod4", {0.545098 , 0.396078 , 0.031373 },
- "DarkGreen", {0.000000 , 0.392157 , 0.000000 },
- "DarkKhaki", {0.741176 , 0.717647 , 0.419608 },
- "DarkOliveGreen", {0.333333 , 0.419608 , 0.184314 },
- "DarkOliveGreen1", {0.792157 , 1.000000 , 0.439216 },
- "DarkOliveGreen2", {0.737255 , 0.933333 , 0.407843 },
- "DarkOliveGreen3", {0.635294 , 0.803922 , 0.352941 },
- "DarkOliveGreen4", {0.431373 , 0.545098 , 0.239216 },
- "DarkOrange", {1.000000 , 0.549020 , 0.000000 },
- "DarkOrange1", {1.000000 , 0.498039 , 0.000000 },
- "DarkOrange2", {0.933333 , 0.462745 , 0.000000 },
- "DarkOrange3", {0.803922 , 0.400000 , 0.000000 },
- "DarkOrange4", {0.545098 , 0.270588 , 0.000000 },
- "DarkOrchid", {0.600000 , 0.196078 , 0.800000 },
- "DarkOrchid1", {0.749020 , 0.243137 , 1.000000 },
- "DarkOrchid2", {0.698039 , 0.227451 , 0.933333 },
- "DarkOrchid3", {0.603922 , 0.196078 , 0.803922 },
- "DarkOrchid4", {0.407843 , 0.133333 , 0.545098 },
- "DarkSalmon", {0.913725 , 0.588235 , 0.478431 },
- "DarkSeaGreen", {0.560784 , 0.737255 , 0.560784 },
- "DarkSeaGreen1", {0.756863 , 1.000000 , 0.756863 },
- "DarkSeaGreen2", {0.705882 , 0.933333 , 0.705882 },
- "DarkSeaGreen3", {0.607843 , 0.803922 , 0.607843 },
- "DarkSeaGreen4", {0.411765 , 0.545098 , 0.411765 },
- "DarkSlateBlue", {0.282353 , 0.239216 , 0.545098 },
- "DarkSlateGray", {0.184314 , 0.309804 , 0.309804 },
- "DarkSlateGray1", {0.592157 , 1.000000 , 1.000000 },
- "DarkSlateGray2", {0.552941 , 0.933333 , 0.933333 },
- "DarkSlateGray3", {0.474510 , 0.803922 , 0.803922 },
- "DarkSlateGray4", {0.321569 , 0.545098 , 0.545098 },
- "DarkSlateGrey", {0.184314 , 0.309804 , 0.309804 },
- "DarkTurquoise", {0.000000 , 0.807843 , 0.819608 },
- "DarkViolet", {0.580392 , 0.000000 , 0.827451 },
- "DeepPink", {1.000000 , 0.078431 , 0.576471 },
- "DeepPink1", {1.000000 , 0.078431 , 0.576471 },
- "DeepPink2", {0.933333 , 0.070588 , 0.537255 },
- "DeepPink3", {0.803922 , 0.062745 , 0.462745 },
- "DeepPink4", {0.545098 , 0.039216 , 0.313725 },
- "DeepSkyBlue", {0.000000 , 0.749020 , 1.000000 },
- "DeepSkyBlue1", {0.000000 , 0.749020 , 1.000000 },
- "DeepSkyBlue2", {0.000000 , 0.698039 , 0.933333 },
- "DeepSkyBlue3", {0.000000 , 0.603922 , 0.803922 },
- "DeepSkyBlue4", {0.000000 , 0.407843 , 0.545098 },
- "DimGray", {0.411765 , 0.411765 , 0.411765 },
- "DimGrey", {0.411765 , 0.411765 , 0.411765 },
- "DodgerBlue", {0.117647 , 0.564706 , 1.000000 },
- "DodgerBlue1", {0.117647 , 0.564706 , 1.000000 },
- "DodgerBlue2", {0.109804 , 0.525490 , 0.933333 },
- "DodgerBlue3", {0.094118 , 0.454902 , 0.803922 },
- "DodgerBlue4", {0.062745 , 0.305882 , 0.545098 },
- "FloralWhite", {1.000000 , 0.980392 , 0.941176 },
- "ForestGreen", {0.133333 , 0.545098 , 0.133333 },
- "GhostWhite", {0.972549 , 0.972549 , 1.000000 },
- "GreenYellow", {0.678431 , 1.000000 , 0.184314 },
- "HotPink", {1.000000 , 0.411765 , 0.705882 },
- "HotPink1", {1.000000 , 0.431373 , 0.705882 },
- "HotPink2", {0.933333 , 0.415686 , 0.654902 },
- "HotPink3", {0.803922 , 0.376471 , 0.564706 },
- "HotPink4", {0.545098 , 0.227451 , 0.384314 },
- "IndianRed", {0.803922 , 0.360784 , 0.360784 },
- "IndianRed1", {1.000000 , 0.415686 , 0.415686 },
- "IndianRed2", {0.933333 , 0.388235 , 0.388235 },
- "IndianRed3", {0.803922 , 0.333333 , 0.333333 },
- "IndianRed4", {0.545098 , 0.227451 , 0.227451 },
- "LavenderBlush", {1.000000 , 0.941176 , 0.960784 },
- "LavenderBlush1", {1.000000 , 0.941176 , 0.960784 },
- "LavenderBlush2", {0.933333 , 0.878431 , 0.898039 },
- "LavenderBlush3", {0.803922 , 0.756863 , 0.772549 },
- "LavenderBlush4", {0.545098 , 0.513725 , 0.525490 },
- "LawnGreen", {0.486275 , 0.988235 , 0.000000 },
- "LemonChiffon", {1.000000 , 0.980392 , 0.803922 },
- "LemonChiffon1", {1.000000 , 0.980392 , 0.803922 },
- "LemonChiffon2", {0.933333 , 0.913725 , 0.749020 },
- "LemonChiffon3", {0.803922 , 0.788235 , 0.647059 },
- "LemonChiffon4", {0.545098 , 0.537255 , 0.439216 },
- "LightBlue", {0.678431 , 0.847059 , 0.901961 },
- "LightBlue1", {0.749020 , 0.937255 , 1.000000 },
- "LightBlue2", {0.698039 , 0.874510 , 0.933333 },
- "LightBlue3", {0.603922 , 0.752941 , 0.803922 },
- "LightBlue4", {0.407843 , 0.513725 , 0.545098 },
- "LightCoral", {0.941176 , 0.501961 , 0.501961 },
- "LightCyan", {0.878431 , 1.000000 , 1.000000 },
- "LightCyan1", {0.878431 , 1.000000 , 1.000000 },
- "LightCyan2", {0.819608 , 0.933333 , 0.933333 },
- "LightCyan3", {0.705882 , 0.803922 , 0.803922 },
- "LightCyan4", {0.478431 , 0.545098 , 0.545098 },
- "LightGoldenrod", {0.933333 , 0.866667 , 0.509804 },
- "LightGoldenrod1", {1.000000 , 0.925490 , 0.545098 },
- "LightGoldenrod2", {0.933333 , 0.862745 , 0.509804 },
- "LightGoldenrod3", {0.803922 , 0.745098 , 0.439216 },
- "LightGoldenrod4", {0.545098 , 0.505882 , 0.298039 },
- "LightGoldenrodYellow", {0.980392 , 0.980392 , 0.823529 },
- "LightGray", {0.827451 , 0.827451 , 0.827451 },
- "LightGrey", {0.827451 , 0.827451 , 0.827451 },
- "LightPink", {1.000000 , 0.713725 , 0.756863 },
- "LightPink1", {1.000000 , 0.682353 , 0.725490 },
- "LightPink2", {0.933333 , 0.635294 , 0.678431 },
- "LightPink3", {0.803922 , 0.549020 , 0.584314 },
- "LightPink4", {0.545098 , 0.372549 , 0.396078 },
- "LightSalmon", {1.000000 , 0.627451 , 0.478431 },
- "LightSalmon1", {1.000000 , 0.627451 , 0.478431 },
- "LightSalmon2", {0.933333 , 0.584314 , 0.447059 },
- "LightSalmon3", {0.803922 , 0.505882 , 0.384314 },
- "LightSalmon4", {0.545098 , 0.341176 , 0.258824 },
- "LightSeaGreen", {0.125490 , 0.698039 , 0.666667 },
- "LightSkyBlue", {0.529412 , 0.807843 , 0.980392 },
- "LightSkyBlue1", {0.690196 , 0.886275 , 1.000000 },
- "LightSkyBlue2", {0.643137 , 0.827451 , 0.933333 },
- "LightSkyBlue3", {0.552941 , 0.713725 , 0.803922 },
- "LightSkyBlue4", {0.376471 , 0.482353 , 0.545098 },
- "LightSlateBlue", {0.517647 , 0.439216 , 1.000000 },
- "LightSlateGray", {0.466667 , 0.533333 , 0.600000 },
- "LightSlateGrey", {0.466667 , 0.533333 , 0.600000 },
- "LightSteelBlue", {0.690196 , 0.768627 , 0.870588 },
- "LightSteelBlue1", {0.792157 , 0.882353 , 1.000000 },
- "LightSteelBlue2", {0.737255 , 0.823529 , 0.933333 },
- "LightSteelBlue3", {0.635294 , 0.709804 , 0.803922 },
- "LightSteelBlue4", {0.431373 , 0.482353 , 0.545098 },
- "LightYellow", {1.000000 , 1.000000 , 0.878431 },
- "LightYellow1", {1.000000 , 1.000000 , 0.878431 },
- "LightYellow2", {0.933333 , 0.933333 , 0.819608 },
- "LightYellow3", {0.803922 , 0.803922 , 0.705882 },
- "LightYellow4", {0.545098 , 0.545098 , 0.478431 },
- "LimeGreen", {0.196078 , 0.803922 , 0.196078 },
- "MediumAquamarine", {0.400000 , 0.803922 , 0.666667 },
- "MediumBlue", {0.000000 , 0.000000 , 0.803922 },
- "MediumOrchid", {0.729412 , 0.333333 , 0.827451 },
- "MediumOrchid1", {0.878431 , 0.400000 , 1.000000 },
- "MediumOrchid2", {0.819608 , 0.372549 , 0.933333 },
- "MediumOrchid3", {0.705882 , 0.321569 , 0.803922 },
- "MediumOrchid4", {0.478431 , 0.215686 , 0.545098 },
- "MediumPurple", {0.576471 , 0.439216 , 0.858824 },
- "MediumPurple1", {0.670588 , 0.509804 , 1.000000 },
- "MediumPurple2", {0.623529 , 0.474510 , 0.933333 },
- "MediumPurple3", {0.537255 , 0.407843 , 0.803922 },
- "MediumPurple4", {0.364706 , 0.278431 , 0.545098 },
- "MediumSeaGreen", {0.235294 , 0.701961 , 0.443137 },
- "MediumSlateBlue", {0.482353 , 0.407843 , 0.933333 },
- "MediumSpringGreen", {0.000000 , 0.980392 , 0.603922 },
- "MediumTurquoise", {0.282353 , 0.819608 , 0.800000 },
- "MediumVioletRed", {0.780392 , 0.082353 , 0.521569 },
- "MidnightBlue", {0.098039 , 0.098039 , 0.439216 },
- "MintCream", {0.960784 , 1.000000 , 0.980392 },
- "MistyRose", {1.000000 , 0.894118 , 0.882353 },
- "MistyRose1", {1.000000 , 0.894118 , 0.882353 },
- "MistyRose2", {0.933333 , 0.835294 , 0.823529 },
- "MistyRose3", {0.803922 , 0.717647 , 0.709804 },
- "MistyRose4", {0.545098 , 0.490196 , 0.482353 },
- "NavajoWhite", {1.000000 , 0.870588 , 0.678431 },
- "NavajoWhite1", {1.000000 , 0.870588 , 0.678431 },
- "NavajoWhite2", {0.933333 , 0.811765 , 0.631373 },
- "NavajoWhite3", {0.803922 , 0.701961 , 0.545098 },
- "NavajoWhite4", {0.545098 , 0.474510 , 0.368627 },
- "NavyBlue", {0.000000 , 0.000000 , 0.501961 },
- "OldLace", {0.992157 , 0.960784 , 0.901961 },
- "OliveDrab", {0.419608 , 0.556863 , 0.137255 },
- "OliveDrab1", {0.752941 , 1.000000 , 0.243137 },
- "OliveDrab2", {0.701961 , 0.933333 , 0.227451 },
- "OliveDrab3", {0.603922 , 0.803922 , 0.196078 },
- "OliveDrab4", {0.411765 , 0.545098 , 0.133333 },
- "OrangeRed", {1.000000 , 0.270588 , 0.000000 },
- "OrangeRed1", {1.000000 , 0.270588 , 0.000000 },
- "OrangeRed2", {0.933333 , 0.250980 , 0.000000 },
- "OrangeRed3", {0.803922 , 0.215686 , 0.000000 },
- "OrangeRed4", {0.545098 , 0.145098 , 0.000000 },
- "PaleGoldenrod", {0.933333 , 0.909804 , 0.666667 },
- "PaleGreen", {0.596078 , 0.984314 , 0.596078 },
- "PaleGreen1", {0.603922 , 1.000000 , 0.603922 },
- "PaleGreen2", {0.564706 , 0.933333 , 0.564706 },
- "PaleGreen3", {0.486275 , 0.803922 , 0.486275 },
- "PaleGreen4", {0.329412 , 0.545098 , 0.329412 },
- "PaleTurquoise", {0.686275 , 0.933333 , 0.933333 },
- "PaleTurquoise1", {0.733333 , 1.000000 , 1.000000 },
- "PaleTurquoise2", {0.682353 , 0.933333 , 0.933333 },
- "PaleTurquoise3", {0.588235 , 0.803922 , 0.803922 },
- "PaleTurquoise4", {0.400000 , 0.545098 , 0.545098 },
- "PaleVioletRed", {0.858824 , 0.439216 , 0.576471 },
- "PaleVioletRed1", {1.000000 , 0.509804 , 0.670588 },
- "PaleVioletRed2", {0.933333 , 0.474510 , 0.623529 },
- "PaleVioletRed3", {0.803922 , 0.407843 , 0.537255 },
- "PaleVioletRed4", {0.545098 , 0.278431 , 0.364706 },
- "PapayaWhip", {1.000000 , 0.937255 , 0.835294 },
- "PeachPuff", {1.000000 , 0.854902 , 0.725490 },
- "PeachPuff1", {1.000000 , 0.854902 , 0.725490 },
- "PeachPuff2", {0.933333 , 0.796078 , 0.678431 },
- "PeachPuff3", {0.803922 , 0.686275 , 0.584314 },
- "PeachPuff4", {0.545098 , 0.466667 , 0.396078 },
- "PowderBlue", {0.690196 , 0.878431 , 0.901961 },
- "RosyBrown", {0.737255 , 0.560784 , 0.560784 },
- "RosyBrown1", {1.000000 , 0.756863 , 0.756863 },
- "RosyBrown2", {0.933333 , 0.705882 , 0.705882 },
- "RosyBrown3", {0.803922 , 0.607843 , 0.607843 },
- "RosyBrown4", {0.545098 , 0.411765 , 0.411765 },
- "RoyalBlue", {0.254902 , 0.411765 , 0.882353 },
- "RoyalBlue1", {0.282353 , 0.462745 , 1.000000 },
- "RoyalBlue2", {0.262745 , 0.431373 , 0.933333 },
- "RoyalBlue3", {0.227451 , 0.372549 , 0.803922 },
- "RoyalBlue4", {0.152941 , 0.250980 , 0.545098 },
- "SaddleBrown", {0.545098 , 0.270588 , 0.074510 },
- "SandyBrown", {0.956863 , 0.643137 , 0.376471 },
- "SeaGreen", {0.180392 , 0.545098 , 0.341176 },
- "SeaGreen1", {0.329412 , 1.000000 , 0.623529 },
- "SeaGreen2", {0.305882 , 0.933333 , 0.580392 },
- "SeaGreen3", {0.262745 , 0.803922 , 0.501961 },
- "SeaGreen4", {0.180392 , 0.545098 , 0.341176 },
- "SkyBlue", {0.529412 , 0.807843 , 0.921569 },
- "SkyBlue1", {0.529412 , 0.807843 , 1.000000 },
- "SkyBlue2", {0.494118 , 0.752941 , 0.933333 },
- "SkyBlue3", {0.423529 , 0.650980 , 0.803922 },
- "SkyBlue4", {0.290196 , 0.439216 , 0.545098 },
- "SlateBlue", {0.415686 , 0.352941 , 0.803922 },
- "SlateBlue1", {0.513725 , 0.435294 , 1.000000 },
- "SlateBlue2", {0.478431 , 0.403922 , 0.933333 },
- "SlateBlue3", {0.411765 , 0.349020 , 0.803922 },
- "SlateBlue4", {0.278431 , 0.235294 , 0.545098 },
- "SlateGray", {0.439216 , 0.501961 , 0.564706 },
- "SlateGray1", {0.776471 , 0.886275 , 1.000000 },
- "SlateGray2", {0.725490 , 0.827451 , 0.933333 },
- "SlateGray3", {0.623529 , 0.713725 , 0.803922 },
- "SlateGray4", {0.423529 , 0.482353 , 0.545098 },
- "SlateGrey", {0.439216 , 0.501961 , 0.564706 },
- "SpringGreen", {0.000000 , 1.000000 , 0.498039 },
- "SpringGreen1", {0.000000 , 1.000000 , 0.498039 },
- "SpringGreen2", {0.000000 , 0.933333 , 0.462745 },
- "SpringGreen3", {0.000000 , 0.803922 , 0.400000 },
- "SpringGreen4", {0.000000 , 0.545098 , 0.270588 },
- "SteelBlue", {0.274510 , 0.509804 , 0.705882 },
- "SteelBlue1", {0.388235 , 0.721569 , 1.000000 },
- "SteelBlue2", {0.360784 , 0.674510 , 0.933333 },
- "SteelBlue3", {0.309804 , 0.580392 , 0.803922 },
- "SteelBlue4", {0.211765 , 0.392157 , 0.545098 },
- "VioletRed", {0.815686 , 0.125490 , 0.564706 },
- "VioletRed1", {1.000000 , 0.243137 , 0.588235 },
- "VioletRed2", {0.933333 , 0.227451 , 0.549020 },
- "VioletRed3", {0.803922 , 0.196078 , 0.470588 },
- "VioletRed4", {0.545098 , 0.133333 , 0.321569 },
- "WhiteSmoke", {0.960784 , 0.960784 , 0.960784 },
- "YellowGreen", {0.603922 , 0.803922 , 0.196078 },
- "alice_blue", {0.941176 , 0.972549 , 1.000000 },
- "antique_white", {0.980392 , 0.921569 , 0.843137 },
- "aquamarine", {0.498039 , 1.000000 , 0.831373 },
- "aquamarine1", {0.498039 , 1.000000 , 0.831373 },
- "aquamarine2", {0.462745 , 0.933333 , 0.776471 },
- "aquamarine3", {0.400000 , 0.803922 , 0.666667 },
- "aquamarine4", {0.270588 , 0.545098 , 0.454902 },
- "azure", {0.941176 , 1.000000 , 1.000000 },
- "azure1", {0.941176 , 1.000000 , 1.000000 },
- "azure2", {0.878431 , 0.933333 , 0.933333 },
- "azure3", {0.756863 , 0.803922 , 0.803922 },
- "azure4", {0.513725 , 0.545098 , 0.545098 },
- "beige", {0.960784 , 0.960784 , 0.862745 },
- "bisque", {1.000000 , 0.894118 , 0.768627 },
- "bisque1", {1.000000 , 0.894118 , 0.768627 },
- "bisque2", {0.933333 , 0.835294 , 0.717647 },
- "bisque3", {0.803922 , 0.717647 , 0.619608 },
- "bisque4", {0.545098 , 0.490196 , 0.419608 },
- "black", {0.000000 , 0.000000 , 0.000000 },
- "blanched_almond", {1.000000 , 0.921569 , 0.803922 },
- "blue", {0.000000 , 0.000000 , 1.000000 },
- "blue1", {0.000000 , 0.000000 , 1.000000 },
- "blue2", {0.000000 , 0.000000 , 0.933333 },
- "blue3", {0.000000 , 0.000000 , 0.803922 },
- "blue4", {0.000000 , 0.000000 , 0.545098 },
- "blue_violet", {0.541176 , 0.168627 , 0.886275 },
- "brown", {0.647059 , 0.164706 , 0.164706 },
- "brown1", {1.000000 , 0.250980 , 0.250980 },
- "brown2", {0.933333 , 0.231373 , 0.231373 },
- "brown3", {0.803922 , 0.200000 , 0.200000 },
- "brown4", {0.545098 , 0.137255 , 0.137255 },
- "burlywood", {0.870588 , 0.721569 , 0.529412 },
- "burlywood1", {1.000000 , 0.827451 , 0.607843 },
- "burlywood2", {0.933333 , 0.772549 , 0.568627 },
- "burlywood3", {0.803922 , 0.666667 , 0.490196 },
- "burlywood4", {0.545098 , 0.450980 , 0.333333 },
- "cadet_blue", {0.372549 , 0.619608 , 0.627451 },
- "chartreuse", {0.498039 , 1.000000 , 0.000000 },
- "chartreuse1", {0.498039 , 1.000000 , 0.000000 },
- "chartreuse2", {0.462745 , 0.933333 , 0.000000 },
- "chartreuse3", {0.400000 , 0.803922 , 0.000000 },
- "chartreuse4", {0.270588 , 0.545098 , 0.000000 },
- "chocolate", {0.823529 , 0.411765 , 0.117647 },
- "chocolate1", {1.000000 , 0.498039 , 0.141176 },
- "chocolate2", {0.933333 , 0.462745 , 0.129412 },
- "chocolate3", {0.803922 , 0.400000 , 0.113725 },
- "chocolate4", {0.545098 , 0.270588 , 0.074510 },
- "coral", {1.000000 , 0.498039 , 0.313725 },
- "coral1", {1.000000 , 0.447059 , 0.337255 },
- "coral2", {0.933333 , 0.415686 , 0.313725 },
- "coral3", {0.803922 , 0.356863 , 0.270588 },
- "coral4", {0.545098 , 0.243137 , 0.184314 },
- "cornflower_blue", {0.392157 , 0.584314 , 0.929412 },
- "cornsilk", {1.000000 , 0.972549 , 0.862745 },
- "cornsilk1", {1.000000 , 0.972549 , 0.862745 },
- "cornsilk2", {0.933333 , 0.909804 , 0.803922 },
- "cornsilk3", {0.803922 , 0.784314 , 0.694118 },
- "cornsilk4", {0.545098 , 0.533333 , 0.470588 },
- "cyan", {0.000000 , 1.000000 , 1.000000 },
- "cyan1", {0.000000 , 1.000000 , 1.000000 },
- "cyan2", {0.000000 , 0.933333 , 0.933333 },
- "cyan3", {0.000000 , 0.803922 , 0.803922 },
- "cyan4", {0.000000 , 0.545098 , 0.545098 },
- "dark_goldenrod", {0.721569 , 0.525490 , 0.043137 },
- "dark_green", {0.000000 , 0.392157 , 0.000000 },
- "dark_khaki", {0.741176 , 0.717647 , 0.419608 },
- "dark_olive_green", {0.333333 , 0.419608 , 0.184314 },
- "dark_orange", {1.000000 , 0.549020 , 0.000000 },
- "dark_orchid", {0.600000 , 0.196078 , 0.800000 },
- "dark_salmon", {0.913725 , 0.588235 , 0.478431 },
- "dark_sea_green", {0.560784 , 0.737255 , 0.560784 },
- "dark_slate_blue", {0.282353 , 0.239216 , 0.545098 },
- "dark_slate_gray", {0.184314 , 0.309804 , 0.309804 },
- "dark_slate_grey", {0.184314 , 0.309804 , 0.309804 },
- "dark_turquoise", {0.000000 , 0.807843 , 0.819608 },
- "dark_violet", {0.580392 , 0.000000 , 0.827451 },
- "deep_pink", {1.000000 , 0.078431 , 0.576471 },
- "deep_sky_blue", {0.000000 , 0.749020 , 1.000000 },
- "dim_gray", {0.411765 , 0.411765 , 0.411765 },
- "dim_grey", {0.411765 , 0.411765 , 0.411765 },
- "dodger_blue", {0.117647 , 0.564706 , 1.000000 },
- "firebrick", {0.698039 , 0.133333 , 0.133333 },
- "firebrick1", {1.000000 , 0.188235 , 0.188235 },
- "firebrick2", {0.933333 , 0.172549 , 0.172549 },
- "firebrick3", {0.803922 , 0.149020 , 0.149020 },
- "firebrick4", {0.545098 , 0.101961 , 0.101961 },
- "floral_white", {1.000000 , 0.980392 , 0.941176 },
- "forest_green", {0.133333 , 0.545098 , 0.133333 },
- "gainsboro", {0.862745 , 0.862745 , 0.862745 },
- "ghost_white", {0.972549 , 0.972549 , 1.000000 },
- "gold", {1.000000 , 0.843137 , 0.000000 },
- "gold1", {1.000000 , 0.843137 , 0.000000 },
- "gold2", {0.933333 , 0.788235 , 0.000000 },
- "gold3", {0.803922 , 0.678431 , 0.000000 },
- "gold4", {0.545098 , 0.458824 , 0.000000 },
- "goldenrod", {0.854902 , 0.647059 , 0.125490 },
- "goldenrod1", {1.000000 , 0.756863 , 0.145098 },
- "goldenrod2", {0.933333 , 0.705882 , 0.133333 },
- "goldenrod3", {0.803922 , 0.607843 , 0.113725 },
- "goldenrod4", {0.545098 , 0.411765 , 0.078431 },
- "gray", {0.752941 , 0.752941 , 0.752941 },
- "gray0", {0.000000 , 0.000000 , 0.000000 },
- "gray1", {0.011765 , 0.011765 , 0.011765 },
- "gray10", {0.101961 , 0.101961 , 0.101961 },
- "gray100", {1.000000 , 1.000000 , 1.000000 },
- "gray11", {0.109804 , 0.109804 , 0.109804 },
- "gray12", {0.121569 , 0.121569 , 0.121569 },
- "gray13", {0.129412 , 0.129412 , 0.129412 },
- "gray14", {0.141176 , 0.141176 , 0.141176 },
- "gray15", {0.149020 , 0.149020 , 0.149020 },
- "gray16", {0.160784 , 0.160784 , 0.160784 },
- "gray17", {0.168627 , 0.168627 , 0.168627 },
- "gray18", {0.180392 , 0.180392 , 0.180392 },
- "gray19", {0.188235 , 0.188235 , 0.188235 },
- "gray2", {0.019608 , 0.019608 , 0.019608 },
- "gray20", {0.200000 , 0.200000 , 0.200000 },
- "gray21", {0.211765 , 0.211765 , 0.211765 },
- "gray22", {0.219608 , 0.219608 , 0.219608 },
- "gray23", {0.231373 , 0.231373 , 0.231373 },
- "gray24", {0.239216 , 0.239216 , 0.239216 },
- "gray25", {0.250980 , 0.250980 , 0.250980 },
- "gray26", {0.258824 , 0.258824 , 0.258824 },
- "gray27", {0.270588 , 0.270588 , 0.270588 },
- "gray28", {0.278431 , 0.278431 , 0.278431 },
- "gray29", {0.290196 , 0.290196 , 0.290196 },
- "gray3", {0.031373 , 0.031373 , 0.031373 },
- "gray30", {0.301961 , 0.301961 , 0.301961 },
- "gray31", {0.309804 , 0.309804 , 0.309804 },
- "gray32", {0.321569 , 0.321569 , 0.321569 },
- "gray33", {0.329412 , 0.329412 , 0.329412 },
- "gray34", {0.341176 , 0.341176 , 0.341176 },
- "gray35", {0.349020 , 0.349020 , 0.349020 },
- "gray36", {0.360784 , 0.360784 , 0.360784 },
- "gray37", {0.368627 , 0.368627 , 0.368627 },
- "gray38", {0.380392 , 0.380392 , 0.380392 },
- "gray39", {0.388235 , 0.388235 , 0.388235 },
- "gray4", {0.039216 , 0.039216 , 0.039216 },
- "gray40", {0.400000 , 0.400000 , 0.400000 },
- "gray41", {0.411765 , 0.411765 , 0.411765 },
- "gray42", {0.419608 , 0.419608 , 0.419608 },
- "gray43", {0.431373 , 0.431373 , 0.431373 },
- "gray44", {0.439216 , 0.439216 , 0.439216 },
- "gray45", {0.450980 , 0.450980 , 0.450980 },
- "gray46", {0.458824 , 0.458824 , 0.458824 },
- "gray47", {0.470588 , 0.470588 , 0.470588 },
- "gray48", {0.478431 , 0.478431 , 0.478431 },
- "gray49", {0.490196 , 0.490196 , 0.490196 },
- "gray5", {0.050980 , 0.050980 , 0.050980 },
- "gray50", {0.498039 , 0.498039 , 0.498039 },
- "gray51", {0.509804 , 0.509804 , 0.509804 },
- "gray52", {0.521569 , 0.521569 , 0.521569 },
- "gray53", {0.529412 , 0.529412 , 0.529412 },
- "gray54", {0.541176 , 0.541176 , 0.541176 },
- "gray55", {0.549020 , 0.549020 , 0.549020 },
- "gray56", {0.560784 , 0.560784 , 0.560784 },
- "gray57", {0.568627 , 0.568627 , 0.568627 },
- "gray58", {0.580392 , 0.580392 , 0.580392 },
- "gray59", {0.588235 , 0.588235 , 0.588235 },
- "gray6", {0.058824 , 0.058824 , 0.058824 },
- "gray60", {0.600000 , 0.600000 , 0.600000 },
- "gray61", {0.611765 , 0.611765 , 0.611765 },
- "gray62", {0.619608 , 0.619608 , 0.619608 },
- "gray63", {0.631373 , 0.631373 , 0.631373 },
- "gray64", {0.639216 , 0.639216 , 0.639216 },
- "gray65", {0.650980 , 0.650980 , 0.650980 },
- "gray66", {0.658824 , 0.658824 , 0.658824 },
- "gray67", {0.670588 , 0.670588 , 0.670588 },
- "gray68", {0.678431 , 0.678431 , 0.678431 },
- "gray69", {0.690196 , 0.690196 , 0.690196 },
- "gray7", {0.070588 , 0.070588 , 0.070588 },
- "gray70", {0.701961 , 0.701961 , 0.701961 },
- "gray71", {0.709804 , 0.709804 , 0.709804 },
- "gray72", {0.721569 , 0.721569 , 0.721569 },
- "gray73", {0.729412 , 0.729412 , 0.729412 },
- "gray74", {0.741176 , 0.741176 , 0.741176 },
- "gray75", {0.749020 , 0.749020 , 0.749020 },
- "gray76", {0.760784 , 0.760784 , 0.760784 },
- "gray77", {0.768627 , 0.768627 , 0.768627 },
- "gray78", {0.780392 , 0.780392 , 0.780392 },
- "gray79", {0.788235 , 0.788235 , 0.788235 },
- "gray8", {0.078431 , 0.078431 , 0.078431 },
- "gray80", {0.800000 , 0.800000 , 0.800000 },
- "gray81", {0.811765 , 0.811765 , 0.811765 },
- "gray82", {0.819608 , 0.819608 , 0.819608 },
- "gray83", {0.831373 , 0.831373 , 0.831373 },
- "gray84", {0.839216 , 0.839216 , 0.839216 },
- "gray85", {0.850980 , 0.850980 , 0.850980 },
- "gray86", {0.858824 , 0.858824 , 0.858824 },
- "gray87", {0.870588 , 0.870588 , 0.870588 },
- "gray88", {0.878431 , 0.878431 , 0.878431 },
- "gray89", {0.890196 , 0.890196 , 0.890196 },
- "gray9", {0.090196 , 0.090196 , 0.090196 },
- "gray90", {0.898039 , 0.898039 , 0.898039 },
- "gray91", {0.909804 , 0.909804 , 0.909804 },
- "gray92", {0.921569 , 0.921569 , 0.921569 },
- "gray93", {0.929412 , 0.929412 , 0.929412 },
- "gray94", {0.941176 , 0.941176 , 0.941176 },
- "gray95", {0.949020 , 0.949020 , 0.949020 },
- "gray96", {0.960784 , 0.960784 , 0.960784 },
- "gray97", {0.968627 , 0.968627 , 0.968627 },
- "gray98", {0.980392 , 0.980392 , 0.980392 },
- "gray99", {0.988235 , 0.988235 , 0.988235 },
- "green", {0.000000 , 1.000000 , 0.000000 },
- "green1", {0.000000 , 1.000000 , 0.000000 },
- "green2", {0.000000 , 0.933333 , 0.000000 },
- "green3", {0.000000 , 0.803922 , 0.000000 },
- "green4", {0.000000 , 0.545098 , 0.000000 },
- "green_yellow", {0.678431 , 1.000000 , 0.184314 },
- "grey", {0.752941 , 0.752941 , 0.752941 },
- "grey0", {0.000000 , 0.000000 , 0.000000 },
- "grey1", {0.011765 , 0.011765 , 0.011765 },
- "grey10", {0.101961 , 0.101961 , 0.101961 },
- "grey100", {1.000000 , 1.000000 , 1.000000 },
- "grey11", {0.109804 , 0.109804 , 0.109804 },
- "grey12", {0.121569 , 0.121569 , 0.121569 },
- "grey13", {0.129412 , 0.129412 , 0.129412 },
- "grey14", {0.141176 , 0.141176 , 0.141176 },
- "grey15", {0.149020 , 0.149020 , 0.149020 },
- "grey16", {0.160784 , 0.160784 , 0.160784 },
- "grey17", {0.168627 , 0.168627 , 0.168627 },
- "grey18", {0.180392 , 0.180392 , 0.180392 },
- "grey19", {0.188235 , 0.188235 , 0.188235 },
- "grey2", {0.019608 , 0.019608 , 0.019608 },
- "grey20", {0.200000 , 0.200000 , 0.200000 },
- "grey21", {0.211765 , 0.211765 , 0.211765 },
- "grey22", {0.219608 , 0.219608 , 0.219608 },
- "grey23", {0.231373 , 0.231373 , 0.231373 },
- "grey24", {0.239216 , 0.239216 , 0.239216 },
- "grey25", {0.250980 , 0.250980 , 0.250980 },
- "grey26", {0.258824 , 0.258824 , 0.258824 },
- "grey27", {0.270588 , 0.270588 , 0.270588 },
- "grey28", {0.278431 , 0.278431 , 0.278431 },
- "grey29", {0.290196 , 0.290196 , 0.290196 },
- "grey3", {0.031373 , 0.031373 , 0.031373 },
- "grey30", {0.301961 , 0.301961 , 0.301961 },
- "grey31", {0.309804 , 0.309804 , 0.309804 },
- "grey32", {0.321569 , 0.321569 , 0.321569 },
- "grey33", {0.329412 , 0.329412 , 0.329412 },
- "grey34", {0.341176 , 0.341176 , 0.341176 },
- "grey35", {0.349020 , 0.349020 , 0.349020 },
- "grey36", {0.360784 , 0.360784 , 0.360784 },
- "grey37", {0.368627 , 0.368627 , 0.368627 },
- "grey38", {0.380392 , 0.380392 , 0.380392 },
- "grey39", {0.388235 , 0.388235 , 0.388235 },
- "grey4", {0.039216 , 0.039216 , 0.039216 },
- "grey40", {0.400000 , 0.400000 , 0.400000 },
- "grey41", {0.411765 , 0.411765 , 0.411765 },
- "grey42", {0.419608 , 0.419608 , 0.419608 },
- "grey43", {0.431373 , 0.431373 , 0.431373 },
- "grey44", {0.439216 , 0.439216 , 0.439216 },
- "grey45", {0.450980 , 0.450980 , 0.450980 },
- "grey46", {0.458824 , 0.458824 , 0.458824 },
- "grey47", {0.470588 , 0.470588 , 0.470588 },
- "grey48", {0.478431 , 0.478431 , 0.478431 },
- "grey49", {0.490196 , 0.490196 , 0.490196 },
- "grey5", {0.050980 , 0.050980 , 0.050980 },
- "grey50", {0.498039 , 0.498039 , 0.498039 },
- "grey51", {0.509804 , 0.509804 , 0.509804 },
- "grey52", {0.521569 , 0.521569 , 0.521569 },
- "grey53", {0.529412 , 0.529412 , 0.529412 },
- "grey54", {0.541176 , 0.541176 , 0.541176 },
- "grey55", {0.549020 , 0.549020 , 0.549020 },
- "grey56", {0.560784 , 0.560784 , 0.560784 },
- "grey57", {0.568627 , 0.568627 , 0.568627 },
- "grey58", {0.580392 , 0.580392 , 0.580392 },
- "grey59", {0.588235 , 0.588235 , 0.588235 },
- "grey6", {0.058824 , 0.058824 , 0.058824 },
- "grey60", {0.600000 , 0.600000 , 0.600000 },
- "grey61", {0.611765 , 0.611765 , 0.611765 },
- "grey62", {0.619608 , 0.619608 , 0.619608 },
- "grey63", {0.631373 , 0.631373 , 0.631373 },
- "grey64", {0.639216 , 0.639216 , 0.639216 },
- "grey65", {0.650980 , 0.650980 , 0.650980 },
- "grey66", {0.658824 , 0.658824 , 0.658824 },
- "grey67", {0.670588 , 0.670588 , 0.670588 },
- "grey68", {0.678431 , 0.678431 , 0.678431 },
- "grey69", {0.690196 , 0.690196 , 0.690196 },
- "grey7", {0.070588 , 0.070588 , 0.070588 },
- "grey70", {0.701961 , 0.701961 , 0.701961 },
- "grey71", {0.709804 , 0.709804 , 0.709804 },
- "grey72", {0.721569 , 0.721569 , 0.721569 },
- "grey73", {0.729412 , 0.729412 , 0.729412 },
- "grey74", {0.741176 , 0.741176 , 0.741176 },
- "grey75", {0.749020 , 0.749020 , 0.749020 },
- "grey76", {0.760784 , 0.760784 , 0.760784 },
- "grey77", {0.768627 , 0.768627 , 0.768627 },
- "grey78", {0.780392 , 0.780392 , 0.780392 },
- "grey79", {0.788235 , 0.788235 , 0.788235 },
- "grey8", {0.078431 , 0.078431 , 0.078431 },
- "grey80", {0.800000 , 0.800000 , 0.800000 },
- "grey81", {0.811765 , 0.811765 , 0.811765 },
- "grey82", {0.819608 , 0.819608 , 0.819608 },
- "grey83", {0.831373 , 0.831373 , 0.831373 },
- "grey84", {0.839216 , 0.839216 , 0.839216 },
- "grey85", {0.850980 , 0.850980 , 0.850980 },
- "grey86", {0.858824 , 0.858824 , 0.858824 },
- "grey87", {0.870588 , 0.870588 , 0.870588 },
- "grey88", {0.878431 , 0.878431 , 0.878431 },
- "grey89", {0.890196 , 0.890196 , 0.890196 },
- "grey9", {0.090196 , 0.090196 , 0.090196 },
- "grey90", {0.898039 , 0.898039 , 0.898039 },
- "grey91", {0.909804 , 0.909804 , 0.909804 },
- "grey92", {0.921569 , 0.921569 , 0.921569 },
- "grey93", {0.929412 , 0.929412 , 0.929412 },
- "grey94", {0.941176 , 0.941176 , 0.941176 },
- "grey95", {0.949020 , 0.949020 , 0.949020 },
- "grey96", {0.960784 , 0.960784 , 0.960784 },
- "grey97", {0.968627 , 0.968627 , 0.968627 },
- "grey98", {0.980392 , 0.980392 , 0.980392 },
- "grey99", {0.988235 , 0.988235 , 0.988235 },
- "honeydew", {0.941176 , 1.000000 , 0.941176 },
- "honeydew1", {0.941176 , 1.000000 , 0.941176 },
- "honeydew2", {0.878431 , 0.933333 , 0.878431 },
- "honeydew3", {0.756863 , 0.803922 , 0.756863 },
- "honeydew4", {0.513725 , 0.545098 , 0.513725 },
- "hot_pink", {1.000000 , 0.411765 , 0.705882 },
- "indian_red", {0.803922 , 0.360784 , 0.360784 },
- "ivory", {1.000000 , 1.000000 , 0.941176 },
- "ivory1", {1.000000 , 1.000000 , 0.941176 },
- "ivory2", {0.933333 , 0.933333 , 0.878431 },
- "ivory3", {0.803922 , 0.803922 , 0.756863 },
- "ivory4", {0.545098 , 0.545098 , 0.513725 },
- "khaki", {0.941176 , 0.901961 , 0.549020 },
- "khaki1", {1.000000 , 0.964706 , 0.560784 },
- "khaki2", {0.933333 , 0.901961 , 0.521569 },
- "khaki3", {0.803922 , 0.776471 , 0.450980 },
- "khaki4", {0.545098 , 0.525490 , 0.305882 },
- "lavender", {0.901961 , 0.901961 , 0.980392 },
- "lavender_blush", {1.000000 , 0.941176 , 0.960784 },
- "lawn_green", {0.486275 , 0.988235 , 0.000000 },
- "lemon_chiffon", {1.000000 , 0.980392 , 0.803922 },
- "light_blue", {0.678431 , 0.847059 , 0.901961 },
- "light_coral", {0.941176 , 0.501961 , 0.501961 },
- "light_cyan", {0.878431 , 1.000000 , 1.000000 },
- "light_goldenrod", {0.933333 , 0.866667 , 0.509804 },
- "light_goldenrod_yellow", {0.980392 , 0.980392 , 0.823529 },
- "light_gray", {0.827451 , 0.827451 , 0.827451 },
- "light_grey", {0.827451 , 0.827451 , 0.827451 },
- "light_pink", {1.000000 , 0.713725 , 0.756863 },
- "light_salmon", {1.000000 , 0.627451 , 0.478431 },
- "light_sea_green", {0.125490 , 0.698039 , 0.666667 },
- "light_sky_blue", {0.529412 , 0.807843 , 0.980392 },
- "light_slate_blue", {0.517647 , 0.439216 , 1.000000 },
- "light_slate_gray", {0.466667 , 0.533333 , 0.600000 },
- "light_slate_grey", {0.466667 , 0.533333 , 0.600000 },
- "light_steel_blue", {0.690196 , 0.768627 , 0.870588 },
- "light_yellow", {1.000000 , 1.000000 , 0.878431 },
- "lime_green", {0.196078 , 0.803922 , 0.196078 },
- "linen", {0.980392 , 0.941176 , 0.901961 },
- "magenta", {1.000000 , 0.000000 , 1.000000 },
- "magenta1", {1.000000 , 0.000000 , 1.000000 },
- "magenta2", {0.933333 , 0.000000 , 0.933333 },
- "magenta3", {0.803922 , 0.000000 , 0.803922 },
- "magenta4", {0.545098 , 0.000000 , 0.545098 },
- "maroon", {0.690196 , 0.188235 , 0.376471 },
- "maroon1", {1.000000 , 0.203922 , 0.701961 },
- "maroon2", {0.933333 , 0.188235 , 0.654902 },
- "maroon3", {0.803922 , 0.160784 , 0.564706 },
- "maroon4", {0.545098 , 0.109804 , 0.384314 },
- "medium_aquamarine", {0.400000 , 0.803922 , 0.666667 },
- "medium_blue", {0.000000 , 0.000000 , 0.803922 },
- "medium_orchid", {0.729412 , 0.333333 , 0.827451 },
- "medium_purple", {0.576471 , 0.439216 , 0.858824 },
- "medium_sea_green", {0.235294 , 0.701961 , 0.443137 },
- "medium_slate_blue", {0.482353 , 0.407843 , 0.933333 },
- "medium_spring_green", {0.000000 , 0.980392 , 0.603922 },
- "medium_turquoise", {0.282353 , 0.819608 , 0.800000 },
- "medium_violet_red", {0.780392 , 0.082353 , 0.521569 },
- "midnight_blue", {0.098039 , 0.098039 , 0.439216 },
- "mint_cream", {0.960784 , 1.000000 , 0.980392 },
- "misty_rose", {1.000000 , 0.894118 , 0.882353 },
- "moccasin", {1.000000 , 0.894118 , 0.709804 },
- "navajo_white", {1.000000 , 0.870588 , 0.678431 },
- "navy", {0.000000 , 0.000000 , 0.501961 },
- "navy_blue", {0.000000 , 0.000000 , 0.501961 },
- "old_lace", {0.992157 , 0.960784 , 0.901961 },
- "olive_drab", {0.419608 , 0.556863 , 0.137255 },
- "orange", {1.000000 , 0.647059 , 0.000000 },
- "orange1", {1.000000 , 0.647059 , 0.000000 },
- "orange2", {0.933333 , 0.603922 , 0.000000 },
- "orange3", {0.803922 , 0.521569 , 0.000000 },
- "orange4", {0.545098 , 0.352941 , 0.000000 },
- "orange_red", {1.000000 , 0.270588 , 0.000000 },
- "orchid", {0.854902 , 0.439216 , 0.839216 },
- "orchid1", {1.000000 , 0.513725 , 0.980392 },
- "orchid2", {0.933333 , 0.478431 , 0.913725 },
- "orchid3", {0.803922 , 0.411765 , 0.788235 },
- "orchid4", {0.545098 , 0.278431 , 0.537255 },
- "pale_goldenrod", {0.933333 , 0.909804 , 0.666667 },
- "pale_green", {0.596078 , 0.984314 , 0.596078 },
- "pale_turquoise", {0.686275 , 0.933333 , 0.933333 },
- "pale_violet_red", {0.858824 , 0.439216 , 0.576471 },
- "papaya_whip", {1.000000 , 0.937255 , 0.835294 },
- "peach_puff", {1.000000 , 0.854902 , 0.725490 },
- "peru", {0.803922 , 0.521569 , 0.247059 },
- "pink", {1.000000 , 0.752941 , 0.796078 },
- "pink1", {1.000000 , 0.709804 , 0.772549 },
- "pink2", {0.933333 , 0.662745 , 0.721569 },
- "pink3", {0.803922 , 0.568627 , 0.619608 },
- "pink4", {0.545098 , 0.388235 , 0.423529 },
- "plum", {0.866667 , 0.627451 , 0.866667 },
- "plum1", {1.000000 , 0.733333 , 1.000000 },
- "plum2", {0.933333 , 0.682353 , 0.933333 },
- "plum3", {0.803922 , 0.588235 , 0.803922 },
- "plum4", {0.545098 , 0.400000 , 0.545098 },
- "powder_blue", {0.690196 , 0.878431 , 0.901961 },
- "purple", {0.627451 , 0.125490 , 0.941176 },
- "purple1", {0.607843 , 0.188235 , 1.000000 },
- "purple2", {0.568627 , 0.172549 , 0.933333 },
- "purple3", {0.490196 , 0.149020 , 0.803922 },
- "purple4", {0.333333 , 0.101961 , 0.545098 },
- "red", {1.000000 , 0.000000 , 0.000000 },
- "red1", {1.000000 , 0.000000 , 0.000000 },
- "red2", {0.933333 , 0.000000 , 0.000000 },
- "red3", {0.803922 , 0.000000 , 0.000000 },
- "red4", {0.545098 , 0.000000 , 0.000000 },
- "rosy_brown", {0.737255 , 0.560784 , 0.560784 },
- "royal_blue", {0.254902 , 0.411765 , 0.882353 },
- "saddle_brown", {0.545098 , 0.270588 , 0.074510 },
- "salmon", {0.980392 , 0.501961 , 0.447059 },
- "salmon1", {1.000000 , 0.549020 , 0.411765 },
- "salmon2", {0.933333 , 0.509804 , 0.384314 },
- "salmon3", {0.803922 , 0.439216 , 0.329412 },
- "salmon4", {0.545098 , 0.298039 , 0.223529 },
- "sandy_brown", {0.956863 , 0.643137 , 0.376471 },
- "sea_green", {0.180392 , 0.545098 , 0.341176 },
- "seashell", {1.000000 , 0.960784 , 0.933333 },
- "seashell1", {1.000000 , 0.960784 , 0.933333 },
- "seashell2", {0.933333 , 0.898039 , 0.870588 },
- "seashell3", {0.803922 , 0.772549 , 0.749020 },
- "seashell4", {0.545098 , 0.525490 , 0.509804 },
- "sienna", {0.627451 , 0.321569 , 0.176471 },
- "sienna1", {1.000000 , 0.509804 , 0.278431 },
- "sienna2", {0.933333 , 0.474510 , 0.258824 },
- "sienna3", {0.803922 , 0.407843 , 0.223529 },
- "sienna4", {0.545098 , 0.278431 , 0.149020 },
- "sky_blue", {0.529412 , 0.807843 , 0.921569 },
- "slate_blue", {0.415686 , 0.352941 , 0.803922 },
- "slate_gray", {0.439216 , 0.501961 , 0.564706 },
- "slate_grey", {0.439216 , 0.501961 , 0.564706 },
- "snow", {1.000000 , 0.980392 , 0.980392 },
- "snow1", {1.000000 , 0.980392 , 0.980392 },
- "snow2", {0.933333 , 0.913725 , 0.913725 },
- "snow3", {0.803922 , 0.788235 , 0.788235 },
- "snow4", {0.545098 , 0.537255 , 0.537255 },
- "spring_green", {0.000000 , 1.000000 , 0.498039 },
- "steel_blue", {0.274510 , 0.509804 , 0.705882 },
- "tan", {0.823529 , 0.705882 , 0.549020 },
- "tan1", {1.000000 , 0.647059 , 0.309804 },
- "tan2", {0.933333 , 0.603922 , 0.286275 },
- "tan3", {0.803922 , 0.521569 , 0.247059 },
- "tan4", {0.545098 , 0.352941 , 0.168627 },
- "thistle", {0.847059 , 0.749020 , 0.847059 },
- "thistle1", {1.000000 , 0.882353 , 1.000000 },
- "thistle2", {0.933333 , 0.823529 , 0.933333 },
- "thistle3", {0.803922 , 0.709804 , 0.803922 },
- "thistle4", {0.545098 , 0.482353 , 0.545098 },
- "tomato", {1.000000 , 0.388235 , 0.278431 },
- "tomato1", {1.000000 , 0.388235 , 0.278431 },
- "tomato2", {0.933333 , 0.360784 , 0.258824 },
- "tomato3", {0.803922 , 0.309804 , 0.223529 },
- "tomato4", {0.545098 , 0.211765 , 0.149020 },
- "turquoise", {0.250980 , 0.878431 , 0.815686 },
- "turquoise1", {0.000000 , 0.960784 , 1.000000 },
- "turquoise2", {0.000000 , 0.898039 , 0.933333 },
- "turquoise3", {0.000000 , 0.772549 , 0.803922 },
- "turquoise4", {0.000000 , 0.525490 , 0.545098 },
- "violet", {0.933333 , 0.509804 , 0.933333 },
- "violet_red", {0.815686 , 0.125490 , 0.564706 },
- "wheat", {0.960784 , 0.870588 , 0.701961 },
- "wheat1", {1.000000 , 0.905882 , 0.729412 },
- "wheat2", {0.933333 , 0.847059 , 0.682353 },
- "wheat3", {0.803922 , 0.729412 , 0.588235 },
- "wheat4", {0.545098 , 0.494118 , 0.400000 },
- "white", {1.000000 , 1.000000 , 1.000000 },
- "white_smoke", {0.960784 , 0.960784 , 0.960784 },
- "yellow", {1.000000 , 1.000000 , 0.000000 },
- "yellow1", {1.000000 , 1.000000 , 0.000000 },
- "yellow2", {0.933333 , 0.933333 , 0.000000 },
- "yellow3", {0.803922 , 0.803922 , 0.000000 },
- "yellow4", {0.545098 , 0.545098 , 0.000000 },
- "yellow_green", {0.603922 , 0.803922 , 0.196078 }
- } ;
-
- int
- LookupColorByName(name, color)
- char * name ;
- Vec color ;
- {
- int rc ;
- rc = BinarySearch(name, 0, NCOLORS - 1 , Colors) ;
- if (rc < 0) {
- return(0) ;
- }
-
- VecCopy(Colors[rc].ce_color, color) ;
- return 1 ;
- }
-
-
- int
- BinarySearch(name, l, h, array)
- char * name ;
- int l, h ;
- ColorEntry array[] ;
- {
- int m, rc ;
- if (l > h)
- return(-1) ;
-
- m = (l + h) / 2 ;
-
- rc = strcmp(name, array[m].ce_name) ;
- if (rc == 0)
- return m ;
- else if (rc < 0)
- return BinarySearch(name, l, m-1, array) ;
- else
- return BinarySearch(name, m + 1, h, array) ;
- }
-