From 5379b20e561125834bcba17527be436a90ba4981 Mon Sep 17 00:00:00 2001
From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org>
Date: Fri, 30 May 1997 02:21:12 +0200
Subject: [PATCH] forgot these, too

Rev: src/modules/Image/doc/Image.colortable.html~:1.2(DEAD)
Rev: src/modules/Image/doc/Image.font.html~:1.2(DEAD)
Rev: src/modules/Image/doc/Image.html~:1.2(DEAD)
Rev: src/modules/Image/doc/Image.image.html~:1.2(DEAD)
Rev: src/modules/Image/doc/illustration_43.gif:1.1
Rev: src/modules/Image/doc/illustration_46.gif:1.1
Rev: src/modules/Image/doc/illustration_47.gif:1.1
Rev: src/modules/Image/doc/illustration_48.gif:1.1
Rev: src/modules/Image/doc/illustration_49.gif:1.1
Rev: src/modules/Image/doc/illustration_51.gif:1.1
Rev: src/modules/Image/doc/illustration_53.gif:1.1
Rev: src/modules/Image/doc/illustration_54.gif:1.1
Rev: src/modules/Image/image.c:1.35
---
 .gitattributes                               |    1 -
 src/modules/Image/doc/Image.colortable.html~ |   15 -
 src/modules/Image/doc/Image.font.html~       |  186 --
 src/modules/Image/doc/Image.html~            |   41 -
 src/modules/Image/doc/Image.image.html~      | 2737 ------------------
 src/modules/Image/doc/illustration_43.gif    |  Bin 0 -> 2583 bytes
 src/modules/Image/doc/illustration_46.gif    |  Bin 0 -> 6013 bytes
 src/modules/Image/doc/illustration_47.gif    |  Bin 0 -> 3817 bytes
 src/modules/Image/doc/illustration_48.gif    |  Bin 0 -> 5876 bytes
 src/modules/Image/doc/illustration_49.gif    |  Bin 0 -> 6145 bytes
 src/modules/Image/doc/illustration_51.gif    |  Bin 0 -> 397 bytes
 src/modules/Image/doc/illustration_53.gif    |  Bin 0 -> 3817 bytes
 src/modules/Image/doc/illustration_54.gif    |  Bin 0 -> 5105 bytes
 src/modules/Image/image.c                    |   49 +-
 14 files changed, 43 insertions(+), 2986 deletions(-)
 delete mode 100644 src/modules/Image/doc/Image.colortable.html~
 delete mode 100644 src/modules/Image/doc/Image.font.html~
 delete mode 100644 src/modules/Image/doc/Image.html~
 delete mode 100644 src/modules/Image/doc/Image.image.html~
 create mode 100644 src/modules/Image/doc/illustration_43.gif
 create mode 100644 src/modules/Image/doc/illustration_46.gif
 create mode 100644 src/modules/Image/doc/illustration_47.gif
 create mode 100644 src/modules/Image/doc/illustration_48.gif
 create mode 100644 src/modules/Image/doc/illustration_49.gif
 create mode 100644 src/modules/Image/doc/illustration_51.gif
 create mode 100644 src/modules/Image/doc/illustration_53.gif
 create mode 100644 src/modules/Image/doc/illustration_54.gif

diff --git a/.gitattributes b/.gitattributes
index 8972ea8477..7265662201 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -47,7 +47,6 @@ testfont binary
 /src/modules/Image/colortable.c foreign_ident
 /src/modules/Image/dct.c foreign_ident
 /src/modules/Image/doc/Image.html foreign_ident
-/src/modules/Image/doc/Image.html~ foreign_ident
 /src/modules/Image/font.c foreign_ident
 /src/modules/Image/illustration.pike foreign_ident
 /src/modules/Image/image.c foreign_ident
diff --git a/src/modules/Image/doc/Image.colortable.html~ b/src/modules/Image/doc/Image.colortable.html~
deleted file mode 100644
index 93f2999072..0000000000
--- a/src/modules/Image/doc/Image.colortable.html~
+++ /dev/null
@@ -1,15 +0,0 @@
-<title>Pike documentation: Image.colortable</title>
-<h2>Image.colortable</h2>
-
-
-<blockquote>
-This object keeps colortable information,
-     mostly for image re-coloring (quantization).
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.html>Image</a></tt>,
-     <tt><a href=Image.image.html>Image.image</a></tt>,
-     <tt><a href=Image.font.html>Image.font</a></tt>
-</blockquote>
diff --git a/src/modules/Image/doc/Image.font.html~ b/src/modules/Image/doc/Image.font.html~
deleted file mode 100644
index 18e05c7c13..0000000000
--- a/src/modules/Image/doc/Image.font.html~
+++ /dev/null
@@ -1,186 +0,0 @@
-<title>Pike documentation: Image.font</title>
-<h2>Image.font</h2>
-
-
-<h4>NOTE</h4>
-<blockquote>
-Short technical documentation on a font file:
-     This object adds the text-drawing and -creation
-     capabilities of the <tt><a href=Image.html>Image</a></tt> module.
-
-<p>     For simple usage, see
-     <tt><a href=Image.font.html#write>write</a></tt> and <tt><a href=Image.font.html#load>load</a></tt>.
-
-<p>     other methods: <tt><a href=Image.font.html#baseline>baseline</a></tt>,
-     <tt><a href=Image.font.html#height>height</a></tt>,
-     <tt><a href=Image.font.html#set_xspacing_scale>set_xspacing_scale</a></tt>,
-     <tt><a href=Image.font.html#set_yspacing_scale>set_yspacing_scale</a></tt>,
-     <tt><a href=Image.font.html#text_extents>text_extents</a></tt>
-     
-     <pre>
-            struct file_head 
-            {
-               unsigned INT32 cookie;   - 0x464f4e54 
-               unsigned INT32 version;  - 1 
-               unsigned INT32 chars;    - number of chars
-               unsigned INT32 height;   - height of font
-               unsigned INT32 baseline; - font baseline
-               unsigned INT32 o[1];     - position of char_head's
-            } *fh;
-            struct char_head
-            {
-               unsigned INT32 width;    - width of this character
-               unsigned INT32 spacing;  - spacing to next character
-               unsigned char data[1];   - pixmap data (1byte/pixel)
-            } *ch;
-     </pre>
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.html>Image</a></tt>,
-     <tt><a href=Image.image.html>Image.image</a></tt>
-</blockquote>
-
-<hr>
-<a name=baseline> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>int <b>baseline</b>()</tt>
-</blockquote>
-
-<h4>RETURNS</h4>
-
-
-<blockquote>
-font baseline (pixels from top)
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.font.html#height>height</a></tt>,
-     <tt><a href=Image.font.html#text_extents>text_extents</a></tt>
-</blockquote>
-
-<hr>
-<a name=height> </a>
-<a name=text_extents> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>int <b>height</b>()<br>
-array(int) <b>text_extents</b>(string&nbsp;text, ...)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Calculate extents of a text-image,
-     that would be created by calling <tt><a href=Image.font.html#write>write</a></tt>
-     with the same arguments.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>string text, ...</tt>
-  <dd>One or more lines of text.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-an array of width and height
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.font.html#write>write</a></tt>,
-     <tt><a href=Image.font.html#height>height</a></tt>,
-     <tt><a href=Image.font.html#baseline>baseline</a></tt>
-</blockquote>
-
-<hr>
-<a name=load> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object|int <b>load</b>(string&nbsp;filename)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Loads a font file to this font object.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>string filename</tt>
-  <dd>Font file
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-zero upon failure, font object upon success
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.font.html#write>write</a></tt>
-</blockquote>
-
-<hr>
-<a name=set_xspacing_scale> </a>
-<a name=set_yspacing_scale> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>void <b>set_xspacing_scale</b>(float&nbsp;scale)<br>
-void <b>set_yspacing_scale</b>(float&nbsp;scale)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Set spacing scale to write characters closer
-     or more far away. This does not change scale
-     of character, only the space between them.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>float scale</tt>
-  <dd>what scale to use
-</dl></blockquote>
-
-<hr>
-<a name=write> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>write</b>(string&nbsp;text, ...)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Writes some text; thus creating an image object
-     that can be used as mask or as a complete picture.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>string text, ...</tt>
-  <dd>One or more lines of text.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-an <ref>Image::image</ref> object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.font.html#text_extents>text_extents</a></tt>,
-     <tt><a href=Image.font.html#load>load</a></tt>,
-     <tt><a href=Image.image.html#paste_mask>image::paste_mask</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>image::paste_alpha_color</a></tt>
-</blockquote>
diff --git a/src/modules/Image/doc/Image.html~ b/src/modules/Image/doc/Image.html~
deleted file mode 100644
index d2be4c7a9f..0000000000
--- a/src/modules/Image/doc/Image.html~
+++ /dev/null
@@ -1,41 +0,0 @@
-<title>Pike documentation: module Image</title>
-<h2>module Image</h2>
-
-
-<blockquote>
-This module adds image-drawing and -manipulating
-     capabilities to pike.
-</blockquote>
-
-
-<h4>NOTE</h4>
-<blockquote>
-$Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-
-<p>     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-     $Id: Image.html~,v 1.1 1997/05/30 00:16:48 mirar Exp $<br>
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.font.html>Image.font</a></tt>,
-     <tt><a href=Image.image.html>Image.image</a></tt>
-</blockquote>
-<h3>More documentation:</h3>
- <i><tt><a href=Image.colortable.html>Image.colortable</a></tt></tt></i><br>
- <i><tt><tt><a href=Image.font.html>Image.font</a></tt></tt></i><br>
- <i><tt><tt><a href=Image.image.html>Image.image</a></tt></i>
-
diff --git a/src/modules/Image/doc/Image.image.html~ b/src/modules/Image/doc/Image.image.html~
deleted file mode 100644
index 8830075919..0000000000
--- a/src/modules/Image/doc/Image.image.html~
+++ /dev/null
@@ -1,2737 +0,0 @@
-<title>Pike documentation: Image.image</title>
-<h2>Image.image</h2>
-
-
-<blockquote>
-The main object of the <tt><a href=Image.html>Image</a></tt> module, this object
-     is used as drawing area, mask or result of operations.
-
-<p>     init: <tt><a href=Image.image.html#clear>clear</a></tt>,
-     <tt><a href=Image.image.html#clone>clone</a></tt>,
-     <tt><a href=Image.image.html#create>create</a></tt>, 
-     <tt><a href=Image.image.html#xsize>xsize</a></tt>,
-     <tt><a href=Image.image.html#ysize>ysize</a></tt>
-
-<p>     plain drawing: <tt><a href=Image.image.html#box>box</a></tt>,
-     <tt><a href=Image.image.html#circle>circle</a></tt>,
-     <tt><a href=Image.image.html#getpixel>getpixel</a></tt>, 
-     <tt><a href=Image.image.html#line>line</a></tt>,
-     <tt><a href=Image.image.html#setcolor>setcolor</a></tt>,
-     <tt><a href=Image.image.html#setpixel>setpixel</a></tt>, 
-     <tt><a href=Image.image.html#treshold>treshold</a></tt>,
-     <tt><a href=Image.image.html#tuned_box>tuned_box</a></tt>,
-     <tt><a href=Image.image.html#polyfill>polyfill</a></tt>
-
-<p>     operators: <tt><a href=Image.image.html#%60%26>`&amp;</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#%60+>`+</a></tt>,
-     <tt><a href=Image.image.html#%60->`-</a></tt>,
-     <tt><a href=Image.image.html#%60|>`|</a></tt>
-
-<p>     pasting images, layers: <tt><a href=Image.image.html#add_layers>add_layers</a></tt>, 
-     <tt><a href=Image.image.html#paste>paste</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha>paste_alpha</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>,
-     <tt><a href=Image.image.html#paste_mask>paste_mask</a></tt>
-
-<p>     getting subimages, scaling, rotating: <tt><a href=Image.image.html#autocrop>autocrop</a></tt>, 
-     <tt><a href=Image.image.html#clone>clone</a></tt>,
-     <tt><a href=Image.image.html#copy>copy</a></tt>, 
-     <tt><a href=Image.image.html#dct>dct</a></tt>,
-     <tt><a href=Image.image.html#mirrorx>mirrorx</a></tt>, 
-     <tt><a href=Image.image.html#rotate>rotate</a></tt>,
-     <tt><a href=Image.image.html#rotate_expand>rotate_expand</a></tt>, 
-     <tt><a href=Image.image.html#rotate_ccw>rotate_ccw</a></tt>,
-     <tt><a href=Image.image.html#rotate_cw>rotate_cw</a></tt>,
-     <tt><a href=Image.image.html#scale>scale</a></tt>, 
-     <tt><a href=Image.image.html#skewx>skewx</a></tt>,
-     <tt><a href=Image.image.html#skewx_expand>skewx_expand</a></tt>,
-     <tt><a href=Image.image.html#skewy>skewy</a></tt>,
-     <tt><a href=Image.image.html#skewy_expand>skewy_expand</a></tt>
-
-<p>     calculation by pixels: <tt><a href=Image.image.html#apply_matrix>apply_matrix</a></tt>, 
-     <tt><a href=Image.image.html#change_color>change_color</a></tt>,
-     <tt><a href=Image.image.html#color>color</a></tt>,
-     <tt><a href=Image.image.html#distancesq>distancesq</a></tt>, 
-     <tt><a href=Image.image.html#grey>grey</a></tt>,
-     <tt><a href=Image.image.html#invert>invert</a></tt>, 
-     <tt><a href=Image.image.html#map_closest>map_closest</a></tt>,
-     <tt><a href=Image.image.html#map_fast>map_fast</a></tt>, 
-     <tt><a href=Image.image.html#select_colors>select_colors</a></tt>,
-     <tt><a href=Image.image.html#modify_by_intensity>modify_by_intensity</a></tt>,
-     <tt><a href=Image.image.html#select_from>select_from</a></tt>, 
-     <tt><a href=Image.image.html#rgb_to_hsv>rgb_to_hsv</a></tt>,
-     <tt><a href=Image.image.html#hsv_to_rgb>hsv_to_rgb</a></tt>
-
-<p>     converting to other datatypes: <tt><a href=Image.image.html#cast>cast</a></tt>,
-     <tt><a href=Image.image.html#fromgif>fromgif</a></tt>, 
-     <tt><a href=Image.image.html#frompnm>frompnm</a></tt>/<tt><a href=Image.image.html#fromppm>fromppm</a></tt>, 
-     <tt><a href=Image.image.html#gif_add>gif_add</a></tt>,
-     <tt><a href=Image.image.html#gif_add_fs>gif_add_fs</a></tt>,
-     <tt><a href=Image.image.html#gif_add_fs_nomap>gif_add_fs_nomap</a></tt>,
-     <tt><a href=Image.image.html#gif_add_nomap>gif_add_nomap</a></tt>,
-     <tt><a href=Image.image.html#gif_begin>gif_begin</a></tt>,
-     <tt><a href=Image.image.html#gif_end>gif_end</a></tt>,
-     <tt><a href=Image.image.html#gif_netscape_loop>gif_netscape_loop</a></tt>,
-     <tt><a href=Image.image.html#gif_transparency>gif_transparency</a></tt>,
-     <tt><a href=Image.image.html#to8bit>to8bit</a></tt>,
-     <tt><a href=Image.image.html#to8bit_closest>to8bit_closest</a></tt>, 
-     <tt><a href=Image.image.html#to8bit_fs>to8bit_fs</a></tt>,
-     <tt><a href=Image.image.html#to8bit_rgbcube>to8bit_rgbcube</a></tt>, 
-     <tt><a href=Image.image.html#to8bit_rgbcube_rdither>to8bit_rgbcube_rdither</a></tt>,
-     <tt><a href=Image.image.html#tobitmap>tobitmap</a></tt>, 
-     <tt><a href=Image.image.html#togif>togif</a></tt>,
-     <tt><a href=Image.image.html#togif_fs>togif_fs</a></tt>, 
-     <tt><a href=Image.image.html#toppm>toppm</a></tt>,
-     <tt><a href=Image.image.html#tozbgr>tozbgr</a></tt>
-
-<p>     special pattern drawing:
-     <tt><a href=Image.image.html#noise>noise</a></tt>,
-     <tt><a href=Image.image.html#turbulence>turbulence</a></tt>
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.html>Image</a></tt>,
-     <tt><a href=Image.font.html>Image.font</a></tt>
-</blockquote>
-
-<hr>
-<a name=%60%26> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>`&amp;</b>(object&nbsp;operand)<br>
-object <b>`&amp;</b>(array(int)&nbsp;color)<br>
-object <b>`&amp;</b>(int&nbsp;value)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-makes a new image out of the minimum pixels values
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object operand</tt>
-  <dd>the other image to compare with;
-     the images must have the same size.
-<dt><tt>array(int) color</tt>
-  <dd>an array in format ({r,g,b}), this is equal
-     to using an uniform-colored image.
-<dt><tt>int value</tt>
-  <dd>equal to ({value,value,value}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#%60->`-</a></tt>,
-     <tt><a href=Image.image.html#%60+>`+</a></tt>,
-     <tt><a href=Image.image.html#%60|>`|</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#add_layers>add_layers</a></tt>
-</blockquote>
-
-<hr>
-<a name=%60*> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>`*</b>(object&nbsp;operand)<br>
-object <b>`*</b>(array(int)&nbsp;color)<br>
-object <b>`*</b>(int&nbsp;value)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Multiplies pixel values and creates a new image.
-
-<p>     This can be useful to lower the values of an image,
-     making it greyer, for instance:
-
-<p>     <pre>image=image*128+64;</pre>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object operand</tt>
-  <dd>the other image to multiply with;
-     the images must have the same size.
-<dt><tt>array(int) color</tt>
-  <dd>an array in format ({r,g,b}), this is equal
-     to using an uniform-colored image.
-<dt><tt>int value</tt>
-  <dd>equal to ({value,value,value}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#%60->`-</a></tt>,
-     <tt><a href=Image.image.html#%60+>`+</a></tt>,
-     <tt><a href=Image.image.html#%60|>`|</a></tt>,
-     <tt><a href=Image.image.html#%60%26>`&</a></tt>,
-     <tt><a href=Image.image.html#add_layers>add_layers</a></tt>
-</blockquote>
-
-<hr>
-<a name=%60+> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>`+</b>(object&nbsp;operand)<br>
-object <b>`+</b>(array(int)&nbsp;color)<br>
-object <b>`+</b>(int&nbsp;value)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-adds two images; values are truncated at 255.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object operand</tt>
-  <dd>the image which to add.
-<dt><tt>array(int) color</tt>
-  <dd>an array in format ({r,g,b}), this is equal
-     to using an uniform-colored image.
-<dt><tt>int value</tt>
-  <dd>equal to ({value,value,value}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#%60->`-</a></tt>,
-     <tt><a href=Image.image.html#%60|>`|</a></tt>,
-     <tt><a href=Image.image.html#%60%26>`&</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#add_layers>add_layers</a></tt>
-</blockquote>
-
-<hr>
-<a name=%60-> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>`-</b>(object&nbsp;operand)<br>
-object <b>`-</b>(array(int)&nbsp;color)<br>
-object <b>`-</b>(int&nbsp;value)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-makes a new image out of the difference
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object operand</tt>
-  <dd>the other image to compare with;
-     the images must have the same size.
-<dt><tt>array(int) color</tt>
-  <dd>an array in format ({r,g,b}), this is equal
-     to using an uniform-colored image.
-<dt><tt>int value</tt>
-  <dd>equal to ({value,value,value}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#%60+>`+</a></tt>,
-     <tt><a href=Image.image.html#%60|>`|</a></tt>,
-     <tt><a href=Image.image.html#%60%26>`&</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#add_layers>add_layers</a></tt>
-</blockquote>
-
-<hr>
-<a name=%60|> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>`|</b>(object&nbsp;operand)<br>
-object <b>`|</b>(array(int)&nbsp;color)<br>
-object <b>`|</b>(int&nbsp;value)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-makes a new image out of the maximum pixels values
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object operand</tt>
-  <dd>the other image to compare with;
-     the images must have the same size.
-<dt><tt>array(int) color</tt>
-  <dd>an array in format ({r,g,b}), this is equal
-     to using an uniform-colored image.
-<dt><tt>int value</tt>
-  <dd>equal to ({value,value,value}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#%60->`-</a></tt>,
-     <tt><a href=Image.image.html#%60+>`+</a></tt>,
-     <tt><a href=Image.image.html#%60%26>`&</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#add_layers>add_layers</a></tt>
-</blockquote>
-
-<hr>
-<a name=add_layers> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>add_layers</b>(array(int|object))&nbsp;layer0, ...)<br>
-object <b>add_layers</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, array(int|object))&nbsp;layer0, ...)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Using the called object as base, adds layers using masks,
-     opaque channel values and special methods.
-
-<p>     The destination image can also be cropped, thus
-     speeding up the process.
-
-<p>     Each array in the layers array is one of:
-     <pre>
-     ({object image,object|int mask})
-     ({object image,object|int mask,int opaque_value})
-     ({object image,object|int mask,int opaque_value,int method})
-     </pre>
-     Given 0 as mask means the image is totally opaque.
-
-<p>     Default opaque value is 255, only using the mask.
-
-<p>     Methods for now are:
-     <pre>
-     0  no operation (just paste with mask, default)
-     1  maximum  (`|)
-     2  minimum  (`&amp;)
-     3  multiply (`*)
-     4  add      (`+)
-     5  diff     (`-)
-     </pre>
-     The layer image and the current source are calculated
-     through the given method and then pasted using the mask
-     and the opaque channel value. 
-
-<p>     All given images must be the same size.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(int|object) layer0</tt>
-  <dd>image to paste
-<dt><tt>int x1</tt>
-<dt><tt>int y1</tt>
-<dt><tt>int x2</tt>
-<dt><tt>int y2</tt>
-  <dd>rectangle for cropping
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-a new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#paste_mask>paste_mask</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha>paste_alpha</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>,
-     <tt><a href=Image.image.html#%60|>`|</a></tt>,
-     <tt><a href=Image.image.html#%60%26>`&</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#%60+>`+</a></tt>,
-     <tt><a href=Image.image.html#%60->`-</a></tt>
-</blockquote>
-
-<hr>
-<a name=apply_matrix> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>apply_matrix</b>(array(array(int|array(int)))&nbsp;matrix)<br>
-object <b>apply_matrix</b>(array(array(int|array(int)))&nbsp;matrix, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>apply_matrix</b>(array(array(int|array(int)))&nbsp;matrix, int&nbsp;r, int&nbsp;g, int&nbsp;b, int|float&nbsp;div)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Applies a pixel-transform matrix, or filter, to the image.
-    
-     <pre>
-                            2   2
-     pixel(x,y)= base+ k ( sum sum pixel(x+k-1,y+l-1)*matrix(k,l) ) 
-                           k=0 l=0 
-     </pre>
-     
-     1/k is sum of matrix, or sum of matrix multiplied with div.
-     base is given by r,g,b and is normally black.
-
-<p>     <table><tr><td rowspan=2>
-     blur (ie a 2d gauss function):
-     <pre>
-     ({({1,2,1}),
-       ({2,5,2}),
-       ({1,2,1})})
-     </pre>
-     </td><td>
-     <img src=illustration_0.gif width=67 height=67>
-     </td><td>
-     <img src=lena.gif width=67 height=67>
-     </td>
-     <tr><td></td><td>original</td>
-     
-     <tr><td>
-     sharpen (k>8, preferably 12 or 16):
-     <pre>
-     ({({-1,-1,-1}),
-       ({-1, k,-1}),
-       ({-1,-1,-1})})
-     </pre>
-     </td><td>
-     <img src=illustration_2.gif width=67 height=67>
-     </td>
-
-<p>     <tr><td>
-     edge detect:
-     <pre>
-     ({({1, 1,1}),
-       ({1,-8,1}),
-       ({1, 1,1})})
-     </pre>
-     </td><td>
-     <img src=illustration_3.gif width=67 height=67>
-     </td>
-
-<p>     <tr><td>
-     horisontal edge detect (get the idea):
-     <pre>
-     ({({0, 0,0}),
-       ({1,-2,1}),
-       ({0, 0,0})})
-     </pre>
-     </td><td>
-     <img src=illustration_4.gif width=67 height=67>
-     </td>
-
-<p>     <tr><td rowspan=2>
-     emboss (might prefer to begin with a <tt><a href=Image.image.html#grey>grey</a></tt> image):
-     <pre>
-     ({({2, 1, 0}),
-       ({1, 0,-1}),
-       ({0,-1,-2})}), 128,128,128, 3
-     </pre>
-     </td><td>
-     <img src=illustration_5.gif width=67 height=67>
-     </td><td>
-     <img src=illustration_6.gif width=67 height=67>
-     </td>
-     <tr><td></td><td>greyed</td></table>
-
-<p>     This function is not very fast -- and it's hard to 
-     optimize it more, not using assembler.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(array(int|array(int)))</tt>
-  <dd>the matrix; innermost is a value or an array with red, green, blue
-     values for red, green, blue separation.
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>base level of result, default is zero
-<dt><tt>int|float div</tt>
-  <dd>division factor, default is 1.0.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=autocrop> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>autocrop</b>()<br>
-object <b>autocrop</b>(int&nbsp;border)<br>
-object <b>autocrop</b>(int&nbsp;border, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>autocrop</b>(int&nbsp;border, int&nbsp;left, int&nbsp;right, int&nbsp;top, int&nbsp;bottom)<br>
-object <b>autocrop</b>(int&nbsp;border, int&nbsp;left, int&nbsp;right, int&nbsp;top, int&nbsp;bottom, int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Removes "unneccesary" borders around the image, adds one of
-     its own if wanted to, in selected directions.
-
-<p>     "Unneccesary" is all pixels that are equal -- ie if all the same pixels
-     to the left are the same color, that column of pixels are removed.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int border</tt>
-  <dd>added border size in pixels
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color of the new border
-<dt><tt>int left</tt>
-<dt><tt>int right</tt>
-<dt><tt>int top</tt>
-<dt><tt>int bottom</tt>
-  <dd>which borders to scan and cut the image; 
-     a typical example is removing the top and bottom unneccesary
-     pixels:
-     <pre>img=img->autocrop(0, 0,0,1,1);</pre>
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#copy>copy</a></tt>
-</blockquote>
-
-<hr>
-<a name=box> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>box</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2)<br>
-object <b>box</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>box</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Draws a filled rectangle on the image.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x1</tt>
-<dt><tt>int y1</tt>
-<dt><tt>int x2</tt>
-<dt><tt>int y2</tt>
-  <dd>box corners
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color of the box
-<dt><tt>int alpha</tt>
-  <dd>alpha value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-<hr>
-<a name=cast> </a>
-<a name=to8bit> </a>
-<a name=to8bit_closest> </a>
-<a name=to8bit_fs> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>cast</b>(string&nbsp;type)<br>
-string <b>to8bit</b>(array(array(int))&nbsp;colors)<br>
-string <b>to8bit_fs</b>(array(array(int))&nbsp;colors)<br>
-string <b>to8bit_closest</b>(array(array(int))&nbsp;colors)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Maps the image to the given colors and returns 
-     the 8 bit data.
-
-<p>     to8bit_fs uses floyd-steinberg dithering
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the calculated string
-</blockquote>
-
-
-<h4>KNOWN BUGS</h4>
-<blockquote>
-always casts to string...
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#to8bit_rgbcube>to8bit_rgbcube</a></tt>,
-     <tt><a href=Image.image.html#tozbgr>tozbgr</a></tt>,
-     <tt><a href=Image.image.html#map_fast>map_fast</a></tt>,
-     <tt><a href=Image.image.html#map_closest>map_closest</a></tt>,
-     <tt><a href=Image.image.html#select_colors>select_colors</a></tt>,
-     <tt><a href=Image.image.html#tobitmap>tobitmap</a></tt>
-</blockquote>
-
-<hr>
-<a name=change_color> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>change_color</b>(int&nbsp;tor, int&nbsp;tog, int&nbsp;tob)<br>
-object <b>change_color</b>(int&nbsp;fromr, int&nbsp;fromg, int&nbsp;fromb, &nbsp;int&nbsp;tor, int&nbsp;tog, int&nbsp;tob)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Changes one color (exakt match) to another.
-     If non-exakt-match is preferred, check <tt><a href=Image.image.html#distancesq>distancesq</a></tt>
-     and <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int tor</tt>
-<dt><tt>int tog</tt>
-<dt><tt>int tob</tt>
-  <dd>destination color and next current color
-<dt><tt>int fromr</tt>
-<dt><tt>int fromg</tt>
-<dt><tt>int fromb</tt>
-  <dd>source color, default is current color
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-a new (the destination) image object
-</blockquote>
-
-<hr>
-<a name=circle> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>circle</b>(int&nbsp;x, int&nbsp;y, int&nbsp;rx, int&nbsp;ry)<br>
-object <b>circle</b>(int&nbsp;x, int&nbsp;y, int&nbsp;rx, int&nbsp;ry, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>circle</b>(int&nbsp;x, int&nbsp;y, int&nbsp;rx, int&nbsp;ry, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Draws a line on the image. The line is <i>not</i> antialiased.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>circle center
-<dt><tt>int rx</tt>
-<dt><tt>int ry</tt>
-  <dd>circle radius in pixels
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color
-<dt><tt>int alpha</tt>
-  <dd>alpha value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-<hr>
-<a name=clear> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>void <b>clear</b>()<br>
-void <b>clear</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-void <b>clear</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-gives a new, cleared image with the same size of drawing area
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color of the new image
-<dt><tt>int alpha</tt>
-  <dd>new default alpha channel value
-</dl></blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#copy>copy</a></tt>,
-     <tt><a href=Image.image.html#clone>clone</a></tt>
-</blockquote>
-
-<hr>
-<a name=clone> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>clone</b>()<br>
-object <b>clone</b>(int&nbsp;xsize, int&nbsp;ysize)<br>
-object <b>clone</b>(int&nbsp;xsize, int&nbsp;ysize, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>clone</b>(int&nbsp;xsize, int&nbsp;ysize, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Copies to or initialize a new image object.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int xsize</tt>
-<dt><tt>int ysize</tt>
-  <dd>size of (new) image in pixels, called image
-     is cropped to that size
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>current color of the new image, 
-     default is black. 
-     Will also be the background color if the cloned image
-     is empty (no drawing area made).
-<dt><tt>int alpha</tt>
-  <dd>new default alpha channel value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#copy>copy</a></tt>,
-     <tt><a href=Image.image.html#create>create</a></tt>
-</blockquote>
-
-<hr>
-<a name=color> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>color</b>()<br>
-object <b>color</b>(int&nbsp;value)<br>
-object <b>color</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Colorize an image. 
-
-<p>    The red, green and blue values of the pixels are multiplied
-    with the given value(s). This works best on a grey image...
-
-<p>    The result is divided by 255, giving correct pixel values.
-
-<p>    If no arguments are given, the current color is used as factors.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_8.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->color(128,128,255);</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>red, green, blue factors
-<dt><tt>int value</tt>
-  <dd>factor
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#grey>grey</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#modify_by_intensity>modify_by_intensity</a></tt>
-</blockquote>
-
-<hr>
-<a name=copy> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>copy</b>()<br>
-object <b>copy</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2)<br>
-object <b>copy</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>copy</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Copies this part of the image. The requested area can
-     be smaller, giving a cropped image, or bigger - 
-     the new area will be filled with the given or current color.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x1</tt>
-<dt><tt>int y1</tt>
-<dt><tt>int x2</tt>
-<dt><tt>int y2</tt>
-  <dd>The requested new area. Default is the old image size.
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color of the new image
-<dt><tt>int alpha</tt>
-  <dd>new default alpha channel value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-a new image object
-</blockquote>
-
-
-<h4>NOTE</h4>
-<blockquote>
-<tt><a href=Image.image.html#clone>clone</a></tt>(void) and <tt><a href=Image.image.html#copy>copy</a></tt>(void) does the same 
-     operation
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#clone>clone</a></tt>,
-     <tt><a href=Image.image.html#autocrop>autocrop</a></tt>
-</blockquote>
-
-<hr>
-<a name=create> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>void <b>create</b>()<br>
-void <b>create</b>(int&nbsp;xsize, int&nbsp;ysize)<br>
-void <b>create</b>(int&nbsp;xsize, int&nbsp;ysize, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-void <b>create</b>(int&nbsp;xsize, int&nbsp;ysize, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Initializes a new image object.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int xsize</tt>
-<dt><tt>int ysize</tt>
-  <dd>size of (new) image in pixels
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>background color (will also be current color),
-     default color is black
-<dt><tt>int alpha</tt>
-  <dd>default alpha channel value
-</dl></blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#copy>copy</a></tt>,
-     <tt><a href=Image.image.html#clone>clone</a></tt>,
-     <tt><a href=Image.image.html>Image.image</a></tt>
-</blockquote>
-
-<hr>
-<a name=dct> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>dct</b>(int&nbsp;newx, int&nbsp;newy)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Scales the image to a new size.
-     
-     Method for scaling is rather complex;
-     the image is transformed via a cosine transform,
-     and then resampled back.
-
-<p>     This gives a quality-conserving upscale,
-     but the algorithm used is n*n+n*m, where n
-     and m is pixels in the original and new image.
-
-<p>     Recommended wrapping algorithm is to scale
-     overlapping parts of the image-to-be-scaled.
-
-<p>     This functionality is actually added as an
-     true experiment, but works...
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int newx</tt>
-<dt><tt>int newy</tt>
-  <dd>new image size in pixels
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>NOTE</h4>
-<blockquote>
-Do NOT use this function if you don't know what 
-     you're dealing with! Read some signal theory first...
-</blockquote>
-
-<hr>
-<a name=distancesq> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>distancesq</b>()<br>
-object <b>distancesq</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes an grey-scale image, for alpha-channel use.
-    
-    The given value (or current color) are used for coordinates
-    in the color cube. Each resulting pixel is the 
-    distance from this point to the source pixel color,
-    in the color cube, squared, rightshifted 8 steps:
-
-<p>    <pre>
-    p = pixel color
-    o = given color
-    d = destination pixel
-    d.red=d.blue=d.green=
-        ((o.red-p.red)�+(o.green-p.green)�+(o.blue-p.blue)�)>>8
-    </pre>
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_10.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->distancesq(255,0,128);</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>red, green, blue coordinates
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#select_from>select_from</a></tt>
-</blockquote>
-
-<hr>
-<a name=fromgif> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>fromgif</b>(string&nbsp;gif)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Reads GIF data to the called image object.
-
-<p>     GIF animation delay or loops are ignored,
-     and the resulting image is the written result.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>string pnm</tt>
-  <dd>pnm data, as a string
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the called object
-</blockquote>
-
-
-<h4>KNOWN BUGS</h4>
-<blockquote>
-yes, it does -- it may even do segment overrides...
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#togif>togif</a></tt>,
-     <tt><a href=Image.image.html#frompnm>frompnm</a></tt>
-</blockquote>
-
-<hr>
-<a name=frompnm> </a>
-<a name=fromppm> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object|string <b>frompnm</b>(string&nbsp;pnm)<br>
-object|string <b>fromppm</b>(string&nbsp;pnm)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Reads a PNM (PBM, PGM or PPM in ascii or binary)
-     to the called image object.
-
-<p>     The method accepts P1 through P6 type of PNM data.
-
-<p>     "fromppm" is an alias for "frompnm".
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>string pnm</tt>
-  <dd>pnm data, as a string
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the called object or a hint of what wronged.
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#toppm>toppm</a></tt>,
-     <tt><a href=Image.image.html#fromgif>fromgif</a></tt>
-</blockquote>
-
-<hr>
-<a name=getpixel> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>array(int) <b>getpixel</b>(int&nbsp;x, int&nbsp;y)</tt>
-</blockquote>
-
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>position of the pixel
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-color of the requested pixel -- ({int red,int green,int blue})
-</blockquote>
-
-<hr>
-<a name=gif_add> </a>
-<a name=gif_add_fs> </a>
-<a name=gif_add_fs_nomap> </a>
-<a name=gif_add_nomap> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>gif_add</b>()<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y)<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y, int&nbsp;delay_cs)<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y, float&nbsp;delay_s)<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, int&nbsp;delay_cs)<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, float&nbsp;delay_s)<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, int&nbsp;delay_cs)<br>
-string <b>gif_add</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, float&nbsp;delay_s)<br>
-string <b>gif_add_fs</b>()<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y)<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y, int&nbsp;delay_cs)<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y, float&nbsp;delay_s)<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, int&nbsp;delay_cs)<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, float&nbsp;delay_s)<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, int&nbsp;delay_cs)<br>
-string <b>gif_add_fs</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, float&nbsp;delay_s)<br>
-string <b>gif_add_nomap</b>()<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y)<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y, int&nbsp;delay_cs)<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y, float&nbsp;delay_s)<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, int&nbsp;delay_cs)<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, float&nbsp;delay_s)<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, int&nbsp;delay_cs)<br>
-string <b>gif_add_nomap</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, float&nbsp;delay_s)<br>
-string <b>gif_add_fs_nomap</b>()<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y)<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y, int&nbsp;delay_cs)<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y, float&nbsp;delay_s)<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, int&nbsp;delay_cs)<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y, int&nbsp;num_colors, float&nbsp;delay_s)<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, int&nbsp;delay_cs)<br>
-string <b>gif_add_fs_nomap</b>(int&nbsp;x, int&nbsp;y, array(array(int))&nbsp;colors, float&nbsp;delay_s)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes a GIF (sub)image data chunk, to be placed 
-     at the given position. 
-
-<p>     The "fs" versions uses floyd-steinberg dithering, and the "nomap"
-     versions have no local colormap.
-
-<p>     Example: 
-     <pre>
-     object img1 = Image(200,200); 
-     object img2 = Image(200,200); 
-     // load img1 and img2 with stuff
-     write(img1->gif_begin()+
-           img1->gif_netscape_loop()+
-           img1->gif_add(0,0,100)+
-           img2->gif_add(0,0,100)+
-           img1->gif_end());
-     // voila, a gif animation...
-     </pre>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>the location of this subimage
-<dt><tt>int delay_cs</tt>
-  <dd>frame delay in centiseconds
-<dt><tt>float delay_s</tt>
-  <dd>frame delay in seconds
-<dt><tt>int num_colors</tt>
-  <dd>number of colors to quantize to (default is 256)
-<dt><tt>array array(array(int)) colors</tt>
-  <dd>colors to map to, format is ({({r,g,b}),({r,g,b}),...}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the GIF data chunk as a string
-</blockquote>
-
-
-<h4>NOTE</h4>
-<blockquote>
-I (Mirar) recommend reading about the GIF file format before 
-     experementing with these.
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#gif_add>gif_add</a></tt>,
-     <tt><a href=Image.image.html#gif_end>gif_end</a></tt>,
-     <tt><a href=Image.image.html#gif_netscape_loop>gif_netscape_loop</a></tt>,
-     <tt><a href=Image.image.html#togif */>togif */</a></tt>
-</blockquote>
-
-<hr>
-<a name=gif_begin> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>gif_begin</b>()<br>
-string <b>gif_begin</b>(int&nbsp;num_colors)<br>
-string <b>gif_begin</b>(array(array(int))&nbsp;colors)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes GIF header. With no argument, there is no
-     global colortable (palette).
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int num_colors</tt>
-  <dd>number of colors to quantize to (default is 256) 
- array array(array(int)) colors
-     colors to map to, format is ({({r,g,b}),({r,g,b}),...}).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the GIF data
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#gif_add>gif_add</a></tt>,
-     <tt><a href=Image.image.html#gif_end>gif_end</a></tt>,
-     <tt><a href=Image.image.html#togif>togif</a></tt>,
-     <tt><a href=Image.image.html#gif_netscape_loop>gif_netscape_loop</a></tt>
-</blockquote>
-
-<hr>
-<a name=gif_end> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>gif_end</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Ends GIF data.
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the GIF data.
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#gif_begin>gif_begin</a></tt>
-</blockquote>
-
-<hr>
-<a name=gif_netscape_loop> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>gif_netscape_loop</b>()<br>
-string <b>gif_netscape_loop</b>(int&nbsp;loops)</tt>
-</blockquote>
-
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int loops</tt>
-  <dd>number of loops, default is 65535.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-a gif chunk that defines that the GIF animation should loop
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#gif_add>gif_add</a></tt>,
-     <tt><a href=Image.image.html#gif_begin>gif_begin</a></tt>,
-     <tt><a href=Image.image.html#gif_end>gif_end</a></tt>
-</blockquote>
-
-<hr>
-<a name=gif_transparency> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>gif_transparency</b>(int&nbsp;color)</tt>
-</blockquote>
-
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int color</tt>
-  <dd>index of color in the palette
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-a gif chunk that transparent a color in the next image chunk
-</blockquote>
-
-
-<h4>NOTE</h4>
-<blockquote>
-Yes - i know this function is too hard to use. :/
-     The palette _is_ unknown mostly...
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#gif_add>gif_add</a></tt>,
-     <tt><a href=Image.image.html#gif_begin>gif_begin</a></tt>,
-     <tt><a href=Image.image.html#gif_end>gif_end</a></tt>
-</blockquote>
-
-<hr>
-<a name=grey> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>grey</b>()<br>
-object <b>grey</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes a grey-scale image (with weighted values).
-
-<p>
-     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_12.gif width=67 height=67></td>
-     <td><img src=illustration_13.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->grey();</td>
-     <td>->grey(128,128,255);</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>weight of color, default is r=87,g=127,b=41,
-     which should be pretty accurate of what the eyes see...
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#color>color</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#modify_by_intensity>modify_by_intensity</a></tt>
-</blockquote>
-
-<hr>
-<a name=hsv_to_rgb> </a>
-<a name=rgb_to_hsv> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>rgb_to_hsv</b>()<br>
-object <b>hsv_to_rgb</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Converts RGB data to HSV data, or the other way around.
-    When converting to HSV, the resulting data is stored like this:
-     pixel.r = h; pixel.g = s; pixel.b = v;
-
-<p>    When converting to RGB, the input data is asumed to be placed in
-    the pixels as above.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_15.gif width=67 height=67></td>
-     <td><img src=illustration_16.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->hsv_to_rgb();</td>
-     <td>->rgb_to_hsv();</td>
-     </tr><tr valign=center>
-     <td><img src=illustration_17.gif width=67 height=67></td>
-     <td><img src=illustration_18.gif width=67 height=67></td>
-     <td><img src=illustration_19.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>tuned box (below)</td>
-     <td>the rainbow (below)</td>
-     <td>same, but rgb_to_hsv()</td>
-     </tr></table>
-
-<p>
-    HSV to RGB calculation:
-    <pre>
-    in = input pixel
-    out = destination pixel
-    h=-pos*c_angle*3.1415/(float)NUM_SQUARES;
-    out.r=(in.b+in.g*cos(in.r));
-    out.g=(in.b+in.g*cos(in.r + pi*2/3));
-    out.b=(in.b+in.g*cos(in.r + pi*4/3));
-    </pre>
-
-<p>    RGB to HSV calculation: Hmm.
-    <pre>
-    </pre>
-
-<p>     Example: Nice rainbow.
-     <pre>
-     object i = Image.image(200,200);
-     i = i->tuned_box(0,0, 200,200,
-                      ({ ({ 255,255,128 }), ({ 0,255,128 }),
-                         ({ 255,255,255 }), ({ 0,255,255 })}))
-          ->hsv_to_rgb();
-     </pre>
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=invert> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>invert</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Invert an image. Each pixel value gets to be 255-x, where x 
-    is the old value.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_21.gif width=67 height=67></td>
-     <td><img src=illustration_22.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->invert();</td>
-     <td>->rgb_to_hsv()->invert()->hsv_to_rgb();</td>
-     </tr></table>
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=line> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>line</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2)<br>
-object <b>line</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>line</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Draws a line on the image. The line is <i>not</i> antialiased.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x1</tt>
-<dt><tt>int y1</tt>
-<dt><tt>int x2</tt>
-<dt><tt>int y2</tt>
-  <dd>line endpoints
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color
-<dt><tt>int alpha</tt>
-  <dd>alpha value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-<hr>
-<a name=map_closest> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>map_closest</b>(array(array(int))&nbsp;colors)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Maps all pixel colors to the colors given.
-
-<p>    Method to find the correct color is linear search
-    over the colors given, selecting the nearest in the
-    color cube. Slow...
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_24.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->map_closest(({({255,0,0}),({255,255,255}),({0,0,0})}));</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(array(int)) color</tt>
-  <dd>list of destination (available) colors
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#map_fast>map_fast</a></tt>,
-     <tt><a href=Image.image.html#select_colors>select_colors</a></tt>,
-     <tt><a href=Image.image.html#map_fs>map_fs</a></tt>
-</blockquote>
-
-<hr>
-<a name=map_fast> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>map_fast</b>(array(array(int))&nbsp;colors)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Maps all pixel colors to the colors given.
-
-<p>    Method to find the correct color is to branch
-    in a binary space partitioning tree in the 
-    colorcube. This is fast, but in some cases
-    it gives the wrong color (mostly when few colors
-    are available).
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(array(int)) color</tt>
-  <dd>list of destination (available) colors
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#map_fast>map_fast</a></tt>,
-     <tt><a href=Image.image.html#select_colors>select_colors</a></tt>
-</blockquote>
-
-<hr>
-<a name=map_fs> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>map_fs</b>(array(array(int))&nbsp;colors)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Maps all pixel colors to the colors given.
-
-<p>    Method to find the correct color is linear search
-    over the colors given, selecting the nearest in the
-    color cube. Slow...
-
-<p>    Floyd-steinberg error correction is added to create
-    a better-looking image, in many cases, anyway.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_26.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->map_fs(({({255,0,0}),({255,255,255}),({0,0,0})}));</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(array(int)) color</tt>
-  <dd>list of destination (available) colors
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#map_fast>map_fast</a></tt>,
-     <tt><a href=Image.image.html#select_colors>select_colors</a></tt>,
-     <tt><a href=Image.image.html#map_closest>map_closest</a></tt>
-</blockquote>
-
-<hr>
-<a name=mirrorx> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>mirrorx</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-mirrors an image:
-     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_28.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->mirrorx();</td>
-     </tr></table>
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=mirrory> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>mirrory</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-mirrors an image:
-     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_30.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->mirrory();</td>
-     </tr></table>
-</blockquote>
-
-<hr>
-<a name=modify_by_intensity> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>modify_by_intensity</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b, int|array(int)&nbsp;v1, ..., int|array(int)&nbsp;vn)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Recolor an image from intensity values.
-
-<p>    For each color an intensity is calculated, from r, g and b factors
-    (see <tt><a href=Image.image.html#grey>grey</a></tt>), this gives a value between 0 and max.
-
-<p>    The color is then calculated from the values given, v1 representing
-    the intensity value of 0, vn representing max, and colors between
-    representing intensity values between, linear.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_32.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->grey()->modify_by_intensity(1,0,0, 0,({255,0,0}),({0,255,0}));</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>red, green, blue intensity factors
-<dt><tt>int|array(int) v1</tt>
-<dt><tt>int|array(int) vn</tt>
-  <dd>destination color
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#grey>grey</a></tt>,
-     <tt><a href=Image.image.html#%60*>`*</a></tt>,
-     <tt><a href=Image.image.html#color>color</a></tt>
-</blockquote>
-
-<hr>
-<a name=noise> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>void <b>noise</b>(array(float|int|array(int))&nbsp;colorrange)<br>
-void <b>noise</b>(array(float|int|array(int))&nbsp;colorrange, float&nbsp;scale, float&nbsp;xdiff, float&nbsp;ydiff, float&nbsp;cscale)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-gives a new image with the old image's size,
-     filled width a 'noise' pattern
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(float|int|array(int)) colorrange</tt>
-  <dd>colorrange table
-<dt><tt>float scale</tt>
-  <dd>default value is 0.1
-<dt><tt>float xdiff</tt>
-<dt><tt>float ydiff</tt>
-  <dd>default value is 0,0
-<dt><tt>float cscale</tt>
-  <dd>default value is 1
-</dl></blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#turbulence>turbulence</a></tt>
-</blockquote>
-
-<hr>
-<a name=paste> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>paste</b>(object&nbsp;image)<br>
-object <b>paste</b>(object&nbsp;image, int&nbsp;x, int&nbsp;y)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Pastes a given image over the current image.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object image</tt>
-  <dd>image to paste
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>where to paste the image; default is 0,0
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#paste_mask>paste_mask</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha>paste_alpha</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>
-</blockquote>
-
-<hr>
-<a name=paste_alpha> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>paste_alpha</b>(object&nbsp;image, int&nbsp;alpha)<br>
-object <b>paste_alpha</b>(object&nbsp;image, int&nbsp;alpha, int&nbsp;x, int&nbsp;y)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Pastes a given image over the current image, with
-     the specified alpha channel value.
-     
-     An alpha channel value of 0 leaves nothing of the original 
-     image in the paste area, 255 is meaningless and makes the
-     given image invisible.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object image</tt>
-  <dd>image to paste
-<dt><tt>int alpha</tt>
-  <dd>alpha channel value
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>where to paste the image; default is 0,0
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#paste_mask>paste_mask</a></tt>,
-     <tt><a href=Image.image.html#paste>paste</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>
-</blockquote>
-
-<hr>
-<a name=paste_alpha_color> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>paste_alpha_color</b>(object&nbsp;mask)<br>
-object <b>paste_alpha_color</b>(object&nbsp;mask, int&nbsp;x, int&nbsp;y)<br>
-object <b>paste_alpha_color</b>(object&nbsp;mask, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>paste_alpha_color</b>(object&nbsp;mask, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;x, int&nbsp;y)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Pastes a given color over the current image,
-    using the given mask as opaque channel.  
-    
-    A pixel value of 255 makes the result become the color given,
-    0 doesn't change anything.
-    
-    The masks red, green and blue values are used separately.
-    If no color are given, the current is used.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object mask</tt>
-  <dd>mask image
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>what color to paint with; default is current
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>where to paste the image; default is 0,0
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#paste_mask>paste_mask</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha>paste_alpha</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>
-</blockquote>
-
-<hr>
-<a name=paste_mask> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>paste_mask</b>(object&nbsp;image, object&nbsp;mask)<br>
-object <b>paste_mask</b>(object&nbsp;image, object&nbsp;mask, int&nbsp;x, int&nbsp;y)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Pastes a given image over the current image,
-    using the given mask as opaque channel.  
-    
-    A pixel value of 255 makes the result become a pixel
-    from the given image, 0 doesn't change anything.
-
-<p>    The masks red, green and blue values are used separately.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>object image</tt>
-  <dd>image to paste
-<dt><tt>object mask</tt>
-  <dd>mask image
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>where to paste the image; default is 0,0
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#paste>paste</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha>paste_alpha</a></tt>,
-     <tt><a href=Image.image.html#paste_alpha_color>paste_alpha_color</a></tt>
-</blockquote>
-
-<hr>
-<a name=polygone> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>polygone</b>(array(int|float)&nbsp;...&nbsp;curve)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-fills an area with the current color
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(int|float) curve</tt>
-  <dd>curve(s), <tt>({x1,y1,x2,y2,...,xn,yn})</tt>,
-     automatically closed.
-
-<p>     If any given curve is inside another, it
-     will make a hole.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the current object
-</blockquote>
-
-
-<h4>NOTE</h4>
-<blockquote>
-This function is new (april-97) and rather untested.
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#box>box</a></tt>,
-     <tt><a href=Image.image.html#setcolor>setcolor</a></tt>
-</blockquote>
-
-<hr>
-<a name=rotate> </a>
-<a name=rotate_expand> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>rotate</b>(int|float&nbsp;angle)<br>
-object <b>rotate</b>(int|float&nbsp;angle, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>rotate_expand</b>(int|float&nbsp;angle)<br>
-object <b>rotate_expand</b>(int|float&nbsp;angle, int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Rotates an image a certain amount of degrees (360� is 
-     a complete rotation) counter-clockwise:
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_34.gif width=87 height=88></td>
-     <td><img src=illustration_35.gif width=87 height=88></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->rotate(15,255,0,0);</td>
-     <td>->rotate_expand(15);</td>
-     </tr></table>
-
-<p>     The "expand" variant of functions stretches the 
-     image border pixels rather then filling with 
-     the given or current color.
-
-<p>     This rotate uses the <tt><a href=Image.image.html#skewx>skewx</a></tt>() and <tt><a href=Image.image.html#skewy>skewy</a></tt>() functions.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int|float angle</tt>
-  <dd>the number of degrees to rotate
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color to fill with; default is current
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=rotate_ccw> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>rotate_ccw</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-rotates an image counter-clockwise, 90 degrees.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_37.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->rotate_ccw();</td>
-     </tr></table>
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=rotate_cw> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>rotate_cw</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-rotates an image clockwise, 90 degrees.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_39.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->rotate_cw();</td>
-     </tr></table>
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=scale> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>scale</b>(float&nbsp;factor)<br>
-object <b>scale</b>(0.5)<br>
-object <b>scale</b>(float&nbsp;xfactor, float&nbsp;yfactor)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-scales the image with a factor,
-     0.5 is an optimized case.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>float factor</tt>
-  <dd>factor to use for both x and y
-<dt><tt>float xfactor</tt>
-<dt><tt>float yfactor</tt>
-  <dd>separate factors for x and y
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=scale> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>scale</b>(int&nbsp;newxsize, int&nbsp;newysize)<br>
-object <b>scale</b>(0, int&nbsp;newysize)<br>
-object <b>scale</b>(int&nbsp;newxsize, 0)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-scales the image to a specified new size,
-     if one of newxsize or newysize is 0,
-     the image aspect ratio is preserved.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int newxsize</tt>
-<dt><tt>int newysize</tt>
-  <dd>new image size in pixels
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=select_colors> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>array(array(int)) <b>select_colors</b>(int&nbsp;num_colors)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Selects the best colors to represent the image.
-
-<p>
-     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_41.gif width=67 height=67></td>
-     <td><img src=illustration_42.gif width=67 height=67></td>
-     <td><img src=illustration_43.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>2</td>
-     <td>8</td>
-     <td>32</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int num_colors</tt>
-  <dd>number of colors to return
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-an array of colors
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#map_fast>map_fast</a></tt>,
-     <tt><a href=Image.image.html#select_colors>select_colors</a></tt>
-</blockquote>
-
-<hr>
-<a name=select_from> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>select_from</b>(int&nbsp;x, int&nbsp;y)<br>
-object <b>select_from</b>(int&nbsp;x, int&nbsp;y, int&nbsp;edge_value)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes an grey-scale image, for alpha-channel use.
-    
-    This is very close to a floodfill.
-    
-    The image is scanned from the given pixel,
-    filled with 255 if the color is the same,
-    or 255 minus distance in the colorcube, squared, rightshifted
-    8 steps (see <tt><a href=Image.image.html#distancesq>distancesq</a></tt>).
-
-<p>    When the edge distance is reached, the scan is stopped.
-    Default edge value is 30.
-    This value is squared and compared with the square of the 
-    distance above.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>originating pixel in the image
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#distancesq>distancesq</a></tt>
-</blockquote>
-
-<hr>
-<a name=setcolor> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>setcolor</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>setcolor</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-set the current color
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>new color
-<dt><tt>int alpha</tt>
-  <dd>new alpha value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-<hr>
-<a name=setpixel> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>setpixel</b>(int&nbsp;x, int&nbsp;y)<br>
-object <b>setpixel</b>(int&nbsp;x, int&nbsp;y, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>setpixel</b>(int&nbsp;x, int&nbsp;y, int&nbsp;r, int&nbsp;g, int&nbsp;b, int&nbsp;alpha)</tt>
-</blockquote>
-
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x</tt>
-<dt><tt>int y</tt>
-  <dd>position of the pixel
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color
-<dt><tt>int alpha</tt>
-  <dd>alpha value
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-<hr>
-<a name=skewx> </a>
-<a name=skewx_expand> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>skewx</b>(int&nbsp;x)<br>
-object <b>skewx</b>(int&nbsp;yfactor)<br>
-object <b>skewx</b>(int&nbsp;x, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>skewx</b>(int&nbsp;yfactor, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>skewx_expand</b>(int&nbsp;x)<br>
-object <b>skewx_expand</b>(int&nbsp;yfactor)<br>
-object <b>skewx_expand</b>(int&nbsp;x, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>skewx_expand</b>(int&nbsp;yfactor, int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Skews an image an amount of pixels or a factor;
-     a skew-x is a transformation:
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_45.gif width=82 height=67></td>
-     <td><img src=illustration_46.gif width=82 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->skewx(15,255,0,0);</td>
-     <td>->skewx_expand(15);</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x</tt>
-  <dd>the number of pixels
-     The "expand" variant of functions stretches the 
-     image border pixels rather then filling with 
-     the given or current color.
-<dt><tt>float yfactor</tt>
-  <dd>best described as: x=yfactor*this->ysize()
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color to fill with; default is current
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=skewy> </a>
-<a name=skewy_expand> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>skewy</b>(int&nbsp;y)<br>
-object <b>skewy</b>(int&nbsp;xfactor)<br>
-object <b>skewy</b>(int&nbsp;y, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>skewy</b>(int&nbsp;xfactor, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>skewy_expand</b>(int&nbsp;y)<br>
-object <b>skewy_expand</b>(int&nbsp;xfactor)<br>
-object <b>skewy_expand</b>(int&nbsp;y, int&nbsp;r, int&nbsp;g, int&nbsp;b)<br>
-object <b>skewy_expand</b>(int&nbsp;xfactor, int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Skews an image an amount of pixels or a factor;
-     a skew-y is a transformation:
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_48.gif width=67 height=82></td>
-     <td><img src=illustration_49.gif width=67 height=82></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->skewy(15,255,0,0);</td>
-     <td>->skewy_expand(15);</td>
-     </tr></table>
-
-<p>     The "expand" variant of functions stretches the 
-     image border pixels rather then filling with 
-     the given or current color.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int y</tt>
-  <dd>the number of pixels
-<dt><tt>float xfactor</tt>
-  <dd>best described as: t=xfactor*this->xsize()
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>color to fill with; default is current
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-<hr>
-<a name=threshold> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>threshold</b>()<br>
-object <b>threshold</b>(int&nbsp;r, int&nbsp;g, int&nbsp;b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes a black-white image. 
-
-<p>     If all red, green, blue parts of a pixel
-     is larger or equal then the given value, the pixel will become
-     white, else black.
-
-<p>     This method works fine with the grey method.
-
-<p>     If no arguments are given, the current color is used 
-     for threshold values.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_51.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>->threshold(90,100,110);</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int r</tt>
-<dt><tt>int g</tt>
-<dt><tt>int b</tt>
-  <dd>red, green, blue threshold values
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the new image object
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#grey>grey</a></tt>
-</blockquote>
-
-<hr>
-<a name=to8bit_rgbcube> </a>
-<a name=to8bit_rgbcube_rdither> </a>
-<a name=tozbgr> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>tozbgr</b>(array(array(int))&nbsp;colors)<br>
-string <b>to8bit_rgbcube</b>(int&nbsp;red, int&nbsp;green, int&nbsp;blue)<br>
-string <b>to8bit_rgbcube</b>(int&nbsp;red, int&nbsp;green, int&nbsp;blue, string&nbsp;map)<br>
-string <b>to8bit_rgbcube_rdither</b>(int&nbsp;red, int&nbsp;green, int&nbsp;blue)<br>
-string <b>to8bit_rgbcube_rdither</b>(int&nbsp;red, int&nbsp;green, int&nbsp;blue, string&nbsp;map)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Maps the image into a colorcube with the given 
-     dimensions. Red is least significant, blue is most.
-
-<p>     The "rdither" type of method uses a random dither algoritm.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int red</tt>
-<dt><tt>int green</tt>
-<dt><tt>int blue</tt>
-  <dd>The sides of the colorcube. Not the number of bits!
-<dt><tt>string map</tt>
-  <dd>Map this position in the colorcube to another value,
-     ie: say we have position red=1,green=2,blue=3 in a colorcube of
-     6�6�6, we have the index 1+2*6+3*6*6=121. If the 
-     map-string contains '�' in position 121, the resulting
-     byte is '�' or 229.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the calculated string
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#tozbgr>tozbgr</a></tt>,
-     <tt><a href=Image.image.html#to8bit>to8bit</a></tt>,
-     <tt><a href=Image.image.html#tobitmap>tobitmap</a></tt>
-</blockquote>
-
-<hr>
-<a name=tobitmap> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>tobitmap</b>();</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Maps the image to a bitmap.
-
-<p>     Bit 0 is the leftmost pixel, and the rows are aligned to 
-     bytes.
-
-<p>     Any pixel value other then black results in a set bit.
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the calculated string
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#tozbgr>tozbgr</a></tt>,
-     <tt><a href=Image.image.html#to8bit>to8bit</a></tt>,
-     <tt><a href=Image.image.html#to8bit_rgbcube>to8bit_rgbcube</a></tt>,
-     <tt><a href=Image.image.html#cast>cast</a></tt>
-</blockquote>
-
-<hr>
-<a name=togif> </a>
-<a name=togif_fs> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>togif</b>()<br>
-string <b>togif</b>(int&nbsp;num_colors)<br>
-string <b>togif</b>(array(array(int))&nbsp;colors)<br>
-string <b>togif</b>(int&nbsp;trans_r, int&nbsp;trans_g, int&nbsp;trans_b)<br>
-string <b>togif</b>(int&nbsp;num_colors, int&nbsp;trans_r, int&nbsp;trans_g, int&nbsp;trans_b)<br>
-string <b>togif</b>(array(array(int))&nbsp;colors, int&nbsp;trans_r, int&nbsp;trans_g, int&nbsp;trans_b)<br>
-string <b>togif_fs</b>()<br>
-string <b>togif_fs</b>(int&nbsp;num_colors)<br>
-string <b>togif_fs</b>(array(array(int))&nbsp;colors)<br>
-string <b>togif_fs</b>(int&nbsp;trans_r, int&nbsp;trans_g, int&nbsp;trans_b)<br>
-string <b>togif_fs</b>(int&nbsp;num_colors, int&nbsp;trans_r, int&nbsp;trans_g, int&nbsp;trans_b)<br>
-string <b>togif_fs</b>(array(array(int))&nbsp;colors, int&nbsp;trans_r, int&nbsp;trans_g, int&nbsp;trans_b)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Makes GIF data. The togif_fs variant uses floyd-steinberg 
-     dithereing.
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int num_colors</tt>
-  <dd>number of colors to quantize to (default is 256) 
- array array(array(int)) colors
-     colors to map to (default is to quantize to 256), format is ({({r,g,b}),({r,g,b}),...}).
-<dt><tt>int trans_r</tt>
-<dt><tt>int trans_g</tt>
-<dt><tt>int trans_b</tt>
-  <dd>one color, that is to be transparent.
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the GIF data
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#gif_begin>gif_begin</a></tt>,
-     <tt><a href=Image.image.html#gif_add>gif_add</a></tt>,
-     <tt><a href=Image.image.html#gif_end>gif_end</a></tt>,
-     <tt><a href=Image.image.html#toppm>toppm</a></tt>,
-     <tt><a href=Image.image.html#fromgif>fromgif</a></tt>
-</blockquote>
-
-<hr>
-<a name=toppm> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>string <b>toppm</b>()</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Returns PPM (P6, binary pixmap) data from the
-     current image object.
-</blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-PPM data
-</blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#frompnm>frompnm</a></tt>,
-     <tt><a href=Image.image.html#fromgif>fromgif</a></tt>
-</blockquote>
-
-<hr>
-<a name=tuned_box> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>object <b>tuned_box</b>(int&nbsp;x1, int&nbsp;y1, int&nbsp;x2, int&nbsp;y2, array(array(int))&nbsp;corner_color)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-Draws a filled rectangle with colors (and alpha values) tuned
-     between the corners.
-
-<p>     Tuning function is (1.0-x/xw)*(1.0-y/yw) where x and y is
-     the distance to the corner and xw and yw are the sides of the
-     rectangle.
-
-<p>     <table><tr valign=center>
-     <td><img src=lena.gif width=67 height=67></td>
-     <td><img src=illustration_53.gif width=67 height=67></td>
-     <td><img src=illustration_54.gif width=67 height=67></td>
-     </tr><tr valign=center>
-     <td>original</td>
-     <td>solid tuning<br>(blue,red,green,yellow)</td>
-     <td>tuning transparency<br>(as left + 255,128,128,0)</td>
-     </tr></table>
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>int x1</tt>
-<dt><tt>int y1</tt>
-<dt><tt>int x2</tt>
-<dt><tt>int y2</tt>
-  <dd>rectangle corners
-<dt><tt>array(array(int)) corner_color</tt>
-  <dd>colors of the corners:
-     <pre>
-     ({x1y1,x2y1,x1y2,x2y2})
-     </pre>
-     each of these is an array of integeres:
-     <pre>
-     ({r,g,b}) or ({r,g,b,alpha})
-     </pre>
-     Default alpha channel value is 0 (opaque).
-</dl></blockquote>
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the object called
-</blockquote>
-
-<hr>
-<a name=turbulence> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>void <b>turbulence</b>(array(float|int|array(int))&nbsp;colorrange)<br>
-void <b>turbulence</b>(array(float|int|array(int))&nbsp;colorrange, int&nbsp;octaves, float&nbsp;scale, float&nbsp;xdiff, float&nbsp;ydiff, float&nbsp;cscale)</tt>
-</blockquote>
-
-<h4>DESCRIPTION</h4>
-
-
-<blockquote>
-gives a new image with the old image's size,
-     filled width a 'turbulence' pattern
-</blockquote>
-<h4>ARGUMENTS</h4>
-<blockquote><dl>
-<dt><tt>array(float|int|array(int)) colorrange</tt>
-  <dd>colorrange table
-<dt><tt>int octaves</tt>
-  <dd>default value is 3
-<dt><tt>float scale</tt>
-  <dd>default value is 0.1
-<dt><tt>float xdiff</tt>
-<dt><tt>float ydiff</tt>
-  <dd>default value is 0,0
-<dt><tt>float cscale</tt>
-  <dd>default value is 1
-</dl></blockquote>
-
-
-<h4>SEE ALSO</h4>
-<blockquote>     <tt><a href=Image.image.html#noise>noise</a></tt>
-</blockquote>
-
-<hr>
-<a name=xsize> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>int <b>xsize</b>()</tt>
-</blockquote>
-
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the width of the image
-</blockquote>
-
-<hr>
-<a name=ysize> </a>
-<h4>SYNOPSIS</h4>
-<blockquote>
-<tt>int <b>ysize</b>()</tt>
-</blockquote>
-
-<h4>RETURNS</h4>
-
-
-<blockquote>
-the height of the image
-</blockquote>
diff --git a/src/modules/Image/doc/illustration_43.gif b/src/modules/Image/doc/illustration_43.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5315d2f3dd517b3762be6d581b6cce61fa8d157b
GIT binary patch
literal 2583
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

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_46.gif b/src/modules/Image/doc/illustration_46.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fd8c7ff2db60141263cb2439b5f8201ec04493d0
GIT binary patch
literal 6013
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
JA|SwE4FDyaeLMgF

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_47.gif b/src/modules/Image/doc/illustration_47.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ab65b0e929cad7228788d65f9f8361f613943cdd
GIT binary patch
literal 3817
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

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_48.gif b/src/modules/Image/doc/illustration_48.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d0bb94f304c606cea9d0cab57ddb238c57b0b57d
GIT binary patch
literal 5876
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
W(>n~_*B0>cz5h_U?hPX&gEas?R3GsG

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_49.gif b/src/modules/Image/doc/illustration_49.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b981a75a88042f3e74bd5a1cc84650e673e2c64f
GIT binary patch
literal 6145
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
CIp-Jv

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_51.gif b/src/modules/Image/doc/illustration_51.gif
new file mode 100644
index 0000000000000000000000000000000000000000..5b57303205bb0781ebdf4a0bde0415e26310273f
GIT binary patch
literal 397
zcmZ?wbhEHbbY^g7C}&{MVPIfj0I?ex7#RNl{}19aFfjdNsVUrkM!;#xq-#}@$3EHq
z*Sx=6lk51x^sb32n)^O*I_gx1Z`$+Oq>uSlg-ueS7>`=tdWp}1!kv?3&Kf^SNt>(v
z>WdUpdurT@8#Q`C7hk$;dwc9)?fY#)X64UwKiS&ue|9~jeCcKNj_KDfO>DZc<ivGB
z&7UqWEL<uxDp#sy-Z+tI&T>>JYq_&qrq;Dj+pDf+9ZlP1*<l*?IVy6u3)}JR-LE-h
za+X=Wa{tq@W$Bt}+}S_NYED^2zi9rez3V$`8<#dmUF}-l6YXzflwvLZ)vTK5mHTv^
z_j9}4`+f22>h0hA2kOK#TJuf`4e*}YvR_PTjUd1Gky3_*zDq1VK3JU|bW!Wu>lX#n
zkM}E>-g|t_;K{_Q_j-Ownt^k-PtjuUJ@VMd@9Yd7!$UFGCto=it-)AWA{z4ie4OW0
zrWnRfVU0Py$%ppLn0)ins<6$!tWRBCaB@TJ-n^R3Z*M|2B|llhTk7t8X-6zK1A{dH
D9QV1$

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_53.gif b/src/modules/Image/doc/illustration_53.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ab65b0e929cad7228788d65f9f8361f613943cdd
GIT binary patch
literal 3817
zcmZ?wbhEHbbY^g7C}&{MVPIfj0I}PJnBIu<K38YGrY>~Vg7v5;>lO>4!=54=)a9-j
zD;~F3+~uvj+Ct~BjoE%L{WV?|Yh#!f#PQ52VeTyDYl;<}6(=_>Po}j>raWA8PLft%
zvUyjy`K)~Hx@xVwYKzQ#^QvB^f^MGNCCuSVcmun|(!1pn7m4{Ukn?QUil3|#Fv-%r
z%{+3RmeVRN(^ZzL3(U-SusWY)HP|6!aY9J#7OVViA>j{9+^=}qwkQ}LP*6UrAaYBd
zZM&}G4hxZ!+B`>0*_OG=E%KGx>cG3vopX5*$NU)f*`YGiVx;Fd8umN8PWLwK_H~&Q
zY|s~@-yZ7R8tXhgg>ym<=Y$lQ?rfQ^V$POIj<#aCrYh;q6oa-LgQirMh8&mXVuOY%
z{rY0p`YPuJ$Jhpsr~;?b0?(2<zsQ=<sN$g9oRI1i=Z+|s>D~_O{M}b2`*o*=cSZQk
zj}Dtx6BkjF7FH6QRhpWW8(&+HR-GI_B`dA3CO@n)Kc%)Zw5Bq-G_SZYzon|Yu%f)K
zwvoNIQKYPswW3S7u1T@3QNOxNxwgw7Zz5~)B;kyitobvAD<&z{PSP)%rC2vpzrNA2
zp~J4BF|es4prJ9TwIi{ip`^Vdzj1<H>jcl18MfUsJv%0Z^-f6Xn-(^0R&4S@_QYkJ
z;cJ+a*6?}lWD4HOmav6CVHbbie9^q65|s<oDwnI~u9c`*r<k`*vSNpP^L*2mrAB=V
zT>6*UHLum_TW8X|U9E4s?u<nN3zme=T;;rMt@rFr*0XmSt=MM2X@`^DF(!+1Ox}ms
zyw0+#-(fVl$?R~8)%!NP#2W^|9}H?Q8P&frn!R9lf5B?;mC@rXQ`kYCq@x01=eZLv
z^5q^BD?cJxct)i7s$k4*?wH3MMR)j$pK?dPWsCXFRQ!&;_&am+L504<DvjqPdoM`O
zIIOYcp#H4$^2^RCx84(+cvpDgEr|tB1Up}Ib$(-+_m*qkca}|uOgEj;+JDsi@Hw3g
zH)Z$Sk~@A&@$zlOjV}Zay%5^`mF@61_RB9su6*Tq@<#B*4>pc}47oRU6gEHTm9-Z5
z_2J`VcV|WCHWwAAB_4tr0gGG~IxY1Qb!cGWbZYUKs1&fksZ+?cE5tkDKm#kcTTg^<
z(uoOAeWv+5IMBo{{4V0fg@pngLYh%WR!m&%K0(QImdnaXOTB{(Q!j1F3|{Ux&#v*B
zfYp?RhvnQ=*#fH!A0O+Jcka`vG<te!^`TAYbdH723{Od56<cFywvca8`enYz=#9C-
zI|82jZPi{i<@6rI??tN5zGwR%Y~g-wk+Y3GYDv%ZU8PdyTCuCNb>q*;tdWR6cgl)=
zpJ3ISj7#=D^W)~+`gnVJ(b8*cqrA+X?cJ99?3?rqw%!Z-JwFT7iFizS<kSCe`?Nha
z+dl8Pu-HGI?b@%eQpR=9BX-;^`TpKbsy$sc((-EHR8#jZgF`&VlMT1s+$LB3F4o++
z#_EZIJpb2)tS#k^5{X9y-QTcFDm3#<@=)s5`4r!<R3KtO<1vL533;b=HuqG2u$5TY
zB696{lYsc6?GFWmJPch$!VZXfC@A(tJgQ$d<C2UC3*X_S?xO~Wd3ua?i63q@_UKS<
zUAD78u}!K-;)zIbMB-7=aG9AZoodTWPHFg>i7%a^8<e@!*yx;xGf%YL3spYLZx5Pg
z*rxq>JTr6MO|?l%hdR6FlvqV_O$p+goZcN~bojYZ1JkLcEfxY^4;OY!+PPvv@1~b&
zOa7_)Nu8SGJFiI7WTxEam-Ehjkjz?O^dw-_$`#9AEuOh%)l01<UV2SlTARbFPHA3n
zXnt*QTxRiV!#&@Az2-4GVW6{6cT0nokjIKHomr>sex<Eh;S#-i>ou?DwcC!HT=p^E
zTP4lRW6+}gZo|`A)f&4zG#0wdbWnS(p?JoNOLy(EIYPX9FL^Yt-}c+?vi<=E?wD7c
ztouJ4;?`4GV<7Bfa?xNnzi<-Ansdu0aUH#!G{<n?Z?n&5jOChT3U*jbi1~C<f5jS>
z)4nE+t%q}jlr}5&7znLCYY|;jcuX?+@W%5F_R1wY)MgYkUDVysu;r4Eb+4<~+Bn6n
ziXq02I+V{R#jgH$?P7s0uUXu8nQa%8djiaE>8z+V+Qp@Rchl|2l!LBkO2TW+wa#xk
z#HB6z+4ihSZ2Dwhvjk?|4IHh~dEYoYwf9vV(zfqAdV5mw#nwB)(S6&`uFQFNYRg3z
z;j_=@CmUCp-6;^>#-X$z?#IKmyVp4hZLq%g<;}$6#A@;4>$R27_I<Xs`Pk4u&&K?2
z$>lwtSIw8*%cbQr|A^4Wc>mqsVoL%&6sO+ayZh|E-?FAH?t3yN&ey!~zW*zz+~V3s
z1y;?D`G1~mXHmB}Sa<XGy??*T%|oB)HmqB4jDb7C?ulwZ?b+l9uM{{OIn@+7MYcQ;
zp4YJV*3<mvd&MnUA&d@TI}VBdQxsWfdZPTmXHA3F^U;dju^fk0LoRR{uTlK>CA`B~
zW|82(+YhyZE_Q`67<OFQ&}O=>uvbY<zgD9pj>E^HNoYz#t6+~jPcp|*^$bUD$vugp
z>u+@Mtx6JI{o;|htHd$GIA`fwH;$R@DRdHOP+(DPP~p7w!%b|RL!WQWBcAs=Sfzt5
zcJ*c)Q7-v$++o`z(e*3X6pwnix#(SzzW3pn`L2g2+}(;M<@qpj1vE5?u1R1`II)E1
z?TS|2oP*p_cak;aKXT}neVnp#jhpGJgQuL;K25#<<CuAt<Vk@Cn^^Wdd8*&Y*=Ar-
zIAe~@GVw1QUV-m6Oo??#HCgHDmaSzpZPULy%arqfo-O$HX?lXja?6X6KBaXFxhDiH
z)0qA9c>1a0SzmIVnkKLGtu4Ded&-yR7R*v@1``(Yl=>_e-}9kW-+@W!ZOSq+-=7yU
z!!A#~apjra?wjWe@<JBK>mF9)wz@QFo{3OR4U0~glz)iRm!-l>Uzn>XG<x_YFp2MQ
z2(iAvxT@*^v)qFf?!{c}6DM6+GNHpoWt!%d2!=^wTQ;=n9$@5~E+w?gD^@FbK3C|<
zxCN_1k7k7xp1QhDYV-00QEfFbuI`8<N@5wI+R-<)_zF9iWnVPtSlu|-SGHxbtj|=2
z*tb>J_q+;SUEAs`^Y7Qy`EE?YGX%7BxVmp_(VDigulHY0ihA_T(`jX!%Z{#&`+n=<
zoN0`Fi)3{Ze7mF4Hf`IQ6|0?-ZXJCpPHc1W+y+*i1jdz*wlY_VGRL3(aQnfd#2tyY
zx@sm1Z(Z9Jw)26&af@RIV{X}f-{!wmuhjAY<F7h~)ky-*`Sx5f@9VBFf9SeaEv!1?
ziI$nn!-)45mnQPDEkC?-TkpD(r_u3zH4m7-pM5W3bL#H9V~Ttg2bkp;bZ&g)+p!_T
z_qDD-PXep?j)VN`-dZa#FmkvkFbPgr&#Kjv$dg^cllEYpOvCR)!N-pL@e^Dcd~0H&
zt~?UcPTSa>_=c}M<fp9hI>SC?2S%>XH;yMUY?5q>X;T!BJW_R``JakfV3IG-jssgO
zjHWEz6DP4eSvKrg(X`y2WUi0}Orj?aOt=5=*swp6uh`=A#H%)(X6a2Q3#JuM5zgsj
zTb(Rhan5*J_L+1&W~&R5Cmi}YWz!62JMwk-ZJBskr_<E^(Z#&9w>pn_o@z`!Ec48u
z-Rer=OP}4zm!sZop6@7|#hcM^CE4KX%I5~{mQNVZX2pG0F`C%vJEuZy^E4C76NRs1
zKJU6d>)z*S?Y?h#B%+z^?V1+`-hE?ZGyCeLW!ttUDstys{w22eLD}}wyRUs-?_^+o
zVZ!>Sr!ipm?>iY9UnQ@ceOI<y`d;s}?`kQ5?=9>t@Bcbyy8mEqYV8Z=2Mq5&FaKv4
z@S!-Hfj7hB+abw&IqAEr`7icWY*mkYpYwT<xWxIdmiu~NmOfyXm-}yVg1?}FnPJuw
zmE#PD0{4AtU4H9n<&DE~QM#XfFWh-%e*UNBxs9K_|NnXJ$X?0V759ZTMB$~xjfRbZ
z=f1RFZsgM~FTe8Lfitr>>6ys!ZF&_GON*v7zm9osYP*lGq+dAUMQZ#3rb+u6c~{JR
zn~`w%)ct!oc6;W$o09S6?%H|fv2Sc&KmB3-;H6{#!TP(8e=9IB^7(&b)~NfKS^kIZ
z(t$FwEf0C}mpjWoOZd4nSn2cR2Q2Cq@%iUJ%RXNyU;EOxzrW^9vi!<;TgDUrs*YMK
zeA~Rd_Q~yk1;4kypT}SK!B$mE@Xy1`GUCVfSH5tS?|(YmPX1i`zAu~!49qePj91GW
zm{aDrnOvC1yRE%?S2%kOLtW7K>L=<o^9t%-Ugv&Y&iC;`-O_OW5A5|9#A{cF*MDoT
zzqY)-?|J<{_J-UE)uj#%Y#o(T132eA;N;fe-qBDu|2p?Rfhs|b#;*>Iq7{uy3Jj7F
z^;`=W>~}Ey`p&>Vp;qxkt+GV}>kIa}h9<2OP4gZ!8JsBJXVCm1p!rKdvqeVZ?+g6a
zCz_=)7#uiSoFiHkX0UBLUVAUS$>#+-$BHKH7o7SQt)VZtKNPeIu4s*(!T<LHf838&
zsTmB(D;Rz~XK-1;_D?~hsVsrri=)mbgY$7X=iCiV^9|Z}ZQ$M$&|V(V9F@T@`l7w=
zM=O&719Jicr$R?cL|axvN9F^z%pD!7H`x1LuuquLH2DSR)E`aN%R6UF@P967{`R2r
z=K=l&H~1Mov@VJ0TF%kJv!E+$1KZjkY<JkZOE0k3e_-#=;M{hiX=exb?hV{~Dq25(
z=sx(O^N&MM-4A|-f}X`5UCVd$@El-p`N6Py2V3?7w)_ul-5KoV0ln8|^xpo#xpM~h
z{fO56AGpgk_#a2~eJkjD@q_;r2Lt1UzIQ+RKHgwx|Izb(Mt|;xj`9Nb+JxR48JyD!
zI49lUWct~}!r8a4U;^jP2?r}~^7Gx~|Hm-#wFCp>gdUCt2C<tA5}y51o&CRFOjM}s
zz3wqd?Ix#2WarKelXPEB`m|ueXMxE^m3{vLCJSm#w6tWfJ~^550E1oU#IG;doGhov
zOHOj@oHG3a=Z+Io{3<8x7nmB9$^X58KeTdc#Lm8`ol~tVyTo5k{<>r0Pmd`Xl~YuA
zPGfpG?LNo!4+_&CXG||U$zL&Zx_Reh#tTzzeop5VnBlauKV5TD{eo#;niG6?PAbrx
w9>h8GyTQyUJEvQ8&P<S;HfLsk8t0@1nzOtkXLVQ33j8@^!pT_zk^&6Y07(MR;Q#;t

literal 0
HcmV?d00001

diff --git a/src/modules/Image/doc/illustration_54.gif b/src/modules/Image/doc/illustration_54.gif
new file mode 100644
index 0000000000000000000000000000000000000000..a5c94ec5b51f20de1d381837385aa4b9d1ad9709
GIT binary patch
literal 5105
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

literal 0
HcmV?d00001

diff --git a/src/modules/Image/image.c b/src/modules/Image/image.c
index 3e3ce11175..0e6d7a8edc 100644
--- a/src/modules/Image/image.c
+++ b/src/modules/Image/image.c
@@ -1,4 +1,4 @@
-/* $Id: image.c,v 1.34 1997/05/29 23:36:58 per Exp $ */
+/* $Id: image.c,v 1.35 1997/05/30 00:21:12 mirar Exp $ */
 
 /*
 **! module Image
@@ -6,7 +6,7 @@
 **!     This module adds image-drawing and -manipulating
 **!	capabilities to pike. 
 **! note
-**!	$Id: image.c,v 1.34 1997/05/29 23:36:58 per Exp $<br>
+**!	$Id: image.c,v 1.35 1997/05/30 00:21:12 mirar Exp $<br>
 **! see also: Image.font, Image.image
 **!
 **! class image
@@ -107,7 +107,7 @@
 
 #include "stralloc.h"
 #include "global.h"
-RCSID("$Id: image.c,v 1.34 1997/05/29 23:36:58 per Exp $");
+RCSID("$Id: image.c,v 1.35 1997/05/30 00:21:12 mirar Exp $");
 #include "pike_macros.h"
 #include "object.h"
 #include "constants.h"
@@ -1294,6 +1294,16 @@ void image_ysize(INT32 args)
 **!
 **! returns the new image object
 **!
+**!	<table><tr valign=center>
+**!	<td><illustration> return lena(); </illustration></td>
+**!	<td><illustration> return lena()->grey(); </illustration></td>
+**!	<td><illustration> return lena()->grey(0,0,255); </illustration></td>
+**!	</tr><tr valign=center>
+**!	<td>original</td>
+**!	<td>->grey();</td>
+**!	<td>->grey(0,0,255);</td>
+**!	</tr></table>
+**!
 **! arg int r
 **! arg int g
 **! arg int b
@@ -1361,6 +1371,14 @@ void image_grey(INT32 args)
 **!
 **!    If no arguments are given, the current color is used as factors.
 **!
+**!	<table><tr valign=center>
+**!	<td><illustration> return lena(); </illustration></td>
+**!	<td><illustration> return lena()->color(128,128,255); </illustration></td>
+**!	</tr><tr valign=center>
+**!	<td>original</td>
+**!	<td>->color(128,128,255);</td>
+**!	</tr></table>
+**!
 **! returns the new image object
 **!
 **! arg int r
@@ -1431,9 +1449,11 @@ void image_color(INT32 args)
 **!	<table><tr valign=center>
 **!	<td><illustration> return lena(); </illustration></td>
 **!	<td><illustration> return lena()->invert(); </illustration></td>
+**!	<td><illustration> return lena()->rgb_to_hsv()->invert()->hsv_to_rgb(); </illustration></td>
 **!	</tr><tr valign=center>
 **!	<td>original</td>
 **!	<td>->invert();</td>
+**!	<td>->rgb_to_hsv()->invert()->hsv_to_rgb();</td>
 **!	</tr></table>
 **!
 **! returns the new image object
@@ -1555,7 +1575,7 @@ void image_threshold(INT32 args)
 
 
 /*
-**x method object rgb_to_hsv()
+**! method object rgb_to_hsv()
 **! method object hsv_to_rgb()
 **!    Converts RGB data to HSV data, or the other way around.
 **!    When converting to HSV, the resulting data is stored like this:
@@ -1567,16 +1587,33 @@ void image_threshold(INT32 args)
 **!	<table><tr valign=center>
 **!	<td><illustration> return lena(); </illustration></td>
 **!	<td><illustration> return lena()->hsv_to_rgb(); </illustration></td>
+**!	<td><illustration> return lena()->rgb_to_hsv(); </illustration></td>
+**!	</tr><tr valign=center>
+**!	<td>original</td>
+**!	<td>->hsv_to_rgb();</td>
+**!	<td>->rgb_to_hsv();</td>
+**!	</tr><tr valign=center>
+**!	<td><illustration>
+**!     return image(67,67)->tuned_box(0,0, 67,67,
+**!                      ({ ({ 255,255,128 }), ({ 0,255,128 }),
+**!                         ({ 255,255,255 }), ({ 0,255,255 })}));
+**!	</illustration></td>
 **!	<td><illustration>
 **!     return image(67,67)->tuned_box(0,0, 67,67,
 **!                      ({ ({ 255,255,128 }), ({ 0,255,128 }),
 **!                         ({ 255,255,255 }), ({ 0,255,255 })}))
 **!          ->hsv_to_rgb();
 **!	</illustration></td>
+**!	<td><illustration>
+**!     return image(67,67)->tuned_box(0,0, 67,67,
+**!                      ({ ({ 255,255,128 }), ({ 0,255,128 }),
+**!                         ({ 255,255,255 }), ({ 0,255,255 })}))
+**!          ->rgb_to_hsv();
+**!	</illustration></td>
 **!	</tr><tr valign=center>
-**!	<td>original</td>
-**!	<td>->hsv_to_rgb();</td>
+**!	<td>tuned box (below)</td>
 **!	<td>the rainbow (below)</td>
+**!	<td>same, but rgb_to_hsv()</td>
 **!	</tr></table>
 **!
 **!
-- 
GitLab