void ColorReset()

in layer1/Color.cpp [852:2496]


void ColorReset(PyMOLGlobals * G)
{

/* PyMOL core color names

  1   1   1   white
 .5  .5  .5   grey/gray
  0   0   0   black 

  1   0   0   red
  0   1   0   green
  0   0   1   blue

  1   1   0   yellow
  1   0   1   magenta
  0   1   1   cyan

  1   1  .5   paleyellow  .
  1  .5   1   violet      .
 .5   1   1   aquamarine  .

  1  .5  .5   deepsalmon  .
 .5   1  .5   palegreen   .
 .5  .5   1   slate       .

 .75 .75  0   olive       .
 .75  0  .75  purple      .
  0  .75 .75  teal        .

 .6  .6  .1   deepolive   .
 .6  .1  .6   deeppurple  .
 .1  .6  .6   deepteal    .

  1  .5   0   orange      .
  1   0  .5   hotpink     .
 .5   1   0   chartreuse  .
  0   1  .5   limegreen   .
  0  .5   1   marine      .
 .5   0   1   purpleblue  .

*/

  CColor *I = G->Color;
  ColorRec *color = I->Color;
  int n_color = 0;

  char name[10];
  int a;
  int set1;
  float f;
  float spectrumS[13][3] = {
    {1.0, 0.0, 1.0},            /* magenta - 0 */
    {0.5, 0.0, 1.0},
    {0.0, 0.0, 1.0},            /* blue - 166.66  */
    {0.0, 0.5, 1.0},
    {0.0, 1.0, 1.0},            /* cyan - 333.33 */

    {0.0, 1.0, 0.5},
    {0.0, 1.0, 0.0},            /* green - 500 */
    {0.5, 1.0, 0.0},
    {1.0, 1.0, 0.0},            /* yellow - 666.66 */
    {1.0, 0.5, 0.0},

    {1.0, 0.0, 0.0},            /* red - 833.33 */
    {1.0, 0.0, 0.5},
    {1.0, 0.0, 1.0},            /* magenta - 999 */
  };

  float spectrumR[13][3] = {
    {1.0, 1.0, 0.0},            /* yellow - 0 */
    {0.5, 1.0, 0.0},            /* chartreuse */
    {0.0, 1.0, 0.0},            /* green - 166.66 */
    {0.0, 1.0, 0.5},            /* limegreen */
    {0.0, 1.0, 1.0},            /* cyan - 333.33 */

    {0.0, 0.5, 1.0},            /* marine */
    {0.0, 0.0, 1.0},            /* blue - 500 */
    {0.5, 0.0, 1.0},            /* purpleblue */
    {1.0, 0.0, 1.0},            /* magenta - 666.66 */
    {1.0, 0.0, 0.5},            /* hotpink */

    {1.0, 0.0, 0.0},            /* red - 833.33 */
    {1.0, 0.5, 0.0},            /* orange */
    {1.0, 1.0, 0.0},            /* yellow - 999 */
  };

  float spectrumC[][3] = {
    {1.0, 1.0, 0.0},            /* yellow - 0 */
    {0.0, 0.0, 1.0},            /* blue - 83.333 */
    {1.0, 0.0, 0.0},            /* red - 167.67 */
    {0.0, 1.0, 0.0},            /* green - 250.00 */
    {1.0, 0.0, 1.0},            /* magenta - 333.33 */

    {0.0, 1.0, 1.0},            /* cyan - 416.67 */
    {1.0, 1.0, 0.0},            /* yellow - 500.00 */
    {0.0, 1.0, 0.0},            /* green - 583.33 */
    {0.0, 0.0, 1.0},            /* blue - 666.67 */
    {1.0, 0.0, 1.0},            /* magenta - 750.00 */

    {1.0, 1.0, 0.0},            /* yellow - 833.33 */
    {1.0, 0.0, 0.0},            /* red - 916.67 */
    {0.0, 1.0, 1.0},            /* cyan - 999 */
  };

  float spectrumW[][3] = {
    {1.0, 1.0, 0.0},            /* yellow - 0 */
    {1.0, 1.0, 1.0},            /* white */
    {0.0, 0.0, 1.0},            /* blue  - 83.333 */
    {1.0, 1.0, 1.0},            /* white */
    {1.0, 0.0, 0.0},            /* red - 166.67 */

    {1.0, 1.0, 1.0},            /* white */
    {0.0, 1.0, 0.0},            /* green - 250.00 */
    {1.0, 1.0, 1.0},            /* white */
    {1.0, 0.0, 1.0},            /* magenta - 333.33 */
    {1.0, 1.0, 1.0},            /* white */

    {0.0, 1.0, 1.0},            /* cyan - 416.67 */
    {1.0, 1.0, 1.0},            /* white */
    {1.0, 1.0, 0.0},            /* yellow - 500.00 */
    {1.0, 1.0, 1.0},            /* white */
    {0.0, 1.0, 0.0},            /* green - 583.33 */

    {1.0, 1.0, 1.0},            /* white */
    {0.0, 0.0, 1.0},            /* blue - 666.67 */
    {1.0, 1.0, 1.0},            /* white */
    {1.0, 0.0, 1.0},            /* magenta - 750.00 */
    {1.0, 1.0, 1.0},            /* white */

    {1.0, 1.0, 0.0},            /* yellow - 833.33 */
    {1.0, 1.0, 1.0},            /* white */
    {1.0, 0.0, 0.0},            /* red - 916.67 */
    {1.0, 1.0, 1.0},            /* white */
    {0.0, 1.0, 1.0},            /* cyan - 999 */
  };

  float spectrumO[29][3] = {
    /* a rainbow with perceptive color balancing and extra blue/red at the ends */
    {1.0, 0.0, 1.0},            /* violet */
    {0.8F, 0.0, 1.0},

    {0.5F, 0.0, 1.0},           /* blend */

    {0.0, 0.0, 1.0},            /* blue */
    {0.0, 0.0, 1.0},            /* blue */
    {0.0, 0.2F, 1.0},

    {0.0, 0.5F, 1.0},           /* blend */

    {0.0, 0.8F, 1.0},
    {0.0, 1.0, 1.0},            /* cyan */
    {0.0, 1.0, 0.8F},

    {0.0, 1.0, 0.5F},           /* blend */

    {0.0, 1.0, 0.2F},
    {0.0, 1.0, 0.0},            /* green */
    {0.2F, 1.0, 0.0},

    {0.5F, 1.0, 0.0},           /* blend */

    {0.8F, 1.0, 0.0},
    {1.0, 1.0, 0.0},            /* yellow */
    {1.0, 0.9F, 0.0},

    {1.0, 0.75F, 0.0},          /* blend */

    {1.0, 0.6F, 0.0},
    {1.0, 0.5F, 0.0},           /* orange */
    {1.0, 0.4F, 0.0},

    {1.0, 0.3F, 0.0},           /* blend */

    {1.0, 0.2F, 0.0},
    {1.0, 0.0, 0.0},            /* red */
    {1.0, 0.0, 0.0},            /* red */

    {1.0, 0.0, 0.5F},           /* blend */

    {1.0, 0.0, 0.8F},           /* violet */
    {1.0, 0.0, 1.0},            /* violet */
  };

  if(I->Lex)
    OVLexicon_Del(I->Lex);
  I->Lex = OVLexicon_New(G->Context->heap);

  if(I->Idx)
    OVOneToOne_Del(I->Idx);

  I->Idx = OVOneToOne_New(G->Context->heap);

  /* BLUE->VIOLET->RED r546 to r909 */
  /* BLUE->CYAN->GREEN->YELLOW->RED s182 to s909 */
  /* BLUE->WHITE->RED w00 to */

  color->Name = reg_name(I->Lex, I->Idx, n_color, "white");
  color->Color[0] = 1.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "black");
  color->Color[0] = 0.0F;
  color->Color[1] = 0.0F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "blue");
  color->Color[0] = 0.0F;
  color->Color[1] = 0.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "green");
  color->Color[0] = 0.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "red");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.0F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "cyan");
  color->Color[0] = 0.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "yellow");
  color->Color[0] = 1.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "dash");
  color->Color[0] = 1.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "magenta");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "salmon");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.6F;       /* was 0.5 */
  color->Color[2] = 0.6F;       /* wat 0.5 */
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lime");
  color->Color[0] = 0.5F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "slate");
  color->Color[0] = 0.5F;
  color->Color[1] = 0.5F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "hotpink");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.0F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "orange");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.5F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "chartreuse");        /* AKA puke green */
  color->Color[0] = 0.5F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "limegreen");
  color->Color[0] = 0.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "purpleblue");        /* legacy name */
  color->Color[0] = 0.5F;
  color->Color[1] = 0.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "marine");
  color->Color[0] = 0.0F;
  color->Color[1] = 0.5F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "olive");
  color->Color[0] = 0.77F;
  color->Color[1] = 0.70F;
  color->Color[2] = 0.00F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "purple");
  color->Color[0] = 0.75F;
  color->Color[1] = 0.00F;
  color->Color[2] = 0.75F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "teal");
  color->Color[0] = 0.00F;
  color->Color[1] = 0.75F;
  color->Color[2] = 0.75F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "ruby");
  color->Color[0] = 0.6F;
  color->Color[1] = 0.2F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "forest");
  color->Color[0] = 0.2F;
  color->Color[1] = 0.6F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deepblue");  /* was "deep" */
  color->Color[0] = 0.25F;
  color->Color[1] = 0.25F;
  color->Color[2] = 0.65F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "grey");      /* english spelling */
  color->Color[0] = 0.5F;
  color->Color[1] = 0.5F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "gray");      /* american spelling */
  color->Color[0] = 0.5F;
  color->Color[1] = 0.5F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "carbon");
  color->Color[0] = 0.2F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "nitrogen");
  color->Color[0] = 0.2F;
  color->Color[1] = 0.2F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "oxygen");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.3F;
  color->Color[2] = 0.3F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "hydrogen");
  color->Color[0] = 0.9F;
  color->Color[1] = 0.9F;
  color->Color[2] = 0.9F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "brightorange");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.7F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "sulfur");
  color->Color[0] = 0.9F;       /* needs to be far enough from "yellow" */
  color->Color[1] = 0.775F;     /* to be resolved, while still slightly on */
  color->Color[2] = 0.25F;      /* the yellow side of yelloworange */
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tv_red");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.2F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tv_green");
  color->Color[0] = 0.2F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tv_blue");
  color->Color[0] = 0.3F;
  color->Color[1] = 0.3F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tv_yellow");
  color->Color[0] = 1.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "yelloworange");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.87F;
  color->Color[2] = 0.37F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tv_orange");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.55F;
  color->Color[2] = 0.15F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br0");
  color->Color[0] = 0.1F;
  color->Color[1] = 0.1F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br1");
  color->Color[0] = 0.2F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.9F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br2");
  color->Color[0] = 0.3F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.8F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br3");
  color->Color[0] = 0.4F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.7F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br4");
  color->Color[0] = 0.5F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.6F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br5");
  color->Color[0] = 0.6F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br6");
  color->Color[0] = 0.7F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.4F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br7");
  color->Color[0] = 0.8F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.3F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br8");
  color->Color[0] = 0.9F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.2F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "br9");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.1F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "pink");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.65F;
  color->Color[2] = 0.85F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "firebrick");
  color->Color[0] = 0.698F;
  color->Color[1] = 0.13F;
  color->Color[2] = 0.13F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "chocolate");
  color->Color[0] = 0.555F;
  color->Color[1] = 0.222F;
  color->Color[2] = 0.111F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "brown");
  color->Color[0] = 0.65F;
  color->Color[1] = 0.32F;
  color->Color[2] = 0.17F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "wheat");
  color->Color[0] = 0.99F;
  color->Color[1] = 0.82F;
  color->Color[2] = 0.65F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "violet");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.5F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  /* greybow */

  strcpy(name, "grey00");       /* english spelling */
  for(a = 0; a < 100; a = a + 1) {
    name[5] = (a % 10) + '0';
    name[4] = ((a % 100) / 10) + '0';
    /* sprintf(color->Name,"grey%02d",a); */
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = a / 99.0F;
    color->Color[1] = a / 99.0F;
    color->Color[2] = a / 99.0F;
    n_color++;
    color++;
  }

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lightmagenta");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.2F;
  color->Color[2] = 0.8F;
  n_color++;
  color++;

#define A_DIV 83.333333333F

  /* full spectrum (s000-s999) */

  strcpy(name, "s000");
  for(a = 0; a < 1000; a = a + 1) {
    set1 = (int) (a / A_DIV);
    name[3] = (a % 10) + '0';
    name[2] = ((a % 100) / 10) + '0';
    name[1] = ((a % 1000) / 100) + '0';
    /* sprintf(color->Name,"s%03d",a); */
    f = 1.0F - (a - (set1 * A_DIV)) / A_DIV;
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = f * spectrumS[set1][0] + (1.0F - f) * spectrumS[set1 + 1][0];
    color->Color[1] = f * spectrumS[set1][1] + (1.0F - f) * spectrumS[set1 + 1][1];
    color->Color[2] = f * spectrumS[set1][2] + (1.0F - f) * spectrumS[set1 + 1][2];
    n_color++;
    color++;
  }

  /* offset & reversed full spectrum (r000-r999) */

  strcpy(name, "r000");
  for(a = 0; a < 1000; a = a + 1) {
    set1 = (int) (a / A_DIV);
    /* sprintf(color->Name,"r%03d",a); */
    name[3] = (a % 10) + '0';
    name[2] = ((a % 100) / 10) + '0';
    name[1] = ((a % 1000) / 100) + '0';
    f = 1.0F - (a - (set1 * A_DIV)) / A_DIV;
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = f * spectrumR[set1][0] + (1.0F - f) * spectrumR[set1 + 1][0];
    color->Color[1] = f * spectrumR[set1][1] + (1.0F - f) * spectrumR[set1 + 1][1];
    color->Color[2] = f * spectrumR[set1][2] + (1.0F - f) * spectrumR[set1 + 1][2];
    n_color++;
    color++;
  }

  /* complementary spectra (c000-c999) */

  strcpy(name, "c000");
  for(a = 0; a < 1000; a = a + 1) {
    set1 = (int) (a / A_DIV);
    /*     sprintf(color->Name,"c%03d",a); */
    name[3] = (a % 10) + '0';
    name[2] = ((a % 100) / 10) + '0';
    name[1] = ((a % 1000) / 100) + '0';
    f = 1.0F - (a - (set1 * A_DIV)) / A_DIV;
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = f * spectrumC[set1][0] + (1.0F - f) * spectrumC[set1 + 1][0];
    color->Color[1] = f * spectrumC[set1][1] + (1.0F - f) * spectrumC[set1 + 1][1];
    color->Color[2] = f * spectrumC[set1][2] + (1.0F - f) * spectrumC[set1 + 1][2];
    n_color++;
    color++;
  }

#define W_DIV 41.666666667F

  /* complementary spectra separated by white (w000-w999) */

  strcpy(name, "w000");
  for(a = 0; a < 1000; a = a + 1) {
    set1 = (int) (a / W_DIV);
    /* sprintf(color->Name,"w%03d",a); */
    name[3] = (a % 10) + '0';
    name[2] = ((a % 100) / 10) + '0';
    name[1] = ((a % 1000) / 100) + '0';
    f = 1.0F - (a - (set1 * W_DIV)) / W_DIV;
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = f * spectrumW[set1][0] + (1.0F - f) * spectrumW[set1 + 1][0];
    color->Color[1] = f * spectrumW[set1][1] + (1.0F - f) * spectrumW[set1 + 1][1];
    color->Color[2] = f * spectrumW[set1][2] + (1.0F - f) * spectrumW[set1 + 1][2];
    n_color++;
    color++;
  }

  color->Name = reg_name(I->Lex, I->Idx, n_color, "density");
  color->Color[0] = 0.1F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.6F;
  n_color++;
  color++;

  strcpy(name, "gray00");       /* american */
  for(a = 0; a < 100; a = a + 1) {
    name[5] = (a % 10) + '0';
    name[4] = ((a % 100) / 10) + '0';
    /* sprintf(color->Name,"gray%02d",a); */
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = a / 99.0F;
    color->Color[1] = a / 99.0F;
    color->Color[2] = a / 99.0F;
    n_color++;
    color++;
  }

  /* original full spectrum, with extra blue and red at the ends (o000-o999) */

#define B_DIV 35.7143F

  strcpy(name, "o000");
  for(a = 0; a < 1000; a = a + 1) {
    set1 = (int) (a / B_DIV);
    name[3] = (a % 10) + '0';
    name[2] = ((a % 100) / 10) + '0';
    name[1] = ((a % 1000) / 100) + '0';
    /* sprintf(color->Name,"o%03d",a); */
    f = 1.0F - (a - (set1 * B_DIV)) / B_DIV;
    color->Name = reg_name(I->Lex, I->Idx, n_color, name);
    color->Color[0] = f * spectrumO[set1][0] + (1.0F - f) * spectrumO[set1 + 1][0];
    color->Color[1] = f * spectrumO[set1][1] + (1.0F - f) * spectrumO[set1 + 1][1];
    color->Color[2] = f * spectrumO[set1][2] + (1.0F - f) * spectrumO[set1 + 1][2];
    n_color++;
    color++;
  }

  color->Name = reg_name(I->Lex, I->Idx, n_color, "paleyellow");
  color->Color[0] = 1.0F;
  color->Color[1] = 1.0F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "aquamarine");
  color->Color[0] = 0.5F;
  color->Color[1] = 1.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deepsalmon");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.5F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "palegreen");
  color->Color[0] = 0.65F;
  color->Color[1] = 0.9F;
  color->Color[2] = 0.65F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deepolive");
  color->Color[0] = 0.6F;
  color->Color[1] = 0.6F;
  color->Color[2] = 0.1F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deeppurple");
  color->Color[0] = 0.6F;
  color->Color[1] = 0.1F;
  color->Color[2] = 0.6F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deepteal");
  color->Color[0] = 0.1F;
  color->Color[1] = 0.6F;
  color->Color[2] = 0.6F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lightblue");
  color->Color[0] = 0.75F;
  color->Color[1] = 0.75;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lightorange");
  color->Color[0] = 1.0F;
  color->Color[1] = 0.8F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "palecyan");
  color->Color[0] = 0.8F;
  color->Color[1] = 1.0F;
  color->Color[2] = 1.0F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lightteal");
  color->Color[0] = 0.4F;
  color->Color[1] = 0.7F;
  color->Color[2] = 0.7F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "splitpea");
  color->Color[0] = 0.52F;
  color->Color[1] = 0.75F;
  color->Color[2] = 0.00F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "raspberry");
  color->Color[0] = 0.70F;
  color->Color[1] = 0.30F;
  color->Color[2] = 0.40F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "sand");
  color->Color[0] = 0.72F;
  color->Color[1] = 0.55F;
  color->Color[2] = 0.30F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "smudge");
  color->Color[0] = 0.55F;
  color->Color[1] = 0.70F;
  color->Color[2] = 0.40F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "violetpurple");
  color->Color[0] = 0.55F;
  color->Color[1] = 0.25F;
  color->Color[2] = 0.60F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "dirtyviolet");
  color->Color[0] = 0.70F;
  color->Color[1] = 0.50F;
  color->Color[2] = 0.50F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deepsalmon");
  color->Color[0] = 1.00F;
  color->Color[1] = 0.42F;
  color->Color[2] = 0.42F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lightpink");
  color->Color[0] = 1.00F;
  color->Color[1] = 0.75F;
  color->Color[2] = 0.87F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "greencyan");
  color->Color[0] = 0.25F;
  color->Color[1] = 1.00F;
  color->Color[2] = 0.75F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "limon");
  color->Color[0] = 0.75F;
  color->Color[1] = 1.00F;
  color->Color[2] = 0.25F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "skyblue");
  color->Color[0] = 0.20F;
  color->Color[1] = 0.50F;
  color->Color[2] = 0.80F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "bluewhite");
  color->Color[0] = 0.85F;
  color->Color[1] = 0.85F;
  color->Color[2] = 1.00F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "warmpink");
  color->Color[0] = 0.85F;
  color->Color[1] = 0.20F;
  color->Color[2] = 0.50F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "darksalmon");
  color->Color[0] = 0.73F;
  color->Color[1] = 0.55F;
  color->Color[2] = 0.52F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "helium");
  color->Color[0] = 0.850980392F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lithium");
  color->Color[0] = 0.800000000F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "beryllium");
  color->Color[0] = 0.760784314F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "boron");
  color->Color[0] = 1.000000000F;
  color->Color[1] = 0.709803922F;
  color->Color[2] = 0.709803922F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "fluorine");
  color->Color[0] = 0.701960784F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "neon");
  color->Color[0] = 0.701960784F;
  color->Color[1] = 0.890196078F;
  color->Color[2] = 0.960784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "sodium");
  color->Color[0] = 0.670588235F;
  color->Color[1] = 0.360784314F;
  color->Color[2] = 0.949019608F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "magnesium");
  color->Color[0] = 0.541176471F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "aluminum");
  color->Color[0] = 0.749019608F;
  color->Color[1] = 0.650980392F;
  color->Color[2] = 0.650980392F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "silicon");
  color->Color[0] = 0.941176471F;
  color->Color[1] = 0.784313725F;
  color->Color[2] = 0.627450980F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "phosphorus");
  color->Color[0] = 1.000000000F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "chlorine");
  color->Color[0] = 0.121568627F;
  color->Color[1] = 0.941176471F;
  color->Color[2] = 0.121568627F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "argon");
  color->Color[0] = 0.501960784F;
  color->Color[1] = 0.819607843F;
  color->Color[2] = 0.890196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "potassium");
  color->Color[0] = 0.560784314F;
  color->Color[1] = 0.250980392F;
  color->Color[2] = 0.831372549F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "calcium");
  color->Color[0] = 0.239215686F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "scandium");
  color->Color[0] = 0.901960784F;
  color->Color[1] = 0.901960784F;
  color->Color[2] = 0.901960784F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "titanium");
  color->Color[0] = 0.749019608F;
  color->Color[1] = 0.760784314F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "vanadium");
  color->Color[0] = 0.650980392F;
  color->Color[1] = 0.650980392F;
  color->Color[2] = 0.670588235F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "chromium");
  color->Color[0] = 0.541176471F;
  color->Color[1] = 0.600000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "manganese");
  color->Color[0] = 0.611764706F;
  color->Color[1] = 0.478431373F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "iron");
  color->Color[0] = 0.878431373F;
  color->Color[1] = 0.400000000F;
  color->Color[2] = 0.200000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "cobalt");
  color->Color[0] = 0.941176471F;
  color->Color[1] = 0.564705882F;
  color->Color[2] = 0.627450980F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "nickel");
  color->Color[0] = 0.313725490F;
  color->Color[1] = 0.815686275F;
  color->Color[2] = 0.313725490F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "copper");
  color->Color[0] = 0.784313725F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 0.200000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "zinc");
  color->Color[0] = 0.490196078F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 0.690196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "gallium");
  color->Color[0] = 0.760784314F;
  color->Color[1] = 0.560784314F;
  color->Color[2] = 0.560784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "germanium");
  color->Color[0] = 0.400000000F;
  color->Color[1] = 0.560784314F;
  color->Color[2] = 0.560784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "arsenic");
  color->Color[0] = 0.741176471F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 0.890196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "selenium");
  color->Color[0] = 1.000000000F;
  color->Color[1] = 0.631372549F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "bromine");
  color->Color[0] = 0.650980392F;
  color->Color[1] = 0.160784314F;
  color->Color[2] = 0.160784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "krypton");
  color->Color[0] = 0.360784314F;
  color->Color[1] = 0.721568627F;
  color->Color[2] = 0.819607843F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "rubidium");
  color->Color[0] = 0.439215686F;
  color->Color[1] = 0.180392157F;
  color->Color[2] = 0.690196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "strontium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "yttrium");
  color->Color[0] = 0.580392157F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "zirconium");
  color->Color[0] = 0.580392157F;
  color->Color[1] = 0.878431373F;
  color->Color[2] = 0.878431373F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "niobium");
  color->Color[0] = 0.450980392F;
  color->Color[1] = 0.760784314F;
  color->Color[2] = 0.788235294F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "molybdenum");
  color->Color[0] = 0.329411765F;
  color->Color[1] = 0.709803922F;
  color->Color[2] = 0.709803922F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "technetium");
  color->Color[0] = 0.231372549F;
  color->Color[1] = 0.619607843F;
  color->Color[2] = 0.619607843F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "ruthenium");
  color->Color[0] = 0.141176471F;
  color->Color[1] = 0.560784314F;
  color->Color[2] = 0.560784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "rhodium");
  color->Color[0] = 0.039215686F;
  color->Color[1] = 0.490196078F;
  color->Color[2] = 0.549019608F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "palladium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.411764706F;
  color->Color[2] = 0.521568627F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "silver");
  color->Color[0] = 0.752941176F;
  color->Color[1] = 0.752941176F;
  color->Color[2] = 0.752941176F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "cadmium");
  color->Color[0] = 1.000000000F;
  color->Color[1] = 0.850980392F;
  color->Color[2] = 0.560784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "indium");
  color->Color[0] = 0.650980392F;
  color->Color[1] = 0.458823529F;
  color->Color[2] = 0.450980392F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tin");
  color->Color[0] = 0.400000000F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 0.501960784F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "antimony");
  color->Color[0] = 0.619607843F;
  color->Color[1] = 0.388235294F;
  color->Color[2] = 0.709803922F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tellurium");
  color->Color[0] = 0.831372549F;
  color->Color[1] = 0.478431373F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "iodine");
  color->Color[0] = 0.580392157F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.580392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "xenon");
  color->Color[0] = 0.258823529F;
  color->Color[1] = 0.619607843F;
  color->Color[2] = 0.690196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "cesium");
  color->Color[0] = 0.341176471F;
  color->Color[1] = 0.090196078F;
  color->Color[2] = 0.560784314F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "barium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.788235294F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lanthanum");
  color->Color[0] = 0.439215686F;
  color->Color[1] = 0.831372549F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "cerium");
  color->Color[0] = 1.000000000F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "praseodymium");
  color->Color[0] = 0.850980392F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "neodymium");
  color->Color[0] = 0.780392157F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "promethium");
  color->Color[0] = 0.639215686F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "samarium");
  color->Color[0] = 0.560784314F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "europium");
  color->Color[0] = 0.380392157F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "gadolinium");
  color->Color[0] = 0.270588235F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "terbium");
  color->Color[0] = 0.188235294F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "dysprosium");
  color->Color[0] = 0.121568627F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.780392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "holmium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 1.000000000F;
  color->Color[2] = 0.611764706F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "erbium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.901960784F;
  color->Color[2] = 0.458823529F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "thulium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.831372549F;
  color->Color[2] = 0.321568627F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "ytterbium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.749019608F;
  color->Color[2] = 0.219607843F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lutetium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.670588235F;
  color->Color[2] = 0.141176471F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "hafnium");
  color->Color[0] = 0.301960784F;
  color->Color[1] = 0.760784314F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tantalum");
  color->Color[0] = 0.301960784F;
  color->Color[1] = 0.650980392F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "tungsten");
  color->Color[0] = 0.129411765F;
  color->Color[1] = 0.580392157F;
  color->Color[2] = 0.839215686F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "rhenium");
  color->Color[0] = 0.149019608F;
  color->Color[1] = 0.490196078F;
  color->Color[2] = 0.670588235F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "osmium");
  color->Color[0] = 0.149019608F;
  color->Color[1] = 0.400000000F;
  color->Color[2] = 0.588235294F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "iridium");
  color->Color[0] = 0.090196078F;
  color->Color[1] = 0.329411765F;
  color->Color[2] = 0.529411765F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "platinum");
  color->Color[0] = 0.815686275F;
  color->Color[1] = 0.815686275F;
  color->Color[2] = 0.878431373F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "gold");
  color->Color[0] = 1.000000000F;
  color->Color[1] = 0.819607843F;
  color->Color[2] = 0.137254902F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "mercury");
  color->Color[0] = 0.721568627F;
  color->Color[1] = 0.721568627F;
  color->Color[2] = 0.815686275F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "thallium");
  color->Color[0] = 0.650980392F;
  color->Color[1] = 0.329411765F;
  color->Color[2] = 0.301960784F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lead");
  color->Color[0] = 0.341176471F;
  color->Color[1] = 0.349019608F;
  color->Color[2] = 0.380392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "bismuth");
  color->Color[0] = 0.619607843F;
  color->Color[1] = 0.309803922F;
  color->Color[2] = 0.709803922F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "polonium");
  color->Color[0] = 0.670588235F;
  color->Color[1] = 0.360784314F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "astatine");
  color->Color[0] = 0.458823529F;
  color->Color[1] = 0.309803922F;
  color->Color[2] = 0.270588235F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "radon");
  color->Color[0] = 0.258823529F;
  color->Color[1] = 0.509803922F;
  color->Color[2] = 0.588235294F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "francium");
  color->Color[0] = 0.258823529F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.400000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "radium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.490196078F;
  color->Color[2] = 0.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "actinium");
  color->Color[0] = 0.439215686F;
  color->Color[1] = 0.670588235F;
  color->Color[2] = 0.980392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "thorium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.729411765F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "protactinium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.631372549F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "uranium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.560784314F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "neptunium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.501960784F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "plutonium");
  color->Color[0] = 0.000000000F;
  color->Color[1] = 0.419607843F;
  color->Color[2] = 1.000000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "americium");
  color->Color[0] = 0.329411765F;
  color->Color[1] = 0.360784314F;
  color->Color[2] = 0.949019608F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "curium");
  color->Color[0] = 0.470588235F;
  color->Color[1] = 0.360784314F;
  color->Color[2] = 0.890196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "berkelium");
  color->Color[0] = 0.541176471F;
  color->Color[1] = 0.309803922F;
  color->Color[2] = 0.890196078F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "californium");
  color->Color[0] = 0.631372549F;
  color->Color[1] = 0.211764706F;
  color->Color[2] = 0.831372549F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "einsteinium");
  color->Color[0] = 0.701960784F;
  color->Color[1] = 0.121568627F;
  color->Color[2] = 0.831372549F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "fermium");
  color->Color[0] = 0.701960784F;
  color->Color[1] = 0.121568627F;
  color->Color[2] = 0.729411765F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "mendelevium");
  color->Color[0] = 0.701960784F;
  color->Color[1] = 0.050980392F;
  color->Color[2] = 0.650980392F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "nobelium");
  color->Color[0] = 0.741176471F;
  color->Color[1] = 0.050980392F;
  color->Color[2] = 0.529411765F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lawrencium");
  color->Color[0] = 0.780392157F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.400000000F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "rutherfordium");
  color->Color[0] = 0.800000000F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.349019608F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "dubnium");
  color->Color[0] = 0.819607843F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.309803922F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "seaborgium");
  color->Color[0] = 0.850980392F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.270588235F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "bohrium");
  color->Color[0] = 0.878431373F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.219607843F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "hassium");
  color->Color[0] = 0.901960784F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.180392157F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "meitnerium");
  color->Color[0] = 0.921568627F;
  color->Color[1] = 0.000000000F;
  color->Color[2] = 0.149019608F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "deuterium");
  color->Color[0] = 0.9F;
  color->Color[1] = 0.9F;
  color->Color[2] = 0.9F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "lonepair");
  color->Color[0] = 0.5F;
  color->Color[1] = 0.5F;
  color->Color[2] = 0.5F;
  n_color++;
  color++;

  color->Name = reg_name(I->Lex, I->Idx, n_color, "pseudoatom");
  color->Color[0] = 0.9F;
  color->Color[1] = 0.9F;
  color->Color[2] = 0.9F;
  n_color++;
  color++;

  color = I->Color;
  for(a = 0; a < n_color; a++) {
    /* mark all current colors non-custom so that they don't get saved in session files */
    color[a].Custom = false;
  }

  I->NColor = n_color;
  I->NExt = 0;
}