summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pamditherbw.html49
-rw-r--r--pamrecolor.html15
-rw-r--r--pamrubber.html8
-rw-r--r--pamsumm.html4
-rw-r--r--pgmcrater.html15
-rw-r--r--pgmmedian.html9
-rw-r--r--pnmconvol.html17
-rw-r--r--pnmmontage.html23
-rw-r--r--ppmbrighten.html69
-rw-r--r--ppmpat.html49
-rw-r--r--ppmrough.html61
-rw-r--r--ppmtospu.html102
12 files changed, 307 insertions, 114 deletions
diff --git a/pamditherbw.html b/pamditherbw.html
index b4adb4a1..6277517d 100644
--- a/pamditherbw.html
+++ b/pamditherbw.html
@@ -26,6 +26,8 @@ pamditherbw - dither grayscale image to black and white
 
 [<B>-clump</B> <I>size</I>]
 
+[<b>-randomseed=</b><i>integer</i>]
+
 [<I>pamfile</I>]
 
 <P>All options can be abbreviated to their shortest unique prefix.
@@ -93,28 +95,51 @@ effect.
 <a href="http://www.tinrocket.com/projects/programming/graphics/00158/">
 some claim</a> Atkinson works better.
 
-<P>The <B>-value</B> option alters the thresholding value for
-Floyd-Steinberg, Atkinson, and simple thresholding.  It should be a
-real number between 0 and 1.  Above 0.5 means darker images; below 0.5
-means lighter.
-
 <P>The Hilbert curve method is useful for processing images before
 display on devices that do not render individual pixels distinctly
 (like laser printers).  This dithering method can give better results
 than the dithering usually done by the laser printers themselves.  The
-<B>-clump</B> option alters the number of pixels in a clump.  This is
-usually an integer between 2 and 100 (default 5).  Smaller clump sizes
-smear the image less and are less grainy, but seem to lose some grey
-scale linearity. Typically a PGM image will have to be scaled to fit
-on a laser printer page (2400 x 3000 pixels for an A4 300 dpi page),
-and then dithered to a PBM image before being converted to a
-postscript file.  A printing pipeline might look something like:
+<B>-clump</B> option alters the number of pixels in a clump.  Typically a PGM
+image will have to be scaled to fit on a laser printer page (2400 x 3000
+pixels for an A4 300 dpi page), and then dithered to a PBM image before being
+converted to a postscript file.  A printing pipeline might look something
+like:
 
 <pre>
     pamscale -xysize 2400 3000 image.pgm | pamditherbw -hilbert |  \
       pamtopnm | pnmtops -scale 0.25 &gt; image.ps 
 </pre>
 
+<dl>
+
+<dt><b>-value</b>
+
+<dd>This option alters the thresholding value for
+Floyd-Steinberg, Atkinson, and simple thresholding.  It should be a
+real number between 0 and 1.  Above 0.5 means darker images; below 0.5
+means lighter.
+
+<dt><b>-clump</b>
+<dd>This option alters the number of pixels in a clump.  This is usually an
+integer between 2 and 100 (default 5).  Smaller clump sizes smear the image
+less and are less grainy, but seem to lose some grey scale linearity.
+
+<dt><b>-randomseed=</b><i>integer</i>
+
+<dd>This is the seed for the random number generator that generates the
+pixels.
+
+<p>Use this to ensure you get the same image on separate invocations.
+
+<p>By default, <b>pgmnoise</b> uses a seed derived from the time of day
+and process ID, which gives you fairly uncorrelated results in multiple
+invocations.
+
+<p>This option was new in Netpbm 10.45 (December 2008).
+
+</dl>
+
+
 <H2 id="references">REFERENCES</H2>
 
 <p>The only reference you need for this stuff is &quot;Digital
diff --git a/pamrecolor.html b/pamrecolor.html
index e6b8e3f0..69b4e34a 100644
--- a/pamrecolor.html
+++ b/pamrecolor.html
@@ -28,6 +28,8 @@
 [<b>--bmult</b>=<i>fraction</i>]
 [<b>--targetcolor</b>=<i>color</i>]
 [<b>--colorfile</b>=<i>file</i>]
+[<b>-randomseed=</b><i>integer</i>]
+
 [<i>infile</i>]
 </p>
 
@@ -162,6 +164,19 @@ each pixel of the input image.</p>
 
 <p>You may not specify both <b>-targetcolor</b> and <b>-colorfile</b>.
 
+<dt><b>-randomseed=</b><i>integer</i>
+
+<dd>This is the seed for the random number generator that generates the
+pixels.
+
+<p>Use this to ensure you get the same image on separate invocations.
+
+<p>By default, <b>pamrecolor</b> uses a seed derived from the time of day
+and process ID, which gives you fairly uncorrelated results in multiple
+invocations.
+
+<p>This option was new in Netpbm 10.61 (December 2012).
+
 </dl>
 
 
diff --git a/pamrubber.html b/pamrubber.html
index a8768243..073e0835 100644
--- a/pamrubber.html
+++ b/pamrubber.html
@@ -19,7 +19,7 @@ based on control points
 {<b>-tri | -quad</b>}
 [<b>-linear</b>]
 [<b>-frame</b>]
-[<b>-randseed=</b><i>N</i>]
+[<b>-randomseed=</b><i>N</i>]
 <i>cp1x cp1y</i> [<i>cp2x cp2y</i> [<i>cp3x cp3y</i> [<i>cp4x cp4y</i>]]]
 <i>cp1x cp1y</i> [<i>cp2x cp2y</i> [<i>cp3x cp3y</i> [<i>cp4x cp4y</i>]]]
 [<i>filename</i>]
@@ -121,7 +121,7 @@ sheeting.  To get the same overlay for the source image, use a <b>pamrubber</b>
 transformation with identical control points for source and target.
 </dd>
 
-<dt><b>-randseed=</b><i>N</i></dt>
+<dt><b>-randomseed=</b><i>N</i></dt>
 <dd>
 <p><b>pamrubber</b> randomizes some of its output.  So that you can produce
 repeatable results, you can choose the seed of the random number generator
@@ -129,6 +129,10 @@ with this option.  If you use the same input image and the same random number
 generator seed, you should always get the exact same output.  By default,
 <b>pamrubber</b> uses the time of day as the seed, so you get slightly
 different output when you run the program twice on the same input.
+
+<p>Before Netpbm 10.61 (December 2012), this was called <b>-randseed</b>,
+and that still works.
+
 </dd>
 
 </dl>
diff --git a/pamsumm.html b/pamsumm.html
index 6eb76100..052fcce6 100644
--- a/pamsumm.html
+++ b/pamsumm.html
@@ -2,7 +2,7 @@
 <HTML><HEAD><TITLE>Pamsumm User Manual</TITLE></HEAD>
 <BODY>
 <H1>pamsumm</H1>
-Updated: 07 February 2004
+Updated: 26 October 2012
 <BR>
 
 <A HREF="#index">Table Of Contents</A>
@@ -89,7 +89,7 @@ extract it and then <b>pamsumm</b>.
      <p>If instead you want a result that is independent of maxval but still
      in integers, you can use <b>pamdepth</b> to convert the input to some
      standard maxval and not use <b>-normalize</b>.  For example, if you want
-     the mean intensity of a PPM image, on a scale of 0 to 99, do
+     the mean brightness of a PPM image, on a scale of 0 to 99, do
 
 <pre>
 <kbd>
diff --git a/pgmcrater.html b/pgmcrater.html
index 88c2a4ee..df57dfe1 100644
--- a/pgmcrater.html
+++ b/pgmcrater.html
@@ -22,6 +22,8 @@ pgmcrater - create cratered terrain by fractal forgery
 
 [<B>-gamma</B> <I>g</I>]
 
+[<b>-randomseed=</b><i>integer</i>]
+
 
 <H2 id="description">DESCRIPTION</H2>
 
@@ -115,6 +117,19 @@ generates is a genuine, gamma-corrected PGM image in any case.  This
 option simply changes the contrast and may compensate for a display
 device that does not correctly render PGM images.
 
+<dt><b>-randomseed=</b><i>integer</i>
+
+<dd>This is the seed for the random number generator that generates the
+pixels.
+
+<p>Use this to ensure you get the same image on separate invocations.
+
+<p>By default, <b>pgmnoise</b> uses a seed derived from the time of day
+and process ID, which gives you fairly uncorrelated results in multiple
+invocations.
+
+<p>This option was new in Netpbm 10.61 (December 2012).
+
 </DL>
 
 <H2 id="designnotes">DESIGN NOTES</H2>
diff --git a/pgmmedian.html b/pgmmedian.html
index bb2577f1..bbdf9d49 100644
--- a/pgmmedian.html
+++ b/pgmmedian.html
@@ -30,6 +30,7 @@ pgmmedian - apply a median filter to a PGM file
 hyphens instead of single hyphen to denote options.  You may use white
 space in place of the equals sign to separate an option name from its value.
 
+
 <H2 id="description">DESCRIPTION</H2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
@@ -37,9 +38,15 @@ space in place of the equals sign to separate an option name from its value.
 <p><b>pgmmedian</b> applies a median filter to a PGM image, using either
 the histogram sort or select kth value method to determine the median.
 
+<p>A median filter is a convolution filter in which the value of a pixel in
+the output is the median of a certain set of pixels in the neighborhood of the
+corresponding input pixel.  The effect is to eliminate locally extreme values.
+Such pixels typically show up as speckles.
+
 <p>See the <b>-type</b> and <b>-cutoff</b> options for information on
 how <b>pgmmedian</b> chooses between the two methods.
 
+
 <H2 id="options">OPTIONS</H2>
 
 <DL COMPACT>
@@ -102,6 +109,8 @@ Pitas, Prentice Hall, 1993 ISBN 0-13-145814-0
 
 <A HREF="pgmnoise.html">pgmnoise</A>,
 <A HREF="pamaddnoise.html">pamaddnoise</A>,
+<A HREF="pnmconvol.html">pnmconvol</A>,
+<A HREF="pgmmorphconv.html">pgmmorphconv</A>,
 <A HREF="pgm.html">pgm</A>
 
 <h2 id="history">HISTORY</h2>
diff --git a/pnmconvol.html b/pnmconvol.html
index ad0e56f6..556f80a8 100644
--- a/pnmconvol.html
+++ b/pnmconvol.html
@@ -259,6 +259,22 @@ convolution gets applied to each color component.  However, if you
 want to use a PPM and do a different convolution to different
 colors, you can certainly do that.
 
+
+<h3 id="otherconvol">Other Forms of Convolution</h3>
+
+<p><b>pnmconvol</b> does only arithmetic, linear combination convolution.
+There are other forms of convolution that are especially useful in image
+processing.
+
+<p><b>pgmmedian</b> does median filtering, which is a form of convolution
+where the output pixel value, rather than being a linear combination of the
+pixels in the window, is the median of a certain subset of them.
+
+<p><b>pgmmorphconv</b> does dilation and erosion, which is like the median
+filter but the output value is the minimum or maximum of the values in the
+window.
+
+
 <H2 id="options">OPTIONS</H2>
 
 <DL COMPACT>
@@ -335,6 +351,7 @@ the maxval.
 
 <B><A HREF="pnmsmooth.html">pnmsmooth</A></B>,
 <B><A HREF="pgmmorphconv.html">pgmmorphconv</A></B>,
+<B><A HREF="pgmmedian.html">pgmmedian</A></B>,
 <B><A HREF="pnmnlfilt.html">pnmnlfilt</A></B>,
 <B><A HREF="pgmkernel.html">pgmkernel</A></B>,
 <B><A HREF="pamgauss.html">pamgauss</A></B>,
diff --git a/pnmmontage.html b/pnmmontage.html
index bf4d2cbd..f3795dfa 100644
--- a/pnmmontage.html
+++ b/pnmmontage.html
@@ -2,7 +2,7 @@
 <HTML><HEAD><TITLE>Pnmmontage User Manual</TITLE></HEAD>
 <BODY>
 <H1>pnmmontage</H1>
-Updated: 03 November 2007
+Updated: 22 November 2012
 <BR>
 <A HREF="#index">Table Of Contents</A>
 
@@ -30,9 +30,11 @@ pnmmontage - create a montage of PNM images
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
-<p><b>pnmmontage</b> packs images of differing sizes into a
-minimum-area composite image, optionally producing a C header file
-with the locations of the subimages within the composite image.
+<p><b>pnmmontage</b> packs images of differing sizes into a minimum-area
+composite image.
+
+<p>Areas of the output that cannot be occupied by an image are black.
+
 
 <H2 id="options">OPTIONS</H2>
 
@@ -53,6 +55,19 @@ the packed image.  Here is an example:
 </pre>
 
 
+<p>There is a line for each component image and one for the composite.
+
+<p>The 5 fields on each line are:
+
+<ol>
+<li>source image name (or null string indicating the line for the composite
+image)
+<li>Column number of upper left corner of the image
+<li>Row number of upper left corner of the image
+<li>width of the image (columns)
+<li>height of the image (rows)
+</ol>
+
 <p>This option was new in Netpbm 10.6 (July 2002).
 
 <DT><B>-header=</B><i>filename</i>
diff --git a/ppmbrighten.html b/ppmbrighten.html
index e78e583c..56188ffc 100644
--- a/ppmbrighten.html
+++ b/ppmbrighten.html
@@ -2,16 +2,14 @@
 <HTML><HEAD><TITLE>Ppmbrighten User Manual</TITLE></HEAD>
 <BODY>
 <H1>ppmbrighten</H1>
-Updated: 09 January 2003
+Updated: 26 October 2012
 <BR>
 <A HREF="#index">Table Of Contents</A>
 
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 ppmbrighten - change a PPM image's Saturation and Value
 
-<A NAME="lbAC">&nbsp;</A>
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <b>ppmbrighten</b>
 [<b>-normalize</b>]
@@ -19,11 +17,12 @@ ppmbrighten - change a PPM image's Saturation and Value
 [<b>-value </b>[<b>+</b>|<b>-</b><i>value_percent</i>]]
 <i>ppmfile</i>
 
-<?makeman .SH OPTION USAGE ?>
-<P>All options can be abbreviated to their shortest unique prefix.
+<P>Minimum unique abbreviation of option is acceptable.  You may use
+double hyphens instead of single hyphen to denote options.  You may use
+white space in place of the equals sign to separate an option name
+from its value.
 
-<A NAME="lbAD">&nbsp;</A>
-<H2>DESCRIPTION</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -41,15 +40,14 @@ when we mean the number from the HSV color space, especially since
 "value" as a conventional English word has a much more abstract
 meaning.
 
-<p>Value is a measure of how much total light intensity is in the
-color, relative to some specified maximum (the PPM format is also
-defined in terms of a specified maximum intensity -- For the purposes
-of this program, they are the same).  In particular, it is the
-intensity of the most intense primary color component of the color
-divided by the maximum intensity possible for a component.  Zero Value
-means black.  White has full Value.
+<p>Value is a measure of how bright the color is, relative to some specified
+maximum (the PPM format is also defined in terms of a specified maximum
+brightness -- For the purposes of this program, they are the same).  In
+particular, it is the brightness of the brightest primary color component of
+the color divided by the maximum brightness possible for a component.  Zero
+Value means black.  White has full Value.
 
-<p>Hue is an indication of the secondary color with the same intensity
+<p>Hue is an indication of the secondary color with the same brightness
 that most closely approximates the color.  A secondary color is made
 of a combination of at most two of the primary colors.
 
@@ -68,33 +66,30 @@ increases it to full Value instead.
 you specify (e.g. it is already half saturated and you specify +200%),
 <b>ppmbrighten</b> increases it to full Saturation instead.
 
-<p>For a simpler kind of brightening, you can use <b>pamfunc
--multiplier</b> simply to increase the intensity of each pixel by a
-specified per centage, clipping each RGB component where the
-calculated intensity would exceed full intensity.  Thus, the brightest
-colors in the image would change chromaticity in addition to not
-getting the specified intensity boost.  For <em>decreasing</em>
-brightness, <b>pamfunc</b> should do the same thing as
+<p>For a simpler kind of brightening, you can use <b>pamfunc -multiplier</b>
+simply to increase the brightness of each pixel by a specified per centage,
+clipping each RGB component where the calculated brightness would exceed full
+brightness.  Thus, the brightest colors in the image would change chromaticity
+in addition to not getting the specified brightness boost.
+For <em>decreasing</em> brightness, <b>pamfunc</b> should do the same thing as
 <b>ppmbrighten</b>.
 
 <p><b>ppmflash</b> does another kind of brightening.  It changes the
 color of each pixel to bring it a specified per centage closer to white.
 This increases the value and saturation.
 
-<A NAME="examples"></a>
-<H2>EXAMPLES</H2>
+<H2 id="examples">EXAMPLES</H2>
 <p>To double the Value of each pixel:
 <pre>
 ppmbrighten -v 100
 </pre>
 
-<p>To double the Saturation and halve the value of each pixel:
+<p>To double the Saturation and halve the Value of each pixel:
 <pre>
 ppmbrighten -s 100 -v -50
 </pre>
 
-<A NAME="options"></a>
-<H2>OPTIONS</H2>
+<H2 id="options">OPTIONS</H2>
 
 <DL>
 <DT><b>-value </b><i>value_percent</i>
@@ -124,8 +119,7 @@ with a bogus error message.
 
 </DL>  
 
-<A NAME="lbAE">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <A HREF="pnmnorm.html">pnmnorm</A>, 
 <A HREF="ppmdim.html">ppmdim</A>, 
@@ -136,8 +130,7 @@ with a bogus error message.
 <A HREF="ppmhist.html">ppmhist</A>, 
 <A HREF="ppm.html">ppm</A>
 
-<A NAME="lbAF">&nbsp;</A>
-<H2>AUTHOR</H2>
+<H2 id="author">AUTHOR</H2>
 
 <p>Copyright (C) 1990 by Brian Moffet.
 Copyright (C) 1989 by Jef Poskanzer.
@@ -151,16 +144,14 @@ documentation.  This software is provided &quot;as is&quot; without express or
 implied warranty.
 
 <HR>
-<A NAME="index">&nbsp;</A>
-<H2>Table Of Contents</H2>
+<H2 id="index">Table Of Contents</H2>
 <UL>
-<LI><A HREF="#lbAB">NAME</A>
-<LI><A HREF="#lbAC">SYNOPSIS</A>
-<LI><A HREF="#lbAD">DESCRIPTION</A>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
 <LI><A HREF="#examples">EXAMPLES</A>
 <LI><A HREF="#options">OPTIONS</A>
-<LI><A HREF="#lbAE">SEE ALSO</A>
-<LI><A HREF="#lbAF">AUTHOR</A>
+<LI><A HREF="#seealso">SEE ALSO</A>
+<LI><A HREF="#author">AUTHOR</A>
 </UL>
 </BODY>
 </HTML>
diff --git a/ppmpat.html b/ppmpat.html
index d8a92a89..fb2ecba0 100644
--- a/ppmpat.html
+++ b/ppmpat.html
@@ -2,17 +2,15 @@
 <HTML><HEAD><TITLE>Ppmpat User Manual</TITLE></HEAD>
 <BODY>
 <H1>ppmpat</H1>
-Updated: 12 June 2004
+Updated: 24 November 2012
 <BR>
 <A HREF="#index">Table Of Contents</A>
 
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 
 ppmpat - make a pretty PPM image
 
-<A NAME="lbAC">&nbsp;</A>
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <B>ppmpat</B>
 {<B>-gingham2</B>|<B>-g2</B>} |
@@ -23,13 +21,14 @@ ppmpat - make a pretty PPM image
 <B>-squig</B> |
 <B>-camo</B> |
 <B>-anticamo</B>
+[<b>-randomseed=</b><i>integer</i>]
+
 <I>width</I> <I>height</I>
 
 
 <P>You can abbreviate any option to its shortest unique prefix.
 
-<A NAME="lbAD">&nbsp;</A>
-<H2>DESCRIPTION</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -46,8 +45,7 @@ should generate a nice background.
 <p>Some of these patterns have large numbers of colors, so if you want
 a simpler pattern, use <b>pnmquant</b> on the output.
 
-<A NAME="lbAE">&nbsp;</A>
-<H2>OPTIONS</H2>
+<H2 id="options">OPTIONS</H2>
 
 <P>The options specify various pattern types:
 
@@ -84,16 +82,27 @@ a simpler pattern, use <b>pnmquant</b> on the output.
 
 <DD>Anti-camouflage pattern - like -camo, but ultra-bright colors.
 
+<dt><b>-randomseed=</b><i>integer</i>
+
+<dd>This is the seed for the random number generator that generates the
+pixels.
+
+<p>Use this to ensure you get the same image on separate invocations.
+
+<p>By default, <b>ppmpat</b> uses a seed derived from the time of day
+and process ID, which gives you fairly uncorrelated results in multiple
+invocations.
+
+<p>This option was new in Netpbm 10.61 (December 2012).
+
 </DL>
 
-<A NAME="lbAF">&nbsp;</A>
-<H2>REFERENCES</H2>
+<H2 id="references">REFERENCES</H2>
 
 Some of the patterns are from &quot;Designer's Guide to Color 3&quot;
 by Jeanne Allen.
 
-<A NAME="lbAG">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <A HREF="pnmtile.html">pnmtile</A>, 
 <A HREF="pnmquant.html">pnmquant</A>, 
@@ -102,8 +111,7 @@ by Jeanne Allen.
 <A HREF="pamgradient.html">pamgradient</A>, 
 <A HREF="ppm.html">ppm</A>
 
-<A NAME="lbAH">&nbsp;</A>
-<H2>AUTHOR</H2>
+<H2 id="author">AUTHOR</H2>
 
 Copyright (C) 1989 by Jef Poskanzer.
 
@@ -111,13 +119,12 @@ Copyright (C) 1989 by Jef Poskanzer.
 <A NAME="index">&nbsp;</A>
 <H2>Table Of Contents</H2>
 <UL>
-<LI><A HREF="#lbAB">NAME</A>
-<LI><A HREF="#lbAC">SYNOPSIS</A>
-<LI><A HREF="#lbAD">DESCRIPTION</A>
-<LI><A HREF="#lbAE">OPTIONS</A>
-<LI><A HREF="#lbAF">REFERENCES</A>
-<LI><A HREF="#lbAG">SEE ALSO</A>
-<LI><A HREF="#lbAH">AUTHOR</A>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
+<LI><A HREF="#options">OPTIONS</A>
+<LI><A HREF="#references">REFERENCES</A>
+<LI><A HREF="#seealso">SEE ALSO</A>
+<LI><A HREF="#author">AUTHOR</A>
 </UL>
 </BODY>
 </HTML>
diff --git a/ppmrough.html b/ppmrough.html
index 20f6f098..07d6d36e 100644
--- a/ppmrough.html
+++ b/ppmrough.html
@@ -6,12 +6,10 @@ Updated: 23 August 2002
 <BR>
 <A HREF="#index">Table Of Contents</A>
 
-<A NAME="lbAB">&nbsp;</A>
 <H2>NAME</H2>
 ppmrough - create PPM image of two colors with a ragged border between them
-<A NAME="lbAC">&nbsp;</A>
 
-<H2>SYNOPSIS</H2>
+<H2 id="synopsis">SYNOPSIS</H2>
 
 <B>ppmrough</B>
 
@@ -33,7 +31,7 @@ ppmrough - create PPM image of two colors with a ragged border between them
 
 [<B>-var </B><I>pixels</I>]
 
-[<B>-init </B><I>seed</I>]
+[<B>-randomseed </B><I>seed</I>]
 
 [<B>-verbose</B>]
 
@@ -41,9 +39,7 @@ ppmrough - create PPM image of two colors with a ragged border between them
 You may use two hyphens instead of one.  You may separate an option
 name and its value with white space instead of an equals sign.
 
-<P>
-<A NAME="lbAD">&nbsp;</A>
-<H2>DESCRIPTION</H2>
+<H2 id="description">DESCRIPTION</H2>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
@@ -84,58 +80,60 @@ option.
 <P>You could use <b>ppmrough</b> with <b>ppmtopgm</b> to create a PGM
 alpha mask and use it to roughen up the edges of another image.
 
-<A NAME="lbAE">&nbsp;</A>
-<H2>OPTIONS</H2>
+<H2 id="options">OPTIONS</H2>
 
 <DL COMPACT>
-<DT><B>-left </B><I>pixels</I>
+<DT><B>-left=</B><I>pixels</I>
 
 <DD> Specifies the mean distance of the border from the left margin
 (default: no border).
 
-<DT><B>-right </B><I>pixels</I>
+<DT><B>-right=</B><I>pixels</I>
 
 <DD>Specifies the mean distance of the border from the right margin
 (default: no border).
 
-<DT><B>-top </B><I>pixels</I>
+<DT><B>-top=</B><I>pixels</I>
 
 <DD>Specifies the mean distance of the border from the top margin
 (default: no border).
 
-<DT><B>-bottom </B><I>pixels</I>
+<DT><B>-bottom=</B><I>pixels</I>
 
 <DD>Specifies the mean distance of the border from the bottom margin
 (default: no border).
 
-<DT><B>-width </B><I>pixels</I>
+<DT><B>-width=</B><I>pixels</I>
 
 <DD>Specifies the width of the image (default: 100).
 
-<DT><B>-height </B><I>pixels</I>
+<DT><B>-height=</B><I>pixels</I>
 
 <DD>Specifies the height of the image (default: 100).
 
-<DT><B>-bg </B><I>color</I>
+<DT><B>-bg=</B><I>color</I>
 
 <DD>Background color.  Specify this the same way you specify a color with
      <b>ppmmake</b>.  Default is black.
 
-<DT><B>-fg </B><I>color</I>
+<DT><B>-fg=</B><I>color</I>
 
 <DD>Foreground color.  Specify this the same way you specify a color with
      <b>ppmmake</b>.  Default is white.
 
-<DT><B>-var </B><I>pixels</I>
+<DT><B>-var=</B><I>pixels</I>
 
 <DD> Specifies the variance of the ragged border (default: 10). Must
 be a positive integer.  Set <I>pixels</I> to 1 to get a straight
 border.
 
-<DT><B>-init </B><I>seed</I>
+<DT><B>-randomseed=</B><I>seed</I>
 
 <DD>Use this option to initialize the pseudo-random number generator
-(the Standard C library <b>rand()</b> function) with <I>seed</I>.
+(the Standard C library <b>srand()</b> function) with <I>seed</I>.
+
+<p>Before Netpbm 10.61 (December 2012), this is called <b>-init</b>,
+and that still works.
 
 <DT><B>-verbose</B>
 
@@ -144,36 +142,31 @@ Standard Error.
 
 </DL>
 
-<A NAME="lbAF">&nbsp;</A>
-<H2>SEE ALSO</H2>
+<H2 id="seealso">SEE ALSO</H2>
 
 <B><A HREF="ppmmake.html">ppmmake</A></B>,
 <B><A HREF="pnmcat.html">pnmcat</A></B>,
 <B><A HREF="ppmtopgm.html">ppmtopgm</A></B>,
 <B><A HREF="ppm.html">ppm</A></B>,
 
-<A NAME="history">&nbsp;</A>
-<H2>HISTORY</H2>
+<H2 id="history">HISTORY</H2>
 
 <P>
 This program was added to Netpbm in Release 10.9 (September 2002).
 
-<A NAME="lbAG">&nbsp;</A>
-<H2>AUTHOR</H2>
+<H2 id="author">AUTHOR</H2>
 
 Copyright (C) 2002 by Eckard Specht.
 
 
 <HR>
-<A NAME="index">&nbsp;</A>
-<H2>Table Of Contents</H2>
+<H2 id="index">Table Of Contents</H2>
 <UL>
-<LI><A HREF="#lbAB">NAME</A>
-<LI><A HREF="#lbAC">SYNOPSIS</A>
-<LI><A HREF="#lbAD">DESCRIPTION</A>
-<LI><A HREF="#lbAE">OPTIONS</A>
-<LI><A HREF="#lbAF">SEE ALSO</A>
-<LI><A HREF="#lbAG">AUTHOR</A>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
+<LI><A HREF="#options">OPTIONS</A>
+<LI><A HREF="#seealso">SEE ALSO</A>
+<LI><A HREF="#author">AUTHOR</A>
 </UL>
 <HR>
 </BODY>
diff --git a/ppmtospu.html b/ppmtospu.html
new file mode 100644
index 00000000..dae8001e
--- /dev/null
+++ b/ppmtospu.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML><HEAD><TITLE>Ppmtospu User Manual</TITLE></HEAD>
+<BODY>
+<H1>ppmtospu</H1>
+Updated: 08 March 2012
+<BR>
+<A HREF="#index">Table Of Contents</A>
+
+<H2>NAME</H2>
+
+ppmtospu - convert a PPM image to an Atari Spectrum 512 image
+
+<H2 id="synopsis">SYNOPSIS</H2>
+
+<B>ppmtospu</B>
+
+[<b>-d0</b>|<b>-d2</b>|<b>-d4</b>]
+[<I>ppmfile</I>]
+
+<P>All options can be abbreviated to their shortest unique prefix.
+You may use two hyphens instead of one.  You may separate an option
+name and its value with white space instead of an equals sign.
+
+<H2 id="description">DESCRIPTION</H2>
+
+<p>This program is part of <a href="index.html">Netpbm</a>. 
+
+<p>This program converts from the PPM format to the uncompressed Spectrum 512
+image format used on Atari ST computers.
+
+<p>Input comes from the file you name with the <i>ppmfile</i> argument, or
+Standard Input by default.  Output goes to Standard Output.
+
+<p>The input must be 320 pixels wide by 200 pixels high.  If you have an
+image of a different size, you can use <b>pamcut</b> or <b>pamscale</b>
+to force it to these dimensions.
+
+
+<H2 id="options">OPTIONS</H2>
+
+<dl>
+<dt><b>-d0</b>
+<dd>The program does no dithering.
+
+<dt><b>-d2</b>
+<dd>The program uses a 2x2 ordered dither.
+<p>This is the default.
+
+<dt><b>-d4</b>
+<dd>The program uses a 4x4 ordered dither.
+    
+</dl>
+
+
+<H2 id="seealso">SEE ALSO</H2>
+
+
+<B><A HREF="sputoppm.html">sputoppm</A></B>,
+<B><A HREF="spctoppm.html">sputoppm</A></B>,
+<B><A HREF="pamscale.html">pamscale</A></B>,
+<B><A HREF="pamcut.html">pamcut</a></b>,
+<B><A HREF="ppm.html">ppm</A></B>
+
+
+<H2 id="author">AUTHOR</H2>
+
+Copyright (C) 1990 by Steve Belczyk
+
+
+<h2 id="history">HISTORY</H2>
+
+<P>This program was new in Netpbm 10.58 (March 2012).
+
+<p>But it was written in 1990.  Steve Belczyk posted it along
+with <b>sputoppm</b>, <b>spctoppm</b>, <b>pi1toppm</b>, and
+<b>pi1toppm</b> - all programs for dealing with Atari image formats -
+to comp.sources.misc on July 15, 1990.  For reasons that have been lost
+to history, all of these entered the Netpbm (then Pbmplus) distribution
+<em>except</em> <b>ppmtospu</b>.
+
+<P>Georges Kesseler wondered In March 2012 why there was no counterpart to
+<b>sputoppm</b> in Netpbm and searched the web, finding only one reference
+to <b>ppmtopsu</b>: the 1990 comp.sources.misc posting, including the source
+code.  He emailed the Netpbm maintainer suggesting it be added.
+
+<p>Bryan Henderson found the source code to be extremely primitive, not even
+using common library code.  So Bryan completely recoded it, but retained
+nearly all of the original logic.
+
+
+<HR>
+<H2 id="contents">Table Of Contents</H2>
+<UL>
+<LI><A HREF="#synopsis">SYNOPSIS</A>
+<LI><A HREF="#description">DESCRIPTION</A>
+<LI><A HREF="#options">OPTIONS</A>
+<LI><A HREF="#seealso">SEE ALSO</A>
+<LI><A HREF="#author">AUTHOR</A>
+</UL>
+</BODY>
+</HTML>
+