diff --git a/src/modules/Image/colors.c b/src/modules/Image/colors.c
index 883c38d894be2ba033c2e19f309fb6df63690852..1387155098cbb919a23595c02ab0189b65ee54ec 100644
--- a/src/modules/Image/colors.c
+++ b/src/modules/Image/colors.c
@@ -1,7 +1,7 @@
 /*
 **! module Image
 **! note
-**!	$Id: colors.c,v 1.2 1999/01/23 20:57:31 mirar Exp $
+**!	$Id: colors.c,v 1.3 1999/01/24 00:47:33 mirar Exp $
 **! submodule color
 **!
 **!	This module keeps names and easy handling 
@@ -10,21 +10,83 @@
 **!
 **!	A color is here an object, containing color
 **!	information and methods for conversion, see below.
+**!
+**!	<ref>Image.color</ref> can be called to make a color object.
+**!	<ref>Image.color()</ref> takes the following arguments:
+**!	<pre>
+**!	Image.color(string name)
+**!	Image.color(string hex_name)
+**!	Image.color(string prefix_string)
+**!	Image.color(int red, int green, int blue)
+**!     </pre>
+**!
+**!	The color names available can be listed by using indices 
+**!	on Image.color. The colors are available by name directly 
+**!	as <tt>Image.color.name</tt>, too:
+**!	<pre>
+**!	...Image.color.red...
+**!	...Image.color.green...
+**!	or, maybe
+**!	import Image.color;
+**!	...red...
+**!	...green...
+**!	...lightgreen...
+**!	</pre>
+**!
+**!	Giving red, green and blue values is equal to calling
+**!	<ref>Image.color.rgb</ref>().
+**!	
+**!	The <tt>hex_name</tt> form is a simple 
+**!	<tt>#rrggbb</tt> form, as in HTML or X-program argument.
+**!	A shorter form (<tt>#rgb</tt>) is also accepted. This
+**!	is the inverse to the <ref>Image.color.color->hex</ref>()
+**!	method.
+**!
+**!	The prefix_string method is a form for getting modified 
+**!	colors, it understands all modifiers
+**!	(<ref to=Image.color.color->light>light</ref>,
+**!	<ref to=Image.color.color->dark>dark</ref>,
+**!	<ref to=Image.color.color->bright>bright</ref>,
+**!	<ref to=Image.color.color->dull>dull</ref> and 
+**!	<ref to=Image.color.color->neon>neon</ref>). Simply  use
+**!	&lt;method&gt;&lt;color&gt; (as in <tt>lightgreen</tt>, 
+**!	<tt>dullmagenta</tt>, <tt>lightdullorange</tt>).
+**!
+**! see also: Image.color.color->name, Image.color.color->rgb
+**!
+**! added:
+**!	pike 0.7
+**!	
+**! note: 
+**!	<tt>Image.color["something"]</tt> will never(!) generate an error, 
+**!	but a zero_type 0, if the color is unknown. This is enough
+**!	to give the error "not present in module", if used 
+**!	as <tt>Image.color.something</tt>, though.
+**!
+**!     If you are using colors from for instance a webpage, you might
+**!	want to create the color from <ref>Image.color.guess</ref>(),
+**!     since that method is more tolerant for mistakes and errors.
+**!
+**!     <tt>Image.color</tt>() is case- and space-sensitive.
+**!	Use <ref>Image.color.guess</ref>() to catch all variants.
+**!
+**!	and subtract with a space (lower_case(x)-" ") to make
+**!	sure you get all variants.
 **!	
+**! see also: Image.color.color, Image.color.guess, Image, Image.colortable
+**!
 **! class color
 **!	This is the color object. It has six readable variables,
 **!	<tt>r</tt>, <tt>g</tt>, <tt>b</tt>, for the <i>red</i>, 
 **!	<i>green</i> and <i>blue</i> values, 
 **!	and <tt>h</tt>, <tt>s</tt>, <tt>v</tt>, for
 **!	the <i>hue</i>, <i>saturation</i> anv <i>value</i> values.
-**!
-**! see also: Image, Image.image, Image.font, Image.GIF
 */
 
 #include "global.h"
 #include <config.h>
 
-RCSID("$Id: colors.c,v 1.2 1999/01/23 20:57:31 mirar Exp $");
+RCSID("$Id: colors.c,v 1.3 1999/01/24 00:47:33 mirar Exp $");
 
 #include "config.h"
 
@@ -71,6 +133,21 @@ struct color_struct
 
 void image_make_hsv_color(INT32 args); /* forward */
 
+struct html_color
+{
+   int r,g,b;
+   char *name;
+   struct pike_string *pname;
+} html_color[]=
+{{0,0,0,"black",NULL}, {255,255,255,"white",NULL},
+ {0,128,0,"green",NULL}, {192,192,192,"silver",NULL},
+ {0,255,0,"lime",NULL}, {128,128,128,"gray",NULL}, 
+ {128,128,0,"olive",NULL}, {255,255,0,"yellow",NULL}, 
+ {128,0,0,"maroon",NULL}, {0,0,128,"navy",NULL}, 
+ {255,0,0,"red",NULL}, {0,0,255,"blue",NULL},
+ {128,0,128,"purple",NULL}, {0,128,128,"teal",NULL}, 
+ {255,255,0,"fuchsia",NULL}, {0,255,255,"aqua",NULL}};
+
 static void make_colors(void)
 {
    static struct color
@@ -87,6 +164,9 @@ static void make_colors(void)
    int i;
    const int n=sizeof(c)/sizeof(c[0]);
 
+   for (i=0; (size_t)i<sizeof(html_color)/sizeof(html_color[0]); i++)
+      html_color[i].pname=make_shared_string(html_color[i].name);
+
    for (i=0;i<n;i++)
    {
       push_text(c[i].name);
@@ -193,7 +273,7 @@ void image_color_create(INT32 args)
    if (args==4) /* r,g,b,name */
    {
       INT32 r,g,b;
-      get_all_args("Image.color->create()",args,"%i%i%i%W",
+      get_all_args("Image.color.color->create()",args,"%i%i%i%W",
 		   &r,&g,&b,&(THIS->name));
 
       if (r<0) r=0; else if (r>COLORMAX) r=COLORMAX;
@@ -211,7 +291,7 @@ void image_color_create(INT32 args)
    else if (args==3) /* r,g,b */
    {
       INT32 r,g,b;
-      get_all_args("Image.color->create()",args,"%i%i%i",
+      get_all_args("Image.color.color->create()",args,"%i%i%i",
 		   &r,&g,&b);
 
       if (r<0) r=0; else if (r>COLORMAX) r=COLORMAX;
@@ -226,7 +306,7 @@ void image_color_create(INT32 args)
 
       try_find_name();
    }
-   else error("Image.color->create(): Illegal argument(s)\n");
+   else error("Image.color.color->create(): Illegal argument(s)\n");
 
    push_int(0);
 }
@@ -271,7 +351,7 @@ void image_color_greylevel(INT32 args)
    }
    else
    {
-      get_all_args("Image.color->grey()",args,"%i%i%i",&r,&g,&b);
+      get_all_args("Image.color.color->greylevel()",args,"%i%i%i",&r,&g,&b);
    }
    pop_n_elems(args);
    if (r+g+b==0) r=g=b=1;
@@ -342,24 +422,65 @@ void image_color_grey(INT32 args)
 }
 
 /*
+**! method string hex()
+**! method string hex(int n)
 **! method string name()
-**!	Information method, gives the name of this color,
-**!	if it exists in the database, or color of format
-**!	<tt>"#rrggbb"</tt>, where rr, gg, bb is the hexadecimal
-**!	representation of the red, green and blue values, respectively.
+**! method string html()
+**!	Information methods.
+**!
+**!	<ref>hex</ref>() simply gives a string on the <tt>#rrggbb</tt>
+**!	format. If <tt>n</tt> is given, the number of significant
+**!	digits is set to this number. 
+**!     (Ie, <tt>n=3</tt> gives <tt>#rrrgggbbb</tt>.)
+**!
+**!	<ref>name</ref>() is a simplified method; 
+**!	if the color exists in the database, the name is returned,
+**!	per default is the <ref>hex</ref>() method use.
+**!
+**!	<ref>html</ref>() gives the <tt>HTML</tt> name of 
+**!	the color, or the <ref>hex</ref>(2) if it isn't one
+**!	of the 16 <tt>HTML</tt> colors.
+**!
 **! returns a new <ref>Image.color.color</ref> object
 **! see also: rgb, hsv, Image.color
 */
 
-void image_color_name(INT32 args)
+void image_color_hex(INT32 args)
 {
-   if (THIS->name)
+   char buf[80];
+   INT32 i=sizeof(COLORTYPE)*2;
+
+   if (args)
+      get_all_args("Image.color.color->hex()",args,"%i",&i);
+
+   pop_n_elems(args);
+   if (i<1)
    {
-      ref_push_string(THIS->name);
+      push_text("#");  /* stupid */
+      return;
    }
-   else
+   else if (i!=sizeof(COLORTYPE)*2)
    {
-      char buf[20];
+      int sh;
+      if (i>8) i=8;
+
+      sh=4*(sizeof(COLORTYPE)*2-i);
+      if (sh>0)
+	 sprintf(buf,"#%0*x%0*x%0*x",i,THIS->rgb.r>>sh,
+		 i,THIS->rgb.g>>sh,i,THIS->rgb.b>>sh); 
+      else
+      {
+	 unsigned INT32 r=THIS->rgb.r;
+	 unsigned INT32 g=THIS->rgb.g;
+	 unsigned INT32 b=THIS->rgb.b;
+	 const int q=
+	    ((sizeof(COLORTYPE)==1)?0x01010101:
+	     (sizeof(COLORTYPE)==2)?0x00010001:1);
+	 sh=32-i*4;
+	 sprintf(buf,"#%0*x%0*x%0*x",i,(r*q)>>sh,i,(g*q)>>sh,i,(b*q)>>sh);
+      }
+   }
+   else
       switch (sizeof(COLORTYPE))
       {
 	 case 1: 
@@ -371,9 +492,40 @@ void image_color_name(INT32 args)
 	 case 4: 
 	    sprintf(buf,"#%08x%08x%08x",THIS->rgb.r,THIS->rgb.g,THIS->rgb.b); 
 	    break;
+	 default:
+	    error("unknown size of colortype\n");
       }
-      push_text(buf);
-   }
+   push_text(buf);
+}
+
+void image_color_html(INT32 args)
+{
+   int i;
+
+   if (!colors) make_colors();
+
+   pop_n_elems(args);
+
+   for (i=0; (size_t)i<sizeof(html_color)/sizeof(html_color[0]); i++)
+      if (THIS->rgb.r==html_color[i].r && 
+	  THIS->rgb.g==html_color[i].g && 
+	  THIS->rgb.b==html_color[i].b)
+      {
+	 ref_push_string(html_color[i].pname);
+	 return;
+      }
+
+   push_int(2); 
+   image_color_hex(1);
+}
+
+void image_color_name(INT32 args)
+{
+   pop_n_elems(args);
+   if (THIS->name)
+      ref_push_string(THIS->name);
+   else
+      image_color_hex(0);
 }
 
 /*
@@ -389,7 +541,7 @@ void image_color_cast(INT32 args)
 {
    if (args!=1 ||
        sp[-1].type!=T_STRING)
-      error("Image.color->cast(): Illegal argument(s)\n");
+      error("Image.color.color->cast(): Illegal argument(s)\n");
    
    if (sp[-1].u.string==str_array)
    {
@@ -401,7 +553,7 @@ void image_color_cast(INT32 args)
       image_color_name(args);
       return;
    }
-   error("Image.color->cast(): Can't cast to that\n");
+   error("Image.color.color->cast(): Can't cast to that\n");
 }
 
 void image_color_index(INT32 args)
@@ -463,18 +615,33 @@ void image_color_index(INT32 args)
 }
 
 /*
-**! method array|string cast()
-**!	cast the object to an array, representing red, green
-**!	and blue (equal to <tt>-><ref>rgb</ref>()</tt>), or
-**!	to a string, giving the name (equal to <tt>-><ref>name</ref>()</tt>).
-**! returns the name as string or rgb as array
-**! see also: rgb, name
+**! method int `==(object other_color)
+**! method int `==(array(int) rgb)
+**! method int `==(int greylevel)
+**! method int `==(string name)
+**!	Compares this object to another color,
+**!	or color name. Example:
+**!	<pre>
+**!	object red=Image.color.red;
+**!	object other=Image.color. ...;
+**!	object black=Image.color.black;
+**!	
+**!	if (red==other) ...
+**!     if (red==({255,0,0})) ...
+**!     if (black==0) ... 
+**!     if (red=="red") ...
+**!	</pre>
+**!
+**! returns 1 or 0
+**! see also: rgb, grey, name
+**! note:
+**!	The other datatype (not color object) must be to the right!
 */
 
 void image_color_equal(INT32 args)
 {
    if (args!=1) 
-      error("Image.color->`==: illegal number of arguments");
+      error("Image.color.color->`==: illegal number of arguments");
 
    if (sp[-1].type==T_OBJECT)
    {
@@ -517,11 +684,72 @@ void image_color_equal(INT32 args)
 	 return;
       }
    }
+   else if (sp[-1].type==T_STRING)
+   {
+      if (sp[-1].u.string==THIS->name)
+      {
+	 pop_stack();
+	 push_int(1);
+	 return;
+      }
+   }
    pop_stack();
    push_int(0);
 }
 
 
+/*
+**! method object light()
+**! method object dark()
+**! method object neon()
+**! method object bright()
+**! method object dull()
+**!	Color modification methods. These returns
+**!	a new color.
+**!	<table>
+**!	<tr><th>method</th><th width=50%>effect</th>
+**!	<th>h</th><th>s</th><th>v</th><th>as</th></tr>
+**!	<tr><td>light </td><td>raise light level</td><td>�0</td><td> �0</td>
+**!	<td><illustration>return Image.image(20,20,@(array)Image.color["#693e3e"])</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->light())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->light()->light())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->light()->light()->light())</illustration></td></tr>
+**!
+**!	<tr><td>dark  </td><td>lower light level</td><td>�0</td><td> �0</td>
+**!	<td><illustration>return Image.image(20,20,@(array)Image.color["#693e3e"])</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->dark())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->dark()->dark())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->dark()->dark()->dark())</illustration></td></tr>
+**!
+**!	<tr><td>bright</td><td>brighter color   </td><td>�0</td><td>+50</td>
+**!	<td><illustration>return Image.image(20,20,@(array)Image.color["#693e3e"])</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->bright())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->bright()->bright())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->bright()->bright()->bright())</illustration></td></tr>
+**!
+**!	<tr><td>dull  </td><td>greyer color     </td><td>�0</td><td>-50</td>
+**!	<td><illustration>return Image.image(20,20,@(array)Image.color.red)</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color.red->dull())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color.red->dull()->dull())</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color.red->dull()->dull()->dull())</illustration></td></tr>
+**!
+**!	<tr><td>neon  </td><td>set to extreme   </td><td>�0</td><td>max</td>
+**!	<td><illustration>return Image.image(20,20,@(array)Image.color["#693e3e"])</illustration>
+**!	<illustration>return Image.image(20,20,@(array)Image.color["#693e3e"]->neon())</illustration></td></tr>
+**!
+**!     </table>
+**! returns the new color object
+**! note:
+**!	The opposites may not always take each other out.
+**!	The color is maximised at white and black levels,
+**!	so, for instance 
+**!	<ref>Image.color</ref>.white-><ref>light</ref>()-><ref>dark</ref>()
+**!	doesn't give the white color back, but the equal to
+**!	<ref>Image.color</ref>.white-><ref>dark</ref>(), since
+**!	white can't get any <ref>light</ref>er.
+*/
+
+
 void image_color_light(INT32 args)
 {
    pop_n_elems(args);
@@ -560,6 +788,7 @@ void image_color_dull(INT32 args)
    sp--;
    push_array_items(sp->u.array); /* frees */
    sp[-2].u.integer-=50;
+   sp[-1].u.integer-=50;
    image_make_hsv_color(3);
 }
 
@@ -570,6 +799,7 @@ void image_color_bright(INT32 args)
    sp--;
    push_array_items(sp->u.array); /* frees */
    sp[-2].u.integer+=50;
+   sp[-1].u.integer+=50;
    image_make_hsv_color(3);
 }
 
@@ -581,6 +811,8 @@ void image_color_bright(INT32 args)
 void image_get_color(INT32 args)
 {
    struct svalue s;
+   int n;
+   static char *callables[]={"light","dark","neon","dull","bright"};
 
    if (args!=1) 
       error("Image.color[]: illegal number of args");
@@ -614,11 +846,16 @@ void image_get_color(INT32 args)
 	       i/=3;
 	       for (j=0; j<3; j++)
 	       {
-		  int z=0;
+		  unsigned INT32 z=0;
 		  for (k=0; k<i; k++)
 		  {
 		     if (HEXTONUM(*src)==-1)
-			error("Image.color[]: no such color (trying hexadecimal number)\n");
+		     {
+			pop_stack();
+			push_int(0);
+			sp[-1].subtype=NUMBER_UNDEFINED;
+			return;
+		     }
 		     z=z*16+HEXTONUM(*src),src++;
 		  }
 		  switch (i)
@@ -626,6 +863,11 @@ void image_get_color(INT32 args)
 		     case 1: z=(z<<12)+(z<<8)+(z<<4)+(z<<0); break;
 		     case 2: z=(z<<8)+(z<<0); break;
 		     case 3: z=(z<<4)+(z>>8); break;
+
+		     case 5: z=(z>>4); break;
+		     case 6: z=(z>>8); break;
+		     case 7: z=(z>>12); break;
+		     case 8: z=(z>>16); break;
 		  }
 		  switch (sizeof(COLORTYPE))
 		  {
@@ -643,73 +885,16 @@ void image_get_color(INT32 args)
 	       return;
 	    }
 	 }
-	 if (sp[-1].u.string->len>5 &&
-	     memcmp(sp[-1].u.string->str,"light",5)==0)
-	 {
-	    fprintf(stderr,"light\n");
-	    push_int(5);
-	    push_int(1000000);
-	    f_index(3);
-	    image_get_color(1);
-	    if (sp[-1].type!=T_OBJECT)
-	       error("no such color (internal wierdness)\n");
-	    safe_apply(sp[-1].u.object,"light",0);
-	    stack_swap();
-	    pop_stack();
-	    return;
-	 }
-	 if (sp[-1].u.string->len>4 &&
-	     memcmp(sp[-1].u.string->str,"dark",4)==0)
-	 {
-	    push_int(4);
-	    push_int(1000000);
-	    f_index(3);
-	    image_get_color(1);
-	    if (sp[-1].type!=T_OBJECT)
-	       error("no such color (internal wierdness)\n");
-	    safe_apply(sp[-1].u.object,"dark",0);
-	    stack_swap();
-	    pop_stack();
-	    return;
-	 }
-	 if (sp[-1].u.string->len>4 &&
-	     memcmp(sp[-1].u.string->str,"neon",4)==0)
-	 {
-	    push_int(4);
-	    push_int(1000000);
-	    f_index(3);
-	    image_get_color(1);
-	    if (sp[-1].type!=T_OBJECT)
-	       error("no such color (internal wierdness)\n");
-	    safe_apply(sp[-1].u.object,"neon",0);
-	    stack_swap();
-	    pop_stack();
-	    return;
-	 }
-	 if (sp[-1].u.string->len>6 &&
-	     memcmp(sp[-1].u.string->str,"bright",4)==0)
-	 {
-	    push_int(6);
-	    push_int(1000000);
-	    f_index(3);
-	    image_get_color(1);
-	    if (sp[-1].type!=T_OBJECT)
-	       error("no such color (internal wierdness)\n");
-	    safe_apply(sp[-1].u.object,"bright",0);
-	    stack_swap();
-	    pop_stack();
-	    return;
-	 }
-	 if (sp[-1].u.string->len>4 &&
-	     memcmp(sp[-1].u.string->str,"dull",4)==0)
+	 for (n=0; (size_t)n<sizeof(callables)/sizeof(callables[0]); n++)
+	    if (sp[-1].u.string->len>(INT32)strlen(callables[n]) &&
+	     memcmp(sp[-1].u.string->str,callables[n],strlen(callables[n]))==0)
 	 {
-	    push_int(4);
+	    push_int(strlen(callables[n]));
 	    push_int(1000000);
 	    f_index(3);
 	    image_get_color(1);
-	    if (sp[-1].type!=T_OBJECT)
-	       error("no such color (internal wierdness)\n");
-	    safe_apply(sp[-1].u.object,"dull",0);
+	    if (sp[-1].type!=T_OBJECT) return; /* no way */
+	    safe_apply(sp[-1].u.object,callables[n],0);
 	    stack_swap();
 	    pop_stack();
 	    return;
@@ -717,13 +902,44 @@ void image_get_color(INT32 args)
       }
 
       /* try other stuff here */
-      error("Image.color[]: no such color\n");
+
+      pop_stack();
+      push_int(0);
+      sp[-1].subtype=NUMBER_UNDEFINED;
+      return;
    }
 
    pop_stack();
    *(sp++)=s;
 }
 
+void image_guess_color(INT32 args)
+{
+   struct svalue s;
+
+   if (args!=1 && sp[-args].type!=T_STRING) 
+      error("Image.color->guess(): illegal argument(s)\n");
+   
+   f_lower_case(1);
+   push_text(" ");
+   o_subtract();
+
+   stack_dup();
+   image_get_color(1);
+   if (sp[-1].type==T_OBJECT)
+   {
+      stack_swap();
+      pop_stack();
+      return;
+   }
+   pop_stack();
+   push_text("#");
+   stack_swap();
+   f_add(2);
+
+   image_get_color(1);
+}
+
 void image_make_color(INT32 args)
 {
    struct svalue s;
@@ -737,6 +953,35 @@ void image_make_color(INT32 args)
    push_object(clone_object(image_color_program,args));
 }
 
+
+/* 
+**! module Image
+**! submodule color
+**!
+**! method object guess(string)
+**!	This is equivalent to
+**!	<tt><ref>Image.color</ref>(lower_case(str)-" ")</tt>,
+**!	and tries the color with a prepending '#' if no 
+**!	corresponding color is found.
+**!
+**! returns a color object or zero_type
+*/
+
+/*
+**! method object rgb(int red, int green, int blue)
+**! method object hsv(int hue, int saturation, int value)
+**! method object greylevel(int level)
+**! method object html(string html_color)
+**!	Creates a new color object from given red, green and blue,
+**!	hue, saturation and value, or greylevel.
+**!
+**!	The <ref>html</ref>()
+**!	method only understands the HTML color names,
+**!	or the <tt>#rrggbb</tt> form.
+**!
+**! returns the created object.
+*/
+
 void image_make_rgb_color(INT32 args)
 {
    if (args!=3) 
@@ -811,6 +1056,49 @@ void image_make_greylevel_color(INT32 args)
    push_object(clone_object(image_color_program,3));
 }
 
+void image_make_html_color(INT32 args)
+{
+   int i;
+
+   if (args!=1 ||
+       sp[-1].type!=T_STRING) 
+   {
+      error("Image.color.html(): illegal arguments\n");
+      return;
+   }
+   
+   f_lower_case(1);
+   for (i=0; (size_t)i<sizeof(html_color)/sizeof(html_color[0]); i++)
+      if (html_color[i].pname==sp[-1].u.string)
+      {
+	 push_int(html_color[i].r);
+	 push_int(html_color[i].g);
+	 push_int(html_color[i].b);
+	 push_object(clone_object(image_color_program,3));
+	 return;
+      }
+
+   if (sp[-1].u.string->len>0 &&
+       sp[-1].u.string->str[0]=='#')
+      push_object(clone_object(image_color_program,1));
+   else
+   {
+      push_text("#");
+      stack_swap();
+      f_add(2);
+      push_object(clone_object(image_color_program,1));
+   }
+}
+
+/*
+**! method array(string) _indices()
+**! method array(object) _values()
+**!	(ie as <tt>indices(Image.color)</tt> or <tt>values(Image.color)</tt>)
+**!	<tt>indices</tt> gives a list of all the known color names,
+**!	<tt>values</tt> gives there corresponding objects.
+**! see also: Image.color
+*/
+
 void image_colors_indices(INT32 args)
 {
    pop_n_elems(args);
@@ -858,11 +1146,16 @@ void init_image_colors(void)
 		"function(string|int:int|function)",OPT_TRY_OPTIMIZE);
    add_function("`->",image_color_index,
 		"function(string|int:int|function)",OPT_TRY_OPTIMIZE);
-   add_function("name",image_color_name,
-		"function(:string)",OPT_TRY_OPTIMIZE);
    add_function("`==",image_color_equal,
 		"function(object|int:int)",OPT_TRY_OPTIMIZE);
 
+   add_function("name",image_color_name,
+		"function(:string)",OPT_TRY_OPTIMIZE);
+   add_function("hex",image_color_hex,
+		"function(:string)",OPT_TRY_OPTIMIZE);
+   add_function("html",image_color_html,
+		"function(:string)",OPT_TRY_OPTIMIZE);
+
    add_function("rgb",image_color_rgb,
 		"function(:array)",OPT_TRY_OPTIMIZE);
    add_function("hsv",image_color_hsv,
@@ -898,6 +1191,10 @@ void init_image_colors(void)
 		"function(int,int,int:object)",OPT_TRY_OPTIMIZE);
    add_function("hsv",image_make_hsv_color,
 		"function(int,int,int:object)",OPT_TRY_OPTIMIZE);
+   add_function("html",image_make_html_color,
+		"function(string:object)",OPT_TRY_OPTIMIZE);
+   add_function("guess",image_guess_color,
+		"function(string:object)",OPT_TRY_OPTIMIZE);
    add_function("greylevel",image_make_greylevel_color,
 		"function(int:object)",OPT_TRY_OPTIMIZE);
    add_function("_indices",image_colors_indices,
@@ -925,6 +1222,8 @@ void exit_image_colors(void)
    }
    if (colors)
    {
+      int i;
+
       free_mapping(colors);
       free_object(colortable);
       free_array(colornames);
@@ -932,6 +1231,9 @@ void exit_image_colors(void)
       colors=NULL;
       colortable=NULL;
       colornames=NULL;
+
+      for (i=0; (size_t)i<sizeof(html_color)/sizeof(html_color[0]); i++)
+	 free_string(html_color[i].pname);
    }
    free_string(str_array);
    free_string(str_string);
@@ -941,4 +1243,5 @@ void exit_image_colors(void)
    free_string(str_h);
    free_string(str_s);
    free_string(str_v);
+
 }
diff --git a/src/modules/Image/colors.h b/src/modules/Image/colors.h
index 6e5e29bdd85ab6ca5ad67f9f10311bdbd2364775..4110a8eec8b25940480827a5f6cbf698d8b97ecc 100644
--- a/src/modules/Image/colors.h
+++ b/src/modules/Image/colors.h
@@ -1,450 +1,450 @@
-   COLOR("red"                 ,255,0,0);
-   COLOR("aliceblue"           ,240,248,255);
-   COLOR("antiquewhite"        ,250,235,215);
-   COLOR("antiquewhite1"       ,255,239,219);
-   COLOR("antiquewhite2"       ,238,223,204);
-   COLOR("antiquewhite3"       ,205,192,176);
-   COLOR("antiquewhite4"       ,139,131,120);
-   COLOR("aquamarine"          ,127,255,212);
-   COLOR("aquamarine1"         ,127,255,212);
-   COLOR("aquamarine2"         ,118,238,198);
-   COLOR("aquamarine3"         ,102,205,170);
-   COLOR("aquamarine4"         ,69,139,116);
-   COLOR("azure"               ,240,255,255);
-   COLOR("azure1"              ,240,255,255);
-   COLOR("azure2"              ,224,238,238);
-   COLOR("azure3"              ,193,205,205);
-   COLOR("azure4"              ,131,139,139);
-   COLOR("beige"               ,245,245,220);
-   COLOR("bisque"              ,255,228,196);
-   COLOR("bisque1"             ,255,228,196);
-   COLOR("bisque2"             ,238,213,183);
-   COLOR("bisque3"             ,205,183,158);
-   COLOR("bisque4"             ,139,125,107);
-   COLOR("black"               ,0,0,0);
-   COLOR("blanchedalmond"      ,255,235,205);
-   COLOR("blue"                ,0,0,255);
-   COLOR("blue1"               ,0,0,255);
-   COLOR("blue2"               ,0,0,238);
-   COLOR("blue3"               ,0,0,205);
-   COLOR("blue4"               ,0,0,139);
-   COLOR("blueviolet"          ,138,43,226);
-   COLOR("brown"               ,165,42,42);
-   COLOR("brown1"              ,255,64,64);
-   COLOR("brown2"              ,238,59,59);
-   COLOR("brown3"              ,205,51,51);
-   COLOR("brown4"              ,139,35,35);
-   COLOR("burlywood"           ,222,184,135);
-   COLOR("burlywood1"          ,255,211,155);
-   COLOR("burlywood2"          ,238,197,145);
-   COLOR("burlywood3"          ,205,170,125);
-   COLOR("burlywood4"          ,139,115,85);
-   COLOR("cadetblue"           ,95,158,160);
-   COLOR("cadetblue1"          ,152,245,255);
-   COLOR("cadetblue2"          ,142,229,238);
-   COLOR("cadetblue3"          ,122,197,205);
-   COLOR("cadetblue4"          ,83,134,139);
-   COLOR("chartreuse"          ,127,255,0);
-   COLOR("chartreuse1"         ,127,255,0);
-   COLOR("chartreuse2"         ,118,238,0);
-   COLOR("chartreuse3"         ,102,205,0);
-   COLOR("chartreuse4"         ,69,139,0);
-   COLOR("chocolate"           ,210,105,30);
-   COLOR("chocolate1"          ,255,127,36);
-   COLOR("chocolate2"          ,238,118,33);
-   COLOR("chocolate3"          ,205,102,29);
-   COLOR("chocolate4"          ,139,69,19);
-   COLOR("coral"               ,255,127,80);
-   COLOR("coral1"              ,255,114,86);
-   COLOR("coral2"              ,238,106,80);
-   COLOR("coral3"              ,205,91,69);
-   COLOR("coral4"              ,139,62,47);
-   COLOR("cornflowerblue"      ,100,149,237);
-   COLOR("cornsilk"            ,255,248,220);
-   COLOR("cornsilk1"           ,255,248,220);
-   COLOR("cornsilk2"           ,238,232,205);
-   COLOR("cornsilk3"           ,205,200,177);
-   COLOR("cornsilk4"           ,139,136,120);
-   COLOR("cyan"                ,0,255,255);
-   COLOR("cyan1"               ,0,255,255);
-   COLOR("cyan2"               ,0,238,238);
-   COLOR("cyan3"               ,0,205,205);
-   COLOR("cyan4"               ,0,139,139);
-   COLOR("darkblue"            ,0,0,139);
-   COLOR("darkcyan"            ,0,139,139);
-   COLOR("darkgoldenrod"       ,184,134,11);
-   COLOR("darkgoldenrod1"      ,255,185,15);
-   COLOR("darkgoldenrod2"      ,238,173,14);
-   COLOR("darkgoldenrod3"      ,205,149,12);
-   COLOR("darkgoldenrod4"      ,139,101,8);
-   COLOR("darkgreen"           ,0,100,0);
-   COLOR("darkgrey"            ,169,169,169);
-   COLOR("darkkhaki"           ,189,183,107);
-   COLOR("darkmagenta"         ,139,0,139);
-   COLOR("darkolivegreen"      ,85,107,47);
-   COLOR("darkolivegreen1"     ,202,255,112);
-   COLOR("darkolivegreen2"     ,188,238,104);
-   COLOR("darkolivegreen3"     ,162,205,90);
-   COLOR("darkolivegreen4"     ,110,139,61);
-   COLOR("darkorange"          ,255,140,0);
-   COLOR("darkorange1"         ,255,127,0);
-   COLOR("darkorange2"         ,238,118,0);
-   COLOR("darkorange3"         ,205,102,0);
-   COLOR("darkorange4"         ,139,69,0);
-   COLOR("darkorchid"          ,153,50,204);
-   COLOR("darkorchid1"         ,191,62,255);
-   COLOR("darkorchid2"         ,178,58,238);
-   COLOR("darkorchid3"         ,154,50,205);
-   COLOR("darkorchid4"         ,104,34,139);
-   COLOR("darkred"             ,139,0,0);
-   COLOR("darksalmon"          ,233,150,122);
-   COLOR("darkseagreen"        ,143,188,143);
-   COLOR("darkseagreen1"       ,193,255,193);
-   COLOR("darkseagreen2"       ,180,238,180);
-   COLOR("darkseagreen3"       ,155,205,155);
-   COLOR("darkseagreen4"       ,105,139,105);
-   COLOR("darkslateblue"       ,72,61,139);
-   COLOR("darkslategrey"       ,47,79,79);
-   COLOR("darkslategrey1"      ,151,255,255);
-   COLOR("darkslategrey2"      ,141,238,238);
-   COLOR("darkslategrey3"      ,121,205,205);
-   COLOR("darkslategrey4"      ,82,139,139);
-   COLOR("darkturquoise"       ,0,206,209);
-   COLOR("darkviolet"          ,148,0,211);
-   COLOR("deeppink"            ,255,20,147);
-   COLOR("deeppink1"           ,255,20,147);
-   COLOR("deeppink2"           ,238,18,137);
-   COLOR("deeppink3"           ,205,16,118);
-   COLOR("deeppink4"           ,139,10,80);
-   COLOR("deepskyblue"         ,0,191,255);
-   COLOR("deepskyblue1"        ,0,191,255);
-   COLOR("deepskyblue2"        ,0,178,238);
-   COLOR("deepskyblue3"        ,0,154,205);
-   COLOR("deepskyblue4"        ,0,104,139);
-   COLOR("dimgrey"             ,105,105,105);
-   COLOR("dodgerblue"          ,30,144,255);
-   COLOR("dodgerblue1"         ,30,144,255);
-   COLOR("dodgerblue2"         ,28,134,238);
-   COLOR("dodgerblue3"         ,24,116,205);
-   COLOR("dodgerblue4"         ,16,78,139);
-   COLOR("firebrick"           ,178,34,34);
-   COLOR("firebrick1"          ,255,48,48);
-   COLOR("firebrick2"          ,238,44,44);
-   COLOR("firebrick3"          ,205,38,38);
-   COLOR("firebrick4"          ,139,26,26);
-   COLOR("floralwhite"         ,255,250,240);
-   COLOR("forestgreen"         ,34,139,34);
-   COLOR("gainsboro"           ,220,220,220);
-   COLOR("ghostwhite"          ,248,248,255);
-   COLOR("gold"                ,255,215,0);
-   COLOR("gold1"               ,255,215,0);
-   COLOR("gold2"               ,238,201,0);
-   COLOR("gold3"               ,205,173,0);
-   COLOR("gold4"               ,139,117,0);
-   COLOR("goldenrod"           ,218,165,32);
-   COLOR("goldenrod1"          ,255,193,37);
-   COLOR("goldenrod2"          ,238,180,34);
-   COLOR("goldenrod3"          ,205,155,29);
-   COLOR("goldenrod4"          ,139,105,20);
-   COLOR("green"               ,0,255,0);
-   COLOR("green1"              ,0,255,0);
-   COLOR("green2"              ,0,238,0);
-   COLOR("green3"              ,0,205,0);
-   COLOR("green4"              ,0,139,0);
-   COLOR("greenyellow"         ,173,255,47);
-   COLOR("grey"                ,190,190,190);
-   COLOR("honeydew"            ,240,255,240);
-   COLOR("honeydew1"           ,240,255,240);
-   COLOR("honeydew2"           ,224,238,224);
-   COLOR("honeydew3"           ,193,205,193);
-   COLOR("honeydew4"           ,131,139,131);
-   COLOR("hotpink"             ,255,105,180);
-   COLOR("hotpink1"            ,255,110,180);
-   COLOR("hotpink2"            ,238,106,167);
-   COLOR("hotpink3"            ,205,96,144);
-   COLOR("hotpink4"            ,139,58,98);
-   COLOR("indianred"           ,205,92,92);
-   COLOR("indianred1"          ,255,106,106);
-   COLOR("indianred2"          ,238,99,99);
-   COLOR("indianred3"          ,205,85,85);
-   COLOR("indianred4"          ,139,58,58);
-   COLOR("ivory"               ,255,255,240);
-   COLOR("ivory1"              ,255,255,240);
-   COLOR("ivory2"              ,238,238,224);
-   COLOR("ivory3"              ,205,205,193);
-   COLOR("ivory4"              ,139,139,131);
-   COLOR("khaki"               ,240,230,140);
-   COLOR("khaki1"              ,255,246,143);
-   COLOR("khaki2"              ,238,230,133);
-   COLOR("khaki3"              ,205,198,115);
-   COLOR("khaki4"              ,139,134,78);
-   COLOR("lavender"            ,230,230,250);
-   COLOR("lavenderblush"       ,255,240,245);
-   COLOR("lavenderblush1"      ,255,240,245);
-   COLOR("lavenderblush2"      ,238,224,229);
-   COLOR("lavenderblush3"      ,205,193,197);
-   COLOR("lavenderblush4"      ,139,131,134);
-   COLOR("lawngreen"           ,124,252,0);
-   COLOR("lemonchiffon"        ,255,250,205);
-   COLOR("lemonchiffon1"       ,255,250,205);
-   COLOR("lemonchiffon2"       ,238,233,191);
-   COLOR("lemonchiffon3"       ,205,201,165);
-   COLOR("lemonchiffon4"       ,139,137,112);
-   COLOR("lightblue"           ,173,216,230);
-   COLOR("lightblue1"          ,191,239,255);
-   COLOR("lightblue2"          ,178,223,238);
-   COLOR("lightblue3"          ,154,192,205);
-   COLOR("lightblue4"          ,104,131,139);
-   COLOR("lightcoral"          ,240,128,128);
-   COLOR("lightcyan"           ,224,255,255);
-   COLOR("lightcyan1"          ,224,255,255);
-   COLOR("lightcyan2"          ,209,238,238);
-   COLOR("lightcyan3"          ,180,205,205);
-   COLOR("lightcyan4"          ,122,139,139);
-   COLOR("lightgoldenrod"      ,238,221,130);
-   COLOR("lightgoldenrod1"     ,255,236,139);
-   COLOR("lightgoldenrod2"     ,238,220,130);
-   COLOR("lightgoldenrod3"     ,205,190,112);
-   COLOR("lightgoldenrod4"     ,139,129,76);
-   COLOR("lightgoldenrodyellow",250,250,210);
-   COLOR("lightgreen"          ,144,238,144);
-   COLOR("lightgrey"           ,211,211,211);
-   COLOR("lightpink"           ,255,182,193);
-   COLOR("lightpink1"          ,255,174,185);
-   COLOR("lightpink2"          ,238,162,173);
-   COLOR("lightpink3"          ,205,140,149);
-   COLOR("lightpink4"          ,139,95,101);
-   COLOR("lightsalmon"         ,255,160,122);
-   COLOR("lightsalmon1"        ,255,160,122);
-   COLOR("lightsalmon2"        ,238,149,114);
-   COLOR("lightsalmon3"        ,205,129,98);
-   COLOR("lightsalmon4"        ,139,87,66);
-   COLOR("lightseagreen"       ,32,178,170);
-   COLOR("lightskyblue"        ,135,206,250);
-   COLOR("lightskyblue1"       ,176,226,255);
-   COLOR("lightskyblue2"       ,164,211,238);
-   COLOR("lightskyblue3"       ,141,182,205);
-   COLOR("lightskyblue4"       ,96,123,139);
-   COLOR("lightslateblue"      ,132,112,255);
-   COLOR("lightslategrey"      ,119,136,153);
-   COLOR("lightsteelblue"      ,176,196,222);
-   COLOR("lightsteelblue1"     ,202,225,255);
-   COLOR("lightsteelblue2"     ,188,210,238);
-   COLOR("lightsteelblue3"     ,162,181,205);
-   COLOR("lightsteelblue4"     ,110,123,139);
-   COLOR("lightyellow"         ,255,255,224);
-   COLOR("lightyellow1"        ,255,255,224);
-   COLOR("lightyellow2"        ,238,238,209);
-   COLOR("lightyellow3"        ,205,205,180);
-   COLOR("lightyellow4"        ,139,139,122);
-   COLOR("limegreen"           ,50,205,50);
-   COLOR("linen"               ,250,240,230);
-   COLOR("magenta"             ,255,0,255);
-   COLOR("magenta1"            ,255,0,255);
-   COLOR("magenta2"            ,238,0,238);
-   COLOR("magenta3"            ,205,0,205);
-   COLOR("magenta4"            ,139,0,139);
-   COLOR("maroon"              ,176,48,96);
-   COLOR("maroon1"             ,255,52,179);
-   COLOR("maroon2"             ,238,48,167);
-   COLOR("maroon3"             ,205,41,144);
-   COLOR("maroon4"             ,139,28,98);
-   COLOR("mediumaquamarine"    ,102,205,170);
-   COLOR("mediumblue"          ,0,0,205);
-   COLOR("mediumorchid"        ,186,85,211);
-   COLOR("mediumorchid1"       ,224,102,255);
-   COLOR("mediumorchid2"       ,209,95,238);
-   COLOR("mediumorchid3"       ,180,82,205);
-   COLOR("mediumorchid4"       ,122,55,139);
-   COLOR("mediumpurple"        ,147,112,219);
-   COLOR("mediumpurple1"       ,171,130,255);
-   COLOR("mediumpurple2"       ,159,121,238);
-   COLOR("mediumpurple3"       ,137,104,205);
-   COLOR("mediumpurple4"       ,93,71,139);
-   COLOR("mediumseagreen"      ,60,179,113);
-   COLOR("mediumslateblue"     ,123,104,238);
-   COLOR("mediumspringgreen"   ,0,250,154);
-   COLOR("mediumturquoise"     ,72,209,204);
-   COLOR("mediumvioletred"     ,199,21,133);
-   COLOR("midnightblue"        ,25,25,112);
-   COLOR("mintcream"           ,245,255,250);
-   COLOR("mistyrose"           ,255,228,225);
-   COLOR("mistyrose1"          ,255,228,225);
-   COLOR("mistyrose2"          ,238,213,210);
-   COLOR("mistyrose3"          ,205,183,181);
-   COLOR("mistyrose4"          ,139,125,123);
-   COLOR("moccasin"            ,255,228,181);
-   COLOR("navajowhite"         ,255,222,173);
-   COLOR("navajowhite1"        ,255,222,173);
-   COLOR("navajowhite2"        ,238,207,161);
-   COLOR("navajowhite3"        ,205,179,139);
-   COLOR("navajowhite4"        ,139,121,94);
-   COLOR("navy"                ,0,0,128);
-   COLOR("navyblue"            ,0,0,128);
-   COLOR("oldlace"             ,253,245,230);
-   COLOR("olivedrab"           ,107,142,35);
-   COLOR("olivedrab1"          ,192,255,62);
-   COLOR("olivedrab2"          ,179,238,58);
-   COLOR("olivedrab3"          ,154,205,50);
-   COLOR("olivedrab4"          ,105,139,34);
-   COLOR("orange"              ,255,165,0);
-   COLOR("orange1"             ,255,165,0);
-   COLOR("orange2"             ,238,154,0);
-   COLOR("orange3"             ,205,133,0);
-   COLOR("orange4"             ,139,90,0);
-   COLOR("orangered"           ,255,69,0);
-   COLOR("orangered1"          ,255,69,0);
-   COLOR("orangered2"          ,238,64,0);
-   COLOR("orangered3"          ,205,55,0);
-   COLOR("orangered4"          ,139,37,0);
-   COLOR("orchid"              ,218,112,214);
-   COLOR("orchid1"             ,255,131,250);
-   COLOR("orchid2"             ,238,122,233);
-   COLOR("orchid3"             ,205,105,201);
-   COLOR("orchid4"             ,139,71,137);
-   COLOR("palegoldenrod"       ,238,232,170);
-   COLOR("palegreen"           ,152,251,152);
-   COLOR("palegreen1"          ,154,255,154);
-   COLOR("palegreen2"          ,144,238,144);
-   COLOR("palegreen3"          ,124,205,124);
-   COLOR("palegreen4"          ,84,139,84);
-   COLOR("paleturquoise"       ,175,238,238);
-   COLOR("paleturquoise1"      ,187,255,255);
-   COLOR("paleturquoise2"      ,174,238,238);
-   COLOR("paleturquoise3"      ,150,205,205);
-   COLOR("paleturquoise4"      ,102,139,139);
-   COLOR("palevioletred"       ,219,112,147);
-   COLOR("palevioletred1"      ,255,130,171);
-   COLOR("palevioletred2"      ,238,121,159);
-   COLOR("palevioletred3"      ,205,104,137);
-   COLOR("palevioletred4"      ,139,71,93);
-   COLOR("papayawhip"          ,255,239,213);
-   COLOR("peachpuff"           ,255,218,185);
-   COLOR("peachpuff1"          ,255,218,185);
-   COLOR("peachpuff2"          ,238,203,173);
-   COLOR("peachpuff3"          ,205,175,149);
-   COLOR("peachpuff4"          ,139,119,101);
-   COLOR("peru"                ,205,133,63);
-   COLOR("pink"                ,255,192,203);
-   COLOR("pink1"               ,255,181,197);
-   COLOR("pink2"               ,238,169,184);
-   COLOR("pink3"               ,205,145,158);
-   COLOR("pink4"               ,139,99,108);
-   COLOR("plum"                ,221,160,221);
-   COLOR("plum1"               ,255,187,255);
-   COLOR("plum2"               ,238,174,238);
-   COLOR("plum3"               ,205,150,205);
-   COLOR("plum4"               ,139,102,139);
-   COLOR("powderblue"          ,176,224,230);
-   COLOR("purple"              ,160,32,240);
-   COLOR("purple1"             ,155,48,255);
-   COLOR("purple2"             ,145,44,238);
-   COLOR("purple3"             ,125,38,205);
-   COLOR("purple4"             ,85,26,139);
-   COLOR("red"                 ,255,0,0);
-   COLOR("red1"                ,255,0,0);
-   COLOR("red2"                ,238,0,0);
-   COLOR("red3"                ,205,0,0);
-   COLOR("red4"                ,139,0,0);
-   COLOR("rosybrown"           ,188,143,143);
-   COLOR("rosybrown1"          ,255,193,193);
-   COLOR("rosybrown2"          ,238,180,180);
-   COLOR("rosybrown3"          ,205,155,155);
-   COLOR("rosybrown4"          ,139,105,105);
-   COLOR("royalblue"           ,65,105,225);
-   COLOR("royalblue1"          ,72,118,255);
-   COLOR("royalblue2"          ,67,110,238);
-   COLOR("royalblue3"          ,58,95,205);
-   COLOR("royalblue4"          ,39,64,139);
-   COLOR("saddlebrown"         ,139,69,19);
-   COLOR("salmon"              ,250,128,114);
-   COLOR("salmon1"             ,255,140,105);
-   COLOR("salmon2"             ,238,130,98);
-   COLOR("salmon3"             ,205,112,84);
-   COLOR("salmon4"             ,139,76,57);
-   COLOR("sandybrown"          ,244,164,96);
-   COLOR("seagreen"            ,46,139,87);
-   COLOR("seagreen1"           ,84,255,159);
-   COLOR("seagreen2"           ,78,238,148);
-   COLOR("seagreen3"           ,67,205,128);
-   COLOR("seagreen4"           ,46,139,87);
-   COLOR("seashell"            ,255,245,238);
-   COLOR("seashell1"           ,255,245,238);
-   COLOR("seashell2"           ,238,229,222);
-   COLOR("seashell3"           ,205,197,191);
-   COLOR("seashell4"           ,139,134,130);
-   COLOR("sienna"              ,160,82,45);
-   COLOR("sienna1"             ,255,130,71);
-   COLOR("sienna2"             ,238,121,66);
-   COLOR("sienna3"             ,205,104,57);
-   COLOR("sienna4"             ,139,71,38);
-   COLOR("skyblue"             ,135,206,235);
-   COLOR("skyblue1"            ,135,206,255);
-   COLOR("skyblue2"            ,126,192,238);
-   COLOR("skyblue3"            ,108,166,205);
-   COLOR("skyblue4"            ,74,112,139);
-   COLOR("slateblue"           ,106,90,205);
-   COLOR("slateblue1"          ,131,111,255);
-   COLOR("slateblue2"          ,122,103,238);
-   COLOR("slateblue3"          ,105,89,205);
-   COLOR("slateblue4"          ,71,60,139);
-   COLOR("slategrey"           ,112,128,144);
-   COLOR("slategrey1"          ,198,226,255);
-   COLOR("slategrey2"          ,185,211,238);
-   COLOR("slategrey3"          ,159,182,205);
-   COLOR("slategrey4"          ,108,123,139);
-   COLOR("snow"                ,255,250,250);
-   COLOR("snow1"               ,255,250,250);
-   COLOR("snow2"               ,238,233,233);
-   COLOR("snow3"               ,205,201,201);
-   COLOR("snow4"               ,139,137,137);
-   COLOR("springgreen"         ,0,255,127);
-   COLOR("springgreen1"        ,0,255,127);
-   COLOR("springgreen2"        ,0,238,118);
-   COLOR("springgreen3"        ,0,205,102);
-   COLOR("springgreen4"        ,0,139,69);
-   COLOR("steelblue"           ,70,130,180);
-   COLOR("steelblue1"          ,99,184,255);
-   COLOR("steelblue2"          ,92,172,238);
-   COLOR("steelblue3"          ,79,148,205);
-   COLOR("steelblue4"          ,54,100,139);
-   COLOR("tan"                 ,210,180,140);
-   COLOR("tan1"                ,255,165,79);
-   COLOR("tan2"                ,238,154,73);
-   COLOR("tan3"                ,205,133,63);
-   COLOR("tan4"                ,139,90,43);
-   COLOR("thistle"             ,216,191,216);
-   COLOR("thistle1"            ,255,225,255);
-   COLOR("thistle2"            ,238,210,238);
-   COLOR("thistle3"            ,205,181,205);
-   COLOR("thistle4"            ,139,123,139);
-   COLOR("tomato"              ,255,99,71);
-   COLOR("tomato1"             ,255,99,71);
-   COLOR("tomato2"             ,238,92,66);
-   COLOR("tomato3"             ,205,79,57);
-   COLOR("tomato4"             ,139,54,38);
-   COLOR("turquoise"           ,64,224,208);
-   COLOR("turquoise1"          ,0,245,255);
-   COLOR("turquoise2"          ,0,229,238);
-   COLOR("turquoise3"          ,0,197,205);
-   COLOR("turquoise4"          ,0,134,139);
-   COLOR("violet"              ,238,130,238);
-   COLOR("violetred"           ,208,32,144);
-   COLOR("violetred1"          ,255,62,150);
-   COLOR("violetred2"          ,238,58,140);
-   COLOR("violetred3"          ,205,50,120);
-   COLOR("violetred4"          ,139,34,82);
-   COLOR("wheat"               ,245,222,179);
-   COLOR("wheat1"              ,255,231,186);
-   COLOR("wheat2"              ,238,216,174);
-   COLOR("wheat3"              ,205,186,150);
-   COLOR("wheat4"              ,139,126,102);
-   COLOR("white"               ,255,255,255);
-   COLOR("whitesmoke"          ,245,245,245);
-   COLOR("yellow"              ,255,255,0);
-   COLOR("yellow1"             ,255,255,0);
-   COLOR("yellow2"             ,238,238,0);
-   COLOR("yellow3"             ,205,205,0);
-   COLOR("yellow4"             ,139,139,0);
-   COLOR("yellowgreen"         ,154,205,50);
-
+   COLOR("red"                 ,255,0,0)
+   COLOR("black"               ,0,0,0)
+   COLOR("blue"                ,0,0,255)
+   COLOR("cyan"                ,0,255,255)
+   COLOR("green"               ,0,255,0)
+   COLOR("magenta"             ,255,0,255)
+   COLOR("yellow"              ,255,255,0)
+   COLOR("white"               ,255,255,255)
+#if 1
+   COLOR("aliceblue"           ,240,248,255)
+   COLOR("antiquewhite"        ,250,235,215)
+   COLOR("antiquewhite1"       ,255,239,219)
+   COLOR("antiquewhite2"       ,238,223,204)
+   COLOR("antiquewhite3"       ,205,192,176)
+   COLOR("antiquewhite4"       ,139,131,120)
+   COLOR("aquamarine"          ,127,255,212)
+   COLOR("aquamarine1"         ,127,255,212)
+   COLOR("aquamarine2"         ,118,238,198)
+   COLOR("aquamarine3"         ,102,205,170)
+   COLOR("aquamarine4"         ,69,139,116)
+   COLOR("azure"               ,240,255,255)
+   COLOR("azure1"              ,240,255,255)
+   COLOR("azure2"              ,224,238,238)
+   COLOR("azure3"              ,193,205,205)
+   COLOR("azure4"              ,131,139,139)
+   COLOR("beige"               ,245,245,220)
+   COLOR("bisque"              ,255,228,196)
+   COLOR("bisque1"             ,255,228,196)
+   COLOR("bisque2"             ,238,213,183)
+   COLOR("bisque3"             ,205,183,158)
+   COLOR("bisque4"             ,139,125,107)
+   COLOR("blanchedalmond"      ,255,235,205)
+   COLOR("blue1"               ,0,0,255)
+   COLOR("blue2"               ,0,0,238)
+   COLOR("blue3"               ,0,0,205)
+   COLOR("blue4"               ,0,0,139)
+   COLOR("blueviolet"          ,138,43,226)
+   COLOR("brown"               ,165,42,42)
+   COLOR("brown1"              ,255,64,64)
+   COLOR("brown2"              ,238,59,59)
+   COLOR("brown3"              ,205,51,51)
+   COLOR("brown4"              ,139,35,35)
+   COLOR("burlywood"           ,222,184,135)
+   COLOR("burlywood1"          ,255,211,155)
+   COLOR("burlywood2"          ,238,197,145)
+   COLOR("burlywood3"          ,205,170,125)
+   COLOR("burlywood4"          ,139,115,85)
+   COLOR("cadetblue"           ,95,158,160)
+   COLOR("cadetblue1"          ,152,245,255)
+   COLOR("cadetblue2"          ,142,229,238)
+   COLOR("cadetblue3"          ,122,197,205)
+   COLOR("cadetblue4"          ,83,134,139)
+   COLOR("chartreuse"          ,127,255,0)
+   COLOR("chartreuse1"         ,127,255,0)
+   COLOR("chartreuse2"         ,118,238,0)
+   COLOR("chartreuse3"         ,102,205,0)
+   COLOR("chartreuse4"         ,69,139,0)
+   COLOR("chocolate"           ,210,105,30)
+   COLOR("chocolate1"          ,255,127,36)
+   COLOR("chocolate2"          ,238,118,33)
+   COLOR("chocolate3"          ,205,102,29)
+   COLOR("chocolate4"          ,139,69,19)
+   COLOR("coral"               ,255,127,80)
+   COLOR("coral1"              ,255,114,86)
+   COLOR("coral2"              ,238,106,80)
+   COLOR("coral3"              ,205,91,69)
+   COLOR("coral4"              ,139,62,47)
+   COLOR("cornflowerblue"      ,100,149,237)
+   COLOR("cornsilk"            ,255,248,220)
+   COLOR("cornsilk1"           ,255,248,220)
+   COLOR("cornsilk2"           ,238,232,205)
+   COLOR("cornsilk3"           ,205,200,177)
+   COLOR("cornsilk4"           ,139,136,120)
+   COLOR("cyan1"               ,0,255,255)
+   COLOR("cyan2"               ,0,238,238)
+   COLOR("cyan3"               ,0,205,205)
+   COLOR("cyan4"               ,0,139,139)
+   COLOR("darkblue"            ,0,0,139)
+   COLOR("darkcyan"            ,0,139,139)
+   COLOR("darkgoldenrod"       ,184,134,11)
+   COLOR("darkgoldenrod1"      ,255,185,15)
+   COLOR("darkgoldenrod2"      ,238,173,14)
+   COLOR("darkgoldenrod3"      ,205,149,12)
+   COLOR("darkgoldenrod4"      ,139,101,8)
+   COLOR("darkgreen"           ,0,100,0)
+   COLOR("darkgrey"            ,169,169,169)
+   COLOR("darkkhaki"           ,189,183,107)
+   COLOR("darkmagenta"         ,139,0,139)
+   COLOR("darkolivegreen"      ,85,107,47)
+   COLOR("darkolivegreen1"     ,202,255,112)
+   COLOR("darkolivegreen2"     ,188,238,104)
+   COLOR("darkolivegreen3"     ,162,205,90)
+   COLOR("darkolivegreen4"     ,110,139,61)
+   COLOR("darkorange"          ,255,140,0)
+   COLOR("darkorange1"         ,255,127,0)
+   COLOR("darkorange2"         ,238,118,0)
+   COLOR("darkorange3"         ,205,102,0)
+   COLOR("darkorange4"         ,139,69,0)
+   COLOR("darkorchid"          ,153,50,204)
+   COLOR("darkorchid1"         ,191,62,255)
+   COLOR("darkorchid2"         ,178,58,238)
+   COLOR("darkorchid3"         ,154,50,205)
+   COLOR("darkorchid4"         ,104,34,139)
+   COLOR("darkred"             ,139,0,0)
+   COLOR("darksalmon"          ,233,150,122)
+   COLOR("darkseagreen"        ,143,188,143)
+   COLOR("darkseagreen1"       ,193,255,193)
+   COLOR("darkseagreen2"       ,180,238,180)
+   COLOR("darkseagreen3"       ,155,205,155)
+   COLOR("darkseagreen4"       ,105,139,105)
+   COLOR("darkslateblue"       ,72,61,139)
+   COLOR("darkslategrey"       ,47,79,79)
+   COLOR("darkslategrey1"      ,151,255,255)
+   COLOR("darkslategrey2"      ,141,238,238)
+   COLOR("darkslategrey3"      ,121,205,205)
+   COLOR("darkslategrey4"      ,82,139,139)
+   COLOR("darkturquoise"       ,0,206,209)
+   COLOR("darkviolet"          ,148,0,211)
+   COLOR("deeppink"            ,255,20,147)
+   COLOR("deeppink1"           ,255,20,147)
+   COLOR("deeppink2"           ,238,18,137)
+   COLOR("deeppink3"           ,205,16,118)
+   COLOR("deeppink4"           ,139,10,80)
+   COLOR("deepskyblue"         ,0,191,255)
+   COLOR("deepskyblue1"        ,0,191,255)
+   COLOR("deepskyblue2"        ,0,178,238)
+   COLOR("deepskyblue3"        ,0,154,205)
+   COLOR("deepskyblue4"        ,0,104,139)
+   COLOR("dimgrey"             ,105,105,105)
+   COLOR("dodgerblue"          ,30,144,255)
+   COLOR("dodgerblue1"         ,30,144,255)
+   COLOR("dodgerblue2"         ,28,134,238)
+   COLOR("dodgerblue3"         ,24,116,205)
+   COLOR("dodgerblue4"         ,16,78,139)
+   COLOR("firebrick"           ,178,34,34)
+   COLOR("firebrick1"          ,255,48,48)
+   COLOR("firebrick2"          ,238,44,44)
+   COLOR("firebrick3"          ,205,38,38)
+   COLOR("firebrick4"          ,139,26,26)
+   COLOR("floralwhite"         ,255,250,240)
+   COLOR("forestgreen"         ,34,139,34)
+   COLOR("gainsboro"           ,220,220,220)
+   COLOR("ghostwhite"          ,248,248,255)
+   COLOR("gold"                ,255,215,0)
+   COLOR("gold1"               ,255,215,0)
+   COLOR("gold2"               ,238,201,0)
+   COLOR("gold3"               ,205,173,0)
+   COLOR("gold4"               ,139,117,0)
+   COLOR("goldenrod"           ,218,165,32)
+   COLOR("goldenrod1"          ,255,193,37)
+   COLOR("goldenrod2"          ,238,180,34)
+   COLOR("goldenrod3"          ,205,155,29)
+   COLOR("goldenrod4"          ,139,105,20)
+   COLOR("green1"              ,0,255,0)
+   COLOR("green2"              ,0,238,0)
+   COLOR("green3"              ,0,205,0)
+   COLOR("green4"              ,0,139,0)
+   COLOR("greenyellow"         ,173,255,47)
+   COLOR("grey"                ,190,190,190)
+   COLOR("honeydew"            ,240,255,240)
+   COLOR("honeydew1"           ,240,255,240)
+   COLOR("honeydew2"           ,224,238,224)
+   COLOR("honeydew3"           ,193,205,193)
+   COLOR("honeydew4"           ,131,139,131)
+   COLOR("hotpink"             ,255,105,180)
+   COLOR("hotpink1"            ,255,110,180)
+   COLOR("hotpink2"            ,238,106,167)
+   COLOR("hotpink3"            ,205,96,144)
+   COLOR("hotpink4"            ,139,58,98)
+   COLOR("indianred"           ,205,92,92)
+   COLOR("indianred1"          ,255,106,106)
+   COLOR("indianred2"          ,238,99,99)
+   COLOR("indianred3"          ,205,85,85)
+   COLOR("indianred4"          ,139,58,58)
+   COLOR("ivory"               ,255,255,240)
+   COLOR("ivory1"              ,255,255,240)
+   COLOR("ivory2"              ,238,238,224)
+   COLOR("ivory3"              ,205,205,193)
+   COLOR("ivory4"              ,139,139,131)
+   COLOR("khaki"               ,240,230,140)
+   COLOR("khaki1"              ,255,246,143)
+   COLOR("khaki2"              ,238,230,133)
+   COLOR("khaki3"              ,205,198,115)
+   COLOR("khaki4"              ,139,134,78)
+   COLOR("lavender"            ,230,230,250)
+   COLOR("lavenderblush"       ,255,240,245)
+   COLOR("lavenderblush1"      ,255,240,245)
+   COLOR("lavenderblush2"      ,238,224,229)
+   COLOR("lavenderblush3"      ,205,193,197)
+   COLOR("lavenderblush4"      ,139,131,134)
+   COLOR("lawngreen"           ,124,252,0)
+   COLOR("lemonchiffon"        ,255,250,205)
+   COLOR("lemonchiffon1"       ,255,250,205)
+   COLOR("lemonchiffon2"       ,238,233,191)
+   COLOR("lemonchiffon3"       ,205,201,165)
+   COLOR("lemonchiffon4"       ,139,137,112)
+   COLOR("lightblue"           ,173,216,230)
+   COLOR("lightblue1"          ,191,239,255)
+   COLOR("lightblue2"          ,178,223,238)
+   COLOR("lightblue3"          ,154,192,205)
+   COLOR("lightblue4"          ,104,131,139)
+   COLOR("lightcoral"          ,240,128,128)
+   COLOR("lightcyan"           ,224,255,255)
+   COLOR("lightcyan1"          ,224,255,255)
+   COLOR("lightcyan2"          ,209,238,238)
+   COLOR("lightcyan3"          ,180,205,205)
+   COLOR("lightcyan4"          ,122,139,139)
+   COLOR("lightgoldenrod"      ,238,221,130)
+   COLOR("lightgoldenrod1"     ,255,236,139)
+   COLOR("lightgoldenrod2"     ,238,220,130)
+   COLOR("lightgoldenrod3"     ,205,190,112)
+   COLOR("lightgoldenrod4"     ,139,129,76)
+   COLOR("lightgoldenrodyellow",250,250,210)
+   COLOR("lightgreen"          ,144,238,144)
+   COLOR("lightgrey"           ,211,211,211)
+   COLOR("lightpink"           ,255,182,193)
+   COLOR("lightpink1"          ,255,174,185)
+   COLOR("lightpink2"          ,238,162,173)
+   COLOR("lightpink3"          ,205,140,149)
+   COLOR("lightpink4"          ,139,95,101)
+   COLOR("lightsalmon"         ,255,160,122)
+   COLOR("lightsalmon1"        ,255,160,122)
+   COLOR("lightsalmon2"        ,238,149,114)
+   COLOR("lightsalmon3"        ,205,129,98)
+   COLOR("lightsalmon4"        ,139,87,66)
+   COLOR("lightseagreen"       ,32,178,170)
+   COLOR("lightskyblue"        ,135,206,250)
+   COLOR("lightskyblue1"       ,176,226,255)
+   COLOR("lightskyblue2"       ,164,211,238)
+   COLOR("lightskyblue3"       ,141,182,205)
+   COLOR("lightskyblue4"       ,96,123,139)
+   COLOR("lightslateblue"      ,132,112,255)
+   COLOR("lightslategrey"      ,119,136,153)
+   COLOR("lightsteelblue"      ,176,196,222)
+   COLOR("lightsteelblue1"     ,202,225,255)
+   COLOR("lightsteelblue2"     ,188,210,238)
+   COLOR("lightsteelblue3"     ,162,181,205)
+   COLOR("lightsteelblue4"     ,110,123,139)
+   COLOR("lightyellow"         ,255,255,224)
+   COLOR("lightyellow1"        ,255,255,224)
+   COLOR("lightyellow2"        ,238,238,209)
+   COLOR("lightyellow3"        ,205,205,180)
+   COLOR("lightyellow4"        ,139,139,122)
+   COLOR("limegreen"           ,50,205,50)
+   COLOR("linen"               ,250,240,230)
+   COLOR("magenta1"            ,255,0,255)
+   COLOR("magenta2"            ,238,0,238)
+   COLOR("magenta3"            ,205,0,205)
+   COLOR("magenta4"            ,139,0,139)
+   COLOR("maroon"              ,176,48,96)
+   COLOR("maroon1"             ,255,52,179)
+   COLOR("maroon2"             ,238,48,167)
+   COLOR("maroon3"             ,205,41,144)
+   COLOR("maroon4"             ,139,28,98)
+   COLOR("mediumaquamarine"    ,102,205,170)
+   COLOR("mediumblue"          ,0,0,205)
+   COLOR("mediumorchid"        ,186,85,211)
+   COLOR("mediumorchid1"       ,224,102,255)
+   COLOR("mediumorchid2"       ,209,95,238)
+   COLOR("mediumorchid3"       ,180,82,205)
+   COLOR("mediumorchid4"       ,122,55,139)
+   COLOR("mediumpurple"        ,147,112,219)
+   COLOR("mediumpurple1"       ,171,130,255)
+   COLOR("mediumpurple2"       ,159,121,238)
+   COLOR("mediumpurple3"       ,137,104,205)
+   COLOR("mediumpurple4"       ,93,71,139)
+   COLOR("mediumseagreen"      ,60,179,113)
+   COLOR("mediumslateblue"     ,123,104,238)
+   COLOR("mediumspringgreen"   ,0,250,154)
+   COLOR("mediumturquoise"     ,72,209,204)
+   COLOR("mediumvioletred"     ,199,21,133)
+   COLOR("midnightblue"        ,25,25,112)
+   COLOR("mintcream"           ,245,255,250)
+   COLOR("mistyrose"           ,255,228,225)
+   COLOR("mistyrose1"          ,255,228,225)
+   COLOR("mistyrose2"          ,238,213,210)
+   COLOR("mistyrose3"          ,205,183,181)
+   COLOR("mistyrose4"          ,139,125,123)
+   COLOR("moccasin"            ,255,228,181)
+   COLOR("navajowhite"         ,255,222,173)
+   COLOR("navajowhite1"        ,255,222,173)
+   COLOR("navajowhite2"        ,238,207,161)
+   COLOR("navajowhite3"        ,205,179,139)
+   COLOR("navajowhite4"        ,139,121,94)
+   COLOR("navy"                ,0,0,128)
+   COLOR("navyblue"            ,0,0,128)
+   COLOR("oldlace"             ,253,245,230)
+   COLOR("olivedrab"           ,107,142,35)
+   COLOR("olivedrab1"          ,192,255,62)
+   COLOR("olivedrab2"          ,179,238,58)
+   COLOR("olivedrab3"          ,154,205,50)
+   COLOR("olivedrab4"          ,105,139,34)
+   COLOR("orange"              ,255,165,0)
+   COLOR("orange1"             ,255,165,0)
+   COLOR("orange2"             ,238,154,0)
+   COLOR("orange3"             ,205,133,0)
+   COLOR("orange4"             ,139,90,0)
+   COLOR("orangered"           ,255,69,0)
+   COLOR("orangered1"          ,255,69,0)
+   COLOR("orangered2"          ,238,64,0)
+   COLOR("orangered3"          ,205,55,0)
+   COLOR("orangered4"          ,139,37,0)
+   COLOR("orchid"              ,218,112,214)
+   COLOR("orchid1"             ,255,131,250)
+   COLOR("orchid2"             ,238,122,233)
+   COLOR("orchid3"             ,205,105,201)
+   COLOR("orchid4"             ,139,71,137)
+   COLOR("palegoldenrod"       ,238,232,170)
+   COLOR("palegreen"           ,152,251,152)
+   COLOR("palegreen1"          ,154,255,154)
+   COLOR("palegreen2"          ,144,238,144)
+   COLOR("palegreen3"          ,124,205,124)
+   COLOR("palegreen4"          ,84,139,84)
+   COLOR("paleturquoise"       ,175,238,238)
+   COLOR("paleturquoise1"      ,187,255,255)
+   COLOR("paleturquoise2"      ,174,238,238)
+   COLOR("paleturquoise3"      ,150,205,205)
+   COLOR("paleturquoise4"      ,102,139,139)
+   COLOR("palevioletred"       ,219,112,147)
+   COLOR("palevioletred1"      ,255,130,171)
+   COLOR("palevioletred2"      ,238,121,159)
+   COLOR("palevioletred3"      ,205,104,137)
+   COLOR("palevioletred4"      ,139,71,93)
+   COLOR("papayawhip"          ,255,239,213)
+   COLOR("peachpuff"           ,255,218,185)
+   COLOR("peachpuff1"          ,255,218,185)
+   COLOR("peachpuff2"          ,238,203,173)
+   COLOR("peachpuff3"          ,205,175,149)
+   COLOR("peachpuff4"          ,139,119,101)
+   COLOR("peru"                ,205,133,63)
+   COLOR("pink"                ,255,192,203)
+   COLOR("pink1"               ,255,181,197)
+   COLOR("pink2"               ,238,169,184)
+   COLOR("pink3"               ,205,145,158)
+   COLOR("pink4"               ,139,99,108)
+   COLOR("plum"                ,221,160,221)
+   COLOR("plum1"               ,255,187,255)
+   COLOR("plum2"               ,238,174,238)
+   COLOR("plum3"               ,205,150,205)
+   COLOR("plum4"               ,139,102,139)
+   COLOR("powderblue"          ,176,224,230)
+   COLOR("purple"              ,160,32,240)
+   COLOR("purple1"             ,155,48,255)
+   COLOR("purple2"             ,145,44,238)
+   COLOR("purple3"             ,125,38,205)
+   COLOR("purple4"             ,85,26,139)
+   COLOR("red1"                ,255,0,0)
+   COLOR("red2"                ,238,0,0)
+   COLOR("red3"                ,205,0,0)
+   COLOR("red4"                ,139,0,0)
+   COLOR("rosybrown"           ,188,143,143)
+   COLOR("rosybrown1"          ,255,193,193)
+   COLOR("rosybrown2"          ,238,180,180)
+   COLOR("rosybrown3"          ,205,155,155)
+   COLOR("rosybrown4"          ,139,105,105)
+   COLOR("royalblue"           ,65,105,225)
+   COLOR("royalblue1"          ,72,118,255)
+   COLOR("royalblue2"          ,67,110,238)
+   COLOR("royalblue3"          ,58,95,205)
+   COLOR("royalblue4"          ,39,64,139)
+   COLOR("saddlebrown"         ,139,69,19)
+   COLOR("salmon"              ,250,128,114)
+   COLOR("salmon1"             ,255,140,105)
+   COLOR("salmon2"             ,238,130,98)
+   COLOR("salmon3"             ,205,112,84)
+   COLOR("salmon4"             ,139,76,57)
+   COLOR("sandybrown"          ,244,164,96)
+   COLOR("seagreen"            ,46,139,87)
+   COLOR("seagreen1"           ,84,255,159)
+   COLOR("seagreen2"           ,78,238,148)
+   COLOR("seagreen3"           ,67,205,128)
+   COLOR("seagreen4"           ,46,139,87)
+   COLOR("seashell"            ,255,245,238)
+   COLOR("seashell1"           ,255,245,238)
+   COLOR("seashell2"           ,238,229,222)
+   COLOR("seashell3"           ,205,197,191)
+   COLOR("seashell4"           ,139,134,130)
+   COLOR("sienna"              ,160,82,45)
+   COLOR("sienna1"             ,255,130,71)
+   COLOR("sienna2"             ,238,121,66)
+   COLOR("sienna3"             ,205,104,57)
+   COLOR("sienna4"             ,139,71,38)
+   COLOR("skyblue"             ,135,206,235)
+   COLOR("skyblue1"            ,135,206,255)
+   COLOR("skyblue2"            ,126,192,238)
+   COLOR("skyblue3"            ,108,166,205)
+   COLOR("skyblue4"            ,74,112,139)
+   COLOR("slateblue"           ,106,90,205)
+   COLOR("slateblue1"          ,131,111,255)
+   COLOR("slateblue2"          ,122,103,238)
+   COLOR("slateblue3"          ,105,89,205)
+   COLOR("slateblue4"          ,71,60,139)
+   COLOR("slategrey"           ,112,128,144)
+   COLOR("slategrey1"          ,198,226,255)
+   COLOR("slategrey2"          ,185,211,238)
+   COLOR("slategrey3"          ,159,182,205)
+   COLOR("slategrey4"          ,108,123,139)
+   COLOR("snow"                ,255,250,250)
+   COLOR("snow1"               ,255,250,250)
+   COLOR("snow2"               ,238,233,233)
+   COLOR("snow3"               ,205,201,201)
+   COLOR("snow4"               ,139,137,137)
+   COLOR("springgreen"         ,0,255,127)
+   COLOR("springgreen1"        ,0,255,127)
+   COLOR("springgreen2"        ,0,238,118)
+   COLOR("springgreen3"        ,0,205,102)
+   COLOR("springgreen4"        ,0,139,69)
+   COLOR("steelblue"           ,70,130,180)
+   COLOR("steelblue1"          ,99,184,255)
+   COLOR("steelblue2"          ,92,172,238)
+   COLOR("steelblue3"          ,79,148,205)
+   COLOR("steelblue4"          ,54,100,139)
+   COLOR("tan"                 ,210,180,140)
+   COLOR("tan1"                ,255,165,79)
+   COLOR("tan2"                ,238,154,73)
+   COLOR("tan3"                ,205,133,63)
+   COLOR("tan4"                ,139,90,43)
+   COLOR("thistle"             ,216,191,216)
+   COLOR("thistle1"            ,255,225,255)
+   COLOR("thistle2"            ,238,210,238)
+   COLOR("thistle3"            ,205,181,205)
+   COLOR("thistle4"            ,139,123,139)
+   COLOR("tomato"              ,255,99,71)
+   COLOR("tomato1"             ,255,99,71)
+   COLOR("tomato2"             ,238,92,66)
+   COLOR("tomato3"             ,205,79,57)
+   COLOR("tomato4"             ,139,54,38)
+   COLOR("turquoise"           ,64,224,208)
+   COLOR("turquoise1"          ,0,245,255)
+   COLOR("turquoise2"          ,0,229,238)
+   COLOR("turquoise3"          ,0,197,205)
+   COLOR("turquoise4"          ,0,134,139)
+   COLOR("violet"              ,238,130,238)
+   COLOR("violetred"           ,208,32,144)
+   COLOR("violetred1"          ,255,62,150)
+   COLOR("violetred2"          ,238,58,140)
+   COLOR("violetred3"          ,205,50,120)
+   COLOR("violetred4"          ,139,34,82)
+   COLOR("wheat"               ,245,222,179)
+   COLOR("wheat1"              ,255,231,186)
+   COLOR("wheat2"              ,238,216,174)
+   COLOR("wheat3"              ,205,186,150)
+   COLOR("wheat4"              ,139,126,102)
+   COLOR("whitesmoke"          ,245,245,245)
+   COLOR("yellow1"             ,255,255,0)
+   COLOR("yellow2"             ,238,238,0)
+   COLOR("yellow3"             ,205,205,0)
+   COLOR("yellow4"             ,139,139,0)
+   COLOR("yellowgreen"         ,154,205,50)
+#endif
diff --git a/src/modules/Image/image.h b/src/modules/Image/image.h
index fcb35c0fea8f2fa72814cafad982f23035870a41..5af9e30e6b660b6f4380b7e30fce0704a3162e89 100644
--- a/src/modules/Image/image.h
+++ b/src/modules/Image/image.h
@@ -1,7 +1,7 @@
 /*
 **! module Image
 **! note
-**!	$Id: image.h,v 1.21 1998/04/16 04:32:36 mirar Exp $
+**!	$Id: image.h,v 1.22 1999/01/24 00:47:36 mirar Exp $
 */
 
 #ifdef PIKE_IMAGE_IMAGE_H
@@ -16,6 +16,8 @@
 #define QUANT_SELECT_CACHE 6
 
 #define COLORTYPE unsigned char
+#define COLORSIZE 1
+#define COLORMAX 255
 
 #define FS_SCALE 1024
 
diff --git a/src/modules/Image/module_testsuite.in b/src/modules/Image/module_testsuite.in
index 4360f7d1f2b6adf19c4b80b8a80a0378936c1aa0..9d69d24cf8dc2ac83d038c8fa33be929dc332364 100644
--- a/src/modules/Image/module_testsuite.in
+++ b/src/modules/Image/module_testsuite.in
@@ -376,7 +376,7 @@ img->polygone(({10+x,15+y,15+x,10+y,15+x,15+y}),
 
 object img1=Image.GIF.decode(MIME.decode_base64(
 "R0lGODlhZABkAMQAAAAAAAICAgUFBQoKChYWFigoKC0tLTAwMDIyMjMyMj8/P1lYWFFRUHJycXp5eYyLi6OioaWlpK2srLW0s8vLyszLytbV1Ojn5vTz8vn49/z7+v/+/QAAAAAAAAAAAAAAACwAAAAAZABkAAQF/yAAiONYmiaapivLuu8byzJd1zeO6/ve+z5gMDgkEo3HY1KpZDabTyhUOp1WrVZsNrvlcr3fb1gsJpfLZzRafWSw3Osd4bF7EOLtDCsDx6fmGBs7Gxh2fjgMGYIpG3yHAIAbG4s1k4SGjyaJkyyTjnGRlpQyopd3j5ucjJ59X6Glg6WmhwYICLYst7cGaAW6uro7wMAIBZmZx8jIysvLzc7O0GUOFBTVLNbWDmgKE9nZ1jvg4BMKhwISlp2TEgJrAw0XsrGiFw0DmeiqJuzuePDy1OGod8+Zvk7tMgHcR2qDPXzRAKBjkXAZwB0PI6bwZ4KjM4g1QGrUOJIkSZMnT+6mVKmSZcuWL2HClDlzZk2bNnHmzLmTJ0+fP38GFSqUaNGiR5EiVbp0aVOnTqFGjTqV6hdjKbBadRaBRdetywpoYKFBK9hDEUYB2PD1rB+xajeUdesnbVy2dOPAvTs3bxm7d/H6vapBIL9JfQdbARxYsOIpBxIkkMxi8uQDjx9n1qyZc+fOn0GDFj169CMI4LBlg2D6yAJR6yYtaE0kgAXDIyxZCECbyGuGa2X3rn377u7hvoELRx7EdtzjzIO87jQ7enMLLKBb91HdRPftO3inEA8efHnz5tGnT7+ePXv379/Hly+ffv369/HjPxQCADs="));
-if (img-img1>16) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 1 (right triangle 0.0, 0.2): "+( "differ too much" )+"\n"); return 0; } while (0);
+if (!(img-img1<16)) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 1 (right triangle 0.0, 0.2): "+( "differ too much" )+"\n"); return 0; } while (0);
 if (!equal(img->max(),({255,254,253}))) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 1 (right triangle 0.0, 0.2): "+( "wrong maxcolor" )+"\n"); return 0; } while (0);
 return 1;
 
@@ -410,7 +410,7 @@ img->polygone(({10+x,15+y,15+x,10+y,15+x,15+y}),
 
 object img1=Image.GIF.decode(MIME.decode_base64(
 "R0lGODlhZABkANUAAAAAAAICAgUFBQcHBwoKChQUFBYWFh4eHiMjIyYmJS0tLTAwMDMyMigoKFFRUFlYWHp5eX9+fnJycYyLi56dnDIyMqOioaWlpMHBwMvLyszLytHQz9bV1Orp6Ojn5vTz8vz7+v/+/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAZABkAAUG/0AAQDgcFo1GZDK5ZDKdz2dUKqVWq1csVrvddr1ecDg8JpPN53NarWa32284XD6f1+12fD6/5/P9f3+BgoKEhYVqAkmKiGQEWAMBjW0FFEkMEZNYBhMYWBUcD5KaWwUbGZchmaRGnB8hqFUVISGho6xJprCpqqyutLuywLWiuEO6wUMMwKuIv8OxUrPDxLeTAhQZGRkWSQ3b2w6FAQ8Y4ODcWN/o4BYNxsbw8fHz9PT29/f5ggIMDP7vjBD49w/BuAUECf4LKGWgQoUHWEUAFg3AMlodFCBqcAEEtWRPplHzIOGRRFoVL2bUxNEjxU8jS9KbmDLESlYtUcKkRdLkvf8IKW8aa1mRyaye+pKIM4JAo74GELAkkJk0aVWrVrFmzbqVK1evX7+GFSuWbNmyZ9GiVbt2bVu3buHGjTuXLl27d+/m1auXb9++fwEDFjx4cGHDhvlYs5b43oMkCxg2jmfAkxEGFybfm5AShGTNmgx8qJkZNKsJIJd5Nh36Vc0QpVkjQp2a1mrZgkTrvAwsNu48tGvb/vxbDQFz27oZWbctavHiz6FDlz59enXr1rFnz152QIUK3yUTAA8+AfczATi85A1MwvkzD9YrA+bB5/st6XfPp+X+Ppn4wtXnHxn5vdbfgGHEV5OACIaRXk0HNujFAykxKKEXASinTIQXbiEk2QH2ddihiCOOWKKJJqKYYoorssiiiy++GKOMMtJYY4034hYEADs="));
-if (img-img1>16) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 2 (right triangle -0.2, -0.2): "+( "differ too much" )+"\n"); return 0; } while (0);
+if (!(img-img1<16)) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 2 (right triangle -0.2, -0.2): "+( "differ too much" )+"\n"); return 0; } while (0);
 if (!equal(img->max(),({255,254,253}))) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 2 (right triangle -0.2, -0.2): "+( "wrong maxcolor" )+"\n"); return 0; } while (0);
 return 1;
 
@@ -451,20 +451,20 @@ a+=({ 50+50*sin(i*2*3.1415926535/7+0.11),
 50+50*cos(i*2*3.1415926535/7+0.11) });
 a+=({ 50+19*sin((i+0.5)*2*3.1415926535/7+0.11),
 50+19*cos((i+0.5)*2*3.1415926535/7+0.11) });
-b+=({ 50+0.9*50*sin(i*2*3.1415926535/7+0.1),
-50+0.9*50*cos(i*2*3.1415926535/7+0.1) });
-b+=({ 50+0.5*19*sin((i+0.5)*2*3.1415926535/7+0.1),
-50+0.5*19*cos((i+0.5)*2*3.1415926535/7+0.1) });
+b+=({ 50+0.9*50*sin(i*2*3.1415926535/7+0.11),
+50+0.9*50*cos(i*2*3.1415926535/7+0.11) });
+b+=({ 50+0.5*19*sin((i+0.5)*2*3.1415926535/7+0.11),
+50+0.5*19*cos((i+0.5)*2*3.1415926535/7+0.11) });
 }
 
 img->setcolor(255,128,0);
 img->polyfill(a,b);
 
 object img1=Image.GIF.decode(MIME.decode_base64(
-"R0lGODlhZABkAPcAAAAAAAEAAAIAAAMAAAQAAAMBAAUAAAYAAAcAAAUCAAYDAAcDAAIBAAgAAQkAAQgEAAkEAAsAAQsBAAoAAQwAAQ4AAQoFAAwGAAsFAA0GAA4HAAQCAA8AARAAAhIAAhMAAhUAAhQAAhADABEAAhYAAhgAAxoAAxsAAxwAAx0AAxAEABEIABAIABIJAA8HABcAAh0EARMKABQKABUKABULABYLABcLABgMABkMABsNABwOAB0OAB0PAA0AAR4AAx8AAyAABCIABCEABCMGAiQAAyUABCQAAycABCgABSkABSoABSsABSwABS4ABS8ABTAABjEABjIABjMABjUABjYABjcABjkABzoABzkHBD4ABzwAB0AACD0ABz0HBR4PACAQAB8PACEQACIRACMRACQSACUSACYTACgTACcUACgUACkUACoVACwWAC0WAC0XADEPAS4XADAYADEYADIZADQaADUaADYbADgbADodADgcADweAD0eAD8fAEAgAEEgAEEhAEYACEcCBksACFAACVUACVgACl0AC2IADFkAC2gADGsBC3IADnEADXgBDXwADn0BDkcACEwaAkQfAFEdAk4mAFIoAFMpAFspAHAPCXYZBl4sAHQrAmUyAGw1AHA3AHo5AH8AD4AAD4AAEIEBD4ICD4ABD4MDD4QED4QFDoAIDYcGDowKDo0LDpAPDZISDJQUDZcWDJkaC5wcDJ4eDKEiCqUlC6gnCpYzBKsqCaswCLAuCbIyCbM0CbY4CLo5CLw8CGAHCYFBAIpFAIxIAJFKAJlNAKFQAKRTAMBBB7hOBMRFBshKBq1XALhdALteAMVjAMxNBtBPBdJWBNlYBNpbBNZjAuBgA+RlAtVrANpuAORuAeVzAOpsAu9xAet2APB2APF4ALNZAPR1AfN0AfV2AfZ2AfN6APR6APV6APZ4APZ7APZ3Afl5APl6APh5APd8APh8APl7APp7APp8APl9APp9APV7APt8APx9APx+APt+AP1/AP1+AP5/APd4AP+AACwAAAAAZABkAAcI/wABABA4cGBBgwYRJky4kCFDhw8fRpQokWLFihcxYtS4cWNHjx5Bhgw5kqTEACZNplSpkiXGDZpatpQ5c6bKT59s2tS5c2fCNfBi+vQ5lCjJAs/+SZI4wajRhBqetvz07x+ch0UASZVqp9PW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"));
+"R0lGODlhZABkAPcAAAAAAAEAAAIBAAQAAAIAAAMBAAUAAAQCAAUCAAMAAAcAAAgAAQYAAAcDAAkAAQsAAQwAAQsBAAoAAQkEAAoFAAsFAAwGAAgEAA0AAQ4AAQ8AARAAAhIAAhMAAhADABEAAhQAAhUAAhYAAhgAAxoAAxsAAw0GAA8HABEIABAIABEJABIJABMKAA4HABcAAhcIABUKABQKABYLABcLABkMABgMABoNABsNABwAAx0AAx4AAx8AAx0EASAABCEABCIABCQABCUABCYAAyQCAiYABCcABCgABSkABSsABSoABSwABS4ABS8ABTAABjEABjIABjAEBDMABjUABjcABjgABzcCBTYABjkABzoABzsABz0ABz4ABxwOAB0OAB4PAB0PAB8PACAQACEQACIRACMRACQSACcPACYTACcTACUSACgUACkUACkVACsWACoVACwWAC0WAC0XADEPAS4XAC8XADEYADIZADkHBDMaADUaADcbADYbADodADgcADweAD0eAEMACEQLBUkACE4ACU8ACFcAClkACmAACmAAC2gADGkADHAADXUADncADnkADnwAD0IXAUEfAEMhAEolAEokAFAnAFgnAFksAFcpAF4vAHQVB3QeBGEwAGYyAGkzAHY3AEoACX4AD38ADn8AD4AAEIAAD4EBD4ICD4MDD4MEDoUFD4cIDYoLDosKDosIDo4NDpEQDZMUDJYVDZkZDJsdC58fDKEgC6QgC6cnCqkpCqAvBqwrCq0yCLMyCbQzCLg3CHY7AH1AAH9BAIhFAI1IAJRKAJpGAp5QAHk8AKxLArw9B79GBapWALNbAL5bAb9hAMdHBs1NBs9RBNVWBNJTBM1kANtcBOJjAtBpANhsANpuAOFwAOhpAuptAeZzAOt2AadTAO9vAfBxAfByAfB4AO92APF5APNzAfN0AfV2AfF3APN6APN5APV6APd4APh5APd8APh7APl6APp7APl9APt8APp9APt+APx9APx+AP1+AP1/AO93AP5/AP5+AP+AACwAAAAAZABkAAcI/wABABA4cGBBgwYRJky4kCFDhw8fRpQokWLFihcxYtS4cWNHjx5Bhgw5kqTEACZNplSpkiXGA5datpQ5c6ZKZMBs2tS5c2dCN/Ay+fQ5lKjJAtX+SZIowajRhC2etgQG79+ch0EASZW6x9PW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"));
 
 
-if (img-img1>16) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 3 (hollow stars): "+( "differ too much" )+"\n"); return 0; } while (0);
+if (!(img-img1<16)) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 3 (hollow stars): "+( "differ too much" )+"\n"); return 0; } while (0);
 
 
 
@@ -498,11 +498,240 @@ img->polyfill(a);
 object img1=Image.GIF.decode(MIME.decode_base64(
 "R0lGODlhZABkAOYAAAAAAAIAAAEAAAQAAAUAAAYAAAMAAAgAAQkAAQoAAQsAAQwAAQ0AAQ4AAQ8AAQcAABAAAhEAAhIAAhMAAhUAAhQAAhYAAhcAAhgAAxkAAxoAAxsAAxwAAx0AAx4AAx8AAyAABCEABCIABCMABCQABCUABCYABCcABCgABSkABSoABSsABSwABS0ABS4ABS8ABTAABjEABjIABjMABjQABjUABjYABjcABjgABzkABzoABzsABzwABz0ABz4ABz8AB0AACEMACEIACEYACEcACEgACUkACUoACUsACUwACU0ACU4ACU8ACVAAClIAClEAClMAClUAClgAC1cAClkAC1YAClsAC1wAC10AC14AC18AC2AADGEADGIADGMADGQADGUADGYADGcADGgADWkADWoADWsADWwADW0ADW4ADW8ADXAADnEADnMADnQADnUADnIADncADngAD3kAD3YADnoAD3sAD3wAD0EACH0AD38AD34AD4AAEAAAAAAAAAAAACwAAAAAZABkAAYH/4AAAIKDg4WGhoiJiYuMjI6Pj5GSkpSVlZeYmJqbm52enqChoaOkpKanp6mqqqytra+wsLKzs7W2tri5ubu8hgq+vsHClSpFxMTIxDl6NMnJz7YCRnx8HNDQ2KoEUtV6BdnZ4Z4KX9V8aOLi6pUTaud8UeukKC3zsx508Hw9954HdcKI8EdqxZ19fEoQ3ISEj54rFxZW2qEHIZ8GEitRqMhnzxMHGQcJaGiRTshKWeDdGXJAIgEqFqtlOSnpBMI4Owb4UxAmZrUhNB8JeIeQzQsB6yoQ9eki6CMdPsmQyPYhjs9zEZ0mAnhViwZiLQ5e5XMngFZGSsbqgRKBFw+OY//FnGVkAa7PO0USwBo5Fh6TuYy09K0mpweBUwWsDD6HA3AiFIurwZGBdNMCMZGrgXBsSMCazHzMnMBE4XNmPS05D9oBuhqXa4xAyGm9RrUhBHZaO6wywZALsaCl2Da0RHe1PEgU+LCbGc/wQReYg85jvFqK54O2VK9+ri12Fdy5z8E+KACb8Ma5kB/EA73uI+sBJMjtPrOM+ACY1M/8NT4G6ftZtIdO+HURYF9l4DfICgeOBYWCAAQAR4M+7QAhAD1QGNN1ECYAnIbn1MGDARA2AaJFZ4yg4H8nIqRHFSDF50WLFtXRA4nYdTAbjRahMdVwItTBo096SAGBaid8OKT/RXb8QOBZLVC3ZF9pmHDWDHtMGRkV3p3EjJaZ2QHEkwv9ACCYY6kx2kJDoFmdFRLcw5eb1d0hxGHZBOAEneitwSExBnTDp3tX9OYLAVgMut8dQeA5ywMGKhogGyrMkkBPkjaYRQWqMFBGpvXdgcYVSOigggWnQJAGqK3p0UYXT+ABwwcNVAZLBROyetUcY0hBhA0lUECmLxi8oes5eaiRhRI8sLCBXv5wYFWmaUARhAwhQGDWSSHMwaqVZ5lAX6Z6IHDWClJyZ8caX1ChhBA2nFGdGWfFkGVfetSRhhdTIAFEDSl4IMEDkrxQ3RJa3QCXHnKgwUUVR/wwAwocROCo1ioBmNZaDE5F0IMMJmzgwLDJ1GAcpxfOMoAbrZmUsi2sgUbFy7YUMG1kPNBsCx6gfaCzpUIulgfJP4dCRGRfFD0LA0r6RITSs6Q1WKVQtyLBvVfpwUDVsEDRlxpcwxLdWE6EDQtMV9VgdisdnFkNBmu3ol1Mc9gadygj+ITF3a2AERMQfKuSQkwqBn6KGQjtQbDhpBi8zxiMnxLAUtUgEfkpJsPT1OWhrAzPkZyHEjMfbYROis3VVGE6KTzzkcPqoSAgJGywb0KEHTjWjgkDM+nuCQVzBQIAOw=="));
 
-if (img-img1>16) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 4 (star): "+( "differ too much" )+"\n"); return 0; } while (0);
+if (!(img-img1<16)) do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 4 (star): "+( "differ too much" )+"\n"); return 0; } while (0);
 if (!equal(img->max(),({128,0,16}))) 
 do { werror("failure; Image.image/advanced drawing/Image.image->polyfill 4 (star): "+( "wrong maxcolor ("+img->max()[0]+","+img->max()[1]+","+img->max()[2]+")" )+"\n"); return 0; } while (0);
 return 1;
 
+
+}
+mixed b() { return 1; }
+
+....
+test 24, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#324 "testsuite.in.in"
+object img=Image.image(200,200)->test();
+img->tuned_box(50,50,150,150,({({0,0,0}),({255,0,0}),({0,255,0}),({0,0,255})}));
+object c=Image.colortable(img,1000)->cubicles(16,16,16,4);
+if (sizeof(c)<200) do { werror("failure; Image.image/colortable/colortable - standard: "+( "too few colors" )+"\n"); return 0; } while (0);
+object img1=(c*img);
+if (!(img-img1<50)) do { werror("failure; Image.image/colortable/colortable - standard: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0);
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 25, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#333 "testsuite.in.in"
+object img=Image.image(200,200)->test();
+img->tuned_box(50,50,150,150,({({0,0,0}),({255,0,0}),({0,255,0}),({0,0,255})}));
+object c=Image.colortable(32,32,32)->floyd_steinberg();
+object img1=(c*img);
+if (!(img-img1<50)) do { werror("failure; Image.image/colortable/colortable - floyd-steinberg: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0);
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 26, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#341 "testsuite.in.in"
+object img=Image.image(200,200)->test();
+img->tuned_box(50,50,150,150,({({0,0,0}),({255,0,0}),({0,255,0}),({0,0,255})}));
+object c=Image.colortable(32,32,32)->ordered();
+object img1=(c*img);
+if (!(img-img1<32)) do { werror("failure; Image.image/colortable/colortable - ordered: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0);
+return 1;
+
+
+
+}
+mixed b() { return 1; }
+
+....
+test 27, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#353 "testsuite.in.in"
+object img=Image.image(100,100)->test();
+object img1=Image.PNM.decode(Image.PNM.encode(img));
+if (img!=img1) do { werror("failure; Image.image/encoding/decoding/Image.PNM.encode/decode: "+( "differ" )+"\n"); return 0; } while (0);
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 28, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#359 "testsuite.in.in"
+object img=Image.image(100,100)->test();
+object c=Image.colortable(img,250)->cubicles(10,10,10,1)->floyd_steinberg();
+img=c*img;
+object img1=Image.GIF.decode(Image.GIF.encode(img));
+if (img!=img1) do { werror("failure; Image.image/encoding/decoding/Image.GIF.encode/decode: "+( "differ ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0);
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 29, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#367 "testsuite.in.in"
+object img=Image.image(100,100)->test();
+object c=Image.colortable(img,256)->cubicles(16,16,16,1);
+img=c*img;
+object img1=Image.GIF.decode(Image.GIF.encode(img,c));
+if (img!=img1) do { werror("failure; Image.image/encoding/decoding/Image.GIF.encode/decode colortable : "+( "differ ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0);
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 30, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#375 "testsuite.in.in"
+object img=Image.image(100,100)->test();
+object c=Image.colortable(img,256)->floyd_steinberg()->cubicles(16,16,16);
+img=c*img;
+object img1=Image.GIF.decode(Image.GIF.encode(img,c));
+if (!(img-img1<50)) do { werror("failure; Image.image/encoding/decoding/Image.GIF.encode/decode colortable w/ floyd-steinberg: "+( "differ too much ("+(img-img1)->max()[0]+","+(img-img1)->max()[1]+","+(img-img1)->max()[2]+","+")" )+"\n"); return 0; } while (0);
+return 1;
+
+
+}
+mixed b() { return 1; }
+
+....
+test 31, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#386 "testsuite.in.in"
+foreach (
+({ ({ "black", ({ 0, 0, 0 }), ({ 0, 0, 0 }), 0 }),
+({ "blue", ({ 0, 0, 255 }), ({ 170, 255, 255 }), 41 }),
+({ "cyan", ({ 0, 255, 255 }), ({ 128, 255, 255 }), 168 }),
+({ "green", ({ 0, 255, 0 }), ({ 85, 255, 255 }), 127 }),
+({ "magenta", ({ 255, 0, 255 }), ({ 213, 255, 255 }), 128 }),
+({ "red", ({ 255, 0, 0 }), ({ 0, 255, 255 }), 87 }),
+({ "white", ({ 255, 255, 255 }), ({ 0, 0, 255 }), 255 }),
+({ "yellow", ({ 255, 255, 0 }), ({ 43, 255, 255 }), 214 }) }),
+array i)
+{
+object c1=Image.color(i[0]);
+object c2=Image.color(@i[1]);
+object c3=Image.color.rgb(@i[1]);
+
+if (c1!=c2)
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "by values != by name" )+"\n"); return 0; } while (0);
+if (c1!=c3)
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "by rgb() != by name|values" )+"\n"); return 0; } while (0);
+
+if (c1->r!=i[1][0] ||
+c1->g!=i[1][1] ||
+c1->b!=i[1][2])
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "wrong ->r("+c1->r+"), ->g, ->b reported" )+"\n"); return 0; } while (0);
+
+if (c1->rgb()[0]!=i[1][0] ||
+c1->rgb()[1]!=i[1][1] ||
+c1->rgb()[2]!=i[1][2])
+
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "wrong ->rgb() (" +c1->rgb()[0]+","+c1->rgb()[1]+","+c1->rgb()[2]+") reported" )+"\n"); return 0; } while (0);
+
+if (c1->hsv()[0]!=i[2][0] ||
+c1->hsv()[1]!=i[2][1] ||
+c1->hsv()[2]!=i[2][2])
+
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "wrong ->hsv() (" +c1->hsv()[0]+","+c1->hsv()[1]+","+c1->hsv()[2]+") reported" )+"\n"); return 0; } while (0);
+
+if (c1->greylevel()!=i[3])
+
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "wrong ->greylevel() ("+c1->greylevel()+", should be " +i[3]+") reported" )+"\n"); return 0; } while (0);
+
+if (c1->grey()->r!=i[3])
+
+
+
+do { werror("failure; Image.image/Image.color/Image.color: "+( "color "+i[0]+" (rgb="+i[1][0]+","+i[1][1]+","+i[1][2]+ ", hsv="+i[2][0]+","+i[2][1]+","+i[2][2]+") failed; " "wrong ->grey()->r ("+c1->grey()->r+", should be " +i[3]+") reported" )+"\n"); return 0; } while (0);
+}; 
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 32, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#448 "testsuite.in.in"
+if (!arrayp(indices(Image.color)))
+do { werror("failure; Image.image/Image.color/indices(Image.color): "+( "wrong type\n" )+"\n"); return 0; } while (0);
+if (!stringp(indices(Image.color)[0]))
+do { werror("failure; Image.image/Image.color/indices(Image.color): "+( "wrong type of elements\n" )+"\n"); return 0; } while (0);
+if (sizeof(indices(Image.color))<8)
+do { werror("failure; Image.image/Image.color/indices(Image.color): "+( "too few colors\n" )+"\n"); return 0; } while (0);
+return 1;
+
+}
+mixed b() { return 1; }
+
+....
+test 33, expected result: EQ
+mixed a(){
+# 1 "-"
+
+
+#457 "testsuite.in.in"
+if (!arrayp(values(Image.color)))
+do { werror("failure; Image.image/Image.color/values(Image.color): "+( "wrong type\n" )+"\n"); return 0; } while (0);
+if (!objectp(values(Image.color)[0]))
+do { werror("failure; Image.image/Image.color/values(Image.color): "+( "wrong type of elements\n" )+"\n"); return 0; } while (0);
+if (sizeof(indices(Image.color))!=sizeof(values(Image.color)))
+do { werror("failure; Image.image/Image.color/values(Image.color): "+( "not the same size of indices() and values()\n" )+"\n"); return 0; } while (0);
+return 1;
+
 }
 mixed b() { return 1; }