Branch: Tag:

2002-05-26

2002-05-26 00:46:29 by Martin Nilsson <mani@lysator.liu.se>

Added special functions chapter

Rev: refdoc/chapters/special_functions.xml:1.1
Rev: refdoc/structure/traditional.xml:1.15

1:   <!doctype html><html><head><title>Pike Reference Manual</title>   <meta charset='utf-8'></head> - <body><dl><dt><h1 class='header'>9. Image Module</h1></dt><dd><dl><dt><h2 class='header'>Class <b class='ms datatype'>Image.Image</b></h2> - </dt><dd><dl class='group--doc'> - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p> - The main object of the <code>Image</code> module, this object - is used as drawing area, mask or result of operations.</p> + <body><dl><dt><h1 class='header'>9. Parsers</h1></dt><dd><dl><dt><h2 class='header'>Module <b class='ms datatype'>Parser.XML</b></h2> + </dt><dd><dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.XML.Simple</b></h2> + </dt><dd>    - <p>basic: <br /> - <code>clear</code>, - <code>clone</code>, - <code>create</code>, - <code>xsize</code>, - <code>ysize</code></p> -  - <p>plain drawing: <br /> - <code>box</code>, - <code>circle</code>, - <code>getpixel</code>, - <code>line</code>, - <code>setcolor</code>, - <code>setpixel</code>, - <code>threshold</code>, - <code>polyfill</code></p> -  - <p>operators: <br /> - <code>`&amp;</code>, - <code>`*</code>, - <code>`+</code>, - <code>`-</code>, - <code>`==</code>, - <code>`&gt;</code>, - <code>`&lt;</code>, - <code>`|</code></p> -  - <p>pasting images: <br /> - <code>paste</code>, - <code>paste_alpha</code>, - <code>paste_alpha_color</code>, - <code>paste_mask</code></p> -  - <p>getting subimages, scaling, rotating: <br /> - <code>autocrop</code>, - <code>clone</code>, - <code>copy</code>, - <code>dct</code>, - <code>mirrorx</code>, - <code>rotate</code>, - <code>rotate_ccw</code>, - <code>rotate_cw</code>, - <code>rotate_expand</code>, - <code>scale</code>, - <code>skewx</code>, - <code>skewx_expand</code>, - <code>skewy</code>, - <code>skewy_expand</code></p> -  - <p>calculation by pixels: <br /> - <code>apply_matrix</code>, - <code>change_color</code>, - <code>color</code>, - <code>distancesq</code>, - <code>grey</code>, - <code>invert</code>, - <code>modify_by_intensity</code>, - <code>outline</code> - <code>select_from</code>, - <code>rgb_to_hsv</code>, - <code>hsv_to_rgb</code>,<br /></p> -  - <p><code>average</code>, - <code>max</code>, - <code>min</code>, - <code>sum</code>, - <code>sumf</code>, - <code>find_min</code>, - <code>find_max</code></p> -  - <p>special pattern drawing:<br /> - <code>noise</code>, - <code>turbulence</code>, - <code>test</code>, - <code>tuned_box</code>, - <code>gradients</code>, - <code>random</code> - </p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image</code>, <code>Image.Font</code>, <code>Image.Colortable</code>, <code>Image.X</code></p></dd></dl> -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`/</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`%</b></span><br> + <span class='homogen--name'><b>allow_rxml_entities</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;/&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;/&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;/&#32;<code class='class'>value</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;%&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;%&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;%&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>allow_rxml_entities</span>(</b><code class='datatype'>bool</code> <code class='argument'>yes_no</code><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Divides pixel values and creates a new image from the result or - the rest.</p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the other image to divide with; - the images must have the same size.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>if specified as color or value, it will act as a whole - image of that color (or value).</p> +     - <p></p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>It isn't possible to do a modulo 256 either. (why?)</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`-</code>, <code>`+</code>, <code>`|</code>, <code>`&amp;amp;</code>, <code>`*</code>, <code>Image.Layer</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`&amp;</b></span> + <span class='homogen--name'><b>autoconvert</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;&amp;&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;&amp;&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;&amp;&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>autoconvert</span>(</b><code class='datatype'>string</code> <code class='argument'>xml</code><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>makes a new image out of the minimum pixels values - </p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the other image to compare with; - the images must have the same size.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd><dd class='body--doc'><p>an array in format ({r,g,b}), this is equal - to using an uniform-colored image.</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>equal to ({value,value,value}).</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`-</code>, <code>`+</code>, <code>`|</code>, <code>`*</code>, <code>Image.Layer</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`*</b></span> + <span class='homogen--name'><b>define_entity</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;*&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;*&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;*&#32;<code class='class'>value</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;*&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>define_entity</span>(</b><code class='datatype'>string</code> <code class='argument'>entity</code>, <code class='datatype'>string</code> <code class='argument'>raw</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>cb</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extras</code><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Multiplies pixel values and creates a new image. - This can be useful to lower the values of an image, - making it greyer, for instance:</p> +     - <p><pre>image=image*128+64;</pre> - </p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the other image to multiply with; - the images must have the same size.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd><dd class='body--doc'><p>an array in format ({r,g,b}), this is equal - to using an uniform-colored image.</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>equal to ({value,value,value}). - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`-</code>, <code>`+</code>, <code>`|</code>, <code>`&amp;amp;</code>, <code>Image.Layer</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`+</b></span> + <span class='homogen--name'><b>define_entity_raw</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;+&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;+&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;+&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>define_entity_raw</span>(</b><code class='datatype'>string</code> <code class='argument'>entity</code>, <code class='datatype'>string</code> <code class='argument'>raw</code><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>adds two images; values are truncated at 255.</p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the image which to add.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd><dd class='body--doc'><p>an array in format ({r,g,b}), this is equal - to using an uniform-colored image.</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>equal to ({value,value,value}).</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`-</code>, <code>`|</code>, <code>`&amp;amp;</code>, <code>`*</code>, <code>Image.Layer</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`-</b></span> + <span class='homogen--name'><b>parse_dtd</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;-&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;-&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;-&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><code class='datatype'>mixed</code> <b><span class='method'>parse_dtd</span>(</b><code class='datatype'>string</code> <code class='argument'>dtd</code>, <code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>cb</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extras</code><b>)</b></code></p></dd> + </dl> + </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.XML.Validating</b></h2> + </dt><dd>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>makes a new image out of the difference</p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the other image to compare with; - the images must have the same size.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd><dd class='body--doc'><p>an array in format ({r,g,b}), this is equal - to using an uniform-colored image.</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>equal to ({value,value,value}).</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`+</code>, <code>`|</code>, <code>`&amp;amp;</code>, <code>`*</code>, <code>Image.Layer</code>, <code>min</code>, <code>max</code>, <code>`==</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`==</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`&lt;</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`&gt;</b></span><br> + <dt class='head--type'><span class='homogen--type'>Inherit</span> + <span class='homogen--name'><b>Simple</b></span>   </dt> - <dd><p><code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;==&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;==&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;==&#32;<code class='class'>value</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;&lt;&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;&lt;&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;&lt;&#32;<code class='class'>value</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;&gt;&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;&gt;&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Image()</code>&#32;&gt;&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><span class='datatype'>inherit Parser.XML.Simple</span> : <span class='inherit'>Simple</span></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Compares an image with another image or a color.</p> +     - <p>Comparision is strict and on pixel-by-pixel basis. - (Means if not all pixel r,g,b values are - correct compared with the corresponding - pixel values, 0 is returned.) - </p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the other image to compare with; - the images must have the same size.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd><dd class='body--doc'><p>an array in format ({r,g,b}), this is equal - to using an uniform-colored image.</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>equal to ({value,value,value}).</p> -  - <p></p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>true (1) or false (0).</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>`&lt; or `&gt; on empty ("no image") image objects or images - with different size will result in an error. - `== is always true on two empty image objects and - always false if one and only one of the image objects - is empty or the images differs in size.</p> -  - <p>a&gt;=b and a&lt;=b between objects is equal to !(a&lt;b) and !(a&gt;b), - which may not be what you want (since both &lt; and &gt; can return - false, comparing the same images).</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`-</code>, <code>`+</code>, <code>`|</code>, <code>`*</code>, <code>`&amp;amp;</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`|</b></span> + <span class='homogen--name'><b>parse</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;|&#32;<code class='class'>operand</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;|&#32;<code class='class'>color</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Image()</code>&#32;|&#32;<code class='class'>value</code></code></p></dd> + <dd><p><code><code class='datatype'>array</code> <b><span class='method'>parse</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code>, <code class='datatype'>function</code>(<code class='datatype'>string</code>, <code class='datatype'>string</code>, <code class='datatype'>mapping</code>, <code class='datatype'>array</code>|<code class='datatype'>string</code>, <code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>), <code class='datatype'>mixed</code> ... :<code class='datatype'>mixed</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extra</code><b>)</b></code></p></dd> + <dt class='head--fixme'>FIXME</dt> + <dd class='body--fixme'><p>Document this function</p> + </dd></dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>makes a new image out of the maximum pixels values - </p> - </dd> - <dt class='head--doc'><span id='p-operand'></span>Parameter <code class='parameter'>operand</code></dt> - <dd></dd><dd class='body--doc'><p>the other image to compare with; - the images must have the same size.</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd><dd class='body--doc'><p>an array in format ({r,g,b}), this is equal - to using an uniform-colored image.</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>equal to ({value,value,value}).</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>`-</code>, <code>`+</code>, <code>`&amp;amp;</code>, <code>`*</code>, <code>Image.Layer</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>apply_curve</b></span> + <span class='homogen--name'><b>parse_dtd</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>apply_curve</span>(</b><code class='datatype'>object</code> <code class='argument'>array(int(0..255</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>apply_curve</span>(</b><code class='datatype'>object</code> <code class='argument'>array(int(0..255</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>apply_curve</span>(</b><code class='datatype'>object</code> <code class='argument'>stringchannel</code>, <code class='datatype'>object</code> <code class='argument'>array(int(0..255</code><b>)</b></code></p></dd> -  + <dd><p><code><code class='datatype'>array</code> <b><span class='method'>parse_dtd</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code>, <code class='datatype'>function</code>(<code class='datatype'>string</code>, <code class='datatype'>string</code>, <code class='datatype'>mapping</code>, <code class='datatype'>array</code>|<code class='datatype'>string</code>, <code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>), <code class='datatype'>mixed</code> ... :<code class='datatype'>mixed</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extra</code><b>)</b></code></p></dd> + <dt class='head--fixme'>FIXME</dt> + <dd class='body--fixme'><p>Document this function</p> + </dd></dl> + </dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Parser.XML.NSTree</b></h2> + </dt><dd><dl class='group--doc'>   <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Apply a lookup-table on all pixels in an image. - If only one curve is passed, use the same curve for red, green and blue. - If 'channel' is specified, the curve is only applied to the - specified channel.</p> + <dd class='body--doc'><p>A namespace aware version of Parser.XML.Tree. This implementation +  does as little validation as possible, so e.g. you can call your +  namespace xmlfoo without complaints.</p> + </dd></dl>    - <p></p> - </dd> - <dt class='head--doc'><span id='p-curve_r'></span>Parameter <code class='parameter'>curve_r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-curve_g'></span>Parameter <code class='parameter'>curve_g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-curve_b'></span>Parameter <code class='parameter'>curve_b</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-curve'></span>Parameter <code class='parameter'>curve</code></dt> - <dd></dd><dd class='body--doc'><p>An array with 256 elements, each between 0 and 255. - It is used as a look-up table, if the pixel value is 2 and - curve[2] is 10, the new pixel value will be 10. - </p></dd> - <dt class='head--doc'><span id='p-channel'></span>Parameter <code class='parameter'>channel</code></dt> - <dd></dd><dd class='body--doc'><p>one of "red", "green", "blue", "value", "saturation" and "hue". - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>gamma</code>, <code>`*</code>, <code>modify_by_intensity</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>apply_matrix</b></span> + <dt class='head--type'><span class='homogen--type'>Inherit</span> + <span class='homogen--name'><b>Tree</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>apply_matrix</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>))) <code class='argument'>matrix</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>apply_matrix</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>))) <code class='argument'>matrix</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>apply_matrix</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>))) <code class='argument'>matrix</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>div</code><b>)</b></code></p></dd> + <dd><p><code><span class='datatype'>inherit Parser.XML.Tree</span> : <span class='inherit'>Tree</span></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Applies a pixel-transform matrix, or filter, to the image.</p> +     - <p><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></p> -  - <p>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> -  - <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 height='115' src='../images/predef.Image.Image.apply_matrix.1.png' width='80' /> - </td><td> - <img height='115' src='../images/predef.Image.Image.apply_matrix.2.png' width='80' /> - </td></tr> - <tr><td></td><td>original</td></tr> -  - <tr><td> - sharpen (k&gt;8, preferably 12 or 16): - <pre> - ({({-1,-1,-1}), -  ({-1, k,-1}), -  ({-1,-1,-1})}) - </pre> - </td><td> - <img height='115' src='../images/predef.Image.Image.apply_matrix.3.png' width='80' /> - </td></tr> -  - <tr><td> - edge detect: - <pre> - ({({1, 1,1}), -  ({1,-8,1}), -  ({1, 1,1})}) - </pre> - </td><td> - <img height='115' src='../images/predef.Image.Image.apply_matrix.4.png' width='80' /> - </td></tr> -  - <tr><td> - horisontal edge detect (get the idea): - <pre> - ({({0, 0,0}), -  ({1,-2,1}), -  ({0, 0,0})}) - </pre> - </td><td> - <img height='115' src='../images/predef.Image.Image.apply_matrix.5.png' width='80' /> - </td></tr> -  - <tr><td rowspan='2'> - emboss (might prefer to begin with a <code>grey</code> image): - <pre> - ({({2, 1, 0}), -  ({1, 0,-1}), -  ({0,-1,-2})}), 128,128,128, 3 - </pre> - </td><td> - <img height='115' src='../images/predef.Image.Image.apply_matrix.6.png' width='80' /> - </td><td> - <img height='115' src='../images/predef.Image.Image.apply_matrix.7.png' width='80' /> - </td></tr> - <tr><td></td><td>greyed</td></tr></table></p> -  - <p>This function is not very fast. - </p> - </dd> - <dt class='head--doc'><span id='p-array'></span>Parameter <code class='parameter'>array</code></dt> - <dd></dd><dd class='body--doc'><p>the matrix; innermost is a value or an array with red, green, blue - values for red, green, blue separation.</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>base level of result, default is zero</p></dd> - <dt class='head--doc'><span id='p-div'></span>Parameter <code class='parameter'>div</code></dt> - <dd></dd><dd class='body--doc'><p>division factor, default is 1.0.</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>apply_max</b></span> + <span class='homogen--name'><b>parse_input</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>apply_max</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>))) <code class='argument'>matrix</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>apply_max</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>))) <code class='argument'>matrix</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>apply_max</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>))) <code class='argument'>matrix</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>div</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>NSNode</code> <b><span class='method'>parse_input</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This is the same as apply_matrix, but it uses the maximum - instead.</p> -  - <p>This function is not very fast. - </p> + <dd class='body--doc'><p>Takes a XML string <code>data</code> and produces a namespace node tree.</p>   </dd> - <dt class='head--doc'><span id='p-array'></span>Parameter <code class='parameter'>array</code></dt> - <dd></dd><dd class='body--doc'><p>the matrix; innermost is a value or an array with red, green, blue - values for red, green, blue separation.</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>base level of result, default is zero</p></dd> - <dt class='head--doc'><span id='p-div'></span>Parameter <code class='parameter'>div</code></dt> - <dd></dd><dd class='body--doc'><p>division factor, default is 1.0.</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><b>experimental status</b>; may not be exact the same - output in later versions</p> + <dt class='head--doc'>Throws</dt> + <dd class='body--doc'><p>Throws an <code>error</code> when an error is encountered during XML +  parsing.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>autocrop</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>find_autocrop</b></span><br> + <span class='homogen--name'><b>visualize</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><code class='datatype'>int</code> <code class='argument'>border</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><code class='datatype'>int</code> <code class='argument'>border</code>, <code class='object unresolved'>Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><code class='datatype'>int</code> <code class='argument'>border</code>, <code class='datatype'>int</code> <code class='argument'>left</code>, <code class='datatype'>int</code> <code class='argument'>right</code>, <code class='datatype'>int</code> <code class='argument'>top</code>, <code class='datatype'>int</code> <code class='argument'>bottom</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><code class='datatype'>int</code> <code class='argument'>border</code>, <code class='datatype'>int</code> <code class='argument'>left</code>, <code class='datatype'>int</code> <code class='argument'>right</code>, <code class='datatype'>int</code> <code class='argument'>top</code>, <code class='datatype'>int</code> <code class='argument'>bottom</code>, <code class='object unresolved'>Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_autocrop</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_autocrop</span>(</b><code class='datatype'>int</code> <code class='argument'>border</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_autocrop</span>(</b><code class='datatype'>int</code> <code class='argument'>border</code>, <code class='datatype'>int</code> <code class='argument'>left</code>, <code class='datatype'>int</code> <code class='argument'>right</code>, <code class='datatype'>int</code> <code class='argument'>top</code>, <code class='datatype'>int</code> <code class='argument'>bottom</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>visualize</span>(</b><code class='object unresolved'>Node</code> <code class='argument'>n</code>, <code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>indent</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Removes "unneccesary" borders around the image, adds one of - its own if wanted to, in selected directions.</p> -  - <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.</p> -  - <p>The find_autocrop() function simply returns x1,y1,x2,y2 for the - kept area. (This can be used with <code>copy</code> later.) - </p> + <dd class='body--doc'><p>Makes a visualization of a node graph suitable for +  printing out on a terminal.</p>   </dd> - <dt class='head--doc'><span id='p-border'></span>Parameter <code class='parameter'>border</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-left'></span>Parameter <code class='parameter'>left</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-right'></span>Parameter <code class='parameter'>right</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-top'></span>Parameter <code class='parameter'>top</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-bottom'></span>Parameter <code class='parameter'>bottom</code></dt> - <dd></dd><dd class='body--doc'><p>which borders to scan and cut the image; - a typical example is removing the top and bottom unneccesary - pixels: - <pre>img=img-&gt;autocrop(0, 0,0,1,1);</pre> - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>copy</code></p></dd></dl> + <dt class='head--doc'>Example</dt> + <dd class='example'><pre><p>&gt; object x = parse_input("&lt;a&gt;&lt;b&gt;&lt;c/&gt;d&lt;/b&gt;&lt;b&gt;&lt;e/&gt;&lt;f&gt;g&lt;/f&gt;&lt;/b&gt;&lt;/a&gt;"); +  &gt; write(visualize(x)); +  Node(ROOT) +  NSNode(ELEMENT,"a") +  NSNode(ELEMENT,"b") +  NSNode(ELEMENT,"c") +  NSNode(TEXT) +  NSNode(ELEMENT,"b") +  NSNode(ELEMENT,"e") +  NSNode(ELEMENT,"f") +  NSNode(TEXT) +  Result 1: 201</p> + </pre></dd></dl> + <dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.XML.NSTree.NSNode</b></h2> + </dt><dd><dl class='group--doc'> + <dt class='head--doc'>Description</dt> + <dd class='body--doc'><p>Namespace aware node.</p> + </dd></dl>    -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>average</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>min</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>max</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>sum</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>sumf</b></span><br> + <span class='homogen--name'><b>diff_namespaces</b></span>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>float</code>) <b><span class='method'>average</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>min</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>max</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>sum</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>float</code>) <b><span class='method'>sumf</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>string</code>) <b><span class='method'>diff_namespaces</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Gives back the average, minimum, maximum color value, - and the sum of all pixel's color value. - </p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>sum() values can wrap! Most systems only have 31 bits - available for positive integers. (Meaning, be careful - with images that have more than 8425104 pixels.)</p> -  - <p>average() and sumf() may also wrap, but on a line basis. - (Meaning, be careful with images that are wider -  than 8425104 pixels.) These functions may have a precision - problem instead, during to limits in the 'double' C type and/or - 'float' Pike type.</p> + <dd class='body--doc'><p>Returns the difference between this nodes and its parents namespaces.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>bitscale</b></span> + <span class='homogen--name'><b>get_default_ns</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>bitscale</span>(</b><code class='datatype'>float</code> <code class='argument'>factor</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>bitscale</span>(</b><code class='datatype'>float</code> <code class='argument'>xfactor</code>, <code class='datatype'>float</code> <code class='argument'>yfactor</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_default_ns</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>scales the image with a factor, without smoothing. - This routine is faster than scale, but gives less correct - results</p> - </dd> - <dt class='head--doc'><span id='p-factor'></span>Parameter <code class='parameter'>factor</code></dt> - <dd></dd><dd class='body--doc'><p>factor to use for both x and y</p></dd> - <dt class='head--doc'><span id='p-xfactor'></span>Parameter <code class='parameter'>xfactor</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-yfactor'></span>Parameter <code class='parameter'>yfactor</code></dt> - <dd></dd><dd class='body--doc'><p>separate factors for x and y - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Returns the default namespace in the current scope.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>bitscale</b></span> + <span class='homogen--name'><b>get_defined_nss</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>bitscale</span>(</b><code class='datatype'>int</code> <code class='argument'>newxsize</code>, <code class='datatype'>int</code> <code class='argument'>newysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>bitscale</span>(</b><code class='argument'>0</code>, <code class='datatype'>int</code> <code class='argument'>newysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>bitscale</span>(</b><code class='datatype'>int</code> <code class='argument'>newxsize</code>, <code class='argument'>0</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>string</code>) <b><span class='method'>get_defined_nss</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>scales the image to a specified new size, - if one of newxsize or newysize is 0, - the image aspect ratio is preserved.</p> + <dd class='body--doc'><p>Returns a mapping with all the namespaces defined in the current +  scope, except the default namespace.</p>   </dd> - <dt class='head--doc'><span id='p-newxsize'></span>Parameter <code class='parameter'>newxsize</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-newysize'></span>Parameter <code class='parameter'>newysize</code></dt> - <dd></dd><dd class='body--doc'><p>new image size in pixels - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> +    <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>resulting image will be 1x1 pixels, at least</p> + <dd class='body--doc'><p>The return mapping is the same as the one in the node, so +  destructive changes will affect the node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>box</b></span> + <span class='homogen--name'><b>get_ns</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>box</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>box</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>box</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_ns</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Draws a filled rectangle on the image.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.box.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.box.2.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;box<br />(40,10,<br />10,80,<br />0,255,0)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x1'></span>Parameter <code class='parameter'>x1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y1'></span>Parameter <code class='parameter'>y1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-x2'></span>Parameter <code class='parameter'>x2</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y2'></span>Parameter <code class='parameter'>y2</code></dt> - <dd></dd><dd class='body--doc'><p>box corners</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color of the box</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>alpha value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> + <dd class='body--doc'><p>Returns the namespace in which the current element is defined in.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cast</b></span> + <span class='homogen--name'><b>get_ns_attributes</b></span>   </dt> - <dd><p><code><b>(</b><span class='datatype'>int</span><b>)</b><span class='class'>Image.Image</span>()<br><b>(</b><span class='datatype'>float</span><b>)</b><span class='class'>Image.Image</span>()<br><b>(</b><span class='datatype'>string</span><b>)</b><span class='class'>Image.Image</span>()<br><b>(</b><span class='datatype'>array</span><b>)</b><span class='class'>Image.Image</span>()<br><b>(</b><span class='datatype'>mapping</span><b>)</b><span class='class'>Image.Image</span>()<br><b>(</b><span class='datatype'>multiset</span><b>)</b><span class='class'>Image.Image</span>()</code></p></dd> + <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>string</code>)) <b><span class='method'>get_ns_attributes</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Cast the image to another datatype. Currently supported - are string ("rgbrgbrgb...") and array (double array - of <code>Image.Color</code> objects).</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image.Color</code>, <code>Image.X</code></p></dd></dl> + <dd class='body--doc'><p>Returns all the attributes in all namespaces that is associated with +  this node.</p> + </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>change_color</b></span> + <span class='homogen--name'><b>get_ns_attributes</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>change_color</span>(</b><code class='datatype'>int</code> <code class='argument'>tor</code>, <code class='datatype'>int</code> <code class='argument'>tog</code>, <code class='datatype'>int</code> <code class='argument'>tob</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>change_color</span>(</b><code class='datatype'>int</code> <code class='argument'>fromr</code>, <code class='datatype'>int</code> <code class='argument'>fromg</code>, <code class='datatype'>int</code> <code class='argument'>fromb</code>, <code class='datatype'>object</code> <code class='argument'>inttor</code>, <code class='datatype'>int</code> <code class='argument'>tog</code>, <code class='datatype'>int</code> <code class='argument'>tob</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>string</code>) <b><span class='method'>get_ns_attributes</span>(</b><code class='datatype'>string</code> <code class='argument'>namespace</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Changes one color (exakt match) to another. - If non-exakt-match is preferred, check <code>distancesq</code> - and <code>paste_alpha_color</code>.</p> - </dd> - <dt class='head--doc'><span id='p-tor'></span>Parameter <code class='parameter'>tor</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-tog'></span>Parameter <code class='parameter'>tog</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-tob'></span>Parameter <code class='parameter'>tob</code></dt> - <dd></dd><dd class='body--doc'><p>destination color and next current color</p></dd> - <dt class='head--doc'><span id='p-fromr'></span>Parameter <code class='parameter'>fromr</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-fromg'></span>Parameter <code class='parameter'>fromg</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-fromb'></span>Parameter <code class='parameter'>fromb</code></dt> - <dd></dd><dd class='body--doc'><p>source color, default is current color</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new (the destination) image object</p> + <dd class='body--doc'><p>Returns the attributes in this node that is declared in the provided +  namespace.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>circle</b></span> + <span class='homogen--name'><b>get_xml_name</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>circle</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>rx</code>, <code class='datatype'>int</code> <code class='argument'>ry</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>circle</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>rx</code>, <code class='datatype'>int</code> <code class='argument'>ry</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>circle</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>rx</code>, <code class='datatype'>int</code> <code class='argument'>ry</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_xml_name</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Draws a circle on the image. The circle is <i>not</i> antialiased.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.circle.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.circle.2.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;circle<br />(50,50,<br />30,50,<br />0,255,255)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>circle center</p></dd> - <dt class='head--doc'><span id='p-rx'></span>Parameter <code class='parameter'>rx</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ry'></span>Parameter <code class='parameter'>ry</code></dt> - <dd></dd><dd class='body--doc'><p>circle radius in pixels</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>alpha value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> + <dd class='body--doc'><p>Returns the element name as it occurs in xml files. E.g. +  "zonk:name" for the element "name" defined in a namespace +  denoted with "zonk". It will look up a symbol for the namespace +  in the symbol tables for the node and its parents. If none is +  found a new label will be generated by hashing the namespace.</p>   </dd></dl>         <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>clear</b></span> + <dt class='head--type'><span class='homogen--type'>Inherit</span> + <span class='homogen--name'><b>Node</b></span>   </dt> - <dd><p><code><code class='object unresolved'>void </code> <b><span class='method'>clear</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>void </code> <b><span class='method'>clear</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>void </code> <b><span class='method'>clear</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><span class='datatype'>inherit Node</span> : <span class='inherit'>Node</span></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>gives a new, cleared image with the same size of drawing area</p> +     - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.clear.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.clear.2.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;clear<br />(0,128,255)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color of the new image</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>new default alpha channel value</p></dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>copy</code>, <code>clone</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>clone</b></span> + <span class='homogen--name'><b>remove_child</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>clone</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>clone</span>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>clone</span>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>clone</span>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>remove_child</span>(</b><code class='object unresolved'>NSNode</code> <code class='argument'>child</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Copies to or initialize a new image object.</p> + <dd class='body--doc'><p>The remove_child is a not updated to take care of name +  space issues. To properly remove all the parents name spaces +  from the chid, call <code>remove_node</code> in the child.</p> + </dd></dl> + </dd></dl></dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Parser.XML.Tree</b></h2> + </dt><dd>    - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.clone.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.clone.2.png' width='80' /></td> - <td><img height='50' src='../images/predef.Image.Image.clone.3.png' width='50' /></td> - </tr><tr> - <td>original</td> - <td>clone</td> - <td>clone(50,50)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-xsize'></span>Parameter <code class='parameter'>xsize</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ysize'></span>Parameter <code class='parameter'>ysize</code></dt> - <dd></dd><dd class='body--doc'><p>size of (new) image in pixels, called image - is cropped to that size</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>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).</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>new default alpha channel value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>copy</code>, <code>create</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>color</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>STOP_WALK</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>color</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>color</span>(</b><code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>color</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>STOP_WALK</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Colorize an image.</p> +     - <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> -  - <p>The result is divided by 255, giving correct pixel values.</p> -  - <p>If no arguments are given, the current color is used as factors.</p> -  - <p> <table><tr valign='center'> -  <td><img height='115' src='../images/predef.Image.Image.color.1.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.color.2.png' width='80' /></td> -  </tr><tr valign='center'> -  <td>original</td> -  <td>-&gt;color(128,128,255);</td> -  </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>red, green, blue factors</p></dd> - <dt class='head--doc'><span id='p-value'></span>Parameter <code class='parameter'>value</code></dt> - <dd></dd><dd class='body--doc'><p>factor - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>grey</code>, <code>`*</code>, <code>modify_by_intensity</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>copy</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_ATTR</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>copy</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>copy</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>copy</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>copy</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_ATTR</code></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>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.</p> + <dd class='body--doc'><p>Attribute nodes are created on demand</p> + </dd></dl>    - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.copy.1.png' width='80' /></td> - <td><img height='105' src='../images/predef.Image.Image.copy.2.png' width='70' /></td> - <td><img height='125' src='../images/predef.Image.Image.copy.3.png' width='90' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;copy<br />(5,5,<br />XSIZE-6,YSIZE-6)</td> - <td>-&gt;copy<br />(-5,-5,<br />XSIZE+4,YSIZE+4,<br />10,75,10)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x1'></span>Parameter <code class='parameter'>x1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y1'></span>Parameter <code class='parameter'>y1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-x2'></span>Parameter <code class='parameter'>x2</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y2'></span>Parameter <code class='parameter'>y2</code></dt> - <dd></dd><dd class='body--doc'><p>The requested new area. Default is the old image size.</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color of the new image</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>new default alpha channel value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><code>clone</code>(void) and <code>copy</code>(void) does the same - operation - </p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>clone</code>, <code>autocrop</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>create</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_COMMENT</b></span>   </dt> - <dd><p><code><span class='object'>Image.Image</span> <span class='class'>Image.Image</span><b>(</b><b>)</b></code><br> - <code><span class='object'>Image.Image</span> <span class='class'>Image.Image</span><b>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code><b>)</b></code><br> - <code><span class='object'>Image.Image</span> <span class='class'>Image.Image</span><b>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='object unresolved'>Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><span class='object'>Image.Image</span> <span class='class'>Image.Image</span><b>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><span class='object'>Image.Image</span> <span class='class'>Image.Image</span><b>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code><br> - <code><span class='object'>Image.Image</span> <span class='class'>Image.Image</span><b>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>string</code> <code class='argument'>method</code>, <code class='object unresolved'>method</code> <code class='argument'>...</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_COMMENT</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Initializes a new image object.</p> +     - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.create.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.create.2.png' width='80' /></td> - </tr><tr> - <td>Image.Image<br />(XSIZE,YSIZE)</td> - <td>Image.Image<br />(XSIZE,YSIZE,255,128,0)</td> - </tr></table></p> -  - <p>The image can also be calculated from some special methods, - for convinience:</p> -  - <p><pre> - channel modes; followed by a number of 1-char-per-pixel strings - or image objects (where red channel will be used), - or an integer value: -  "grey" : make a grey image (needs 1 source: grey) -  "rgb" : make an rgb image (needs 3 sources: red, green and blue) -  "cmyk" : make a rgb image from cmyk (cyan, magenta, yellow, black) -  - generate modes; all extra arguments is given to the - generation function. These has the same name as the method: -  "&lt;ref&gt;test&lt;/ref&gt;," -  "&lt;ref&gt;gradients&lt;/ref&gt;" -  "&lt;ref&gt;noise&lt;/ref&gt;" -  "&lt;ref&gt;turbulence&lt;/ref&gt;" -  "&lt;ref&gt;random&lt;/ref&gt;" -  "&lt;ref&gt;randomgrey&lt;/ref&gt;" - specials cases: -  "&lt;ref&gt;tuned_box&lt;/ref&gt;" (coordinates is automatic) - </pre> - </p> - </dd> - <dt class='head--doc'><span id='p-xsize'></span>Parameter <code class='parameter'>xsize</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ysize'></span>Parameter <code class='parameter'>ysize</code></dt> - <dd></dd><dd class='body--doc'><p>size of (new) image in pixels</p></dd> - <dt class='head--doc'><span id='p-color'></span>Parameter <code class='parameter'>color</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>background color (will also be current color), - default color is black</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>default alpha channel value</p></dd> - <dt class='head--doc'>Bugs</dt> - <dd class='body--doc'> - <p>SIGSEGVS can be caused if the size is too big, due - to unchecked overflow - - (xsize*ysize)&amp;MAXINT is small enough to allocate.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>copy</code>, <code>clone</code>, <code>Image.Image</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>dct</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_DOCTYPE</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>dct</span>(</b><code class='datatype'>int</code> <code class='argument'>newx</code>, <code class='datatype'>int</code> <code class='argument'>newy</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_DOCTYPE</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Scales the image to a new size.</p> +     - <p>Method for scaling is rather complex; - the image is transformed via a cosine transform, - and then resampled back.</p> -  - <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> -  - <p>Recommended wrapping algorithm is to scale - overlapping parts of the image-to-be-scaled.</p> -  - <p>This functionality is actually added as an - true experiment, but works... - </p> - </dd> - <dt class='head--doc'><span id='p-newx'></span>Parameter <code class='parameter'>newx</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-newy'></span>Parameter <code class='parameter'>newy</code></dt> - <dd></dd><dd class='body--doc'><p>new image size in pixels - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>Do NOT use this function if you don't know what - you're dealing with! Read some signal theory first...</p> -  - <p>It write's dots on stderr, to indicate some sort - of progress. It doesn't use any fct (compare: fft) - algorithms.</p> - </dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>distancesq</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_ELEMENT</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>distancesq</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>distancesq</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_ELEMENT</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Makes an grey-scale image, for alpha-channel use.</p> +     - <p>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> -  - <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)²)&gt;&gt;8 - </pre></p> -  - <p> <table><tr valign='center'> -  <td><img height='115' src='../images/predef.Image.Image.distancesq.1.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.distancesq.2.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.distancesq.3.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.distancesq.4.png' width='80' /></td> -  </tr><tr valign='center'> -  <td>original</td> -  <td>distance² to cyan</td> -  <td>...to purple</td> -  <td>...to yellow</td> -  </tr></table></p> -  - <p></p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>red, green, blue coordinates - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>select_from</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>find_min</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>find_max</b></span><br> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_HEADER</b></span>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_min</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_max</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_min</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_max</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_HEADER</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Gives back the position of the minimum or maximum - pixel value, weighted to grey. - </p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>weight of color, default is r=87,g=127,b=41, same - as the <code>grey</code>() method.</p></dd></dl> +     -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>gamma</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_NODE</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>gamma</span>(</b><code class='datatype'>float</code> <code class='argument'>g</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>gamma</span>(</b><code class='datatype'>float</code> <code class='argument'>gred</code>, <code class='datatype'>object</code> <code class='argument'>floatggreen</code>, <code class='datatype'>object</code> <code class='argument'>floatgblue</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> Parser.XML.Tree.<code class='constant'>XML_NODE</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Calculate pixels in image by gamma curve.</p> +     - <p>Intensity of new pixels are calculated by:<br /> - <i>i</i>' = <i>i</i>^<i>g</i></p> -  - <p>For example, you are viewing your image on a screen - with gamma 2.2. To correct your image to the correct - gamma value, do something like:</p> -  - <p><tt>my_display_image(my_image()-&gt;gamma(1/2.2);</tt> - </p> - </dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-gred'></span>Parameter <code class='parameter'>gred</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ggreen'></span>Parameter <code class='parameter'>ggreen</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-gblue'></span>Parameter <code class='parameter'>gblue</code></dt> - <dd></dd><dd class='body--doc'><p>gamma value - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>grey</code>, <code>`*</code>, <code>color</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>getpixel</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_PI</b></span>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>getpixel</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_PI</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p></p> - </dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>position of the pixel</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>color of the requested pixel -- ({int red,int green,int blue})</p> - </dd></dl> +     -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>gradients</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_ROOT</b></span>   </dt> - <dd><p><code><code class='object unresolved'>int </code> <b><span class='method'>gradients</span>(</b><code class='datatype'>array</code>(<code class='datatype'>int</code>) <code class='argument'>point</code>, <code class='datatype'>object</code> <code class='argument'>...</code><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>gradients</span>(</b><code class='datatype'>array</code>(<code class='datatype'>int</code>) <code class='argument'>point</code>, <code class='datatype'>object</code> <code class='argument'>...</code>, <code class='datatype'>object</code> <code class='argument'>floatgrad</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_ROOT</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.gradients.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.gradients.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.gradients.3.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.gradients.4.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.gradients.5.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.gradients.6.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>2 color<br />gradient</td> - <td>10 color<br />gradient</td> - <td>3 colors,<br />grad=4.0</td> - <td>3 colors,<br />grad=1.0</td> - <td>3 colors,<br />grad=0.25</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image</p> - </dd></dl> +     -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>grey</b></span> + <dt class='head--type'><span class='homogen--type'>Constant</span> + <span class='homogen--name'><b>XML_TEXT</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>grey</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>grey</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>constant</code> <code class='datatype'>int</code> Parser.XML.Tree.<code class='constant'>XML_TEXT</code></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Makes a grey-scale image (with weighted values).</p> +     - <p> <table><tr valign='center'> -  <td><img height='115' src='../images/predef.Image.Image.grey.1.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.grey.2.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.grey.3.png' width='80' /></td> -  </tr><tr valign='center'> -  <td>original</td> -  <td>-&gt;grey();</td> -  <td>-&gt;grey(0,0,255);</td> -  </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>weight of color, default is r=87,g=127,b=41, - which should be pretty accurate of what the eyes see... - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>color</code>, <code>`*</code>, <code>modify_by_intensity</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rgb_to_hsv</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>hsv_to_rgb</b></span><br> + <span class='homogen--name'><b>parse_file</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>rgb_to_hsv</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>hsv_to_rgb</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Node</code> <b><span class='method'>parse_file</span>(</b><code class='datatype'>string</code> <code class='argument'>path</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>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> -  - <p>When converting to RGB, the input data is asumed to be placed in - the pixels as above.</p> -  - <p> <table><tr valign='center'> -  <td><img height='115' src='../images/predef.Image.Image.rgb_to_hsv.1.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.rgb_to_hsv.2.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.rgb_to_hsv.3.png' width='80' /></td> -  </tr><tr valign='center'> -  <td>original</td> -  <td>-&gt;hsv_to_rgb();</td> -  <td>-&gt;rgb_to_hsv();</td> -  </tr><tr valign='center'> -  <td></td> -  <td></td> -  <td></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> -  - <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> -  - <p>RGB to HSV calculation: Hmm. - <pre> - </pre></p> -  - <p> Example: Nice rainbow. -  <pre> -  object i = Image.Image(200,200); -  i = i-&gt;tuned_box(0,0, 200,200, -  ({ ({ 255,255,128 }), ({ 0,255,128 }), -  ({ 255,255,255 }), ({ 0,255,255 })})) -  -&gt;hsv_to_rgb(); -  </pre></p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Loads the XML file <code>path</code>, creates a node tree representation and +  returns the root node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>invert</b></span> + <span class='homogen--name'><b>parse_input</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>invert</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Node</code> <b><span class='method'>parse_input</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code>, <code class='datatype'>void</code>|<code class='datatype'>bool</code> <code class='argument'>no_fallback</code>, <code class='datatype'>void</code>|<code class='datatype'>bool</code> <code class='argument'>force_lowercase</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Invert an image. Each pixel value gets to be 255-x, where x - is the old value.</p> -  - <p> <table><tr valign='center'> -  <td><img height='115' src='../images/predef.Image.Image.invert.1.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.invert.2.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.invert.3.png' width='80' /></td> -  </tr><tr valign='center'> -  <td>original</td> -  <td>-&gt;invert();</td> -  <td>-&gt;rgb_to_hsv()-&gt;invert()-&gt;hsv_to_rgb();</td> -  </tr></table> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Takes a XML string and produces a node tree.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>line</b></span> + <span class='homogen--name'><b>parse_xml_callback</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>line</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>line</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>line</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>mixed</code> <b><span class='method'>parse_xml_callback</span>(</b><code class='datatype'>string</code> <code class='argument'>type</code>, <code class='datatype'>string</code> <code class='argument'>name</code>, <code class='datatype'>mapping</code> <code class='argument'>attr</code>, <code class='datatype'>string</code>|<code class='datatype'>array</code> <code class='argument'>contents</code>, <code class='datatype'>mixed</code> <code class='argument'>location</code>, <code class='datatype'>mixed</code> ... <code class='argument'>extra</code><b>)</b></code></p></dd> + </dl> + <dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.XML.Tree.AbstractNode</b></h2> + </dt><dd>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Draws a line on the image. The line is <i>not</i> antialiased.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.line.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.line.2.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;line<br />(50,10,<br />10,50,<br />255,0,0)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x1'></span>Parameter <code class='parameter'>x1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y1'></span>Parameter <code class='parameter'>y1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-x2'></span>Parameter <code class='parameter'>x2</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y2'></span>Parameter <code class='parameter'>y2</code></dt> - <dd></dd><dd class='body--doc'><p>line endpoints</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>alpha value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> - </dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>make_ascii</b></span> + <span class='homogen--name'><b>`[]</b></span>   </dt> - <dd><p><code><code class='object unresolved'>string </code> <b><span class='method'>make_ascii</span>(</b><code class='datatype'>object</code> <code class='argument'>orient1</code>, <code class='datatype'>object</code> <code class='argument'>objectorient2</code>, <code class='datatype'>object</code> <code class='argument'>objectorient3</code>, <code class='datatype'>object</code> <code class='argument'>objectorient4</code>, <code class='datatype'>object</code> <code class='argument'>int|voidxsize</code>, <code class='datatype'>object</code> <code class='argument'>int|voidysize</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> res = <code class='class'>Parser.XML.Tree.AbstractNode()</code>[&#32;<code class='class'>pos</code>&#32;]</code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This method creates a string that looks like - the image. Example: - <pre> -  //Stina is an image with a cat. -  array(object) Stina4=Stina-&gt;orient4(); -  Stina4[1]*=215; -  Stina4[3]*=215; -  string foo=Stina-&gt;make_ascii(@Stina4,40,4,8); - </pre> - </p> + <dd class='body--doc'><p>The [] operator indexes among the node children, so +  <code class='expr'>node[0]</code> returns the first node and <code class='expr'>node[-1]</code> the last.</p>   </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>some nice acsii-art.</p> - </dd> +    <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><b>experimental status</b>; may not be exact the same - output in later versions - <pre> | / - \ -  hue= 0 64 128 192 (=red in an hsv image) - </pre></p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>orient</code>, <code>orient4</code></p></dd></dl> -  -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>map_closest</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>map_fast</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>map_fs</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>select_colors</b></span><br> - </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>map_closest</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colors</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>map_fast</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colors</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>map_fs</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colors</code><b>)</b></code><br> - <code><code class='object unresolved'>array </code> <b><span class='method'>select_colors</span>(</b><code class='datatype'>int</code> <code class='argument'>num</code><b>)</b></code></p></dd> -  - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Compatibility functions. Do not use!</p> -  - <p>Replacement examples:</p> -  - <p>Old code: - <pre>img=map_fs(img-&gt;select_colors(200));</pre> - New code: - <pre>img=Image.Colortable(img,200)-&gt;floyd_steinberg()-&gt;map(img);</pre></p> -  - <p>Old code: - <pre>img=map_closest(img-&gt;select_colors(17)+({({255,255,255}),({0,0,0})}));</pre> - New code: - <pre>img=Image.Colortable(img,19,({({255,255,255}),({0,0,0})}))-&gt;map(img);</pre></p> + <dd class='body--doc'><p>The [] operator will select a node from all the nodes children, +  not just its element children.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>match</b></span> + <span class='homogen--name'><b>add_child</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>match</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>scale</code>, <code class='datatype'>object</code> <code class='argument'>objectneedle</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>match</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>scale</code>, <code class='datatype'>object</code> <code class='argument'>objectneedle</code>, <code class='datatype'>object</code> <code class='argument'>objecthaystack_cert</code>, <code class='datatype'>object</code> <code class='argument'>objectneedle_cert</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>match</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>scale</code>, <code class='datatype'>object</code> <code class='argument'>objectneedle</code>, <code class='datatype'>object</code> <code class='argument'>objecthaystack_avoid</code>, <code class='datatype'>object</code> <code class='argument'>intfoo</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>match</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>scale</code>, <code class='datatype'>object</code> <code class='argument'>objectneedle</code>, <code class='datatype'>object</code> <code class='argument'>objecthaystack_cert</code>, <code class='datatype'>object</code> <code class='argument'>objectneedle_cert</code>, <code class='datatype'>object</code> <code class='argument'>objecthaystack_avoid</code>, <code class='datatype'>object</code> <code class='argument'>intfoo</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>add_child</span>(</b><code class='object unresolved'>AbstractNode</code> <code class='argument'>c</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This method creates an image that describes the - match in every pixel in the image and the - needle-Image.</p> -  - <p><pre> -  new pixel value = -  sum( my_abs(needle_pixel-haystack_pixel)) - </pre></p> -  - <p>The new image only have the red rgb-part set.</p> -  - <p></p> + <dd class='body--doc'><p>Adds a child node to this node. The child node is +  added last in the child list and its parent reference +  is updated.</p>   </dd> - <dt class='head--doc'><span id='p-scale'></span>Parameter <code class='parameter'>scale</code></dt> - <dd></dd><dd class='body--doc'><p>Every pixel is divided with this value. - Note that a proper value here depends on - the size of the neadle. - </p></dd> - <dt class='head--doc'><span id='p-needle'></span>Parameter <code class='parameter'>needle</code></dt> - <dd></dd><dd class='body--doc'><p>The image to use for the matching. - </p></dd> - <dt class='head--doc'><span id='p-haystack_cert'></span>Parameter <code class='parameter'>haystack_cert</code></dt> - <dd></dd><dd class='body--doc'><p>This image should be the same size as - the image itselves. A non-white-part of the - haystack_cert-image modifies the output - by lowering it. - </p></dd> - <dt class='head--doc'><span id='p-needle_cert'></span>Parameter <code class='parameter'>needle_cert</code></dt> - <dd></dd><dd class='body--doc'><p>The same, but for the needle-image. - </p></dd> - <dt class='head--doc'><span id='p-foo'></span>Parameter <code class='parameter'>foo</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-haystack_avoid'></span>Parameter <code class='parameter'>haystack_avoid</code></dt> - <dd></dd><dd class='body--doc'><p>This image should be the same size as - the image itselves. If foo is less than the red - value in haystack_avoid the corresponding - matching-calculating is not calculated. The avoided parts - are drawn in the color 0,100,0. - </p></dd> +    <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><b>experimental status</b>; may not be exact the same - output in later versions</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>phasev</code>, <code>phaseh</code></p></dd></dl> + <dd class='body--doc'><p>The updated child node is returned.</p> + </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>mirrorx</b></span> + <span class='homogen--name'><b>clone</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>mirrorx</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>clone</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int(-1..1)</code> <code class='argument'>direction</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>mirrors an image: - <table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.mirrorx.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.mirrorx.2.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;mirrorx();</td> - </tr></table></p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Returns the corresponding node in a clone of the tree.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>mirrory</b></span> + <span class='homogen--name'><b>count_children</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>mirrory</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code> <b><span class='method'>count_children</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>mirrors an image: - <table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.mirrory.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.mirrory.2.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;mirrory();</td> - </tr></table> - </p> + <dd class='body--doc'><p>Returns the number of children of the node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>modify_by_intensity</b></span> + <span class='homogen--name'><b>get_ancestors</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>modify_by_intensity</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>) ... <code class='argument'>vn</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_ancestors</span>(</b><code class='datatype'>bool</code> <code class='argument'>include_self</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Recolor an image from intensity values.</p> + <dd class='body--doc'><p>Returns a list of all ancestors, with the top node last. +  The list will start with this node if <code>include_self</code> is set.</p> + </dd></dl>    - <p>For each color an intensity is calculated, from r, g and b factors - (see <code>grey</code>), this gives a value between 0 and max.</p> +     - <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> -  - <p> <table><tr valign='center'> -  <td><img height='115' src='../images/predef.Image.Image.modify_by_intensity.1.png' width='80' /></td> -  <td><img height='115' src='../images/predef.Image.Image.modify_by_intensity.2.png' width='80' /></td> -  </tr><tr valign='center'> -  <td>original</td> -  <td>-&gt;grey()-&gt;modify_by_intensity(1,0,0, 0,({255,0,0}),({0,255,0}));</td> -  </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>red, green, blue intensity factors</p></dd> - <dt class='head--doc'><span id='p-v1'></span>Parameter <code class='parameter'>v1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-vn'></span>Parameter <code class='parameter'>vn</code></dt> - <dd></dd><dd class='body--doc'><p>destination color - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>grey</code>, <code>`*</code>, <code>color</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>noise</b></span> + <span class='homogen--name'><b>get_children</b></span>   </dt> - <dd><p><code><code class='object unresolved'>void </code> <b><span class='method'>noise</span>(</b><code class='datatype'>array</code>(<code class='datatype'>float</code>|<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colorrange</code><b>)</b></code><br> - <code><code class='object unresolved'>void </code> <b><span class='method'>noise</span>(</b><code class='datatype'>array</code>(<code class='datatype'>float</code>|<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colorrange</code>, <code class='datatype'>float</code> <code class='argument'>scale</code>, <code class='datatype'>float</code> <code class='argument'>xdiff</code>, <code class='datatype'>float</code> <code class='argument'>ydiff</code>, <code class='datatype'>float</code> <code class='argument'>cscale</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_children</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Gives a new image with the old image's size, - filled width a 'noise' pattern.</p> + <dd class='body--doc'><p>Returns all the nodes children.</p> + </dd></dl>    - <p>The random seed may be different with each instance of pike.</p> +     - <p>Example: - <tt>-&gt;noise( ({0,({255,0,0}), 0.3,({0,255,0}), 0.6,({0,0,255}), 0.8,({255,255,0})}), 0.2,0.0,0.0,1.0 );</tt> - <br /><img height='100' src='../images/predef.Image.Image.noise.1.png' width='200' /> - </p> - </dd> - <dt class='head--doc'><span id='p-colorrange'></span>Parameter <code class='parameter'>colorrange</code></dt> - <dd></dd><dd class='body--doc'><p>colorrange table</p></dd> - <dt class='head--doc'><span id='p-scale'></span>Parameter <code class='parameter'>scale</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 0.1</p></dd> - <dt class='head--doc'><span id='p-xdiff'></span>Parameter <code class='parameter'>xdiff</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ydiff'></span>Parameter <code class='parameter'>ydiff</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 0,0</p></dd> - <dt class='head--doc'><span id='p-cscale'></span>Parameter <code class='parameter'>cscale</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 1</p></dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>turbulence</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>orient</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>orient4</b></span><br> + <span class='homogen--name'><b>get_descendants</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>orient</span>(</b><code class='datatype'>void</code>|<code class='datatype'>array</code>(<code class='datatype'>object</code>) <code class='argument'>something</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>object</code>) <b><span class='method'>orient4</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_descendants</span>(</b><code class='datatype'>bool</code> <code class='argument'>include_self</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Draws images describing the orientation - of the current image.</p> -  - <p><tt>orient</tt> gives an HSV image - (run a <code>hsv_to_rgb</code> pass on it - to get a viewable image). - corresponding to the angle of the - orientation: - <pre> | / - \ -  hue= 0 64 128 192 (=red in an hsv image) -  purple cyan green red - </pre> - Red, green and blue channels are added - and not compared separately.</p> -  - <p>If you first use orient4 you can give its - output as input to this function.</p> -  - <p>The <tt>orient4</tt> function gives back - 4 image objects, corresponding to the - amount of different directions, see above. - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>an image or an array of the four new image objects</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>experimental status; may not be exact the same - output in later versions</p> + <dd class='body--doc'><p>Returns a list of all descendants in document order. Includes +  this node if <code>include_self</code> is set.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>outline</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>outline_mask</b></span><br> + <span class='homogen--name'><b>get_following</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>outline</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline</span>(</b><code class='datatype'>int</code> <code class='argument'>olr</code>, <code class='datatype'>int</code> <code class='argument'>olg</code>, <code class='datatype'>int</code> <code class='argument'>olb</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline</span>(</b><code class='datatype'>int</code> <code class='argument'>olr</code>, <code class='datatype'>int</code> <code class='argument'>olg</code>, <code class='datatype'>int</code> <code class='argument'>olb</code>, <code class='datatype'>int</code> <code class='argument'>bkgr</code>, <code class='datatype'>int</code> <code class='argument'>bkgg</code>, <code class='datatype'>int</code> <code class='argument'>bkgb</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>mask</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>olr</code>, <code class='datatype'>int</code> <code class='argument'>olg</code>, <code class='datatype'>int</code> <code class='argument'>olb</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>olr</code>, <code class='datatype'>int</code> <code class='argument'>olg</code>, <code class='datatype'>int</code> <code class='argument'>olb</code>, <code class='datatype'>int</code> <code class='argument'>bkgr</code>, <code class='datatype'>int</code> <code class='argument'>bkgg</code>, <code class='datatype'>int</code> <code class='argument'>bkgb</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline_mask</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline_mask</span>(</b><code class='datatype'>int</code> <code class='argument'>bkgr</code>, <code class='datatype'>int</code> <code class='argument'>bkgg</code>, <code class='datatype'>int</code> <code class='argument'>bkgb</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline_mask</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>mask</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>outline_mask</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>bkgr</code>, <code class='datatype'>int</code> <code class='argument'>bkgg</code>, <code class='datatype'>int</code> <code class='argument'>bkgb</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_following</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Makes an outline of this image, ie paints with the - given color around the non-background pixels.</p> -  - <p>Default is to paint above, below, to the left and the right of - these pixels.</p> -  - <p>You can also run your own outline mask.</p> -  - <p>The outline_mask function gives the calculated outline as an - alpha channel image of white and black instead.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.outline.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.outline.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.outline.3.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>masked<br />through<br />threshold</td> - <td>...and<br />outlined<br />with red</td> - </tr></table></p> -  - <p></p> - </dd> - <dt class='head--doc'><span id='p-mask'></span>Parameter <code class='parameter'>mask</code></dt> - <dd></dd><dd class='body--doc'><p>mask matrix. Default is <tt>({({0,1,0}),({1,1,1}),({0,1,0})})</tt>.</p></dd> - <dt class='head--doc'><span id='p-olr'></span>Parameter <code class='parameter'>olr</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-olg'></span>Parameter <code class='parameter'>olg</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-olb'></span>Parameter <code class='parameter'>olb</code></dt> - <dd></dd><dd class='body--doc'><p>outline color. Default is current.</p></dd> - <dt class='head--doc'><span id='p-bkgr'></span>Parameter <code class='parameter'>bkgr</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-bkgg'></span>Parameter <code class='parameter'>bkgg</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-bkgb'></span>Parameter <code class='parameter'>bkgb</code></dt> - <dd></dd><dd class='body--doc'><p>background color (what color to outline to); - default is color of pixel 0,0.</p></dd> - <dt class='head--doc'><span id='p-div'></span>Parameter <code class='parameter'>div</code></dt> - <dd></dd><dd class='body--doc'><p>division factor, default is 1.0. - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>no antialias!</p> + <dd class='body--doc'><p>Returns all the nodes that follows after the current one.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>paste</b></span> + <span class='homogen--name'><b>get_following_siblings</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>paste</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_following_siblings</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Pastes a given image over the current image. - </p> - </dd> - <dt class='head--doc'><span id='p-image'></span>Parameter <code class='parameter'>image</code></dt> - <dd></dd><dd class='body--doc'><p>image to paste (may be empty, needs to be an image object)</p></dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>where to paste the image; default is 0,0 - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>paste_mask</code>, <code>paste_alpha</code>, <code>paste_alpha_color</code></p></dd></dl> + <dd class='body--doc'><p>Returns all following siblings, i.e. all siblings present after this node +  in the parents children list.</p> + </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>paste_alpha</b></span> + <span class='homogen--name'><b>get_last_child</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>get_last_child</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Pastes a given image over the current image, with - the specified alpha channel value.</p> + <dd class='body--doc'><p>Returns the last childe node or zero.</p> + </dd></dl>    - <p>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. - </p> - </dd> - <dt class='head--doc'><span id='p-image'></span>Parameter <code class='parameter'>image</code></dt> - <dd></dd><dd class='body--doc'><p>image to paste</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>alpha channel value</p></dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>where to paste the image; default is 0,0 - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>paste_mask</code>, <code>paste</code>, <code>paste_alpha_color</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>paste_alpha_color</b></span> + <span class='homogen--name'><b>get_parent</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha_color</span>(</b><code class='datatype'>object</code> <code class='argument'>mask</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha_color</span>(</b><code class='datatype'>object</code> <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha_color</span>(</b><code class='datatype'>object</code> <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha_color</span>(</b><code class='datatype'>object</code> <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha_color</span>(</b><code class='datatype'>object</code> <code class='argument'>mask</code>, <code class='object unresolved'>Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_alpha_color</span>(</b><code class='datatype'>object</code> <code class='argument'>mask</code>, <code class='object unresolved'>Color</code> <code class='argument'>color</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>get_parent</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Pastes a given color over the current image, - using the given mask as opaque channel.</p> + <dd class='body--doc'><p>Returns the parent node.</p> + </dd></dl>    - <p>A pixel value of 255 makes the result become the color given, - 0 doesn't change anything.</p> +     - <p>The masks red, green and blue values are used separately. - If no color are given, the current is used. - </p> - </dd> - <dt class='head--doc'><span id='p-mask'></span>Parameter <code class='parameter'>mask</code></dt> - <dd></dd><dd class='body--doc'><p>mask image</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>what color to paint with; default is current</p></dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>where to paste the image; default is 0,0 - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>paste_mask</code>, <code>paste_alpha</code>, <code>paste_alpha_color</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>paste_mask</b></span> + <span class='homogen--name'><b>get_preceding</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>paste_mask</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code>, <code class='datatype'>object</code> <code class='argument'>mask</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>paste_mask</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code>, <code class='datatype'>object</code> <code class='argument'>mask</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_preceding</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Pastes a given image over the current image, - using the given mask as opaque channel.</p> + <dd class='body--doc'><p>Returns all preceding nodes, excluding this nodes ancestors.</p> + </dd></dl>    - <p>A pixel value of 255 makes the result become a pixel - from the given image, 0 doesn't change anything.</p> +     - <p>The masks red, green and blue values are used separately. - </p> - </dd> - <dt class='head--doc'><span id='p-image'></span>Parameter <code class='parameter'>image</code></dt> - <dd></dd><dd class='body--doc'><p>image to paste</p></dd> - <dt class='head--doc'><span id='p-mask'></span>Parameter <code class='parameter'>mask</code></dt> - <dd></dd><dd class='body--doc'><p>mask image</p></dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>where to paste the image; default is 0,0 - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>paste</code>, <code>paste_alpha</code>, <code>paste_alpha_color</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>phaseh</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>phasev</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>phasevh</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>phasehv</b></span><br> + <span class='homogen--name'><b>get_preceding_siblings</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>phaseh</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>phasev</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>phasevh</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>phasehv</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_preceding_siblings</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Draws images describing the phase - of the current image. phaseh gives the - horizontal phase and phasev the vertical - phase.</p> -  - <p><tt>phaseh</tt> gives an image - where - <pre> -  max falling min rising - value= 0 64 128 192 - </pre></p> -  - <p>0 is set if there is no way to determine - if it is rising or falling. This is done - for the every red, green and blue part of - the image.</p> -  - <p>Phase images can be used to create ugly - effects or to find meta-information - in the orginal image.</p> -  - <p><table border='0'> - <tr> - <td><img height='115' src='../images/predef.Image.Image.phaseh.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.phaseh.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.phaseh.3.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.phaseh.4.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.phaseh.5.png' width='80' /></td> - </tr> - <tr> - <td>original </td> - <td>phaseh() </td> - <td>phasev() </td> - <td>phasevh()</td> - <td>phasehv()</td> - </tr> - </table> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><b>experimental status</b>; may not be exact the same - output in later versions</p> - </dd> - <dt class='head--doc'>Bugs</dt> - <dd class='body--doc'> - <p>0 should not be set as explained above.</p> + <dd class='body--doc'><p>Returns all preceding siblings, i.e. all siblings present before this node +  in the parents children list.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>polyfill</b></span> + <span class='homogen--name'><b>get_root</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>polyfill</span>(</b><code class='datatype'>array</code>(<code class='datatype'>int</code>|<code class='datatype'>float</code>) ... <code class='argument'>curve</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>get_root</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>fills an area with the current color - </p> - </dd> - <dt class='head--doc'><span id='p-curve'></span>Parameter <code class='parameter'>curve</code></dt> - <dd></dd><dd class='body--doc'><p>curve(s), <tt>({x1,y1,x2,y2,...,xn,yn})</tt>, - automatically closed.</p> + <dd class='body--doc'><p>Follows all parent pointers and returns the root node.</p> + </dd></dl>    - <p>If any given curve is inside another, it - will make a hole. - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the current object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>Lines in the polygon may <i>not</i> be crossed without - the crossing coordinate specified in both lines. - </p> - </dd> - <dt class='head--doc'>Bugs</dt> - <dd class='body--doc'> - <p>Inverted lines reported on Intel and Alpha processors. - </p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>setcolor</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>random</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>randomgrey</b></span><br> + <span class='homogen--name'><b>get_siblings</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>random</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>random</span>(</b><code class='datatype'>int</code> <code class='argument'>seed</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>randomgrey</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>random</span>(</b><code class='object unresolved'>greyint</code> <code class='argument'>seed</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_siblings</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Gives a randomized image;<br /> - <table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.random.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.random.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.random.3.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.random.4.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.random.5.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.random.6.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;random()</td> - <td>-&gt;random(17)</td> - <td>greyed<br />(same again)</td> - <td>color(red)<br />(same again)</td> - <td>...red channel<br /></td> - </tr></table></p> + <dd class='body--doc'><p>Returns all siblings, including this node.</p> + </dd></dl>    - <p>Use with -&gt;<code>grey</code>() or -&gt;<code>color</code>() - for one-color-results. - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new image</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>test</code>, <code>noise</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>write_lsb_rgb</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>write_lsb_grey</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>read_lsb_rgb</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>read_lsb_grey</b></span><br> + <span class='homogen--name'><b>iterate_children</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>write_lsb_rgb</span>(</b><code class='datatype'>string</code> <code class='argument'>what</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>write_lsb_grey</span>(</b><code class='datatype'>string</code> <code class='argument'>what</code><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>read_lsb_rgb</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>read_lsb_grey</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code>|<code class='datatype'>void</code> <b><span class='method'>iterate_children</span>(</b><code class='datatype'>function</code>(<code class='object unresolved'>AbstractNode</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>int</code>|<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>These functions read/write in the least significant bit - of the image pixel values. The _rgb() functions - read/write on each of the red, green and blue values, - and the grey keeps the same lsb on all three.</p> -  - <p>The string is nullpadded or cut to fit. - </p> - </dd> - <dt class='head--doc'><span id='p-what'></span>Parameter <code class='parameter'>what</code></dt> - <dd></dd><dd class='body--doc'><p>the hidden message</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the current object or the read string</p> + <dd class='body--doc'><p>Iterates over the nodes children from left to right, calling the callback +  function for every node. If the callback function returns <code>STOP_WALK</code> +  the iteration is promptly aborted and <code>STOP_WALK</code> is returned.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rotate</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rotate_expand</b></span><br> + <span class='homogen--name'><b>remove_child</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>rotate</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>angle</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>rotate</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>angle</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>rotate_expand</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>angle</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>rotate_expand</span>(</b><code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>angle</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>remove_child</span>(</b><code class='object unresolved'>AbstractNode</code> <code class='argument'>c</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Rotates an image a certain amount of degrees (360° is - a complete rotation) counter-clockwise:</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.rotate.1.png' width='80' /></td> - <td><img height='141' src='../images/predef.Image.Image.rotate.2.png' width='113' /></td> - <td><img height='141' src='../images/predef.Image.Image.rotate.3.png' width='113' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;rotate(15,255,0,0);</td> - <td>-&gt;rotate_expand(15);</td> - </tr></table></p> -  - <p>The "expand" variant of functions stretches the - image border pixels rather then filling with - the given or current color.</p> -  - <p>This rotate uses the <code>skewx</code>() and <code>skewy</code>() functions.</p> - </dd> - <dt class='head--doc'><span id='p-angle'></span>Parameter <code class='parameter'>angle</code></dt> - <dd></dd><dd class='body--doc'><p>the number of degrees to rotate</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color to fill with; default is current</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Removes all occurences of the provided node from the called nodes +  list of children. The removed nodes parent reference is set to null.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rotate_ccw</b></span> + <span class='homogen--name'><b>remove_node</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>rotate_ccw</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>remove_node</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>rotates an image counter-clockwise, 90 degrees.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.rotate_ccw.1.png' width='80' /></td> - <td><img height='80' src='../images/predef.Image.Image.rotate_ccw.2.png' width='115' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;rotate_ccw();</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Removes this node from its parent. The parent reference is set to null.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rotate_cw</b></span> + <span class='homogen--name'><b>replace_child</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>rotate_cw</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>replace_child</span>(</b><code class='object unresolved'>AbstractNode</code> <code class='argument'>old</code>, <code class='object unresolved'>AbstractNode</code> <code class='argument'>new</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>rotates an image clockwise, 90 degrees.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.rotate_cw.1.png' width='80' /></td> - <td><img height='80' src='../images/predef.Image.Image.rotate_cw.2.png' width='115' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;rotate_cw();</td> - </tr></table></p> + <dd class='body--doc'><p>Replaces the first occurence of the old node child with +  the new node child. All parent references are updated.</p>   </dd>   <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Returns the new child node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>scale</b></span> + <span class='homogen--name'><b>replace_children</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>scale</span>(</b><code class='datatype'>float</code> <code class='argument'>factor</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>scale</span>(</b><code class='argument'>0.5</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>scale</span>(</b><code class='datatype'>float</code> <code class='argument'>xfactor</code>, <code class='datatype'>float</code> <code class='argument'>yfactor</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>replace_children</span>(</b><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <code class='argument'>children</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>scales the image with a factor, - 0.5 is an optimized case.</p> - </dd> - <dt class='head--doc'><span id='p-factor'></span>Parameter <code class='parameter'>factor</code></dt> - <dd></dd><dd class='body--doc'><p>factor to use for both x and y</p></dd> - <dt class='head--doc'><span id='p-xfactor'></span>Parameter <code class='parameter'>xfactor</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-yfactor'></span>Parameter <code class='parameter'>yfactor</code></dt> - <dd></dd><dd class='body--doc'><p>separate factors for x and y - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Replaces the nodes children with the provided ones. All parent +  references are updated.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>scale</b></span> + <span class='homogen--name'><b>replace_node</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>scale</span>(</b><code class='datatype'>int</code> <code class='argument'>newxsize</code>, <code class='datatype'>int</code> <code class='argument'>newysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>scale</span>(</b><code class='argument'>0</code>, <code class='datatype'>int</code> <code class='argument'>newysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>scale</span>(</b><code class='datatype'>int</code> <code class='argument'>newxsize</code>, <code class='argument'>0</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>replace_node</span>(</b><code class='object unresolved'>AbstractNode</code> <code class='argument'>new</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>scales the image to a specified new size, - if one of newxsize or newysize is 0, - the image aspect ratio is preserved.</p> + <dd class='body--doc'><p>Replaces this node with the provided one.</p>   </dd> - <dt class='head--doc'><span id='p-newxsize'></span>Parameter <code class='parameter'>newxsize</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-newysize'></span>Parameter <code class='parameter'>newysize</code></dt> - <dd></dd><dd class='body--doc'><p>new image size in pixels - </p></dd> +    <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>resulting image will be 1x1 pixels, at least</p> + <dd class='body--doc'><p>Returns the new node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>select_from</b></span> + <span class='homogen--name'><b>set_parent</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>select_from</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>select_from</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>edge_value</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_parent</span>(</b><code class='object unresolved'>AbstractNode</code> <code class='argument'>parent</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Makes an grey-scale image, for alpha-channel use.</p> + <dd class='body--doc'><p>Sets the parent node to <code>parent</code>.</p> + </dd></dl>    - <p>This is very close to a floodfill.</p> +     - <p>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 <code>distancesq</code>).</p> -  - <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. - </p> - </dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>originating pixel in the image - </p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>distancesq</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>setcolor</b></span> + <span class='homogen--name'><b>walk_inorder</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>setcolor</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>setcolor</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code>|<code class='datatype'>void</code> <b><span class='method'>walk_inorder</span>(</b><code class='datatype'>function</code>(<code class='object unresolved'>AbstractNode</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>int</code>|<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>set the current color - </p> - </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>new color</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>new alpha value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> + <dd class='body--doc'><p>Traverse the node subtree in inorder, left subtree first, then +  root node, and finally the remaining subtrees, calling the callback +  function for every node. If the callback function returns +  <code>STOP_WALK</code> the traverse is promptly aborted and <code>STOP_WALK</code> +  is returned.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>setpixel</b></span> + <span class='homogen--name'><b>walk_postorder</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>setpixel</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>setpixel</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>setpixel</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>alpha</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code>|<code class='datatype'>void</code> <b><span class='method'>walk_postorder</span>(</b><code class='datatype'>function</code>(<code class='object unresolved'>AbstractNode</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>int</code>|<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p> - <table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.setpixel.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.setpixel.2.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;setpixel<br />(10,10,<br />255,0,0)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>position of the pixel</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color</p></dd> - <dt class='head--doc'><span id='p-alpha'></span>Parameter <code class='parameter'>alpha</code></dt> - <dd></dd><dd class='body--doc'><p>alpha value</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> + <dd class='body--doc'><p>Traverse the node subtree in postorder, first subtrees from left to +  right, then the root node, calling the callback function for every +  node. If the callback function returns <code>STOP_WALK</code> the traverse +  is promptly aborted and <code>STOP_WALK</code> is returned.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>skewx</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>skewx_expand</b></span><br> + <span class='homogen--name'><b>walk_preorder</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>skewx</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx</span>(</b><code class='datatype'>int</code> <code class='argument'>yfactor</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx</span>(</b><code class='datatype'>int</code> <code class='argument'>yfactor</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>yfactor</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewx_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>yfactor</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code>|<code class='datatype'>void</code> <b><span class='method'>walk_preorder</span>(</b><code class='datatype'>function</code>(<code class='object unresolved'>AbstractNode</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>int</code>|<code class='datatype'>void</code>) <code class='argument'>callback</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Skews an image an amount of pixels or a factor; - a skew-x is a transformation:</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.skewx.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.skewx.2.png' width='95' /></td> - <td><img height='115' src='../images/predef.Image.Image.skewx.3.png' width='95' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;skewx(15,255,0,0);</td> - <td>-&gt;skewx_expand(15);</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd><dd class='body--doc'><p>the number of pixels -  The "expand" variant of functions stretches the -  image border pixels rather then filling with -  the given or current color.</p></dd> - <dt class='head--doc'><span id='p-yfactor'></span>Parameter <code class='parameter'>yfactor</code></dt> - <dd></dd><dd class='body--doc'><p>best described as: x=yfactor*this-&gt;ysize()</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color to fill with; default is current</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Traverse the node subtree in preorder, root node first, then +  subtrees from left to right, calling the callback function +  for every node. If the callback function returns <code>STOP_WALK</code> +  the traverse is promptly aborted and <code>STOP_WALK</code> is returned.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>skewy</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>skewy_expand</b></span><br> + <span class='homogen--name'><b>walk_preorder_2</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>skewy</span>(</b><code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy</span>(</b><code class='datatype'>int</code> <code class='argument'>xfactor</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy</span>(</b><code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy</span>(</b><code class='datatype'>int</code> <code class='argument'>xfactor</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>xfactor</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>y</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>skewy_expand</span>(</b><code class='datatype'>int</code> <code class='argument'>xfactor</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code>|<code class='datatype'>void</code> <b><span class='method'>walk_preorder_2</span>(</b><code class='datatype'>function</code>(<code class='object unresolved'>AbstractNode</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>int</code>|<code class='datatype'>void</code>) <code class='argument'>callback_1</code>, <code class='datatype'>function</code>(<code class='object unresolved'>AbstractNode</code>, <code class='datatype'>mixed</code> ... :<code class='datatype'>int</code>|<code class='datatype'>void</code>) <code class='argument'>callback_2</code>, <code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Skews an image an amount of pixels or a factor; - a skew-y is a transformation:</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.skewy.1.png' width='80' /></td> - <td><img height='130' src='../images/predef.Image.Image.skewy.2.png' width='80' /></td> - <td><img height='130' src='../images/predef.Image.Image.skewy.3.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;skewy(15,255,0,0);</td> - <td>-&gt;skewy_expand(15);</td> - </tr></table></p> -  - <p>The "expand" variant of functions stretches the - image border pixels rather then filling with - the given or current color.</p> - </dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd><dd class='body--doc'><p>the number of pixels</p></dd> - <dt class='head--doc'><span id='p-xfactor'></span>Parameter <code class='parameter'>xfactor</code></dt> - <dd></dd><dd class='body--doc'><p>best described as: t=xfactor*this-&gt;xsize()</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>color to fill with; default is current</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> + <dd class='body--doc'><p>Traverse the node subtree in preorder, root node first, then +  subtrees from left to right. For each node we call callback_1 +  before iterating through children, and then callback_2 +  (which always gets called even if the walk is aborted earlier). +  If the callback function returns <code>STOP_WALK</code> the traverse +  decend is aborted and <code>STOP_WALK</code> is returned once all waiting +  callback_2 functions has been called.</p>   </dd></dl> -  -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>test</b></span> - </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>test</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>test</span>(</b><code class='datatype'>int</code> <code class='argument'>seed</code><b>)</b></code></p></dd> -  + </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.XML.Tree.Node</b></h2> + </dt><dd><dl class='group--doc'>   <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Generates a test image, currently random gradients.</p> + <dd class='body--doc'><p>Node in XML tree</p> + </dd></dl>    - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.test.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.test.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.test.3.png' width='80' /></td> - </tr><tr> - <td>original</td> - <td>-&gt;test()</td> - <td>...and again</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>May be subject to change or cease without prior warning. - </p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>gradients</code>, <code>tuned_box</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>threshold</b></span> + <span class='homogen--name'><b>cast</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>threshold</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>threshold</span>(</b><code class='datatype'>int</code> <code class='argument'>level</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>threshold</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>threshold</span>(</b><code class='object unresolved'>Color</code> <code class='argument'>color</code><b>)</b></code></p></dd> + <dd><p><code><b>(</b><span class='datatype'>int</span><b>)</b><span class='class'>Parser.XML.Tree.Node</span>()<br><b>(</b><span class='datatype'>float</span><b>)</b><span class='class'>Parser.XML.Tree.Node</span>()<br><b>(</b><span class='datatype'>string</span><b>)</b><span class='class'>Parser.XML.Tree.Node</span>()<br><b>(</b><span class='datatype'>array</span><b>)</b><span class='class'>Parser.XML.Tree.Node</span>()<br><b>(</b><span class='datatype'>mapping</span><b>)</b><span class='class'>Parser.XML.Tree.Node</span>()<br><b>(</b><span class='datatype'>multiset</span><b>)</b><span class='class'>Parser.XML.Tree.Node</span>()</code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Makes a black-white image.</p> + <dd class='body--doc'><p>It is possible to cast a node to a string, which will return +  <code>render_xml()</code> for that node.</p> + </dd></dl>    - <p>If any of red, green, blue parts of a pixel - is larger then the given value, the pixel will become - white, else black.</p> +     - <p>This method works fine with the grey method.</p> -  - <p>If no arguments are given, it will paint all non-black - pixels white. (Ie, default is 0,0,0.)</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.threshold.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.threshold.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.threshold.3.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>-&gt;threshold(100);</td> - <td>-&gt;threshold(0,100,0);</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new image object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>The above statement "any ..." was changed from "all ..." - in Pike 0.7 (9906). It also uses 0,0,0 as default input, - instead of current color. This is more useful.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>grey</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>tuned_box</b></span> + <span class='homogen--name'><b>clone</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>tuned_box</span>(</b><code class='datatype'>int</code> <code class='argument'>x1</code>, <code class='datatype'>int</code> <code class='argument'>y1</code>, <code class='datatype'>int</code> <code class='argument'>x2</code>, <code class='datatype'>int</code> <code class='argument'>y2</code>, <code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>corner_color</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Node</code> <b><span class='method'>clone</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int(-1..1)</code> <code class='argument'>direction</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Draws a filled rectangle with colors (and alpha values) tuned - between the corners.</p> -  - <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> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Image.tuned_box.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.tuned_box.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.tuned_box.3.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Image.tuned_box.4.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>tuned box</td> - <td>solid tuning<br />(blue,red,green,yellow)</td> - <td>tuning transparency<br />(as left + 255,128,128,0)</td> - </tr></table> - </p> - </dd> - <dt class='head--doc'><span id='p-x1'></span>Parameter <code class='parameter'>x1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y1'></span>Parameter <code class='parameter'>y1</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-x2'></span>Parameter <code class='parameter'>x2</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y2'></span>Parameter <code class='parameter'>y2</code></dt> - <dd></dd><dd class='body--doc'><p>rectangle corners</p></dd> - <dt class='head--doc'><span id='p-corner_color'></span>Parameter <code class='parameter'>corner_color</code></dt> - <dd></dd><dd class='body--doc'><p>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).</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the object called</p> + <dd class='body--doc'><p>Clones the node, optionally connected to parts of the tree. +  If direction is -1 the cloned nodes parent will be set, if +  direction is 1 the clone nodes childen will be set.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>turbulence</b></span> + <span class='homogen--name'><b>create</b></span>   </dt> - <dd><p><code><code class='object unresolved'>void </code> <b><span class='method'>turbulence</span>(</b><code class='datatype'>array</code>(<code class='datatype'>float</code>|<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colorrange</code><b>)</b></code><br> - <code><code class='object unresolved'>void </code> <b><span class='method'>turbulence</span>(</b><code class='datatype'>array</code>(<code class='datatype'>float</code>|<code class='datatype'>int</code>|<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colorrange</code>, <code class='datatype'>int</code> <code class='argument'>octaves</code>, <code class='datatype'>float</code> <code class='argument'>scale</code>, <code class='datatype'>float</code> <code class='argument'>xdiff</code>, <code class='datatype'>float</code> <code class='argument'>ydiff</code>, <code class='datatype'>float</code> <code class='argument'>cscale</code><b>)</b></code></p></dd> + <dd><p><code><span class='object'>Parser.XML.Tree.Node</span> <span class='class'>Parser.XML.Tree.Node</span><b>(</b><code class='datatype'>int</code> <code class='argument'>type</code>, <code class='datatype'>string</code> <code class='argument'>name</code>, <code class='datatype'>mapping</code> <code class='argument'>attr</code>, <code class='datatype'>string</code> <code class='argument'>text</code><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>gives a new image with the old image's size, - filled width a 'turbulence' pattern</p> +     - <p>The random seed may be different with each instance of pike.</p> -  - <p>Example: <br /> - <tt>-&gt;turbulence( ({0,({229,204,204}), 0.9,({229,20,20}), 0.9,Color.black}) );</tt> - <br /><img height='100' src='../images/predef.Image.Image.turbulence.1.png' width='200' /></p> - </dd> - <dt class='head--doc'><span id='p-colorrange'></span>Parameter <code class='parameter'>colorrange</code></dt> - <dd></dd><dd class='body--doc'><p>colorrange table</p></dd> - <dt class='head--doc'><span id='p-octaves'></span>Parameter <code class='parameter'>octaves</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 3</p></dd> - <dt class='head--doc'><span id='p-scale'></span>Parameter <code class='parameter'>scale</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 0.1</p></dd> - <dt class='head--doc'><span id='p-xdiff'></span>Parameter <code class='parameter'>xdiff</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ydiff'></span>Parameter <code class='parameter'>ydiff</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 0,0</p></dd> - <dt class='head--doc'><span id='p-cscale'></span>Parameter <code class='parameter'>cscale</code></dt> - <dd></dd><dd class='body--doc'><p>default value is 1</p></dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>noise</code>, <code>Image.Color</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>xsize</b></span> + <span class='homogen--name'><b>get_any_name</b></span>   </dt> - <dd><p><code><code class='object unresolved'>int </code> <b><span class='method'>xsize</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_any_name</span>(</b><b>)</b></code></p></dd>    - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the width of the image</p> + <dt class='head--doc'>Description</dt> + <dd class='body--doc'><p>Return name of tag or name of attribute node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>ysize</b></span> + <span class='homogen--name'><b>get_attr_name</b></span>   </dt> - <dd><p><code><code class='object unresolved'>int </code> <b><span class='method'>ysize</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_attr_name</span>(</b><b>)</b></code></p></dd>    - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the height of the image</p> - </dd></dl> - </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Image.Layer</b></h2> - </dt><dd><dl class='group--doc'> +    <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p></p> + <dd class='body--doc'><p>Returns the name of the attribute node.</p> + </dd></dl>    - <p></p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>layers</code></p></dd></dl> +       <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_image</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>image</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>alpha</b></span><br> + <span class='homogen--name'><b>get_attribute_nodes</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>set_image</span>(</b><code class='object unresolved'>Image.Image</code> <code class='argument'>image</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>set_image</span>(</b><code class='object unresolved'>Image.Image</code> <code class='argument'>image</code>, <code class='object unresolved'>Image.Image</code> <code class='argument'>alpha_channel</code><b>)</b></code><br> - <code><code class='datatype'>object</code>|<code class='datatype'>int(0..)</code> <b><span class='method'>image</span>(</b><b>)</b></code><br> - <code><code class='datatype'>object</code>|<code class='datatype'>int(0..)</code> <b><span class='method'>alpha</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>Node</code>) <b><span class='method'>get_attribute_nodes</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Set/change/get image and alpha channel for the layer. - You could also cancel the channels giving 0 - instead of an image object.</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>image and alpha channel must be of the same size, - or canceled.</p> + <dd class='body--doc'><p>Creates and returns an array of new nodes; they will not be +  added as proper children to the parent node, but the parent +  link in the nodes are set so that upwards traversal is made +  possible.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_alpha_value</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>alpha_value</b></span><br> + <span class='homogen--name'><b>get_attributes</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>set_alpha_value</span>(</b><code class='datatype'>float</code> <code class='argument'>value</code><b>)</b></code><br> - <code><code class='object unresolved'>double </code> <b><span class='method'>alpha_value</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>mapping</code> <b><span class='method'>get_attributes</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Set/get the general alpha value of this layer. - This is a float value between 0 and 1, - and is multiplied with the alpha channel.</p> + <dd class='body--doc'><p>Returns this nodes attributes, which can be altered +  destructivly to alter the nodes attributes.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>autocrop</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>find_autocrop</b></span><br> + <span class='homogen--name'><b>get_doc_order</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>autocrop</span>(</b><code class='datatype'>bool</code> <code class='argument'>left</code>, <code class='datatype'>bool</code> <code class='argument'>right</code>, <code class='datatype'>bool</code> <code class='argument'>top</code>, <code class='datatype'>bool</code> <code class='argument'>bottom</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_autocrop</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>find_autocrop</span>(</b><code class='datatype'>bool</code> <code class='argument'>left</code>, <code class='datatype'>bool</code> <code class='argument'>right</code>, <code class='datatype'>bool</code> <code class='argument'>top</code>, <code class='datatype'>bool</code> <code class='argument'>bottom</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code> <b><span class='method'>get_doc_order</span>(</b><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This crops (of finds) a suitable crop, non-destructive crop. - The layer alpha channel is checked, and edges that is - transparent is removed.</p> +     - <p>(What really happens is that the image and alpha channel is checked, - and edges equal the fill setup is cropped away.)</p> -  - <p><code>find_autocrop</code>() returns an array of xoff,yoff,xsize,ysize, - which can be fed to <code>crop</code>(). - </p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>A tiled image will not be cropped at all.</p> -  - <p><tt>left</tt>...<tt>bottom</tt> arguments can be used - to tell what sides cropping are ok on. - </p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>crop</code>, <code>Image.Image-&gt;autocrop</code></p></dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_mode</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>mode</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>available_modes</b></span><br> + <span class='homogen--name'><b>get_elements</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>set_mode</span>(</b><code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>mode</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>string</code>) <b><span class='method'>available_modes</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='object unresolved'>AbstractNode</code>) <b><span class='method'>get_elements</span>(</b><code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>name</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Set/get layer mode. Mode is one of these:</p> -  - <p>"normal", - "add", - "subtract", - "multiply", - "divide", - "modulo", - "invsubtract", - "invdivide", - "invmodulo", - "difference", - "max", - "min", - "bitwise_and", - "bitwise_or", - "bitwise_xor",</p> -  - <p>"replace", - "red", - "green", - "blue",</p> -  - <p>"replace_hsv", - "hue", - "saturation", - "value", - "color",</p> -  - <p>"darken", - "lighten",</p> -  - <p>"dissolve", - "behind", - "erase",</p> -  - <p><code>available_modes</code>() simply gives an array - containing the names of these modes. - </p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>image and alpha channel must be of the same size, - or canceled.</p> + <dd class='body--doc'><p>Returns all element children to this node. If a <code>name</code> +  is provided, only elements with that name is returned.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cast</b></span> + <span class='homogen--name'><b>get_first_element</b></span>   </dt> - <dd><p><code><b>(</b><span class='datatype'><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>)</span><b>)</b><span class='class'>Image.Layer</span>()</code></p></dd> + <dd><p><code><code class='object unresolved'>AbstractNode</code> <b><span class='method'>get_first_element</span>(</b><code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>name</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>([ "xsize":int, -  "ysize":int, -  "image":image, -  "alpha":image, -  "xoffset":int, -  "yoffset":int, -  "fill":image, -  "fill_alpha":image -  "tiled":int, -  "mode":string - ])</p> + <dd class='body--doc'><p>Returns the first element child to this node. If a <code>name</code> +  is provided, the first element child with that name is +  returned. Returns 0 if no matching node was found.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>clone</b></span> + <span class='homogen--name'><b>get_node_type</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>clone</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>int</code> <b><span class='method'>get_node_type</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Creates a copy of the called object.</p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the copy</p> + <dd class='body--doc'><p>Returns the node type. See defined node type constants.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>create</b></span> + <span class='homogen--name'><b>get_tag_name</b></span>   </dt> - <dd><p><code><span class='object'>Image.Layer</span> <span class='class'>Image.Layer</span><b>(</b><code class='datatype'>object</code> <code class='argument'>image</code>, <code class='datatype'>object</code> <code class='argument'>alpha</code>, <code class='datatype'>string</code> <code class='argument'>mode</code><b>)</b></code><br> - <code><span class='object'>Image.Layer</span> <span class='class'>Image.Layer</span><b>(</b><code class='datatype'>mapping</code> <code class='argument'>info</code><b>)</b></code><br> - <code><span class='object'>Image.Layer</span> <span class='class'>Image.Layer</span><b>(</b><b>)</b></code><br> - <code><span class='object'>Image.Layer</span> <span class='class'>Image.Layer</span><b>(</b><code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>object</code> <code class='argument'>color</code><b>)</b></code><br> - <code><span class='object'>Image.Layer</span> <span class='class'>Image.Layer</span><b>(</b><code class='datatype'>object</code> <code class='argument'>color</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_tag_name</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>The Layer construct either three arguments, - the image object, alpha channel and mode, or - a mapping with optional elements: - <pre> - "image":image, -  // default: black -  - "alpha":alpha, -  // alpha channel object -  // default: full opaque -  - "mode":string mode, -  // layer mode, see &lt;ref&gt;mode&lt;/ref&gt;. -  // default: "normal" -  - "alpha_value":float(0.0-1.0), -  // layer general alpha value -  // default is 1.0; this is multiplied -  // with the alpha channel. -  - "xoffset":int, - "yoffset":int, -  // offset of this layer -  - "fill":Color, - "fill_alpha":Color, -  // fill color, ie what color is used -  // "outside" the image. default: black -  // and black (full transparency). -  - "tiled":int(0|1), -  // select tiling; if 1, the image -  // will be tiled. deafult: 0, off - </pre> - The layer can also be created "empty", - either giving a size and color - - this will give a filled opaque square, - or a color, which will set the "fill" - values and fill the whole layer with an - opaque color.</p> -  - <p>All values can be modified after object creation. - </p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>image and alpha channel must be of the same size. - </p> + <dd class='body--doc'><p>Returns the name of the element node, or the nearest element above if +  an attribute node.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>crop</b></span> + <span class='homogen--name'><b>get_text</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>crop</span>(</b><code class='datatype'>int</code> <code class='argument'>xoff</code>, <code class='datatype'>int</code> <code class='argument'>yoff</code>, <code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>get_text</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Crops this layer at this offset and size. - Offset is not relative the layer offset, so this - can be used to crop a number of layers simuntaneously.</p> -  - <p>The <code>fill</code> values are used if the layer is - enlarged.</p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new layer object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>The new layer object may have the same image object, - if there was no cropping to be done.</p> + <dd class='body--doc'><p>Returns text content in node.</p>   </dd></dl>         <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>description</b></span> + <dt class='head--type'><span class='homogen--type'>Inherit</span> + <span class='homogen--name'><b>AbstractNode</b></span>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) <b><span class='method'>description</span>(</b><b>)</b></code></p></dd> + <dd><p><code><span class='datatype'>inherit AbstractNode</span> : <span class='inherit'>AbstractNode</span></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Layer descriptions</p> - </dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_fill</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>fill</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>fill_alpha</b></span><br> + <span class='homogen--name'><b>render_xml</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>set_fill</span>(</b><code class='object unresolved'>Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>set_fill</span>(</b><code class='object unresolved'>Color</code> <code class='argument'>color</code>, <code class='object unresolved'>Color</code> <code class='argument'>alpha</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>fill</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>fill_alpha</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>render_xml</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Set/query fill color and alpha, ie the color used "outside" the - image. This is mostly useful if you want to "frame" - a layer.</p> + <dd class='body--doc'><p>Creates an XML representation of the nodes sub tree.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_misc_value</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>get_misc_value</b></span><br> + <span class='homogen--name'><b>set_doc_order</b></span>   </dt> - <dd><p><code><code class='object unresolved'>mixed </code> <b><span class='method'>set_misc_value</span>(</b><code class='datatype'>object</code> <code class='argument'>mixedwhat</code>, <code class='datatype'>object</code> <code class='argument'>mixedto</code><b>)</b></code><br> - <code><code class='object unresolved'>mixed </code> <b><span class='method'>get_misc_value</span>(</b><code class='datatype'>object</code> <code class='argument'>mixedwhat</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_doc_order</span>(</b><code class='datatype'>int</code> <code class='argument'>o</code><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Set or query misc. attributes for the layer.</p> +     - <p>As an example, the XCF and PSD image decoders set the 'name' attribute - to the name the layer had in the source file.</p> - </dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_offset</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>xoffset</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>yoffset</b></span><br> + <span class='homogen--name'><b>value_of_node</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>set_offset</span>(</b><code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>xoffset</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>yoffset</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>value_of_node</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Set/query layer offset. - </p> + <dd class='body--doc'><p>If the node is an attribute node or a text node, its value is returned. +  Otherwise the child text nodes are concatenated and returned.</p>   </dd></dl> -  + </dd></dl></dd></dl></dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.HTML</b></h2> + </dt><dd><dl class='group--doc'> + <dt class='head--doc'>Description</dt> + <dd class='body--doc'> + <p> This is a simple parser for SGML structured markups. +  It's not really HTML, but it's useful for that +  purpose.</p>    -  + <p> + The simple way to use it is to give it some information +  about available tags and containers, and what +  callbacks those is to call.</p>    -  + <p> + The object is easily reused, by calling the <code>clone</code>() +  function. + </p> + </dd> + <dt class='head--doc'>See also</dt> + <dd class='body--doc'> + <p><code>add_tag</code>, <code>add_container</code>, <code>clone</code></p></dd></dl> +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_tiled</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>tiled</b></span><br> + <span class='homogen--name'><b>_inspect</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>set_tiled</span>(</b><code class='datatype'>int</code> <code class='argument'>yes</code><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>tiled</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>mapping </code> <b><span class='method'>_inspect</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set/query <i>tiled</i> flag. If set, the - image and alpha channel will be tiled rather - then framed by the <code>fill</code> values.</p> + <p> This is a low-level way of debugging a parser. +  This gives a mapping of the internal state +  of the Parser.HTML object.</p> +  + <p> + The format and contents of this mapping may +  change without further notice.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>xsize</b></span><br> + <span class='homogen--name'><b>_set_tag_callback</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>ysize</b></span><br> + <span class='homogen--name'><b>_set_entity_callback</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>_set_data_callback</b></span><br>   </dt> - <dd><p><code><code class='object unresolved'>int </code> <b><span class='method'>xsize</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>ysize</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>_set_tag_callback</span>(</b><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>to_call</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>_set_entity_callback</span>(</b><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>to_call</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>_set_data_callback</span>(</b><code class='datatype'>function</code>(:<code class='datatype void'>void</code>) <code class='argument'>to_call</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Query layer offset. This is the same as layer - image/alpha image size.</p> - </dd></dl> - </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Image.Font</b></h2> - </dt><dd><dl class='group--doc'> - <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Short technical documentation on a font file: -  This object adds the text-drawing and -creation -  capabilities of the &lt;ref&gt;Image&lt;/ref&gt; module.</p> - <p> For simple usage, see <code>write</code> and <code>load</code>.</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'><p><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; + <p> These functions set up the parser object to +  call the given callbacks upon tags, entities +  and/or data.</p>    -  version 2: + <p> + The callbacks will <i>only</i> be called if there isn't +  another tag/container/entity handler for these.</p>    -  + <p> + The function will be called with the parser +  object as first argument, and the active string +  as second.</p>    -  On-disk syntax (everything in N.B.O), int is 4 bytes, a byte is 8 bits: + <p> + Note that no parsing of the contents has been done. +  Both endtags and normal tags are called, there is +  no container parsing.</p>    -  pos -  0 int cookie = 'FONT'; or 0x464f4e54 -  4 int version = 2; 1 was the old version without the last four chars -  8 int numchars; Always 256 in this version of the dump program -  12 int height; in (whole) pixels -  16 int baseline; in (whole) pixels -  20 char direction; 1==right to left, 0 is left to right -  21 char format; Font format -  22 char colortablep; Colortable format -  23 char kerningtablep; Kerning table format + <p> + The return values from the callbacks are handled in the +  same way as the return values from callbacks registered with +  <code>add_tag</code> and similar functions.</p>    -  24 int offsets[numchars]; pointers into the data, realative to &amp;cookie. -  [colortable] -  [kerningtable] -  -  At each offset: -  -  -  0 int width; in pixels -  4 int spacing; in 1/1000:th of a pixels -  8 char data[]; Enough data to plot width * font-&gt;height pixels -  Please note that if width is 0, there is no data. -  -  Font formats: -  id type -  0 Raw 8bit data -  1 RLE encoded data, char length, char data, 70% more compact than raw data -  2 ZLib compressed data 60% more compact than RLE -  -  Colortable types: -  0 No colortable (the data is an alpha channel) -  1 24bit RGB with alpha (index-&gt;color, 256*4 bytes, rgba) -  2 8bit Greyscale with alpha (index-&gt;color, 256*2 bytes) -  -  Kerningtable types: -  0 No kerning table -  1 numchars*numchars entries, each a signed char with the kerning value -  2 numchar entries, each with a list of kerning pairs, like this: -  int len -  len * (short char, short value) -  </pre></p> + <p> + The data callback will be called as seldom as possible with +  the longest possible string, as long as it doesn't get called +  out of order with any other callback. It will never be called +  with a zero length string. + </p>   </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'><p><code>Image</code>, <code>Image.Image</code></p> + <dt class='head--doc'>Returns</dt> + <dd class='body--doc'> + <p>the called object</p>   </dd></dl>    - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>baseline</b></span> - </dt> - <dd><p><code><code class='datatype'>int</code> <b><span class='method'>baseline</span>(</b><b>)</b></code></p></dd> +     - <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Returns font baseline (pixels from top)</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'><p><code>height</code>, <code>text_extents</code></p> - </dd></dl> -  -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>center</b></span> + <span class='homogen--name'><b>add_tag</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>add_container</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>add_entity</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>add_quote_tag</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>add_tags</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>add_containers</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>add_entities</b></span><br>   </dt> - <dd><p><code><code class='datatype'>void</code> <b><span class='method'>center</span>(</b><b>)</b></code></p></dd> - <dt class='head--fixme'>FIXME</dt> - <dd class='body--fixme'><p>Document this function.</p> - </dd></dl> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_tag</span>(</b><code class='datatype'>string</code> <code class='argument'>name</code>, <code class='datatype'>mixed</code> <code class='argument'>to_do</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_container</span>(</b><code class='datatype'>string</code> <code class='argument'>name</code>, <code class='datatype'>mixed</code> <code class='argument'>to_do</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_entity</span>(</b><code class='datatype'>string</code> <code class='argument'>entity</code>, <code class='datatype'>mixed</code> <code class='argument'>to_do</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_quote_tag</span>(</b><code class='datatype'>string</code> <code class='argument'>name</code>, <code class='datatype'>mixed</code> <code class='argument'>to_do</code>, <code class='datatype'>string</code> <code class='argument'>end</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_tags</span>(</b><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>) <code class='argument'>tags</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_containers</span>(</b><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>) <code class='argument'>containers</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>add_entities</span>(</b><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>) <code class='argument'>entities</code><b>)</b></code></p></dd>    -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>create</b></span> - </dt> - <dd><p><code><span class='object'>Image.Font</span> <span class='class'>Image.Font</span><b>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code></p></dd> -  +    <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Loads a font file to this font object. -  Similar to <code>load()</code>.</p> - </dd></dl> + <dd class='body--doc'> + <p>Registers the actions to take when parsing various things. + Tags, containers, entities are as usual. add_quote_tag() adds + a special kind of tag that reads any data until the next + occurrence of the end string immediately before a tag end.</p>    -  + <p><tt>to_do</tt> can be:</p>    - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>height</b></span> - </dt> - <dd><p><code><code class='datatype'>int</code> <b><span class='method'>height</span>(</b><b>)</b></code></p></dd> + <p><ul> + <li><p><b>a function</b> to be called. The function is on the form + <pre> + mixed tag_callback(Parser.HTML parser,mapping args,mixed ... extra) + mixed container_callback(Parser.HTML parser,mapping args,string content,mixed ... extra) + mixed entity_callback(Parser.HTML parser,mixed ... extra) + mixed quote_tag_callback(Parser.HTML parser,string content,mixed ... extra) + </pre> + depending on what realm the function is called by.</p></li><li><p><b>a string</b>. This tag/container/entity is then replaced + by the string. The string is normally not reparsed, i.e. it's + equivalent to writing a function that returns the string in an + array (but a lot faster). If <code>reparse_strings</code> is + set the string will be reparsed, though.</p></li><li><p><b>an array</b>. The first element is a function as above. + It will receive the rest of the array as extra arguments. If + extra arguments are given by <code>set_extra</code>(), they will + appear after the ones in this array.</p></li><li><p><b>zero</b>. If there is a tag/container/entity with the + given name in the parser, it's removed.</p></li></ul></p>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Returns the font height.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'><p><code>baseline</code>, <code>text_extents</code></p> - </dd></dl> + <p>The callback function can return:</p>    -  + <p><ul> + <li><p><b>a string</b>; this string will be pushed on the parser + stack and be parsed. Be careful not to return anything + in this way that could lead to a infinite recursion.</p></li><li><p><b>an array</b>; the element(s) of the array is the result + of the function. This will not be parsed. This is useful for + avoiding infinite recursion. The array can be of any size, + this means the empty array is the most effective to return if + you don't care about the result. If the parser is operating in + <code>mixed_mode</code>, the array can contain anything. + Otherwise only strings are allowed.</p></li><li><p><b>zero</b>; this means "don't do anything", ie the + item that generated the callback is left as it is, and + the parser continues.</p></li><li><p><b>one</b>; reparse the last item again. This is useful to + parse a tag as a container, or vice versa: just add or remove + callbacks for the tag and return this to jump to the right + callback.</p></li></ul></p>    - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>left</b></span> - </dt> - <dd><p><code><code class='datatype'>void</code> <b><span class='method'>left</span>(</b><b>)</b></code></p></dd> - <dt class='head--fixme'>FIXME</dt> - <dd class='body--fixme'><p>Document this function.</p> - </dd></dl> -  -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>load</b></span> - </dt> - <dd><p><code><code class='object unresolved'>Image.Font</code>|<code class='datatype'>int</code> <b><span class='method'>load</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code></p></dd> -  - <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Loads a font file to this font object.</p> + <p></p>   </dd>   <dt class='head--doc'>Returns</dt> - <dd class='body--doc'><p>Returns zero upon failure and a font object upon success.</p> + <dd class='body--doc'> + <p>the called object</p>   </dd> - <dt class='head--doc'><span id='p-filename'></span>Parameter <code class='parameter'>filename</code></dt> - <dd></dd><dd class='body--doc'><p>The path to the font file.</p> - </dd> +    <dt class='head--doc'>See also</dt> - <dd class='body--doc'><p><code>write</code></p> - </dd></dl> + <dd class='body--doc'> + <p><code>tags</code>, <code>containers</code>, <code>entities</code></p></dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>right</b></span> - </dt> - <dd><p><code><code class='datatype'>void</code> <b><span class='method'>right</span>(</b><b>)</b></code></p></dd> - <dt class='head--fixme'>FIXME</dt> - <dd class='body--fixme'><p>Document this function.</p> - </dd></dl> -  -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_xspacing_scale</b></span><br> + <span class='homogen--name'><b>at</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>set_yspacing_scale</b></span><br> + <span class='homogen--name'><b>at_line</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>at_char</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>at_column</b></span><br>   </dt> - <dd><p><code><code class='datatype'>void</code> <b><span class='method'>set_xspacing_scale</span>(</b><code class='datatype'>float</code> <code class='argument'>scale</code><b>)</b></code><br> - <code><code class='datatype'>void</code> <b><span class='method'>set_yspacing_scale</span>(</b><code class='datatype'>float</code> <code class='argument'>scale</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>at</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>at_line</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>at_char</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>at_column</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Set spacing scale to write characters closer -  or more far away. This does not change scale -  of character, only the space between them.</p> - </dd></dl> + <dd class='body--doc'> + <p> Returns the current position. Characters and columns count +  from 0, lines count from 1.</p>    -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>text_extents</b></span> - </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>text_extents</span>(</b><code class='datatype'>string</code> <code class='argument'>text</code>, <code class='datatype'>string</code> ... <code class='argument'>more_text_lines</code><b>)</b></code></p></dd> -  - <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Calculate extents of a text-image, -  that would be created by calling <code>write</code> -  with the same arguments. One or more lines -  of text may be provided.</p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'><table class='box'><tr><td colspan='1'>Array</td></tr> - <tr><td><code><code class='datatype'>int</code> <code class='key'>width</code></code></td></tr> - <tr><td><code><code class='datatype'>int</code> <code class='key'>height</code></code></td></tr> - </table> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'><p><code>write</code>, <code>height</code>, <code>baseline</code></p> + <p> + <code>at</code>() gives an array consisting of +  ({<i>line</i>,<i>char</i>,<i>column</i>}), in that order.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>write</b></span> + <span class='homogen--name'><b>case_insensitive_tag</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>ignore_tags</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>ignore_unknown</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>lazy_argument_end</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>lazy_entity_end</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>match_tag</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>max_parse_depth</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>mixed_mode</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>reparse_strings</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>ws_before_tag_name</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>xml_tag_syntax</b></span><br>   </dt> - <dd><p><code><code class='object unresolved'>Image.Image</code> <b><span class='method'>write</span>(</b><code class='datatype'>string</code> <code class='argument'>text</code>, <code class='datatype'>string</code> ... <code class='argument'>more_text_lines</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>int </code> <b><span class='method'>case_insensitive_tag</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>ignore_tags</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>ignore_unknown</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>lazy_argument_end</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>lazy_entity_end</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>match_tag</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>max_parse_depth</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>mixed_mode</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>reparse_strings</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>ws_before_tag_name</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code><br> + <code><code class='object unresolved'>int </code> <b><span class='method'>xml_tag_syntax</span>(</b><code class='datatype'>void</code>|<code class='datatype'>int</code> <code class='argument'>value</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Writes some text; thus creating an image object -  that can be used as mask or as a complete picture. -  One or more text lines may be provided.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'><p><code>text_extents</code>, <code>load</code>, <code>Image.Image-&gt;paste_mask</code>, <code>Image.Image-&gt;paste_alpha_color</code></p> - </dd></dl> - </dd></dl><dl><dt><h2 class='header'>Class <b class='ms datatype'>Image.Colortable</b></h2> - </dt><dd><dl class='group--doc'> - <dt class='head--doc'>Description</dt> +    <dd class='body--doc'> -  + <p> Functions to query or set flags. These set the associated flag +  to the value if any is given and returns the old value.</p> +    <p> - This object keeps colortable information, - mostly for image re-coloring (quantization).</p> + The flags are:</p>    - <p>The object has color reduction, quantisation, - mapping and dithering capabilities. + <p> <ul> + <li><p><b>case_insensitive_tag</b>: All tags and containers +  are matched case insensitively, and argument names are +  converted to lowercase. Tags added with +  <code>add_quote_tag</code>() are not affected, though. Switching +  to case insensitive mode and back won't preserve the case of +  registered tags and containers.</p></li><li><p><b>ignore_tags</b>: Do not look for tags at all. +  Normally tags are matched even when there's no callbacks for +  them at all. When this is set, the tag delimiters '&lt;' and +  '&gt;' will be treated as any normal character.</p></li><li><p><b>ignore_unknown</b>: Treat unknown tags and entities +  as text data, continuing parsing for tags and entities inside +  them.</p></li><li><p><b>lazy_argument_end</b>: A '&gt;' in a tag argument +  closes both the argument and the tag, even if the argument is +  quoted.</p></li><li><p><b>lazy_entity_end</b>: Normally, the parser search +  indefinitely for the entity end character (i.e. ';'). When +  this flag is set, the characters '&amp;', '&lt;', '&gt;', '"', +  ''', and any whitespace breaks the search for the entity end, +  and the entity text is then ignored, i.e. treated as data.</p></li><li><p><b>match_tag</b>: Unquoted nested tag starters and +  enders will be balanced when parsing tags. This is the +  default.</p></li><li><p><b>max_stack_depth</b>: Maximum recursion depth during +  parsing. Recursion occurs when a tag/container/entity/quote +  tag callback function returns a string to be reparsed. The +  default value is 10.</p></li><li><p><b>mixed_mode</b>: Allow callbacks to return arbitrary +  data in the arrays, which will be concatenated in the output.</p></li><li><p><b>reparse_strings</b>: When a plain string is used as +  a tag/container/entity/quote tag callback, it's not reparsed +  if this flag is unset. Setting it causes all such strings to +  be reparsed.</p></li><li><p><b>ws_before_tag_name</b>: Allow whitespace between the +  tag start character and the tag name.</p></li><li><p><b>xml_tag_syntax</b>: Whether or not to use XML syntax +  to tell empty tags and container tags apart:<br /> +  +  <b>0</b>: Use HTML syntax only. If there's a '/' last in a +  tag, it's just treated as any other argument.<br /> +  +  <b>1</b>: Use HTML syntax, but ignore a '/' if it comes +  last in a tag. This is the default.<br /> +  +  <b>2</b>: Use XML syntax, but when a tag that does not end +  with '/&gt;' is found which only got a non-container tag +  callback, treat it as a non-container (i.e. don't start to +  seek for the container end).<br /> +  +  <b>3</b>: Use XML syntax only. If a tag got both container +  and non-container callbacks, the non-container callback is +  called when the empty element form (i.e. the one ending with +  '/&gt;') is used, and the container callback otherwise. If +  only a container callback exists, it gets the empty string as +  content when there's none to be parsed. If only a +  non-container callback exists, it will be called (without the +  content argument) for both kinds of tags.</p></li></ul>   </p>   </dd> - <dt class='head--doc'>See also</dt> + <dt class='head--doc'>Note</dt>   <dd class='body--doc'> - <p><code>Image</code>, <code>Image.Image</code>, <code>Image.Font</code>, <code>Image.GIF</code></p></dd></dl> + <p>When functions are specified with + <code>_set_tag_callback</code>() or + <code>_set_entity_callback</code>(), all tags or entities, + respectively, are considered known. However, if one of those + functions return 1 and ignore_unknown is set, they are treated + as text data instead of making another call to the same</p> + </dd></dl>    -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>map</b></span><br> + <span class='homogen--name'><b>clear_tags</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`*</b></span><br> + <span class='homogen--name'><b>clear_containers</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>``*</b></span><br> + <span class='homogen--name'><b>clear_entities</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>clear_quote_tags</b></span><br>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>map</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Colortable()</code>&#32;*&#32;<code class='class'>image</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>image</code>&#32;*&#32;<code class='class'>Image.Colortable()</code></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>map</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code>, <code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>Image.Colortable()</code>&#32;*&#32;<code class='class'>data</code></code><br> - <code><code class='object unresolved'>object </code> res = <code class='class'>data</code>&#32;*&#32;<code class='class'>Image.Colortable()</code></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>clear_tags</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>clear_containers</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>clear_entities</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>clear_quote_tags</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Map colors in an image object to the colors in - the colortable, and creates a new image with the - closest colors.</p> -  - <p><table><tr valign='center'> - <td></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.3.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.4.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.5.png' width='80' /></td> - <td>no dither</td> - </tr><tr valign='center'> - <td></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.6.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.7.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.8.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.9.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.10.png' width='80' /></td> - <td><code>floyd_steinberg</code> dither</td> - </tr><tr valign='center'> - <td></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.11.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.12.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.13.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.14.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.15.png' width='80' /></td> - <td><code>ordered</code> dither</td> - </tr><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Colortable.map.16.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.17.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.18.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.19.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.20.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.map.21.png' width='80' /></td> - <td><code>randomcube</code> dither</td> - </tr><tr valign='center'> - <td>original</td> - <td>2</td> - <td>4</td> - <td>8</td> - <td>16</td> - <td>32 colors</td> - </tr></table> + <p>Removes all registered definitions in the different + categories.   </p>   </dd>   <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>a new image object</p> + <p>the called object</p>   </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>Flat (not cube) colortable and not '<code>full</code>' method: - this method does figure out the data needed for - the lookup method, which may take time the first - use of the colortable - the second use is quicker. - </p> - </dd> +    <dt class='head--doc'>See also</dt>   <dd class='body--doc'> - <p><code>cubicles</code>, <code>full</code></p></dd></dl> + <p><code>add_tag</code>, <code>add_tags</code>, <code>add_container</code>, <code>add_containers</code>, <code>add_entity</code>, <code>add_entities</code></p></dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`+</b></span> + <span class='homogen--name'><b>clone</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Colortable()</code>&#32;+&#32;<code class='class'>with</code></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>clone</span>(</b><code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>sums colortables</p> - </dd> - <dt class='head--doc'><span id='p-with'></span>Parameter <code class='parameter'>with</code></dt> - <dd></dd><dd class='body--doc'><p><code>Colortable</code> object with colors to add</p></dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the resulting new <code>Colortable</code> object</p> - </dd></dl> + <p> Clones the <code>Parser.HTML</code> object. +  A new object of the same class is created, +  filled with the parse setup from the +  old object.</p>    -  + <p> + This is the simpliest way of flushing a +  parse feed/output.</p>    - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`-</b></span> - </dt> - <dd><p><code><code class='object unresolved'>object </code> res = <code class='class'>Image.Colortable()</code>&#32;-&#32;<code class='class'>with</code></code></p></dd> -  - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>subtracts colortables</p> + <p> + The arguments to clone is sent to the +  new object, simplifying work for custom classes +  that inherits <code>Parser.HTML</code>.</p>   </dd> - <dt class='head--doc'><span id='p-with'></span>Parameter <code class='parameter'>with</code></dt> - <dd></dd><dd class='body--doc'><p><code>Colortable</code> object with colors to subtract</p></dd> +    <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>the resulting new <code>Colortable</code> object</p> + <p>the new object.</p> + </dd> + <dt class='head--doc'>Note</dt> + <dd class='body--doc'> + <p>create is called _before_ the setup is copied.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>create</b></span><br> + <span class='homogen--name'><b>tags</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>add</b></span><br> + <span class='homogen--name'><b>containers</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>entities</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>quote_tags</b></span><br>   </dt> - <dd><p><code><span class='object'>Image.Colortable</span> <span class='class'>Image.Colortable</span><b>(</b><b>)</b></code><br> - <code><span class='object'>Image.Colortable</span> <span class='class'>Image.Colortable</span><b>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colors</code><b>)</b></code><br> - <code><span class='object'>Image.Colortable</span> <span class='class'>Image.Colortable</span><b>(</b><code class='object unresolved'>Image.Image</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>number</code><b>)</b></code><br> - <code><span class='object'>Image.Colortable</span> <span class='class'>Image.Colortable</span><b>(</b><code class='object unresolved'>Image.Image</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>number</code>, <code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>needed</code><b>)</b></code><br> - <code><span class='object'>Image.Colortable</span> <span class='class'>Image.Colortable</span><b>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><span class='object'>Image.Colortable</span> <span class='class'>Image.Colortable</span><b>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>object</code> <code class='argument'>array(int</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>add</span>(</b><code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>colors</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>add</span>(</b><code class='object unresolved'>Image.Image</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>number</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>add</span>(</b><code class='object unresolved'>Image.Image</code> <code class='argument'>image</code>, <code class='datatype'>int</code> <code class='argument'>number</code>, <code class='datatype'>array</code>(<code class='datatype'>array</code>(<code class='datatype'>int</code>)) <code class='argument'>needed</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>add</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>add</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>object</code> <code class='argument'>array(int</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>mapping </code> <b><span class='method'>tags</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>mapping </code> <b><span class='method'>containers</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>mapping </code> <b><span class='method'>entities</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>mapping </code> <b><span class='method'>quote_tags</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p><code>create</code> initiates a colortable object. - Default is that no colors are in the colortable.</p> + <p> Returns the current callback settings. For quote_tags, the +  values are arrays ({callback, end_quote}).</p>    - <p><code>add</code> takes the same argument(s) as - <code>create</code>, thus adding colors to the colortable.</p> + <p> + Note that when matching is done case insensitively, all names +  will be returned in lowercase.</p>    - <p>The colortable is mostly a list of colors, - or more advanced, colors and weight.</p> -  - <p>The colortable could also be a colorcube, with or - without additional scales. A colorcube is the by-far - fastest way to find colors.</p> -  - <p>Example: - <pre> - ct=colortable(my_image,256); // the best 256 colors - ct=colortable(my_image,256,({0,0,0})); // black and the best other 255 -  - ct=colortable(({({0,0,0}),({255,255,255})})); // black and white -  - ct=colortable(6,7,6); // a colortable of 252 colors - ct=colortable(7,7,5, ({0,0,0}),({255,255,255}),11); -  // a colorcube of 245 colors, and a greyscale of the rest -&gt; 256 - </pre> + <p> + Implementation note: With the exception of quote_tags(), these +  run in constant time since they return copy-on-write mappings. +  However, quote_tags() allocates a new mapping and thus runs in +  linear time.   </p>   </dd> - <dt class='head--doc'><span id='p-colors'></span>Parameter <code class='parameter'>colors</code></dt> - <dd></dd><dd class='body--doc'><p>list of colors</p></dd> - <dt class='head--doc'><span id='p-image'></span>Parameter <code class='parameter'>image</code></dt> - <dd></dd><dd class='body--doc'><p>source image - </p></dd> - <dt class='head--doc'><span id='p-number'></span>Parameter <code class='parameter'>number</code></dt> - <dd></dd><dd class='body--doc'><p>number of colors to get from the image</p> -  - <p>0 (zero) gives all colors in the image.</p> -  - <p>Default value is 256.</p></dd> - <dt class='head--doc'><span id='p-needed'></span>Parameter <code class='parameter'>needed</code></dt> - <dd></dd><dd class='body--doc'><p>needed colors (to optimize selection of others to these given)</p> -  - <p>this will add to the total number of colors (see argument 'number')</p></dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>size of sides in the colorcube, must (of course) be equal - or larger than 2 - if smaller, the cube is ignored (no colors). - This could be used to have only scales (like a greyscale) - in the output.</p></dd> - <dt class='head--doc'><span id='p-fromi'></span>Parameter <code class='parameter'>fromi</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-toi'></span>Parameter <code class='parameter'>toi</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-stepi'></span>Parameter <code class='parameter'>stepi</code></dt> - <dd></dd><dd class='body--doc'><p>This is to add the possibility of adding a scale - of colors to the colorcube; for instance a grayscale - using the arguments <tt>({0,0,0}),({255,255,255}),17</tt>, - adding a scale from black to white in 17 or more steps.</p> -  - <p>Colors already in the cube is used again to add the number - of steps, if possible.</p> -  - <p>The total number of colors in the table is therefore - <tt>r*b*g+step1+...+stepn</tt>.</p></dd> - <dt class='head--doc'>Note</dt> + <dt class='head--doc'>See also</dt>   <dd class='body--doc'> - <p>max hash size is (probably, set by a <tt>#define</tt>) - 32768 entries, giving - maybe half that number of colors as maximum.</p> - </dd></dl> + <p><code>add_tag</code>, <code>add_tags</code>, <code>add_container</code>, <code>add_containers</code>, <code>add_entity</code>, <code>add_entities</code></p></dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cast</b></span> + <span class='homogen--name'><b>context</b></span>   </dt> - <dd><p><code><b>(</b><span class='datatype'>int</span><b>)</b><span class='class'>Image.Colortable</span>()<br><b>(</b><span class='datatype'>float</span><b>)</b><span class='class'>Image.Colortable</span>()<br><b>(</b><span class='datatype'>string</span><b>)</b><span class='class'>Image.Colortable</span>()<br><b>(</b><span class='datatype'>array</span><b>)</b><span class='class'>Image.Colortable</span>()<br><b>(</b><span class='datatype'>mapping</span><b>)</b><span class='class'>Image.Colortable</span>()<br><b>(</b><span class='datatype'>multiset</span><b>)</b><span class='class'>Image.Colortable</span>()</code></p></dd> + <dd><p><code><code class='object unresolved'>string </code> <b><span class='method'>context</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>cast the colortable to an array or mapping, - the array consists of <code>Image.Color</code> objects - and are not in index order. The mapping consists of - index:<code>Image.Color</code> pairs, where index is - the index (int) of that color.</p> + <p> Returns the current output context as a string:</p>    - <p>example: <tt>(mapping)Image.Colortable(img)</tt> + <p> <ul> + <li><p><b>"data"</b>: In top level data. This is always returned +  when called from tag or container callbacks.</p></li><li><p><b>"arg"</b>: In an unquoted argument.</p></li><li><p><b>A single character string</b>: In a quoted argument. +  The string contains the starting quote character.</p></li><li><p><b>"splice_arg"</b>: In a splice argument.</p></li></ul></p> +  + <p> + This function is typically only useful in entity callbacks, +  which can be called both from text and argument values of +  different sorts.   </p>   </dd> - <dt class='head--doc'><span id='p-to'></span>Parameter <code class='parameter'>to</code></dt> - <dd></dd><dd class='body--doc'><p>must be "string", "array" or "mapping".</p></dd></dl> + <dt class='head--doc'>See also</dt> + <dd class='body--doc'> + <p><code>splice_arg</code></p></dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>corners</b></span> + <span class='homogen--name'><b>current</b></span>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>object</code>) <b><span class='method'>corners</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>string </code> <b><span class='method'>current</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Gives the eight corners in rgb colorspace as an array. - The "black" and "white" corners are the first two.</p> + <p>Gives the current range of data, ie the whole tag/entity/etc + being parsed in the current callback. Returns zero if there's + no current range, i.e. when the function is not called in a + callback.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cubicles</b></span> + <span class='homogen--name'><b>feed</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>cubicles</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>cubicles</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>cubicles</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>accuracy</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>feed</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>feed</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>feed</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code>, <code class='datatype'>int</code> <code class='argument'>do_parse</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set the colortable to use the cubicles algorithm to lookup - the closest color. This is a mostly very fast and very - accurate way to find the correct color, and the default - algorithm.</p> + <p> Feed new data to the <code>Parser.HTML</code> +  object. This will start a scan and may result in +  callbacks. Note that it's possible that all +  data feeded isn't processed - to do that, call +  <code>finish</code>().</p>      <p> - The colorspace is divided in small cubes, each cube - containing the colors in that cube. Each cube then gets - a list of the colors in the cube, and the closest from - the corners and midpoints between corners.</p> + If the function is called without arguments, +  no data is feeded, but the parser is run.</p>    - <p>When a color is needed, the algorithm first finds the - correct cube and then compares with all the colors in - the list for that cube.</p> -  - <p>example: <tt>colors=Image.Colortable(img)-&gt;cubicles();</tt></p> -  - <p>algorithm time: between O[m] and O[m * n], - where n is numbers of colors and m is number of pixels</p> -  - <p>The arguments can be heavy trimmed for the usage - of your colortable; a large number (10×10×10 or bigger) - of cubicles is recommended when you use the colortable - repeatedly, since the calculation takes much - more time than usage.</p> -  - <p>recommended values:</p> -  - <p><pre> - image size setup - 100×100 cubicles(4,5,4) (default) - 1000×1000 cubicles(12,12,12) (factor 2 faster than default) - </pre></p> -  - <p>In some cases, the <code>full</code> method is faster.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Colortable.cubicles.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.cubicles.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.cubicles.3.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>default cubicles,<br />16 colors</td> - <td>accuracy=200</td> - </tr></table> + <p> + If the string argument is followed by a 0, +  <tt>-&gt;feed(s,0);</tt>, the string is feeded, +  but the parser isn't run.   </p>   </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>Size, ie how much the colorspace is divided. - Note that the size of each cubicle is at least about 8b, - and that it takes time to calculate them. The number of - cubicles are <tt>r*g*b</tt>, and default is 4,5,4, - ie 80 cubicles. This works good for 200±100 colors. - </p></dd> - <dt class='head--doc'><span id='p-accuracy'></span>Parameter <code class='parameter'>accuracy</code></dt> - <dd></dd><dd class='body--doc'><p>Accuracy when checking sides of cubicles. - Default is 16. A value of 1 gives complete accuracy, - ie cubicle() method gives exactly the same result - as full(), but takes (in worst case) 16× the time - to calculate. - </p></dd> +    <dt class='head--doc'>Returns</dt>   <dd class='body--doc'>   <p>the called object</p>   </dd> - <dt class='head--doc'>Note</dt> + <dt class='head--doc'>See also</dt>   <dd class='body--doc'> - <p>this method doesn't figure out the cubicles, this is - done on the first use of the colortable.</p> + <p><code>finish</code>, <code>read</code>, <code>feed_insert</code></p></dd></dl>    - <p>Not applicable to colorcube types of colortable.</p> - </dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>floyd_steinberg</b></span> + <span class='homogen--name'><b>feed_insert</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>floyd_steinberg</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>floyd_steinberg</span>(</b><code class='datatype'>int</code> <code class='argument'>bidir</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>forward</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>downforward</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>down</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>downback</code>, <code class='datatype'>int</code>|<code class='datatype'>float</code> <code class='argument'>factor</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>feed_insert</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set dithering method to floyd_steinberg.</p> -  - <p>The arguments to this method is for fine-tuning of the - algorithm (for computer graphics wizards).</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Colortable.floyd_steinberg.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.floyd_steinberg.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.floyd_steinberg.3.png' width='80' /></td> - </tr><tr valign='center'> - <td>original</td> - <td>floyd_steinberg to a 4×4×4 colorcube</td> - <td>floyd_steinberg to 16 chosen colors</td> - </tr></table> + <p>This pushes a string on the parser stack. + (I'll write more about this mechanism later.)   </p>   </dd> - <dt class='head--doc'><span id='p-bidir'></span>Parameter <code class='parameter'>bidir</code></dt> - <dd></dd><dd class='body--doc'><p>Set algorithm direction of forward. - -1 is backward, 1 is forward, 0 for toggle of direction - each line (default).</p></dd> - <dt class='head--doc'><span id='p-forward'></span>Parameter <code class='parameter'>forward</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-downforward'></span>Parameter <code class='parameter'>downforward</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-down'></span>Parameter <code class='parameter'>down</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-downback'></span>Parameter <code class='parameter'>downback</code></dt> - <dd></dd><dd class='body--doc'><p>Set error correction directions. Default is - forward=7, downforward=1, down=5, downback=3.</p></dd> - <dt class='head--doc'><span id='p-factor'></span>Parameter <code class='parameter'>factor</code></dt> - <dd></dd><dd class='body--doc'><p>Error keeping factor. - Error will increase if more than 1.0 and decrease if less than 1.0. - A value of 0.0 will cancel any dither effects. - Default is 0.95.</p></dd> +    <dt class='head--doc'>Returns</dt>   <dd class='body--doc'>   <p>the called object</p>
3795:   <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>full</b></span> + <span class='homogen--name'><b>finish</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>full</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>finish</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>finish</span>(</b><code class='datatype'>string</code> <code class='argument'>s</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set the colortable to use full scan to lookup the closest color.</p> -  - <p>example: <tt>colors=Image.Colortable(img)-&gt;full();</tt></p> -  - <p>algorithm time: O[n*m], where n is numbers of colors - and m is number of pixels + <p>Finish a parser pass. A string may be sent here, similar to + feed().   </p>   </dd>   <dt class='head--doc'>Returns</dt>   <dd class='body--doc'>   <p>the called object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>Not applicable to colorcube types of colortable.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>cubicles</code>, <code>map</code></p></dd></dl> -  -  - <hr /> - <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>image</b></span> - </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>image</span>(</b><b>)</b></code></p></dd> -  - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>cast the colortable to an image object</p> -  - <p>each pixel in the image object is an entry in the colortable - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the resulting image object</p> +    </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>nodither</b></span> + <span class='homogen--name'><b>get_extra</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>nodither</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>array </code> <b><span class='method'>get_extra</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set no dithering (default). + <p>Gets the extra arguments set by <code>set_extra</code>().   </p>   </dd>   <dt class='head--doc'>Returns</dt>
3863:   <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>ordered</b></span> + <span class='homogen--name'><b>parse_tag_args</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>ordered</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>ordered</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>ordered</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>ordered</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>int</code> <code class='argument'>x</code>, <code class='datatype'>int</code> <code class='argument'>y</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>ordered</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code>, <code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code>, <code class='datatype'>int</code> <code class='argument'>rx</code>, <code class='datatype'>int</code> <code class='argument'>ry</code>, <code class='datatype'>int</code> <code class='argument'>gx</code>, <code class='datatype'>int</code> <code class='argument'>gy</code>, <code class='datatype'>int</code> <code class='argument'>bx</code>, <code class='datatype'>int</code> <code class='argument'>by</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>mapping </code> <b><span class='method'>parse_tag_args</span>(</b><code class='datatype'>string</code> <code class='argument'>tag</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set ordered dithering, which gives a position-dependent error added - to the pixel values.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.3.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.4.png' width='80' /></td> - </tr><tr valign='top'> - <td>original</td> - <td colspan='2'>mapped to <br /><tt>Image.Colortable(6,6,6)-&gt;</tt></td> - </tr><tr valign='top'> - <td></td> - <td><tt>ordered<br /> (42,42,42,2,2)</tt></td> - <td><tt>ordered()</tt></td> - <td><tt>ordered<br /> (42,42,42, 8,8,<br /> 0,0, 0,1, 1,0)</tt></td> - </tr><tr valign='top'> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.5.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.6.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.7.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.ordered.8.png' width='80' /></td> - </tr></table> - </p> + <p>Parses the tag arguments from a tag string without the name + and surrounding brackets, i.e. a string on the form + "<tt>some="tag" args</tt>".</p>   </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd><dd class='body--doc'><p>The maximum error. Default is 32, or colorcube steps (256/size). - </p></dd> - <dt class='head--doc'><span id='p-xsize'></span>Parameter <code class='parameter'>xsize</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ysize'></span>Parameter <code class='parameter'>ysize</code></dt> - <dd></dd><dd class='body--doc'><p>Size of error matrix. Default is 8×8. - Only values which factors to multiples of 2 and 3 are - possible to choose (2,3,4,6,8,12,...). - </p></dd> - <dt class='head--doc'><span id='p-x'></span>Parameter <code class='parameter'>x</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-y'></span>Parameter <code class='parameter'>y</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-rx'></span>Parameter <code class='parameter'>rx</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-ry'></span>Parameter <code class='parameter'>ry</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-gx'></span>Parameter <code class='parameter'>gx</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-gy'></span>Parameter <code class='parameter'>gy</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-bx'></span>Parameter <code class='parameter'>bx</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-by'></span>Parameter <code class='parameter'>by</code></dt> - <dd></dd><dd class='body--doc'><p>Offset for the error matrix. <tt>x</tt> and <tt>y</tt> is for - both red, green and blue values, the other is individual. - </p></dd> +    <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>the called object</p> + <p>a mapping containing the tag arguments</p>   </dd>   <dt class='head--doc'>See also</dt>   <dd class='body--doc'> - <p><code>randomcube</code>, <code>nodither</code>, <code>floyd_steinberg</code>, <code>create</code></p></dd></dl> + <p><code>tag_args</code></p></dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>randomcube</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>randomgrey</b></span><br> + <span class='homogen--name'><b>parse_tag_name</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>randomcube</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>randomcube</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>randomgrey</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>randomgrey</span>(</b><code class='datatype'>int</code> <code class='argument'>err</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>string </code> <b><span class='method'>parse_tag_name</span>(</b><code class='datatype'>string</code> <code class='argument'>tag</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set random cube dithering. - Color choosen is the closest one to color in picture - plus (flat) random error; <tt>color±random(error)</tt>.</p> -  - <p>The randomgrey method uses the same random error on red, green - and blue and the randomcube method has three random errors.</p> -  - <p><table><tr valign='center'> - <td><img height='115' src='../images/predef.Image.Colortable.randomcube.1.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.randomcube.2.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.randomcube.3.png' width='80' /></td> - </tr><tr valign='top'> - <td>original</td> - <td colspan='2'>mapped to <br /><tt>Image.Colortable(4,4,4)-&gt;</tt></td> - </tr><tr valign='top'> - <td></td> - <td>randomcube()</td> - <td>randomgrey()</td> - </tr><tr valign='top'> - <td><img height='115' src='../images/predef.Image.Colortable.randomcube.4.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.randomcube.5.png' width='80' /></td> - <td><img height='115' src='../images/predef.Image.Colortable.randomcube.6.png' width='80' /></td> - </tr></table> - </p> + <p>Parses the tag name from a tag string without the surrounding + brackets, i.e. a string on the form "<tt>tagname some="tag" + args</tt>".</p>   </dd> - <dt class='head--doc'><span id='p-r'></span>Parameter <code class='parameter'>r</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-g'></span>Parameter <code class='parameter'>g</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-b'></span>Parameter <code class='parameter'>b</code></dt> - <dd></dd> - <dt class='head--doc'><span id='p-err'></span>Parameter <code class='parameter'>err</code></dt> - <dd></dd><dd class='body--doc'><p>The maximum error. Default is 32, or colorcube step. - </p></dd> +    <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>the called object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><code>randomgrey</code> method needs colorcube size to be the same on - red, green and blue sides to work properly. It uses the - red colorcube value as default.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>ordered</code>, <code>nodither</code>, <code>floyd_steinberg</code>, <code>create</code></p></dd></dl> + <p>the tag name or an empty string if none</p> + </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>reduce</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>reduce_fs</b></span><br> + <span class='homogen--name'><b>read</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>reduce</span>(</b><code class='datatype'>int</code> <code class='argument'>colors</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>reduce_fs</span>(</b><code class='datatype'>int</code> <code class='argument'>colors</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code>|<code class='datatype'>array</code>(<code class='datatype'>mixed</code>) <b><span class='method'>read</span>(</b><b>)</b></code><br> + <code><code class='datatype'>string</code>|<code class='datatype'>array</code>(<code class='datatype'>mixed</code>) <b><span class='method'>read</span>(</b><code class='datatype'>int</code> <code class='argument'>max_elems</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>reduces the number of colors</p> + <p>Read parsed data from the parser object.</p>    - <p>All needed (see <code>create</code>) colors are kept.</p> -  - <p><code>reduce_fs</code> creates and keeps - the outmost corners of the color space, to - improve floyd-steinberg dithering result. - (It doesn't work very well, though.) - </p> + <p><code>mixed_mode</code>, an array of arbitrary data otherwise.</p>   </dd> - <dt class='head--doc'><span id='p-colors'></span>Parameter <code class='parameter'>colors</code></dt> - <dd></dd><dd class='body--doc'><p>target number of colors - </p></dd> +    <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>the new <code>Colortable</code> object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>this algorithm assumes all colors are different to - begin with (!)</p> + <p>a string of parsed data if the parser isn't in</p> + </dd></dl>    - <p><code>reduce_fs</code> keeps the "corners" as - "needed colors". - </p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>corners</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rigid</b></span> + <span class='homogen--name'><b>set_extra</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>rigid</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>rigid</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>set_extra</span>(</b><code class='datatype'>mixed</code> <code class='argument'>...args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Set the colortable to use the "rigid" method of - looking up colors.</p> -  - <p>This is a very simple way of finding the correct - color. The algorithm initializes a cube with - <tt>r</tt> x <tt>g</tt> x <tt>b</tt> colors, - where every color is chosen by closest match to - the corresponding coordinate.</p> -  - <p>This format is not recommended for exact match, - but may be usable when it comes to quickly - view pictures on-screen.</p> -  - <p>It has a high init-cost and low use-cost. - The structure is initiated at first usage. + <p>Sets the extra arguments passed to all tag, container and + entity callbacks.   </p>   </dd>   <dt class='head--doc'>Returns</dt>   <dd class='body--doc'>   <p>the called object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>Not applicable to colorcube types of colortable.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>cubicles</code>, <code>map</code>, <code>full</code></p></dd></dl> + </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>spacefactors</b></span> + <span class='homogen--name'><b>splice_arg</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>spacefactors</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>string </code> <b><span class='method'>splice_arg</span>(</b><code class='datatype'>void</code>|<code class='datatype'>string</code> <code class='argument'>name</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Colortable tuning option, this sets the color space - distance factors. This is used when comparing distances - in the colorspace and comparing grey levels.</p> + <p> If given a string, it sets the splice argument name to it. It</p>    - <p>Default factors are 3, 4 and 1; blue is much - darker than green. Compare with <code>Image.Image-&gt;grey</code>(). - </p> + <p>If a splice argument name is set, it's parsed in all tags, +  both those with callbacks and those without. Wherever it +  occurs, its value (after being parsed for entities in the +  normal way) is inserted directly into the tag. E.g: +  <pre> +  &lt;foo arg1="val 1" splice="arg2='val 2' arg3" arg4&gt; +  </pre> +  becomes +  <pre> +  &lt;foo arg1="val 1" arg2='val 2' arg3 arg4&gt; +  </pre> +  if "splice" is set as the splice argument name.</p>   </dd>   <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>the called object</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>This has no sanity check. Some functions may bug - if the factors are to high - color reduction functions - sums grey levels in the image, this could exceed maxint - in the case of high factors. Negative values may - also cause strange effects. *grin*</p> + <p>the old splice argument name.</p>   </dd></dl> - </dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Image.Color</b></h2> - </dt><dd><dl class='group--doc'> - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p> - This module keeps names and easy handling - for easy color support. It gives you an easy - way to get colors from names.</p> +     - <p>A color is here an object, containing color - information and methods for conversion, see below.</p> +     - <p><code>Image.Color</code> can be called to make a color object. - <code>Image.Color()</code> takes the following arguments: - <pre> - Image.Color(string name) // "red" - Image.Color(string prefix_string) // "lightblue" - Image.Color(string hex_name) // "#ff00ff" - Image.Color(string cmyk_string) // "%17,42,0,19.4" - Image.Color(string hsv_string) // "%@327,90,32" - Image.Color(int red, int green, int blue) - </pre></p> -  - <p>The color names available can be listed by using indices - on Image.Color. The colors are available by name directly - as <tt>Image.Color.name</tt>, too: - <pre> - ...Image.Color.red... - ...Image.Color.green... - or, maybe - import Image.Color; - ...red... - ...green... - ...lightgreen... - </pre></p> -  - <p>Giving red, green and blue values is equal to calling - <code>Image.Color.rgb</code>().</p> -  - <p>The prefix_string method is a form for getting modified - colors, it understands all modifiers - (<code>light</code>, - <code>dark</code>, - <code>bright</code>, - <code>dull</code> and - <code>neon</code>). Simply use - "method"+"color"; (as in <tt>lightgreen</tt>, - <tt>dullmagenta</tt>, <tt>lightdullorange</tt>).</p> -  - <p>The <tt>hex_name</tt> form is a simple - <tt>#rrggbb</tt> form, as in HTML or X-program argument. - A shorter form (<tt>#rgb</tt>) is also accepted. This - is the inverse to the <code>Image.Color.Color-&gt;hex</code>() - method.</p> -  - <p>The <tt>cmyk_string</tt> is a string form of giving - <i>cmyk</i> (cyan, magenta, yellow, black) color. These - values are floats representing percent.</p> -  - <p>The <tt>hsv_string</tt> is another hue, saturation, value - representation, but in floats; hue is in degree range (0..360), - and saturation and value is given in percent. <i>This is not - the same as returned or given to the <code>hsv</code>() methods!</i></p> -  - <p> - </p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p><tt>Image.Color["something"]</tt> will never(!) generate an error, - but a zero_type 0, if the color is unknown. This is enough - to give the error "not present in module", if used - as <tt>Image.Color.something</tt>, though.</p> -  - <p>If you are using colors from for instance a webpage, you might - want to create the color from <code>Image.Color.guess</code>(), - since that method is more tolerant for mistakes and errors.</p> -  - <p><tt>Image.Color</tt>() is case- and space-sensitive. - Use <code>Image.Color.guess</code>() to catch all variants.</p> -  - <p>and subtract with a space (lower_case(x)-" ") to make - sure you get all variants.</p> -  - <p></p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image.Color.Color-&gt;name</code>, <code>Image.Color.Color-&gt;rgb</code>, <code>colors</code>, <code>Image.Color.Color</code>, <code>Image.Color.guess</code>, <code>Image</code>, <code>Image.Colortable</code></p></dd></dl> -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>_indices</b></span><br> + <span class='homogen--name'><b>tag</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>_values</b></span><br> + <span class='homogen--name'><b>tag_name</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>tag_args</b></span><br> + <span class='homogen--type'>Method</span> + <span class='homogen--name'><b>tag_content</b></span><br>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) <b><span class='method'>_indices</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>object</code>) <b><span class='method'>_values</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>array </code> <b><span class='method'>tag</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>string </code> <b><span class='method'>tag_name</span>(</b><b>)</b></code><br> + <code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>mixed</code>) <b><span class='method'>tag_args</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>string </code> <b><span class='method'>tag_content</span>(</b><b>)</b></code><br> + <code><code class='object unresolved'>array </code> <b><span class='method'>tag</span>(</b><code class='datatype'>mixed</code> <code class='argument'>default_value</code><b>)</b></code><br> + <code><code class='object unresolved'>string </code> <b><span class='method'>tag_args</span>(</b><code class='datatype'>mixed</code> <code class='argument'>default_value</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>(ie as <tt>indices(Image.Color)</tt> or <tt>values(Image.Color)</tt>) - <tt>indices</tt> gives a list of all the known color names, - <tt>values</tt> gives there corresponding objects.</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image.Color</code></p></dd></dl> + <p> These give parsed information about the current thing being +  parsed, e.g. the current tag, container or entity. They return +  zero if they're not applicable.</p>    -  + <p> + <tt>tag_name</tt> gives the name of the current tag. If used +  from an entity callback, it gives the string inside the +  entity.</p>    -  + <p> + <tt>tag_args</tt> gives the arguments of the current tag, +  parsed to a convenient mapping consisting of key:value pairs. +  If the current thing isn't a tag, it gives zero. default_value +  is used for arguments which have no value in the tag. If +  default_value isn't given, the value is set to the same string +  as the key.</p> +  + <p> + <tt>tag_content</tt> gives the content of the current tag, if +  it's a container or quote tag.</p> +  + <p> + <tt>tag()</tt> gives the equivalent of +  <tt>({tag_name(),tag_args(), tag_content()})</tt>.</p> + </dd></dl> +  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rgb</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>hsv</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cmyk</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>greylevel</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>html</b></span><br> + <span class='homogen--name'><b>write_out</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>rgb</span>(</b><code class='datatype'>int</code> <code class='argument'>red</code>, <code class='datatype'>object</code> <code class='argument'>intgreen</code>, <code class='datatype'>object</code> <code class='argument'>intblue</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>hsv</span>(</b><code class='datatype'>int</code> <code class='argument'>hue</code>, <code class='datatype'>object</code> <code class='argument'>intsaturation</code>, <code class='datatype'>object</code> <code class='argument'>intvalue</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>cmyk</span>(</b><code class='datatype'>float</code> <code class='argument'>c</code>, <code class='datatype'>float</code> <code class='argument'>m</code>, <code class='datatype'>float</code> <code class='argument'>y</code>, <code class='datatype'>float</code> <code class='argument'>k</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>greylevel</span>(</b><code class='datatype'>int</code> <code class='argument'>level</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>html</span>(</b><code class='datatype'>string</code> <code class='argument'>html_color</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML </code> <b><span class='method'>write_out</span>(</b><code class='datatype'>mixed</code> ... <code class='argument'>args</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt>   <dd class='body--doc'> - <p>Creates a new color object from given red, green and blue, - hue, saturation and value, or greylevel, in color value range. - It could also be created from <i>cmyk</i> values in percent.</p> + <p> Send data to the output stream, i.e. it won't be parsed and +  it won't be sent to the data callback, if any.</p>    - <p>The <code>html</code>() method only understands the HTML color names, - or the <tt>#rrggbb</tt> form. It is case insensitive. + <p> + Any data is allowed when the parser is running in +  <code>mixed_mode</code>. Only strings are allowed otherwise.   </p>   </dd>   <dt class='head--doc'>Returns</dt>   <dd class='body--doc'> - <p>the created object.</p> + <p>the called object</p>   </dd></dl> -  + </dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Parser</b></h2> + </dt><dd>    -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>guess</b></span> + <span class='homogen--name'><b>.</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>guess</span>(</b><code class='datatype'>string</code> <code class='argument'>color</code><b>)</b></code></p></dd> + <dd><p><code> <b><span class='method'>.</span>(</b><b>)</b></code></p></dd> + </dl>    - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This is equivalent to - <tt><code>Image.Color</code>(lower_case(str)-" ")</tt>, - and tries the color with a prepending '#' if no - corresponding color is found. - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a color object or zero_type</p> - </dd></dl> - <dl><dt><h2 class='header'>Class <b class='ms datatype'>Image.Color.Color</b></h2> - </dt><dd><dl class='group--doc'> - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This is the color object. It has six readable variables, - <tt>r</tt>, <tt>g</tt>, <tt>b</tt>, for the <i>red</i>, - <i>green</i> and <i>blue</i> values, - and <tt>h</tt>, <tt>s</tt>, <tt>v</tt>, for - the <i>hue</i>, <i>saturation</i> anv <i>value</i> values.</p> - </dd></dl> +       <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>`==</b></span> + <span class='homogen--name'><b>decode_numeric_xml_entity</b></span>   </dt> - <dd><p><code><code class='object unresolved'>int </code> res = <code class='class'>Image.Color.Color()</code>&#32;==&#32;<code class='class'>other_color</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Color.Color()</code>&#32;==&#32;<code class='class'>rgb</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Color.Color()</code>&#32;==&#32;<code class='class'>greylevel</code></code><br> - <code><code class='object unresolved'>int </code> res = <code class='class'>Image.Color.Color()</code>&#32;==&#32;<code class='class'>name</code></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>decode_numeric_xml_entity</span>(</b><code class='datatype'>string</code> <code class='argument'>chref</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Compares this object to another color, - or color name. Example: - <pre> - object red=Image.Color.red; - object other=Image.Color. ...; - object black=Image.Color.black; + <dd class='body--doc'><p>Decodes the numeric XML entity <code>chref</code>, e.g. <tt>"&amp;#x34;"</tt> and +  returns the character as a string. <code>chref</code> is the name part of +  the entity, i.e. without the leading '&amp;' and trailing ';'. Returns +  zero if <code>chref</code> isn't on a recognized form or if the character +  number is too large to be represented in a string.</p> + </dd></dl>    - if (red==other) ... - if (red==({255,0,0})) ... - if (black==0) ... - if (red=="red") ... - </pre> - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>1 or 0</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>The other datatype (not color object) must be to the right!</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>rgb</code>, <code>grey</code>, <code>name</code></p></dd></dl> +     -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>bits</b></span> + <span class='homogen--name'><b>get_xml_parser</b></span>   </dt> - <dd><p><code><code class='object unresolved'>int </code> <b><span class='method'>bits</span>(</b><code class='datatype'>object</code> <code class='argument'>intrbits</code>, <code class='datatype'>object</code> <code class='argument'>intgbits</code>, <code class='datatype'>object</code> <code class='argument'>intbbits</code>, <code class='datatype'>object</code> <code class='argument'>intrshift</code>, <code class='datatype'>object</code> <code class='argument'>intgshift</code>, <code class='datatype'>object</code> <code class='argument'>intbshift</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>Parser.HTML</code> <b><span class='method'>get_xml_parser</span>(</b><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Returns the color as an integer</p> + <dd class='body--doc'><p>Returns a <code>Parser.HTML</code> initialized for parsing XML. It has all +  the flags set properly for XML syntax and callbacks to ignore +  comments, CDATA blocks and unknown PI tags, but it has no +  registered tags and doesn't decode any entities.</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>light</b></span><br> + <span class='homogen--name'><b>html_entity_parser</b></span><br>   <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>dark</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>neon</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>bright</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>dull</b></span><br> + <span class='homogen--name'><b>parse_html_entities</b></span><br>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>light</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>dark</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>neon</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>bright</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>dull</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>HTML</code> <b><span class='method'>html_entity_parser</span>(</b><b>)</b></code><br> + <code><code class='datatype'>string</code> <b><span class='method'>parse_html_entities</span>(</b><code class='datatype'>string</code> <code class='argument'>in</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Color modification methods. These returns - a new color. - <table> - <tr><th>method</th><th width='50%'>effect</th> - <th>h</th><th>s</th><th>v</th><th>as</th></tr> - <tr><td>light </td><td>raise light level</td><td>±0</td><td> ±0</td><td>+50</td> - <td><img height='20' src='../images/predef.Image.Color.Color.light.1.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.2.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.3.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.4.png' width='20' /></td></tr> -  - <tr><td>dark </td><td>lower light level</td><td>±0</td><td> ±0</td><td>-50</td> - <td><img height='20' src='../images/predef.Image.Color.Color.light.5.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.6.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.7.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.8.png' width='20' /></td></tr> -  - <tr><td>bright</td><td>brighter color </td><td>±0</td><td>+50</td><td>+50</td> - <td><img height='20' src='../images/predef.Image.Color.Color.light.9.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.10.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.11.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.12.png' width='20' /></td></tr> -  - <tr><td>dull </td><td>greyer color </td><td>±0</td><td>-50</td><td>-50</td> - <td><img height='20' src='../images/predef.Image.Color.Color.light.13.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.14.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.15.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.16.png' width='20' /></td></tr> -  - <tr><td>neon </td><td>set to extreme </td><td>±0</td><td>max</td><td>max</td> - <td><img height='20' src='../images/predef.Image.Color.Color.light.17.png' width='20' /> - <img height='20' src='../images/predef.Image.Color.Color.light.18.png' width='20' /></td></tr> -  - </table></p> -  - <p><code>light</code> and <code>dark</code> lower/highers saturation - when value is min-/maximised respective. - </p> + <dd class='body--doc'><p>Parse any HTML entities in the string to unicode characters. +  Either return a complete parser (to build on or use) or parse +  a string. Throw an error if there is an unrecognized entity in +  the string.</p>   </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the new color object</p> - </dd> +    <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>The opposites may not always take each other out. - The color is maximised at white and black levels, - so, for instance - <code>Image.Color</code>.white-&gt;<code>light</code>()-&gt;<code>dark</code>() - doesn't give the white color back, but the equal to - <code>Image.Color</code>.white-&gt;<code>dark</code>(), since - white can't get any <code>light</code>er.</p> + <dd class='body--doc'><p>Currently using XHTML 1.0 tables.</p>   </dd></dl> -  + <dl><dt><h2 class='header'>Class <b class='ms datatype'>Parser.RCS</b></h2> + </dt><dd><dl class='group--doc'> + <dt class='head--doc'>Description</dt> + <dd class='body--doc'><p>A RCS file parser that eats a RCS *,v file and presents nice pike +  data structures of its contents.</p> + </dd></dl>    -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cast</b></span> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>access</b></span>   </dt> - <dd><p><code><b>(</b><span class='datatype'><code class='datatype'>array</code></span><b>)</b><span class='class'>Image.Color.Color</span>()<br></code></p></dd> + <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>string</code>) Parser.RCS.<b><span class='variable'>access</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>cast the object to an array, representing red, green - and blue (equal to <tt>-&gt;<code>rgb</code>()</tt>), or - to a string, giving the name (equal to <tt>-&gt;<code>name</code>()</tt>).</p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>the name as string or rgb as array</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>rgb</code>, <code>name</code></p></dd></dl> + <dd class='body--doc'><p>The usernames listed in the ACCESS section of the RCS file</p> + </dd></dl>         <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rgb</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>rgbf</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>hsv</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>hsvf</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>cmyk</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>greylevel</b></span><br> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>branch</b></span>   </dt> - <dd><p><code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>rgb</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>float</code>) <b><span class='method'>rgbf</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>int</code>) <b><span class='method'>hsv</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>float</code>) <b><span class='method'>hsvf</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='datatype'>float</code>) <b><span class='method'>cmyk</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>greylevel</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>int </code> <b><span class='method'>greylevel</span>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>object</code> <code class='argument'>intg</code>, <code class='datatype'>object</code> <code class='argument'>intb</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code>|<code class='datatype'>int(0..0)</code> Parser.RCS.<b><span class='variable'>branch</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This is methods of getting information from an - <code>Image.Color.Color</code> object.</p> + <dd class='body--doc'><p>The default branch (or revision), if present, <code class='expr'>0</code> otherwise</p> + </dd></dl>    - <p>They give an array of - red, green and blue (rgb) values (color value),<br /> - hue, saturation and value (hsv) values (range as color value), <br /> - cyan, magenta, yellow, black (cmyk) values (in percent) <br /> - or the greylevel value (range as color value).</p> +     - <p>The greylevel is calculated by weighting red, green - and blue. Default weights are 87, 127 and 41, respective, - and could be given by argument. - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>array(int) respective int</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image.Color.Color</code>, <code>grey</code></p></dd></dl> + <hr /> + <dl class='group--doc'> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>branches</b></span> + </dt> + <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>string</code>) Parser.RCS.<b><span class='variable'>branches</span></b></code></p></dd>    -  + <dt class='head--doc'>Description</dt> + <dd class='body--doc'><p>Maps branch numbers (indices) to branch names (values)</p> + </dd></dl>    -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>create</b></span> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>comment</b></span>   </dt> - <dd><p><code><span class='object'>Image.Color.Color</span> <span class='class'>Image.Color.Color</span><b>(</b><code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code>|<code class='datatype'>int(0..0)</code> Parser.RCS.<b><span class='variable'>comment</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>This is the main <code>Image.Color.Color</code> creation - method, mostly for internal use. - </p> + <dd class='body--doc'><p>The RCS file comment if present, <code class='expr'>0</code> otherwise</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>grey</b></span> + <span class='homogen--name'><b>create</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>grey</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>grey</span>(</b><code class='datatype'>int</code> <code class='argument'>red</code>, <code class='datatype'>int</code> <code class='argument'>green</code>, <code class='datatype'>int</code> <code class='argument'>blue</code><b>)</b></code></p></dd> + <dd><p><code><span class='object'>Parser.RCS</span> <span class='class'>Parser.RCS</span><b>(</b><code class='datatype'>string</code>|<code class='datatype'>void</code> <code class='argument'>file_name</code>, <code class='datatype'>string</code>|<code class='datatype'>int(0..0)</code>|<code class='datatype'>void</code> <code class='argument'>file_contents</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Gives a new color, containing a grey color, - which is calculated by the <code>greylevel</code> method.</p> + <dd class='body--doc'><p>Initializes the RCS object.</p>   </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new <code>Image.Color.Color</code> object</p> + <dt class='head--doc'><span id='p-file_name'></span>Parameter <code class='parameter'>file_name</code></dt> + <dd></dd><dd class='body--doc'><p>The path to the raw RCS file (includes trailing ",v"). Used +  mainly for error reporting (truncated RCS file).</p>   </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>greylevel</code></p></dd></dl> + <dt class='head--doc'><span id='p-file_contents'></span>Parameter <code class='parameter'>file_contents</code></dt> + <dd></dd><dd class='body--doc'><p>If a string is provided, that string will be parsed to +  initialize the RCS object. If a zero (<code class='expr'>0</code>) is sent, no +  initialization will be performed at all. If no value is given at +  all, but <code>file_name</code> was provided, that file will be loaded and +  parsed for object initialization.</p> + </dd></dl>         <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>hex</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>name</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>html</b></span><br> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>description</b></span>   </dt> - <dd><p><code><code class='object unresolved'>string </code> <b><span class='method'>hex</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>hex</span>(</b><code class='datatype'>int</code> <code class='argument'>n</code><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>name</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>html</span>(</b><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> Parser.RCS.<b><span class='variable'>description</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Information methods.</p> + <dd class='body--doc'><p>The RCS file description</p> + </dd></dl>    - <p><code>hex</code>() simply gives a string on the <tt>#rrggbb</tt> - format. If <tt>n</tt> is given, the number of significant - digits is set to this number. - (Ie, <tt>n=3</tt> gives <tt>#rrrgggbbb</tt>.)</p> +     - <p><code>name</code>() is a simplified method; - if the color exists in the database, the name is returned, - per default is the <code>hex</code>() method use.</p> -  - <p><code>html</code>() gives the <tt>HTML</tt> name of - the color, or the <code>hex</code>(2) if it isn't one - of the 16 <tt>HTML</tt> colors. - </p> - </dd> - <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new <code>Image.Color.Color</code> object</p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>rgb</code>, <code>hsv</code>, <code>Image.Color</code></p></dd></dl> - </dd></dl></dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Image.ANY</b></h2> - </dt><dd><dl class='group--doc'> - <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p> - This method calls the other decoding methods - and has some heuristics for what type of image - this is.</p> -  - <p>Methods: - <code>decode</code>, <code>decode_alpha</code>, - <code>_decode</code></p> -  - <p></p> - </dd> - <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image</code></p></dd></dl> -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>_decode</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>decode</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>decode_alpha</b></span><br> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>expand</b></span>   </dt> - <dd><p><code><code class='object unresolved'>mapping </code> <b><span class='method'>_decode</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>decode</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code><br> - <code><code class='object unresolved'>object </code> <b><span class='method'>decode_alpha</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> Parser.RCS.<b><span class='variable'>expand</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Tries heuristics to find the correct method - of decoding the data, then calls that method.</p> -  - <p>The result of _decode() is a mapping that contains - <pre> -  "type":image data type (ie, "image/jpeg" or similar) -  "image":the image object, -  "alpha":the alpha channel or 0 if N/A - </pre> - </p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'> - <p>Throws upon failure.</p> + <dd class='body--doc'><p>The keyword expansion options (as named by RCS) if present, +  <code class='expr'>0</code> otherwise</p>   </dd></dl> - </dd></dl><dl><dt><h2 class='header'>Module <b class='ms datatype'>Image</b></h2> - </dt><dd> +     -  +    <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>load</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>load_layer</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>load_layers</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>_load</b></span><br> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>head</b></span>   </dt> - <dd><p><code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>load</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>Image.Image</code> <b><span class='method'>load</span>(</b><code class='datatype'>object</code> <code class='argument'>file</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Image</code> <b><span class='method'>load</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>load_layer</span>(</b><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>load_layer</span>(</b><code class='datatype'>object</code> <code class='argument'>file</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>load_layer</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='object unresolved'>Image.Layer</code>) <b><span class='method'>load_layers</span>(</b><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='object unresolved'>Image.Layer</code>) <b><span class='method'>load_layers</span>(</b><code class='datatype'>object</code> <code class='argument'>file</code><b>)</b></code><br> - <code><code class='datatype'>array</code>(<code class='object unresolved'>Image.Layer</code>) <b><span class='method'>load_layers</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code><br> - <code><code class='datatype'>mapping</code> <b><span class='method'>_load</span>(</b><b>)</b></code><br> - <code><code class='datatype'>mapping</code> <b><span class='method'>_load</span>(</b><code class='datatype'>object</code> <code class='argument'>file</code><b>)</b></code><br> - <code><code class='datatype'>mapping</code> <b><span class='method'>_load</span>(</b><code class='datatype'>string</code> <code class='argument'>filename</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> Parser.RCS.<b><span class='variable'>head</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Helper function to load an image from a file. -  If no filename is given, Stdio.stdin is used. -  The result is the same as from the decode functions -  in <code>Image.ANY</code>.</p> - </dd> - <dt class='head--doc'>Note</dt> - <dd class='body--doc'><p>All data is read, ie nothing happens until the file is closed. -  Throws upon error.</p> + <dd class='body--doc'><p>Version number of the head version of the file</p>   </dd></dl>         <hr />   <dl class='group--doc'> - <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>filled_circle</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>filled_circle_layer</b></span><br> + <dt class='head--type'><span class='homogen--type'>Variable</span> + <span class='homogen--name'><b>locks</b></span>   </dt> - <dd><p><code><code class='object unresolved'>Image.Image</code> <b><span class='method'>filled_circle</span>(</b><code class='datatype'>int</code> <code class='argument'>d</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Image</code> <b><span class='method'>filled_circle</span>(</b><code class='datatype'>int</code> <code class='argument'>xd</code>, <code class='datatype'>int</code> <code class='argument'>yd</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>filled_circle_layer</span>(</b><code class='datatype'>int</code> <code class='argument'>d</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>filled_circle_layer</span>(</b><code class='datatype'>int</code> <code class='argument'>xd</code>, <code class='datatype'>int</code> <code class='argument'>yd</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>filled_circle_layer</span>(</b><code class='datatype'>int</code> <code class='argument'>d</code>, <code class='object unresolved'>Image.Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>filled_circle_layer</span>(</b><code class='datatype'>int</code> <code class='argument'>xd</code>, <code class='datatype'>int</code> <code class='argument'>yd</code>, <code class='object unresolved'>Image.Color</code> <code class='argument'>color</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>filled_circle_layer</span>(</b><code class='datatype'>int</code> <code class='argument'>d</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer</code> <b><span class='method'>filled_circle_layer</span>(</b><code class='datatype'>int</code> <code class='argument'>xd</code>, <code class='datatype'>int</code> <code class='argument'>yd</code>, <code class='datatype'>int</code> <code class='argument'>r</code>, <code class='datatype'>int</code> <code class='argument'>g</code>, <code class='datatype'>int</code> <code class='argument'>b</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>mapping</code>(<code class='datatype'>string</code>:<code class='datatype'>string</code>) Parser.RCS.<b><span class='variable'>locks</span></b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'><p>Generates a filled circle of the -  dimensions xd x yd (or d x d). -  The Image is a white circle on black background; the layer -  function defaults to a white circle (the background is transparent).</p> + <dd class='body--doc'><p>Maps from username to revision for users that have acquired locks +  on this file</p>   </dd></dl>         <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>lay</b></span> + <span class='homogen--name'><b>parse</b></span>   </dt> - <dd><p><code><code class='object unresolved'>Image.Layer </code> <b><span class='method'>lay</span>(</b><code class='datatype'>array</code>(<code class='object unresolved'>Image.Layer</code>|<code class='datatype'>mapping</code>) <code class='argument'>layers</code><b>)</b></code><br> - <code><code class='object unresolved'>Image.Layer </code> <b><span class='method'>lay</span>(</b><code class='datatype'>array</code>(<code class='object unresolved'>Image.Layer</code>|<code class='datatype'>mapping</code>) <code class='argument'>layers</code>, <code class='datatype'>int</code> <code class='argument'>xoffset</code>, <code class='datatype'>int</code> <code class='argument'>yoffset</code>, <code class='datatype'>int</code> <code class='argument'>xsize</code>, <code class='datatype'>int</code> <code class='argument'>ysize</code><b>)</b></code></p></dd> + <dd><p><code><code class='object unresolved'>this_program</code> <b><span class='method'>parse</span>(</b><code class='datatype'>string</code> <code class='argument'>raw</code>, <code class='datatype'>void</code>|<code class='datatype'>function</code>(<code class='datatype'>string</code>:<code class='datatype'>void</code>) <code class='argument'>progress_callback</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Combine layers.</p> + <dd class='body--doc'><p>Parse the RCS file <code>raw</code> and initialize all members of this object +  fully initialized.</p>   </dd> -  + <dt class='head--doc'><span id='p-raw'></span>Parameter <code class='parameter'>raw</code></dt> + <dd></dd><dd class='body--doc'><p>The unprocessed RCS file.</p> + </dd> + <dt class='head--doc'><span id='p-progress_callback'></span>Parameter <code class='parameter'>progress_callback</code></dt> + <dd></dd><dd class='body--doc'><p>Passed on to <code>parse_deltatext_sections</code>.</p> + </dd>   <dt class='head--doc'>Returns</dt> - <dd class='body--doc'> - <p>a new layer object.</p> + <dd class='body--doc'><p>The fully initialized object (only returned for API convenience; +  the object itself is destructively modified to match the data +  extracted from <code>raw</code>)</p>   </dd>   <dt class='head--doc'>See also</dt> - <dd class='body--doc'> - <p><code>Image.Layer</code></p></dd></dl> - <dl><dt><h2 class='header'>Module <b class='ms datatype'>Image.AVS</b></h2> - </dt><dd> + <dd class='body--doc'><p><code>parse_admin_section</code>, <code>parse_delta_sections</code>, +  <code>parse_deltatext_sections</code>, <code>create</code></p> + </dd></dl>    -  +    <hr />   <dl class='group--doc'>   <dt class='head--type'><span class='homogen--type'>Method</span> - <span class='homogen--name'><b>decode</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>_decode</b></span><br> - <span class='homogen--type'>Method</span> - <span class='homogen--name'><b>encode</b></span><br> + <span class='homogen--name'><b>parse_admin_section</b></span>   </dt> - <dd><p><code><code class='object unresolved'>object </code> <b><span class='method'>decode</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code><br> - <code><code class='object unresolved'>mapping </code> <b><span class='method'>_decode</span>(</b><code class='datatype'>string</code> <code class='argument'>data</code><b>)</b></code><br> - <code><code class='object unresolved'>string </code> <b><span class='method'>encode</span>(</b><code class='datatype'>object</code> <code class='argument'>image</code><b>)</b></code></p></dd> + <dd><p><code><code class='datatype'>string</code> <b><span class='method'>parse_admin_section</span>(</b><code class='datatype'>string</code> <code class='argument'>raw</code><b>)</b></code></p></dd>      <dt class='head--doc'>Description</dt> - <dd class='body--doc'> - <p>Handle encoding and decoding of AVS-X images. - AVS is rather trivial, and not really useful, but:</p> -  - <p>An AVS file is a raw (uncompressed) 24 bit image file with alpha. - The alpha channel is 8 bit, and there is no separate alpha for r, - g and b.</p>