netpbm/netpbm-manfix.patch

2002 lines
71 KiB
Diff
Raw Normal View History

diff --git a/userguide/avstopam.html b/userguide/avstopam.html
index eb39766..d104518 100644
--- a/userguide/avstopam.html
+++ b/userguide/avstopam.html
@@ -2,25 +2,29 @@
<html><head><title>Avstopam User Manual</title></head>
<body>
<h1>avstopam</h1>
-Updated: 07 February 2010
-<br>
+
+<p>Updated: 7 February 2010</p>
+
+<p><a href="#index">Table Of Contents</a></p>
+
<a href="#index">Table Of Contents</a>
<h2>NAME</h2>
-<p>avstopam - convert an AVS X image to a Netpbm image
+<p>avstopam - convert an AVS X image to a Netpbm image</p>
+
-<h2 id="synopsis">SYNOPSIS</h2>
+<h2><a id="synopsis">SYNOPSIS</a></h2>
<p><b>avstopam</b>
[<i>avsfile</i>]
<h2 id="description">DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>avstopam</b> reads a Stardent <abbr title="Application
Visualization System">AVS</abbr> X image as input and produces a Netpbm
-image as output.
+image as output.</p>
<p><i>avsfile</i> is the input file, which defaults to Standard Input.
Output is always on Standard Output.
@@ -30,26 +34,26 @@ Output is always on Standard Output.
<p>There are no command line options defined specifically
for <b>avstopam</b>, but it recognizes the options common to all
programs based on libnetpbm (See <a href="index.html#commonoptions">
-Common Options</a>.)
+Common Options</a>.)</p>
<h2 id="author">AUTHOR</h2>
<p>Copyright&nbsp;&copy; 2010 Scott Pakin,
-<a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a>
+<a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a></p>
<h2 id="seealso">SEE ALSO</h2>
-<p><a href="pamtoavs.html">pamtoavs</a>, <a href="pam.html">pam</a>
+<p><a href="pamtoavs.html">pamtoavs</a>, <a href="pam.html">pam</a></p>
<hr>
<h2 id="index">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="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#see_also">SEE ALSO</a></li>
</ul>
</body>
</html>
diff --git a/userguide/escp2topbm.html b/userguide/escp2topbm.html
index 9e808b7..33b19a0 100644
--- a/userguide/escp2topbm.html
+++ b/userguide/escp2topbm.html
@@ -8,6 +8,7 @@ Updated: 14 July 2015
<h2>NAME</h2>
+<H2>NAME</H2>
escp2topbm - convert an ESC/P2 printer file to a PBM image
<h2 id="synopsis">SYNOPSIS</h2>
diff --git a/userguide/faxformat.html b/userguide/faxformat.html
index 44b1ba5..827ffc8 100644
--- a/userguide/faxformat.html
+++ b/userguide/faxformat.html
@@ -5,10 +5,11 @@
Updated: 03 December 2008
<br>
+<H2>SYNOPSIS</H2>
<p>This page, part of the <a href="index.html">Netpbm user's guide</a>,
describes FAX formats in relation to Netpbm facilities.
-
+<H2>DESCRIPTION</H2>
<p>The ITU (formerly CCITT) publishes standards for operation of fax machines
(the idea is to provide a way to be sure that a fax machine is able to receive
a fax sent by another). These standards incidentally specify graphics file
diff --git a/userguide/pampaintspill.html b/userguide/pampaintspill.html
index eeb1cac..e42db76 100644
--- a/userguide/pampaintspill.html
+++ b/userguide/pampaintspill.html
@@ -2,12 +2,12 @@
<html><head><title>Pampaintspill User Manual</title></head>
<body>
<h1>pampaintspill</h1>
-Updated: 09 February 2020
+<p>Updated: 09 February 2020
<br>
-<a href="#index">Table Of Contents</a>
+<a href="#index">Table Of Contents</a></p>
<h2>NAME</h2>
-pampaintspill - smoothly spill colors into the background
+<p>pampaintspill - smoothly spill colors into the background</p>
<h2 id="synopsis">SYNOPSIS</h2>
@@ -16,31 +16,31 @@ pampaintspill - smoothly spill colors into the background
[<b>--bgcolor</b>=<i>color</i>]
[<b>--wrap</b>] [<b>--all</b>]
[<b>--downsample</b>=<i>number</i>]
-[<b>--power</b>=<i>number</i>] [<i>filename</i>]
+[<b>--power</b>=<i>number</i>] [<i>filename</i>]</p>
<p>Minimum unique abbreviations of option are 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.
+from its value.</p>
<h2 id="description">DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>pampaintspill</b> produces a smooth color gradient from all of the
non-background-colored pixels in an input image, effectively "spilling
paint" onto the background. <b>pampaintspill</b> is similar to
-<b>pamgradient</b> but differs in the following characteristics:
+<b>pamgradient</b> but differs in the following characteristics:</p>
<ul>
<li><b>pampaintspill</b> accepts any number of paint
sources (non-background-colored pixels), which can lie anywhere
on the canvas. <b>pamgradient</b> accepts exactly
- four paint sources, one in each corner of the image.
+ four paint sources, one in each corner of the image.</li>
<li><b>pampaintspill</b> requires an input image while
<b>pamgradient</b> generates a new image from
- scratch.
+ scratch.</li>
<li><b>pampaintspill</b> can produce tileable output and
can control how tightly the gradient colors bind to their source
@@ -49,14 +49,14 @@ paint" onto the background. <b>pampaintspill</b> is similar to
<p>Results are generally best when the input image contains just a few, crisp
spots of color. Use your drawing program's pencil tool &mdash; as opposed to a
-paintbrush or airbrush tool &mdash; with a small nib.
+paintbrush or airbrush tool &mdash; with a small nib.</p>
<h2 id="options">OPTIONS</h2>
<p>In addition to the options common to all programs based on libnetpbm
(most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
Common Options</a>), <b>pampaintspill</b> recognizes the following
-command line options:
+command line options:</p>
<dl>
<dt><b>--bgcolor</b>=<i>color</i></dt>
diff --git a/userguide/pamrecolor.html b/userguide/pamrecolor.html
index 3f341d4..a5f2671 100644
--- a/userguide/pamrecolor.html
+++ b/userguide/pamrecolor.html
@@ -2,12 +2,15 @@
<html><head><title>Pamrecolor User Manual</title></head>
<body>
<h1>pamrecolor</h1>
-Updated: 31 July 2010
-<br>
-<a href="#index">Table Of Contents</a>
-<h2>NAME</h2>
-pamrecolor - alter colors without affecting luminance
+<p>Updated: 31 July 2010</p>
+
+<p><a href="#index">Table Of Contents</a></p>
+
+
+<h2 id="name">NAME</h2>
+
+<p>pamrecolor - alter colors without affecting luminance</p>
<h2 id="synopsis">SYNOPSIS</h2>
@@ -22,6 +25,7 @@ pamrecolor - alter colors without affecting luminance
[<b>-randomseed=</b><i>integer</i>]
[<i>infile</i>]
+</p>
<p>Minimum unique abbreviation of option is acceptable. You may use double
@@ -30,7 +34,7 @@ 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>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>pamrecolor</b> changes an image's colors to be as close as
possible to given target colors but with the constraint that the
@@ -39,7 +43,7 @@ image will look identical if both are converted to grayscale
(e.g. with
<a href="ppmtopgm.html">ppmtopgm</a>). You can have <b>pamrecolor</b> select
target colors randomly, specify a single hue for the entire image, or take the
-target colors from a target image.
+target colors from a target image.</p>
<p><b>pamrecolor</b> works on pseudo-Netpbm images based on arbitrary
color spaces. You can define the color space explicitly or choose one
@@ -49,7 +53,7 @@ of many that <b>pamrecolor</b> knows by name.
exact format of the PAM. If you want a PNM (PBM, PGM, or PPM) image,
use <a href="pamtopnm.html">pamtopnm</a> on the output. There is no
need to convert if you will use the image as input to a current Netpbm
-program, but many other programs don't know what a PAM is.
+program, but many other programs don't know what a PAM is.</p>
<h2 id="options">OPTIONS</h2>
@@ -57,7 +61,7 @@ program, but many other programs don't know what a PAM is.
<p>In addition to the options common to all programs based on libnetpbm
(most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
Common Options</a>), <b>pamrecolor</b> recognizes the following
-command line options:
+command line options:</p>
<dl>
@@ -109,12 +113,12 @@ the format that uses sRGB.
<p>The default is "ntsc" because this is the color space that the Netpbm
formats and many graphics utilities use. As a counterexample,
<a href="http://www.gimp.org/">GIMP</a> uses sRGB as its native color
-space.
+space.</p>
<p>The luminance values <b>pamrecolor</b> uses for each of the above come from
Bruce Lindbloom's
<a href="http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html">
-Computing RGB-to-XYZ and XYZ-to-RGB matrices</a> page.</dd>
+Computing RGB-to-XYZ and XYZ-to-RGB matrices</a> page.</p></dd>
<dt><b>--rmult</b>=<i>fraction</i></dt>
<dt><b>--gmult</b>=<i>fraction</i></dt>
@@ -137,7 +141,7 @@ library routine</a> (e.g.,&nbsp;"hotpink" or "#ff69b4").
<p>If you specify neither <b>--targetcolor</b> nor
<b>--colorfile</b>, <b>pamrecolor</b> will randomly select a target color for
-each pixel of the input image.
+each pixel of the input image.</p>
<p>You may not specify both <b>-targetcolor</b> and <b>-colorfile</b>.
@@ -154,7 +158,7 @@ image to be repeated in a tile pattern.
<p>If you specify neither <b>--targetcolor</b> nor
<b>--colorfile</b>, <b>pamrecolor</b> will randomly select a target color for
-each pixel of the input image.
+each pixel of the input image.</p>
<p>You may not specify both <b>-targetcolor</b> and <b>-colorfile</b>.
@@ -176,23 +180,23 @@ invocations.
<h2 id="examples">EXAMPLES</h2>
-<p>This command tints an image yellow:
+<p>This command tints an image yellow:</p>
<pre>
- pamrecolor --targetcolor=yellow colorpic.pam &gt; yellowpic.pam
+ pamrecolor --targetcolor=yellow colorpic.pam > yellowpic.pam
</pre>
<p>This command takes the colors from <b>colorpicture.ppm</b> and applies
-them to <b>graypicture.pgm</b>:
+them to <b>graypicture.pgm</b>:</p>
<pre>
- pamrecolor --colorfile=colorpic.ppm graypic.pgm &gt; colorizedpic.pam
+ pamrecolor --colorfile=colorpic.ppm graypic.pgm > colorizedpic.pam
</pre>
<p>The grayscale version of <b>colorizedpic.pam</b> will look just like
graypic.pgm. Note that if you use a non-Netpbm tool to do the conversion to
grayscale, you may additionally need to specify an
-appropriate <b>--colorspace</b> value for your conversion tool.
+appropriate <b>--colorspace</b> value for your conversion tool.</p>
<h2 id="notes">NOTES</h2>
@@ -203,25 +207,25 @@ appropriate <b>--colorspace</b> value for your conversion tool.
<ul>
<li>Specify a color file that is identical to the input image but with
some large, colored text added to it. The text will "magically"
-vanish when the image is converted to grayscale.
+vanish when the image is converted to grayscale.</li>
<li>Provide a low-contrast grayscale image &mdash; perhaps a secret
message written in similar shades of gray &mdash; as the input file and
a colorful but completely different image as the color file. If done
carefully, the grayscale image can be hidden by the colorful image.
Only people who know to convert the result to grayscale can recover
-the original grayscale image.
+the original grayscale image.</li>
<li>Use <b>--targetcolor</b>=tan to make an image look like an
old-timey photograph (or, more precisely, a
<a href="http://en.wikipedia.org/wiki/Photographic_print_toning">sepia-toned
-photograph</a> of the late 1800s).
+photograph</a> of the late 1800s).</li>
</ul>
<h2 id="history">HISTORY</h2>
-<p>Scott Pakin wrote <b>pamrecolor</b> in July 2010.
+<p>Scott Pakin wrote <b>pamrecolor</b> in July 2010.</p>
<p><b>pamrecolor</b> was new in Netpbm 10.52 (September 2010).
@@ -229,7 +233,7 @@ photograph</a> of the late 1800s).
<h2 id="author">AUTHOR</h2>
<p>Copyright (C) 2010 Scott
-Pakin, <a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a>
+Pakin, <a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a></p>
<h2 id="seealso">SEE ALSO</h2>
@@ -246,14 +250,14 @@ Pakin, <a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a>
<h2 id="index">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="#examples">EXAMPLES</a>
-<li><a href="#notes">NOTES</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#examples">EXAMPLES</a></li>
+<li><a href="#notes">NOTES</a></li>
+<li><a href="#history">HISTORY</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
</ul>
</body>
diff --git a/userguide/pamsistoaglyph.html b/userguide/pamsistoaglyph.html
index 1ca53ac..e545986 100644
--- a/userguide/pamsistoaglyph.html
+++ b/userguide/pamsistoaglyph.html
@@ -1,15 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.3//EN">
<html><head><title>Pamsistoaglyph User Manual</title></head>
<body>
+
<h1>pamsistoaglyph</h1>
-Updated: 05 April 2009
-<br>
-<a href="#index">Table Of Contents</a>
+
+<p>Updated: 5 April 2009</p>
+
+<p><a href="#index">Table Of Contents</a></p>
+
<h2>NAME</h2>
-pamsistoaglyph - convert a single-image stereogram to a red/cyan
-anaglyphic image
+<p>pamsistoaglyph - convert a single-image stereogram to a red/cyan
+anaglyphic image</p>
<h2 id="synopsis">SYNOPSIS</h2>
@@ -20,11 +23,11 @@ anaglyphic image
[--<b>minsep</b>=<i>number</i>]
[--<b>gray</b>=<i>number</i>]
[<i>in_netpbmfile</i>
-
+</p>
<p>All options can be abbreviated to their shortest unique prefix. You
may use either white space or an equals sign between an option name
-and its value.
+and its value.</p>
<h2 id="description">DESCRIPTION</h2>
@@ -32,7 +35,7 @@ and its value.
<p>This program is part of <a href="index.html">Netpbm</a>.
<p><b>pamsistoaglyph</b> reads a Netpbm image as input and
-produces a Netpbm image as output.
+produces a Netpbm image as output.</p>
<p><b>pamsistoaglyph</b> takes a single-image stereogram
(SIS) such as those produced by <a href=
@@ -45,11 +48,11 @@ shape hidden within a single-image stereogram. Anaglyphic stereograms
are easier to perceive in 3-D but require a pair of red/cyan glasses
such as those often used to watch 3-D movies. The goal of
<b>pamsistoaglyph</b> is to help people who have trouble
-viewing single-image stereograms see the intriguing 3-D effect.
+viewing single-image stereograms see the intriguing 3-D effect.</p>
<p><b>pamsistoaglyph</b> can convert single-image random-dot
stereograms (SIRDS), wallpaper stereograms, and even dual-image
-stereograms to anaglyphic images.
+stereograms to anaglyphic images.</p>
<h2 id="options">OPTIONS</h2>
@@ -57,13 +60,13 @@ stereograms to anaglyphic images.
<p>In addition to the options common to all programs based on libnetpbm
(most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
Common Options</a>), <b>pamsistoaglyph</b> recognizes the following
-command line options:
+command line options:</p>
<p>For most images, no command-line options need to be specified. The
-following options are available, however, for unusual circumstances.
+following options are available, however, for unusual circumstances.</p>
<dl>
-<dt><b>--invert</b>
+<dt><b>--invert</b></dt>
<dd>Swap the left- and right-eye
images. <b>pamsistoaglyph</b> assumes that its input
represents a wall-eyed stereogram and generates the anaglyphic
@@ -71,17 +74,17 @@ following options are available, however, for unusual circumstances.
the page where it should pop out of the page (and vice versa),
this typically implies that the input image represents a
cross-eyed stereogram. Use <b>--invert</b> to correct
- the image depth.
+ the image depth.</dd>
-<dt><b>--sep</b>=<i>number</i>
+<dt><b>--sep</b>=<i>number</i></dt>
<dd>Specify the distance in pixels between the left- and right-eye
images. Essentially, this corresponds to the distance between
repetitions of the background pattern. The <b>--sep</b>
option should rarely be necessary
as <b>pamsistoaglyph</b> is fairly good at determining
- automatically the eye-separation distance.
+ automatically the eye-separation distance.</dd>
-<dt><b>--minsep</b>=<i>number</i>
+<dt><b>--minsep</b>=<i>number</i></dt>
<dd>This option is similar to <b>--sep</b> but
constrains <b>pamsistoaglyph</b> only to
a <i>minimum</i> eye-separation distance. Any distance larger
@@ -90,9 +93,9 @@ following options are available, however, for unusual circumstances.
as <b>pamsistoaglyph</b> is fairly good at determining
automatically the eye-separation distance. The default value for
the minimum eye-separation distance is 10% of the image width;
- this value seems to work well in practice.
+ this value seems to work well in practice.</dd>
-<dt><b>--gray</b>=<i>number</i>
+<dt><b>--gray</b>=<i>number</i></dt>
<dd>Limit the number of gray levels to use when searching for the
optimal eye-separation
distance. Because <b>pamsistoaglyph</b> looks for
@@ -103,7 +106,7 @@ following options are available, however, for unusual circumstances.
unintentional color variations (such as those caused by conversion
from a low-quality JPEG image, for example). The default of 63
seems to work well so the <b>--gray</b> option should
- rarely be necessary.
+ rarely be necessary.</dd>
</dl>
@@ -112,22 +115,22 @@ following options are available, however, for unusual circumstances.
<p>The registration algorithm used by <b>pamsistoaglyph</b>
was developed specifically for this program. As far as the author
knows, there are no existing algorithms for converting stereograms to
-anaglyphs. The algorithm works as follows:
+anaglyphs. The algorithm works as follows:</p>
<ol>
<li>Convert the image to grayscale to increase the ability to identify
- matches.
+ matches.</li>
<li>Count the number of pixels that match <i>N</i> pixels ahead in the
- image for all <i>N</i> in [1, <i>width</i>/2].
+ image for all <i>N</i> in [1, <i>width</i>/2].</li>
<li>Maintain a running mean (&mu;) and standard deviation (&sigma;) of
- the number of matched pixels.
+ the number of matched pixels.</li>
<li>Store the <i>N</i> corresponding to each spike in the number of
matched pixels. A spike is defined as a tally that exceeds the
mean plus one, two, or three standard deviations. Only the first
- spike of a given standard-deviation multiplier is stored.
+ spike of a given standard-deviation multiplier is stored.</li>
<li>If a tally greater than &mu;+3&sigma; was encountered, return the
corresponding <i>N</i>. If not, then if a tally greater than
@@ -138,13 +141,13 @@ anaglyphs. The algorithm works as follows:
produces the minimum average distance between matched pixels
(i.e.,&nbsp;<i>#matches</i> divided by <i>#pixels</i>). If no
such <i>N</i> exceeds the minimum allowable eye-separation value,
- return zero to indicate failure.
+ return zero to indicate failure.</li>
<li>If the algorithm returned zero, rerun the algorithm independently
on each row of the input image and return the median of
all <i>N</i> that exceed the minimum allowable eye-separation
value. If no such <i>N</i> exists, abort with an error
- message.
+ message.</li>
</ol>
<h2 id="history">HISTORY</h2>
@@ -156,7 +159,7 @@ in Netpbm in Release 10.47 (June 2009).
<h2 id="author">AUTHOR</h2>
<p>Copyright (C) 2009 Scott
-Pakin, <a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a>
+Pakin, <a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a></p>
<h2 id="seealso">SEE ALSO</h2>
@@ -174,13 +177,13 @@ Pakin, <a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a>
<h2 id="index">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="#notes">NOTES</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#notes">NOTES</a></li>
+<li><a href="#history">HISTORY</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
</ul>
</body>
diff --git a/userguide/pamtoavs.html b/userguide/pamtoavs.html
index 5d0ae35..bee1a40 100644
--- a/userguide/pamtoavs.html
+++ b/userguide/pamtoavs.html
@@ -2,13 +2,15 @@
<html><head><title>Pamtoavs User Manual</title></head>
<body>
<h1>pamtoavs</h1>
-Updated: 07 February 2010
-<br>
-<a href="#index">Table Of Contents</a>
+
+<p>Updated: 7 February 2010</p>
+
+<p><a href="#index">Table Of Contents</a></p>
+
<h2>NAME</h2>
-<p>pamtoavs - convert a Netpbm image to an AVS X image
+<p>pamtoavs - convert a Netpbm image to an AVS X image</p>
<h2 id="synopsis">SYNOPSIS</h2>
@@ -17,7 +19,7 @@ Updated: 07 February 2010
<h2 id="description">DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>pamtoavs</b> reads a Netpbm image as input and produces a Stardent
<abbr title="Application Visualization System">AVS</abbr>
@@ -27,14 +29,14 @@ href="http://www.gnuplot.info/">Gnuplot</a>&nbsp;v4.2 and later can use.
<p><i>netpbmfile</i> is the input file, which defaults to Standard Input.
Output is always on Standard Output.
-<p>Try the following:
+<p>Try the following:</p>
<pre>
gnuplot&gt; plot 'myimage.avs' binary filetype=avs with rgbimage
</pre>
<p>See the <a href="http://www.gnuplot.info/documentation.html">Gnuplot
-manual</a> for more information.
+manual</a> for more information.</p>
<h2 id="options">OPTIONS</h2>
@@ -42,29 +44,29 @@ manual</a> for more information.
<p>There are no command line options defined specifically
for <b>pamtoavs</b>, but it recognizes the options common to all
programs based on libnetpbm (See <a href="index.html#commonoptions">
-Common Options</a>.)
+Common Options</a>.)</p>
<h2 id="author">AUTHOR</h2>
<p>Copyright&nbsp;&copy; 2010 Scott Pakin,
-<a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a>
+<a href="mailto:scott+pbm@pakin.org.">scott+pbm@pakin.org.</a></p>
<h2 id="seealso">SEE ALSO</h2>
<p><a href="avstopam.html">avstopam</a>,
<a href="http://www.gnuplot.info/">gnuplot</a>,
-<a href="pam.html">pam</a>
+<a href="pam.html">pam</a></p>
<hr>
<h2 id="index">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="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#see_also">SEE ALSO</a></li>
</ul>
</body>
diff --git a/userguide/pamtooctaveimg.html b/userguide/pamtooctaveimg.html
index 4e09e8e..d2cc50b 100644
--- a/userguide/pamtooctaveimg.html
+++ b/userguide/pamtooctaveimg.html
@@ -2,13 +2,13 @@
<html><head><title>Pamtooctaveimg User Manual</title></head>
<body>
<h1>pamtooctaveimg</h1>
-<br>
-<p>Updated: 27 June 2007<br>
-<a href="#index">Table Of Contents</a>
+
+<p>Updated: 27 June 2007<br />
+<a href="#index">Table Of Contents</a></p>
<h2>NAME</h2>
-<p>pamtooctaveimg - convert a Netpbm image to a GNU Octave image
+<p>pamtooctaveimg - convert a Netpbm image to a GNU Octave image</p>
<h2 id="synopsis">SYNOPSIS</h2>
@@ -17,7 +17,7 @@
<h2 id="description">DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>pamtooctaveimg</b> reads a Netpbm image as input and produces a <a
href="http://www.octave.org/">GNU Octave</a> image file as output.
@@ -45,7 +45,7 @@ Image Processing chapter</a> of the GNU Octave manual for details.
<p>There are no command line options defined specifically
for <b>pamtooctaveimg</b>, but it recognizes the options common to all
programs based on libnetpbm (See <a href="index.html#commonoptions">
-Common Options</a>.)
+Common Options</a>.)</p>
<h2 id="arguments">ARGUMENTS</h2>
@@ -77,7 +77,8 @@ specify <i>netpbmfile</i>, the input is from Standard Input.
<h2 id="notes">NOTES</h2>
<p>There is no <b>octavetopam</b> program. However, GNU Octave's
-<b>saveimage</b> command can save images in PPM format.
+<b>saveimage</b> command can save images in PPM format.</p>
+
<h2 id="history">HISTORY</h2>
@@ -86,7 +87,7 @@ specify <i>netpbmfile</i>, the input is from Standard Input.
<h2 id="author">AUTHOR</h2>
<p>Copyright (C) 2007 Scott Pakin,
-<a href="mailto:scott+pbm@pakin.org">scott+pbm@pakin.org</a>.
+<a href="mailto:scott+pbm@pakin.org">scott+pbm@pakin.org</a>.</p>
<h2 id="seealso">SEE ALSO</h2>
@@ -98,15 +99,15 @@ href="http://www.gnu.org/software/octave/doc/interpreter/index.html"><b>octave</
<h2 id="index">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="#arguments">ARGUMENTS</a>
-<li><a href="#examples">EXAMPLES</a>
-<li><a href="#notes">NOTES</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#arguments">ARGUMENTS</a></li>
+<li><a href="#examples">EXAMPLES</a></li>
+<li><a href="#notes">NOTES</a></li>
+<li><a href="#history">HISTORY</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
</ul>
</body>
</html>
diff --git a/userguide/pnmflip.html b/userguide/pnmflip.html
index 2bd7368..8a1916e 100644
--- a/userguide/pnmflip.html
+++ b/userguide/pnmflip.html
@@ -5,17 +5,18 @@
<h2>NAME</h2>
-pnmflip - replaced by pamflip
+<p>pnmflip - replaced by pamflip</p>
<h2>DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>pnmflip</b> was replaced in Netpbm 10.13 (December 2002) by
<b><a href="pamflip.html">pamflip</a></b>.
+<h2>DESCRIPTION</h2>
<p><b>pamflip</b> is mostly backward compatible with <b>pnmflip</b>,
-but works on PAM images too.
+but works on PAM images too.</p>
<p>One way <b>pamflip</b> is not backward compatible with <b>pnmflip</b>
is that <b>pnmflip</b> lets you specify any number of basic flip options,
@@ -23,12 +24,12 @@ whereas <b>pamflip</b> requires exactly one. (<b>pamflip</b> provides
the <b>-xform</b> option for requesting multiple transformations, though).
Because of this incompatibility, <b>pnmflip</b> still exists as a
separate program, and all it does is translate its options to <b>pamflip</b>
-style and run <b>pamflip</b>.
+style and run <b>pamflip</b>.</p>
<p>You should not make any new use of <b>pnmflip</b> and if you modify an
existing use, you should upgrade to <b>pamflip</b>. But note that if you
write a program that might have to be used with very old
-Netpbm, <b>pnmflip</b> is the only way to do that.
+Netpbm, <b>pnmflip</b> is the only way to do that.</p>
</body>
</html>
diff --git a/userguide/pnmmercator.html b/userguide/pnmmercator.html
index 998f7fb..65576ac 100644
--- a/userguide/pnmmercator.html
+++ b/userguide/pnmmercator.html
@@ -18,11 +18,12 @@ projection and vice-versa
[<b><i>filename</i></b>]
<p>Minimum unique abbreviation of option is acceptable.
-You may use double hyphens instead of single hyphen to denote options.
+You may use double hyphens instead of single hyphen to denote options.</p>
<h2 id="description">DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a
+href="index.html">Netpbm</a>.</p>
<p>The <b>pnmmercator</b> utility, converts a rectangular projection worldmap
to a Mercator projection format, as used for maps.google.com and many other
@@ -31,34 +32,34 @@ online maps. The map used as input for <b>pnmmercator</b> must have rows for
file will typically be twice as wide as high, but this is not a
requirement. The output file will be using the <a
href="http://en.wikipedia.org/wiki/Mercator_projection">Mercator
-projection</a> and will get double the height of the input file.
+projection</a> and will get double the height of the input file.</p>
<p>Maps using the Mercator projection are stretched more the closer a row is
to the North or South Pole. The last few degrees (&gt; 85 or &lt; -85 degrees)
are not part of a Mercator map at all because they would be stretched too much
and the rows close to the edge will show banding, because they originate from
-the same row in the original map.
+the same row in the original map.</p>
<p>To overcome this, the program will by default do interpolation of pixel
colors, which will eliminate the banding effect, but will cause some blurring
of the output. With the -nomix option, this interpolation of colors isn't
applied. You can obtain the highest quality output by starting with an input
map of high resolution, so that you can follow the <b>pnmmercator</b>
-transformation with a <b>pamscale</b> reduction in size.
+transformation with a <b>pamscale</b> reduction in size.</p>
<p>This program can also convert a Mercator projection map back to a
rectangular projection based. As said, the Mercator map doesn't have
information about the latitudes close to the poles. Therefore the top rows in
the output image will be identical and copied from the row corresponding with
-latitude of 85 degrees. The same at the bottom of the map.
+latitude of 85 degrees. The same at the bottom of the map.</p>
<p>Pnmmercator doesn't have any provision for scaling the image. You can scale
by piping the output of the program through Netpbm programs such as
-<b>pamscale</b>.
+<b>pamscale</b>.</p>
<p>You can find maps to be used as input at <a
href="http://flatplanet.sourceforge.net/maps/natural.html">flatplanet.sourceforge.net</a>
-or <a href="http://www.evl.uic.edu/pape/data/Earth/">uic.edu/pape</a>.
+or <a href="http://www.evl.uic.edu/pape/data/Earth/">uic.edu/pape</a>.</p>
<p>The point of a Mercator projection map is that compass directions work on
it. If you draw a straight line northeast from some point on the Mercator
@@ -78,33 +79,33 @@ proportional to angular longitude.
<h2 id="parameters">PARAMETERS</h2>
<p><b><i>filename</i></b> is the name of the input file. If you don't specify
-this, <b>pnmmercator</b> reads the image from standard Input.
+this, <b>pnmmercator</b> reads the image from standard Input.</p>
<h2 id="options">OPTIONS</h2>
<p>In addition to the options common to all programs based on libnetpbm
(most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
Common Options</a>), <b>pnmmercator</b> recognizes the following
-command line options:
+command line options:</p>
<dl compact>
<dt><b>-inverse</b></dt>
<dd>
<p>With this option a conversion from Mercator to degrees is applied.The
-output image will have half the height of the input map.
+output image will have half the height of the input map.</p>
</dd>
<dt><b>-nomix</b></dt>
<dd>
<p>Default behaviour is that color blending is applied in between two adjacent
rows. If you specify the -nomix parameter there is no blending. The
consequence is a banding at the top and bottom of the map. With this option,
-the output map will also consist of exactly the same colors as the input.
+the output map will also consist of exactly the same colors as the input.</p>
</dd>
<dt><b>-verbose</b> and <b>-vverbose</b></dt>
<dd>
<p>This parameter outputs some additional information. If you double the 'v',
it will output debug data about the lat/long degree and Mercator
-conversions.
+conversions.</p>
</dd>
</dl>
@@ -114,25 +115,26 @@ conversions.
<b><a href="ppmglobe.html">ppmglobe</a></b>
<h2 id="history">HISTORY</h2>
-<p><b>pnmmercator</b> was new in Netpbm 10.49 (December 2009).
+<p><b>pnmmercator</b> was new in Netpbm 10.49 (December 2009).</p>
<h2 id="authors">AUTHORS</h2>
<p><a href="mailto:willem@schaik.com">Willem van Schaik</a> (of
<b>pnmtopng</b>/<b>pngtopnm</b> fame) wrote this program in October 2009 and
-suggested it for inclusion in Netpbm.
+suggested it for inclusion in Netpbm.</p>
<hr>
<h2 id="index">Table Of Contents</h2>
<ul>
<li><a href="#synopsis">SYNOPSIS</a>
-<li><a href="#description">DESCRIPTION</a>
-<li><a href="#parameters">PARAMETERS</a>
-<li><a href="#options">OPTIONS</a>
-<li><a href="#seealso">SEE ALSO</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#authors">AUTHORS</a>
+</li><li><a href="#description">DESCRIPTION</a>
+</li><li><a href="#parameters">PARAMETERS</a>
+</li><li><a href="#options">OPTIONS</a>
+</li><li><a href="#seealso">SEE ALSO</a>
+</li><li><a href="#history">HISTORY</a>
+</li><li><a href="#authors">AUTHORS</a>
+</li>
</ul>
</body>
</html>
diff --git a/userguide/ppmtogif.html b/userguide/ppmtogif.html
index 513133a..fa72e09 100644
--- a/userguide/ppmtogif.html
+++ b/userguide/ppmtogif.html
@@ -5,17 +5,16 @@
<h2>NAME</h2>
-ppmtogif - replaced by pamtogif
-
-<h2>DESCRIPTION</h2>
-
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>ppmtogif - replaced by pamtogif</p>
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>ppmtogif</b> was replaced in Netpbm 10.37 (December 2006) by
-<b><a href="pamtogif.html">pamtogif</a></b>.
+<b><a href="pamtogif.html">pamtogif</a></b>.</p>
+<h2>SYNOPSIS</h2>
<p><b>pamtogif</b> is mostly backward compatible with <b>ppmtogif</b>.
+<h2>DESCRIPTION</h2>
<p>One way <b>pamtogif</b> is not backward compatible with <b>ppmtogif</b>
is that to specify a transparency (alpha) mask with <b>ppmtogif</b>, you
supply the transparency as a separate pseudo-PGM image and use the
@@ -77,8 +76,8 @@ the alpha image need not have the same maxval as the input.
<b>ppmtogif</b> interprets the alpha file using the alpha file's
maxval.
-<p>You cannot specify both <b>-transparent</b> and <b>-alpha</b>.
+<p>You cannot specify both <b>-transparent</b> and <b>-alpha</b>.</p>
-</body>
-</html>
+</BODY>
+</HTML>
diff -urNp a/userguide/pamstereogram.html b/userguide/pamstereogram.html
--- a/userguide/pamstereogram.html 2021-01-26 13:41:35.057401508 +0100
+++ b/userguide/pamstereogram.html 2021-01-26 14:23:22.076294594 +0100
@@ -9,7 +9,8 @@
<h2>NAME</h2>
-pamstereogram - create a single-image stereogram from a PAM depth map
+<p>pamstereogram - create a single-image stereogram from a PAM
+depth map</p>
<h2 id="synopsis">SYNOPSIS</h2>
@@ -39,13 +40,13 @@ pamstereogram - create a single-image st
[<b>-randomseed=</b><i>integer</i>]
[<b>-tileable</b>]
[<i>infile</i>]
-
+</p>
<h2 id="description">DESCRIPTION</h2>
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
<p><b>pamstereogram</b> inputs a depth map (a map of the distances
from your eye of the points in a scene) and outputs a single-image
@@ -55,22 +56,22 @@ eyes. What's exciting about single-image
don't require special glasses to view, although it does require a bit
of practice to train your eyes to unfocus properly. The
<b>pamstereogram</b> program provides a wealth of control over how the
-stereogram is generated, including the following:
+stereogram is generated, including the following:</p>
<ul>
-<li>black and white, grayscale, or color output
+<li>black and white, grayscale, or color output</li>
<li>single-image random-dot stereograms (SIRDS), single-image
stereograms (SIS) using a tiled image, or mapped-texture stereograms
-(MTS)
+(MTS)</li>
-<li>images targeting a given device resolution and eye separation
+<li>images targeting a given device resolution and eye separation</li>
-<li>optional guide boxes to assist in focusing
+<li>optional guide boxes to assist in focusing</li>
-<li>the ability to trade off depth levels for easier viewing
+<li>the ability to trade off depth levels for easier viewing</li>
-<li>choice of wall-eyed or cross-eyed stereograms
+<li>choice of wall-eyed or cross-eyed stereograms</li>
</ul>
<p>The output is a PAM image on standard output. Options control
@@ -80,7 +81,7 @@ if you will use the image as input to a
many other programs don't know what a PAM is.
<p>To make a red/cyan type of stereogram (that you view with 3-D
-glasses) instead, see <b>ppm3d</b>.
+glasses) instead, see <b>ppm3d</b>.</p>
<h2 id="options">OPTIONS</h2>
@@ -92,32 +93,32 @@ from its value.
<p>In addition to the options common to all programs based on libnetpbm
(most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
Common Options</a>), <b>pamstereogram</b> recognizes the following
-command line options:
+command line options:</p>
<dl>
-<dt><b>-verbose</b>
+<dt><b>-verbose</b></dt>
<dd>Display messages about image sizes and formats and properties
-of the stereogram being generated.
+of the stereogram being generated.</dd>
-<dt><b>-blackandwhite</b>
+<dt><b>-blackandwhite</b></dt>
<dd>Produce a single-image random-dot black-and-white stereogram.
-This is the default.
+This is the default.</dd>
-<dt><b>-grayscale</b>
-<dd>Produce a single-image random-dot grayscale stereogram.
+<dt><b>-grayscale</b><dt>
+<dd>Produce a single-image random-dot grayscale stereogram.</dd>
-<dt><b>-color</b>
-<dd>Produce a single-image random-dot color stereogram.
+<dt><b>-color</b></dt>
+<dd>Produce a single-image random-dot color stereogram.</dd>
-<dt><b>-maxval=</b><i>value</i>
+<dt><b>-maxval=</b><i>value</i></dt>
<dd>Designate the maximum value of each gray/color component, i.e.
the color resolution. Smaller values make the output image have
smaller numbers of unique grays/colors. If you don't specify
<b>-maxval</b>, <b>pamstereogram</b> uses the maxval of the input
-image. This option has no effect with <b>-blackandwhite</b>.
+image. This option has no effect with <b>-blackandwhite</b>.</dd>
-<dt><b>-patfile=</b><i>pamfile</i>
+<dt><b>-patfile=</b><i>pamfile</i></dt>
<dd>Specify an image to use as a repeated background pattern for
the stereogram instead of a random-dot pattern. Intricate images
generally produce a crisper 3-D effect that simpler images. The
@@ -126,9 +127,9 @@ grayscale or color) as the pattern file.
<b>-patfile</b> option along with <b>-blackandwhite</b>,
<b>-grayscale</b>, <b>-color</b>, or <b>-maxval</b>. The
<b>-verbose</b> option will give you information on the ideal
-dimensions of the pattern file.
+dimensions of the pattern file.</dd>
-<dt><b>-xbegin=</b><i>pixels</i>
+<dt><b>-xbegin=</b><i>pixels</i></dt>
<dd>Specify the horizontal coordinate at which to begin stereogram generation.
The background pattern will be minimally distorted at this point and more
distorted at greater distances. Consider using this in conjunction
@@ -136,38 +137,38 @@ with <b>-xshift</b> to align the horizon
horizontal start of stereogram generation. <b>-xbegin</b> is meaningful only
in conjunction with <b>-patfile</b>, <b>-makemask</b>, or <b>-texfile</b>,
and <b>pamstereogram</b> actually ignores it with respect to <b>-texfile</b>
-(but may not in a future version of <b>pamstereogram</b>).
+(but may not in a future version of <b>pamstereogram</b>).</dd>
-<p>The default is to begin in the center.
+<p>The default is to begin in the center.</p>
-<p>This option was new in Netpbm 10.71 (June 2015).
+<p>This option was new in Netpbm 10.71 (June 2015).</p>
-<dt><b>-texfile=</b><i>pamfile</i>
+<dt><b>-texfile=</b><i>pamfile</i></dt>
<dd>Specify an image to use as the texture for a mapped-texture
stereogram. The idea is that the depth-map image provides the depth
values of the 3-D object/scene while the texture image provides the
true-color values. Consequently, the texture image should align with
the depth-map image. (Note that it's required to have the same
dimensions.) The texture image's background color is ignored when
-blending colors.
+blending colors.</dd>
-<p>This option was new in Netpbm 10.53 (December 2010).
+<p>This option was new in Netpbm 10.53 (December 2010).</p>
-<dt><b>-bgcolor=</b><i>color</i>
+<dt><b>-bgcolor=</b><i>color</i></dt>
<dd>Use <i>color</i> as the texture image's background color instead
of letting <b>pamstereogram</b> determine it automatically. Specify
the color as described for the
<a href="libnetpbm_image.html#colorname">argument of the pnm_parsecolor() library
routine</a>. The <b>-bgcolor</b> option is meaningful only in conjunction
-with <b>-texfile</b>.
+with <b>-texfile</b>.</dd>
-<p>This option was new in Netpbm 10.53 (December 2010).
+<p>This option was new in Netpbm 10.53 (December 2010).</p>
-<dt><b>-smoothing=</b><i>pixels</i>
+<dt><b>-smoothing=</b><i>pixels</i></dt>
<dd>When used without <b>-texfile</b>, attempt to eliminate artifacts
-introduced by edges in the depth map if <i>pixels</i> is greater than zero.
+introduced by edges in the depth map if <i>pixels</i> is greater than zero.</dd>
<p>When used with <b>-texfile</b>, horizontally blur non-background
colors into background pixels up to a distance of <i>pixels</i> pixels.
@@ -176,22 +177,22 @@ by the stereogram's color constraints wh
stereogram. In this case, the <b>-smoothing</b> option is helpful
when the texture image includes smooth color transitions (as in a
photograph) but makes crisp texture images (as in a line drawing)
-appear blurry.
+appear blurry.</p>
<p>This option was new in Netpbm 10.53 (December 2010). Before
-Netpbm 10.61 (December 2012), it has no effect without <b>-texfile</b>.
+Netpbm 10.61 (December 2012), it has no effect without <b>-texfile</b>.</p>
-<dt><b>-xshift=</b><i>pixels</i>
+<dt><b>-xshift=</b><i>pixels</i></dt>
<dd>Shift the pattern image (designated by <b>-patfile</b>) to the
-right by <i>pixels</i> pixels (default: 0).
-<p>
-This option is valid only along with <b>-patfile</b>.
+right by <i>pixels</i> pixels (default: 0).</dd>
+
+<p>This option is valid only along with <b>-patfile</b>.</p>
-<dt><b>-yshift</b> <i>pixels</i>
+<dt><b>-yshift</b> <i>pixels</i></dt>
<dd>Shift the pattern image (designated by <b>-patfile</b>)
downwards by <i>pixels</i> pixels (default: 0). This option is
-valid only along with <b>-patfile</b>.
+valid only along with <b>-patfile</b>.</dd>
<dt><b>-yfillshift</b> <i>pixels</i></dt>
<dd>Shift the pattern image (designated by <b>-patfile</b>) downwards
@@ -200,77 +201,77 @@ population of the pattern. (If used wit
shifts are summed.) A small <b>-yfillshift</b> helps reduce visual
artifacts in the 3-D image. Steer's website, referenced under
<a href="#seealso">SEE ALSO</a>, recommends a shift of approximately
-1/16" (6&ndash;7 pixels at <b>pamstereogram</b>'s default of 100 DPI).
+1/16" (6&ndash;7 pixels at <b>pamstereogram</b>'s default of 100 DPI).</dd>
-<p>This option was new in Netpbm 10.94 (March 2021).
+<p>This option was new in Netpbm 10.94 (March 2021).</p>
-<dt><b>-magnifypat=</b><i>scale</i>
+<dt><b>-magnifypat=</b><i>scale</i></dt>
<dd>Magnify each pixel in the pattern file or each random dot by
integral scaling factor <i>scale</i>. Note that
<b>pamstereogram</b> applies the pattern magnification
<em>after</em> pattern shifting (<b>-xshift</b> and
-<b>-yshift</b>).
+<b>-yshift</b>).</dd>
-<dt><b>-guidebottom</b>
+<dt><b>-guidebottom</b></dt>
<dd>
Draw a pair of black squares on a white background underneath the stereogram
proper. These squares help you guide your eyes into proper focus to view the
3-D image. The trick is to focus your eyes some distance behind the image,
causing you to see four black squares, then continue altering your focus
distance until the middle two black squares fuse into a single black
-square. At that point, a crisp, 3-D image will appear.
+square. At that point, a crisp, 3-D image will appear.</dd>
<p>This option was new in Netpbm 10.61 (December 2012). Before that,
the presence of <b>-guidesize</b>, with a positive value, has the same
-effect.
+effect.</p>
-<dt><b>-guidetop</b>
+<dt><b>-guidetop</b></dt>
<dd>
-Same as <b>-guidebottom</b>, except the guides go at the top of the image.
+Same as <b>-guidebottom</b>, except the guides go at the top of the image.</dd>
<p>This option was new in Netpbm 10.61 (December 2012). Before that,
the presence of <b>-guidesize</b>, with a negative value, has the same
-effect.
+effect.</p>
-<dt><b>-guidesize=</b><i>pixels</i>
+<dt><b>-guidesize=</b><i>pixels</i></dt>
-<dd>The size (width and height) of each guide box.
+<dd>The size (width and height) of each guide box.</dd>
-<p>This is valid only with <b>-guidetop</b> or <b>-guidebottom</b>.
+<p>This is valid only with <b>-guidetop</b> or <b>-guidebottom</b>.</p>
-<p>Default is 20.
+<p>Default is 20.</p>
<p>Before Netpbm 10.61 (December 2012), if you don't specify this option,
<b>pamstereogram</b> draws no guides. If you specify it with a positive
value, <b>pamstereogram</b> behaves as if you specified <b>-guidebottom</b>
too, and if you specify it with a negative value, it behaves as if you
specified <b>-guidetop</b> and specified <b>guidesize</b> with the absolute
-value of that negative value.
+value of that negative value.</p>
-<dt><b>-dpi=</b><i>resolution</i>
+<dt><b>-dpi=</b><i>resolution</i></dt>
<dd>Specify the resolution of the output device in dots per inch.
The default is 100 DPI, which represents a fairly crisp screen
-resolution.
+resolution.</dd>
-<p>Before Netpbm 10.53 (December 2010), the default was 96 DPI.
+<p>Before Netpbm 10.53 (December 2010), the default was 96 DPI.</p>
-<dt><b>-crosseyed</b>
+<dt><b>-crosseyed</b></dt>
<dd>Invert the gray levels in the depth map (input image) so that the 3-D
image pops out of the page where it would otherwise sink into the page and
vice versa. Some people are unable to diverge their eyes and can only cross
them. The <b>-crosseyed</b> option enables such people to see the 3-D image as
intended. You can also specify the <b>-crosseyed</b> option if you prefer
using depth maps in which darker colors are closer to the eye and lighter
-colors are farther from the eye.
+colors are farther from the eye.</dd>
<p>Before Netpbm 10.53 (December 2010), <b>pamstereogram</b> used higher
(lighter) numbers for things closer to the eye <em>without</em>
-<b>-crosseyed</b> and vice versa.
+<b>-crosseyed</b> and vice versa.</p>
-<dt><b>-makemask</b>
+<dt><b>-makemask</b></dt>
<dd>Instead of a stereogram, output a PAM mask image showing
coloring constraints. New pixels will be taken from the pattern
file where the mask is black. Copies of existing pixels will be
@@ -278,30 +279,30 @@ taken from the pattern file where the ma
<b>-makemask</b> option can be used to help create more
sophisticated pattern files (to use with <b>-patfile</b>) Note that
<b>-makemask</b> ignores <b>-magnifypat</b>; it always produces
-masks that assume a pattern magnification of 1.
+masks that assume a pattern magnification of 1.</dd>
-<dt><b>-eyesep=</b><i>inches</i>
+<dt><b>-eyesep=</b><i>inches</i></dt>
<dd>Specify the separation in inches between your eyes. The
default, 2.5 inches (6.4 cm), should be sufficient for most people
-and probably doesn't need to be changed.
+and probably doesn't need to be changed.</dd>
-<dt><b>-depth=</b><i>fraction</i>
+<dt><b>-depth=</b><i>fraction</i></dt>
<dd>Specify the output image's depth of field. That is,
<i>fraction</i> represents the fractional distance of the near
plane from the far plane. Smaller numbers make the 3-D image easier
to perceive but flatter. Larger numbers make the 3-D image more
difficult to perceive but deeper. The default, 0.3333, generally
-works fairly well.
+works fairly well.</dd>
-<dt><b>-planes=</b><i>near_pixels</i>,<i>far_pixels</i>
+<dt><b>-planes=</b><i>near_pixels</i>,<i>far_pixels</i></dt>
<dd>Explicitly specify the distance between repeated pixels in the near plane
and in the far plane. This is an alternative to
<b>-eyesep</b> and <b>-depth</b>. The following equalities hold:
<ul>
- <li><i>eyesep</i> = 2 * <i>far</i>
+ <li><i>eyesep</i> = 2 * <i>far</i></li>
<li><i>depth</i> = 2 * (<i>far</i> &minus; <i>near</i>) /
- (2 * <i>far</i> &minus; <i>near</i>)
+ (2 * <i>far</i> &minus; <i>near</i>)</li>
</ul>
<p>The number of distinct 3-D depths is <i>far</i>
@@ -309,34 +310,35 @@ and in the far plane. This is an altern
and <b>-depth</b> are a more human-friendly way to specify stereoscopic
parameters (distance between eyes and tradeoff between perceptibility
and depth) while <b>-planes</b> is a more computer-centric way (pixel
-distances in the resulting stereogram).
+distances in the resulting stereogram).</p>
-<p>This option was new in Netpbm 10.59 (June 2012).
+<p>This option was new in Netpbm 10.59 (June 2012).</p>
+</dd>
-<dt><b>-randomseed=</b><i>integer</i>
+<dt><b>-randomseed=</b><i>integer</i></dt>
<dd>Specify a seed to be used for the random number generator.
The default is to use a seed based on the time of day, to one second
-granularity.
+granularity.</dd>
<p>It is useful to specify the seed if you want to create reproducible
results. With the same random seed, you should get identical results
-every time you run <b>pamstereogram</b>.
+every time you run <b>pamstereogram</b>.</p>
<p>This is irrelevant if you use a pattern file (<b>-patfile</b>
option), because there is no random element to <b>pamstereogram</b>'s
-behavior.
+behavior.</p>
-<p>This option was new in Netpbm 10.32 (February 2006).
+<p>This option was new in Netpbm 10.32 (February 2006).</p>
-<dt><b>-tileable</b>
+<dt><b>-tileable</b></dt>
<dd>Make the generated image horizontally tileable. This works by
blending a left-to-right rendering (the equivalent
of <b>-xbegin</b>=0) with a right-to-left rendering (the equivalent
of <b>-xbegin</b>=<i>width&minus;1</i>).
-<p>This option was new in Netpbm 10.91 (June 2020).
+<p>This option was new in Netpbm 10.91 (June 2020).</p></dd>
</dl>
@@ -345,21 +347,21 @@ of <b>-xbegin</b>=<i>width&minus;1</i>).
<p>The only parameter, <i>infile</i>, is the name of an input file
that is a depth map image. If you don't specify <i>infile</i>, the
-input is from standard input.
+input is from standard input.</p>
<p>The input is a PAM image of depth 1. Each sample represents the
distance from the eye that the 3-D image at that location should
-be. Lower (darker) numbers mean further from the eye.
+be. Lower (darker) numbers mean further from the eye.</p>
<h2 id="notes">NOTES</h2>
<h3 id="inputimages">Input Images</h3>
<p><b>pamstereogram</b> pays no attention to the image's tuple type and
-ignores all planes other than plane 0.
+ignores all planes other than plane 0.</p>
<p>Like any Netpbm program, <b>pamstereogram</b> will accept PNM
-input as if it were the PAM equivalent.
+input as if it were the PAM equivalent.</p>
<h3 id="mappedtexture">Mapped-texture Stereograms</h3>
@@ -367,12 +369,12 @@ input as if it were the PAM equivalent.
drawn with true colors. Unlike a SIRDS or tiled-image SIS, however,
the image portrayed by an MTS is apparent in normal 2-D viewing. It
appears repeated multiple times and overlapped with itself, but it is
-not hidden.
+not hidden.</p>
<p>You create an MTS with <b>pamstereogram</b> by passing the filename
of a PAM "texture image" with a <b>-texfile</b> option. A
texture image portrays the same 3-D object as the depth-map image but
-indicates the colors that the program should apply to the object.
+indicates the colors that the program should apply to the object.</p>
<p><b>pamstereogram</b> ignores the texture image's background color when it
overlaps copies of the 3-D object. This prevents, for example, a bright-red
@@ -382,32 +384,32 @@ object remains bright red. A consequenc
best when the objects in the texture image have a crisp outline. Smooth
transitions to the background color result in unwanted color artifacts around
edges because the program ignores only <em>exact</em> matches with the
-background color.
+background color.</p>
<p>You should specify a larger-than-normal value for <b>-eyesep</b>
(and/or <b>-dpi</b>) when producing an MTS. Otherwise, the 3-D object will
repeat so many times that most colored pixels will overlap other colored
-pixels, reducing the number of true-colored pixels that remain.
+pixels, reducing the number of true-colored pixels that remain.</p>
<p>An MTS can employ a background pattern (<b>-patfile</b>). In this
case, <b>pamstereogram</b> replaces background pixels with pattern pixels in
-the final step of generating the image.
+the final step of generating the image.</p>
<h3 id="notes_misc">Miscellaneous</h3>
<p>A good initial test is to input an image consisting of a solid
shape of distance 0 within a large field of maximum distance (e.g., a
-white square on a black background).
+white square on a black background).</p>
<p>With the default values for <b>-dpi</b> and <b>-eyesep</b>, pattern
-images that are 128 pixels wide can tile seamlessly.
+images that are 128 pixels wide can tile seamlessly.</p>
<h2 id="examples">EXAMPLES</h2>
<p>Generate a SIRDS out of small, brightly colored squares and
-prepare it for display on an 87 DPI monitor:
+prepare it for display on an 87 DPI monitor:</p>
<pre>
pamstereogram depthmap.pam \
@@ -439,21 +441,21 @@ speckles:
<h2 id="seealso">SEE ALSO</h2>
<ul>
-<li><a href="pam.html">pam</a>
+<li><a href="pam.html">pam</a></li>
-<li><a href="pamsistoaglyph.html">pamsistoaglyph</a>
+<li><a href="pamsistoaglyph.html">pamsistoaglyph</a></li>
-<li><a href="ppm3d.html">ppm3d</a>
+<li><a href="ppm3d.html">ppm3d</a></li>
<li>Harold W. Thimbleby, Stuart Inglis, and Ian H. Witten.
<em>Displaying 3D Images: Algorithms for Single Image Random Dot
Stereograms</em>. In IEEE Computer, <strong>27</strong>(10):38-48,
October 1994. DOI: <a
-href="http://dx.doi.org/10.1109/2.318576">10.1109/2.318576</a>.
+href="http://dx.doi.org/10.1109/2.318576">10.1109/2.318576</a>.</li>
<li>W. A. Steer.
<em>Stereograms: Technical Details</em>.
-URL: <a href="http://www.techmind.org/stereo/stech.html">http://www.techmind.org/stereo/stech.html</a>.
+URL: <a href="http://www.techmind.org/stereo/stech.html">http://www.techmind.org/stereo/stech.html</a>.</li>
</ul>
@@ -461,32 +463,32 @@ URL: <a href="http://www.techmind.org/st
<p><b>pamstereogram</b> was new in Netpbm 10.22 (April 2004), but probably
broken beyond usability until Netpbm 10.32 (February 2006) and Netpbm 10.26.23
-(January 2006).
+(January 2006).</p>
<p>A backward incompatible change to the way you request guide boxes
(<b>-guidetop</b>, <b>-guidebottom</b>, <b>-guidesize</b> happened in
-Netpbm 10.61 (December 2012).
+Netpbm 10.61 (December 2012).</p>
<h2 id="author">AUTHOR</h2>
-<p>Copyright &copy; 2006-2020 Scott Pakin, <a href="mailto:scott+pbm@pakin.org">scott+pbm@pakin.org</a>.
+<p>Copyright &copy; 2006-2020 Scott Pakin, <a href="mailto:scott+pbm@pakin.org">scott+pbm@pakin.org</a>.</p>
<h2 id="index">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="#parameters">PARAMETERS</a>
-<li><a href="#notes">NOTES</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#parameters">PARAMETERS</a></li>
+<li><a href="#notes">NOTES</a></li>
<ul>
- <li><a href="#inputimages">Input Images</a>
- <li><a href="#mappedtexture">Mapped-texture Stereograms</a>
- <li><a href="#notes_misc">Miscellaneous</a>
+ <li><a href="#inputimages">Input Images</a></li>
+ <li><a href="#mappedtexture">Mapped-texture Stereograms</a></li>
+ <li><a href="#notes_misc">Miscellaneous</a></li>
</ul>
-<li><a href="#examples">EXAMPLES</a>
-<li><a href="#seealso">SEE ALSO</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#author">AUTHOR</a>
+<li><a href="#examples">EXAMPLES</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
+<li><a href="#history">HISTORY</a></li>
+<li><a href="#author">AUTHOR</a></li>
</ul>
</body>
</html>
diff -urNp a/userguide/pamhomography.html b/userguide/pamhomography.html
--- a/userguide/pamhomography.html 2021-01-26 15:19:07.403345047 +0100
+++ b/userguide/pamhomography.html 2021-01-26 15:29:36.659652764 +0100
@@ -9,7 +9,7 @@
<body>
-<h1 id="pamhomography">pamhomography</h1>
+<h1>pamhomography</h1>
Updated: 03 January 2021
<br>
@@ -29,7 +29,7 @@ Updated: 03 January 2021
[<b>-mapfile</b>=<i>map_file</i>]
[<b>-view</b>=<i>coords</i>]
[<b>-fill</b>=<i>color</i>]
- [<i>pam_file</i>]
+ [<i>pam_file</i></p>]
<p>You can abbreviate any option to its shortest unique prefix. You can use
two hyphens instead of one to delimit an option. You can separate an option
@@ -42,7 +42,7 @@ from its value with whitespace instead o
of <a href="http://netpbm.sourceforge.net/">Netpbm</a>.</p>
<p><b>pamhomography</b> transforms a quadrilateral&mdash;not necessarily
-rectangular&mdash;region of an image, producing a new image.
+rectangular&mdash;region of an image, producing a new image.</p>
<p>You can do any
<a href="https://en.wikipedia.org/wiki/Affine_transformation#Image_transformation">affine image transformation</a>: translation, reflection, scaling,
@@ -111,9 +111,9 @@ quadrilateral.</p>
<p>This is the color with which the program fills all pixels that lie outside
of the target quadrilateral. Specify the color as described for the
<a href="http://libnetpbm_image.html#colorname">
-argument of the pnm_parsecolor() library routine</a>.
+argument of the pnm_parsecolor() library routine</a>.</p>
-<p>The default is black, and for images with a transparency plane, transparent.
+<p>The default is black, and for images with a transparency plane, transparent.</p>
</dd>
</dl>
@@ -132,7 +132,7 @@ by <i>map_file</i>.</p>
<p><b>pamhomography</b>'s only parameter, <i>pam_file</i>, is the name of the
file containing the input image. If you don't specify <i>pam_file</i>, the
- image comes from Standard Input.
+ image comes from Standard Input.</p>
<h2 id="NOTES">NOTES</h2>
@@ -260,23 +260,23 @@ preceding examples:</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<ul>
- <li><a href="http://pamcut.html">pamcut</a>
- <li><a href="http://pamenlarge.html">pamenlarge</a>
- <li><a href="http://pamflip.html">pamflip</a>
- <li><a href="http://pamperspective.html">pamperspective</a>
- <li><a href="http://pamscale.html">pamscale</a>
- <li><a href="http://pamstretch.html">pamstretch</a>
- <li><a href="http://pam.html">pam</a>
- <li><a href="http://pnmmargin.html">pnmmargin</a>
- <li><a href="http://pnmpad.html">pnmpad</a>
- <li><a href="http://pnmrotate.html">pnmrotate</a>
- <li><a href="http://pnmshear.html">pnmshear</a>
+ <li><a href="http://pamcut.html">pamcut</a></li>
+ <li><a href="http://pamenlarge.html">pamenlarge</a></li>
+ <li><a href="http://pamflip.html">pamflip</a></li>
+ <li><a href="http://pamperspective.html">pamperspective</a></li>
+ <li><a href="http://pamscale.html">pamscale</a></li>
+ <li><a href="http://pamstretch.html">pamstretch</a></li>
+ <li><a href="http://pam.html">pam</a></li>
+ <li><a href="http://pnmmargin.html">pnmmargin</a></li>
+ <li><a href="http://pnmpad.html">pnmpad</a></li>
+ <li><a href="http://pnmrotate.html">pnmrotate</a></li>
+ <li><a href="http://pnmshear.html">pnmshear</a></li>
</ul>
<h2 id="SEE-ALSO">SEE ALSO</h2>
-<p><b>pamhomography</b> was new in Netpbm 10.94 (March 2021).
+<p><b>pamhomography</b> was new in Netpbm 10.94 (March 2021).</p>
<h2 id="AUTHOR">AUTHOR</h2>
diff -urNp a/userguide/pamhomography.1 b/userguide/pamhomography.1
--- a/userguide/pamhomography.1 1970-01-01 01:00:00.000000000 +0100
+++ b/userguide/pamhomography.1 2021-01-26 15:23:06.759944223 +0100
@@ -0,0 +1,407 @@
+\
+.\" This man page was generated by the Netpbm tool 'makeman' from HTML source.
+.\" Do not hand-hack it! If you have bug fixes or improvements, please find
+.\" the corresponding HTML page on the Netpbm website, generate a patch
+.\" against that, and send it to the Netpbm maintainer.
+.TH "pamhomography" 1 "03 January 2021" "netpbm documentation"
+
+
+
+
+<script type="text/javascript" src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
+<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+.UN NAME
+.SH NAME
+.PP
+pamhomography - map one arbitrary quadrilateral image region to another
+
+
+.UN SYNOPSIS
+.SH SYNOPSIS
+.PP
+\fBpamhomography\fP
+ [\fB-from\fP=\fIcoords\fP]
+ [\fB-to\fP=\fIcoords\fP]
+ [\fB-mapfile\fP=\fImap_file\fP]
+ [\fB-view\fP=\fIcoords\fP]
+ [\fB-fill\fP=\fIcolor\fP]
+ [\fIpam_file\fP]
+.PP
+You can abbreviate any option to its shortest unique prefix. You can use
+two hyphens instead of one to delimit an option. You can separate an option
+from its value with whitespace instead of \f(CW=\fP.
+
+
+.UN DESCRIPTION
+.SH DESCRIPTION
+.PP
+This program is part
+of
+.UR http://netpbm.sourceforge.net/
+Netpbm
+.UE
+\&.
+.PP
+\fBpamhomography\fP transforms a quadrilateral-not necessarily
+rectangular-region of an image, producing a new image.
+.PP
+You can do any
+.UR https://en.wikipedia.org/wiki/Affine_transformation#Image_transformation
+affine image transformation
+.UE
+\&: translation, reflection, scaling,
+rotation, and shearing/skewing. However, \fBpamhomography\fP additionally can
+do \fIbilinear\fP transforms, which means it can warp any quadrilateral to any
+other quadrilateral, even when this mapping cannot be described using a single
+set of linear equations. This can be useful, for example, for creating
+perspective views of rectangular images or for reverse-mapping a perspective
+view back to a rectangular projection.
+
+
+.UN OPTIONS
+.SH OPTIONS
+.PP
+In addition to the options common to all programs based on libnetpbm (most
+notably \fB-quiet\fP, see
+.UR http://index.html#commonoptions
+Common Options
+.UE
+\&), \fBpamhomography\fP recognizes the following command line
+options:
+
+
+
+<dt id="from-coords">\fB-from\fP=\fIcoords\fP
+.sp
+This defines the source quadrilateral. \fIcoords\fP is a list of four
+ integer-valued (\fIx\fP, \fIy\fP) coordinates. If you do not
+ specify \fB-from\fP, the source quadrilateral is taken to be the four
+ corners of the input image in clockwise order, starting from the upper
+ left.
+
+
+<dt id="to-coords">\fB-to\fP=\fIcoords\fP
+.sp
+This defines the target quadrilateral. \fIcoords\fP is a list of four
+integer-valued (\fIx\fP, \fIy\fP) coordinates. If you do not
+specify \fB-to\fP, the target quadrilateral is taken to be the four corners
+of the input image in clockwise order, starting from the upper left.
+
+
+<dt id="mapfile-map_file">\fB-mapfile\fP=\fImap_file\fP
+.sp
+This names a text file that describes the mapping from the source to the
+target quadrilateral. The file \fImap_file\fP must contain either eight
+integer-valued (\fIx\fP, \fIy\fP) coordinates, being the four source
+coordinates followed by the corresponding four target coordinates, or only
+four (\fIx\fP, \fIy\fP) coordinates, being only the four target
+coordinates. In the latter case, the source quadrilateral is taken to be the
+four corners of the input image in clockwise order, starting from the upper
+left.
+
+
+<dt id="view-coords">\fB-view\fP=\fIcoords\fP
+.sp
+This defines the target view. \fIcoords\fP is a list of two integer-valued
+(\fIx\fP, \fIy\fP) coordinates: the upper left and lower right boundaries,
+respectively, of the pixels that will be visible in the output image. If
+\fB-view\fP is not specified, the target view will fit precisely the target
+quadrilateral.
+
+
+<dt id="fill-color">\fB-fill\fP=\fIcolor\fP
+.sp
+This is the color with which the program fills all pixels that lie outside
+of the target quadrilateral. Specify the color as described for the
+.UR http://libnetpbm_image.html#colorname
+ argument of the pnm_parsecolor() library routine
+.UE
+\&.
+.sp
+The default is black, and for images with a transparency plane, transparent.
+
+
+
+.PP
+Cooordinates should normally be specified in clockwise order. The syntax is
+fairly flexible: all characters other than the plus sign, minus sign, and
+digits are treated as separators. Although coordinates need to be integers,
+they may lie outside the image's boundary.
+.PP
+If you specify \fB-mapfile\fP along with \fB-from\fP and/or \fB-to\fP,
+\fB-from\fP and \fB-to\fP override the quadrilaterals specified
+by \fImap_file\fP.
+
+
+.UN PARAMETERS
+.SH PARAMETERS
+.PP
+\fBpamhomography\fP's only parameter, \fIpam_file\fP, is the name of the
+ file containing the input image. If you don't specify \fIpam_file\fP, the
+ image comes from Standard Input.
+
+
+.UN NOTES
+.SH NOTES
+.PP
+The output image uses the same Netpbm format as the input image.
+.PP
+Simple transformations are best handled by other Netpbm programs, such as
+those listed in the
+.UR #SEE-ALSO
+\&'SEE ALSO'
+.UE
+\& section
+below. Use \fBpamhomography\fP for more sophisticated transformations such as
+perspective adjustments, rotations around an arbitrary point in the image,
+extraction of non-rectangular quadrilaterals, shearings by coordinates rather
+than by angle, and, in general, all transformations that are most easily
+expressed as mapping four points in one image to four points in another
+image.
+
+.UN EXAMPLES
+.SH EXAMPLES
+.PP
+The following examples use the
+.UR park_row.ppm
+park_row.ppm
+.UE
+\& test image, which is a
+.UR https://commons.wikimedia.org/wiki/File:15_Park_Row_3.JPG
+ photograph of New York City's Park Row Building
+.UE
+\&, scaled to
+441&times;640, converted to a PPM file, and redistributed under the terms of
+the
+.UR https://en.wikipedia.org/wiki/GNU_Free_Documentation_License
+ GFDL
+.UE
+\&.
+.PP
+The first example showcases the real power of bilinear transformations.
+Assuming \fIpark_row_rect.map\fP has the following contents:
+
+.nf\f(CW (147, 51) (316, 105) (402, 595) (92, 560)
+ (0, 0) (440, 0) (440, 639) (0, 639)\fP</pre>
+.PP
+then
+
+.nf\f(CW pamhomography -mapfile park_row_rect.map park_row.ppm > park_row_rect.ppm\fP</pre>
+.PP
+projects the building's facade from a perspective view to a rectilinear
+front-on view. Remember that \fBpamhomography\fP ignores the parentheses and
+commas used in \fIpark_row_rect.map\fP; they merely make the file more
+human-readable. We equivalently could have written
+
+.nf\f(CW 147 51 316 105 402 595 92 560 0 0 440 0 440 639 0 639\fP</pre>
+.PP
+or any of myriad other variations.
+.PP
+\fBpamhomography\fP can warp the image to a trapezoid to make it look like
+it's leaning backwards in 3-D:
+
+.nf\f(CW pamhomography -to '50,0 390,0 440,200 0,200' park_row.ppm > park_row_trap.ppm\fP</pre>
+.PP
+As a very simple example,
+
+.nf\f(CW pamhomography -to '440,0 0,0 0,639 440,639' park_row.ppm > park_row_flip.ppm\fP</pre>
+.PP
+flips the image left-to-right. Note that in this case the target
+quadrilateral's coordinates are listed in counterclockwise order because
+that represents the correspondence between points (0, 0) &harr; (440, 0) and
+(0, 639) &harr; (639, 0).
+.PP
+Scaling is also straightforward. The following command scales down the
+image from 441&times;640 to 341&times;540:
+
+.nf\f(CW pamhomography -to '0,0 340,0 340,539 0,539' park_row.ppm > park_row_small.ppm\fP</pre>
+.PP
+Let's add 100 pixels of tan border to the above. We use \fB-view\fP and
+\fB-fill\fP to accomplish that task:
+
+.nf\f(CW pamhomography -to '0,0 340,0 340,539 0,539' -view '-100,-100 440,639' -fill tan park_row.ppm > park_row_small_border.ppm\fP</pre>
+.PP
+We can add a border without having to scale the image:
+
+.nf\f(CW pamhomography -view '-100,-100 540,739' -fill tan park_row.ppm > park_row_border.ppm\fP</pre>
+.PP
+The \fB-view\fP option can also be used to extract a rectangle out of an
+image, discarding the rest of the image:
+
+.nf\f(CW pamhomography -view '130,10 205,80' park_row.ppm > park_row_cut.ppm\fP</pre>
+.PP
+Specifying the same set of coordinates to \fB-from\fP and \fB-to\fP has
+the same effect but also allows you to extract non-rectangular quadrilaterals
+from an image:
+
+.nf\f(CW pamhomography -from '185,300 310,325 320,425 180,405' -to '185,300 310,325 320,425 180,405' park_row.ppm > park_row_cut_2.ppm\fP</pre>
+.PP
+Rotation is doable but takes some effort. The challenge is that you need to
+compute the rotated coordinates yourself. The matrix expression to rotate
+points \e((x_1, y_1)\e) \e((x_2, y_2)\e), \e((x_3, y_3)\e), and \e((x_4, y_4)\e)
+clockwise by \e(\etheta\e) degrees around point \e((c_x, c_y)\e) is
+.PP
+\e[ \ebegin{bmatrix} 1 & 0 & c_x \e\e 0 & 1 & c_y \e\e 0 & 0
+& 1 \eend{bmatrix} \ebegin{bmatrix} \ecos \etheta & -\esin \etheta & 0
+\e\e \esin \etheta & \ecos \etheta & 0 \e\e 0 & 0 & 1 \eend{bmatrix}
+\ebegin{bmatrix} 1 & 0 & -c_x \e\e 0 & 1 & -c_y \e\e 0 & 0
+& 1 \eend{bmatrix} \ebegin{bmatrix} x_1 & x_2 & x_3 & x_4 \e\e y_1
+& y_2 & y_3 & y_4 \e\e 1 & 1 & 1 & 1 \eend{bmatrix}
+\equad. \e]
+.PP
+For example, to rotate \fIpark_row.ppm\fP 30&deg; clockwise around (220,
+320) you would compute
+.PP
+\e[ \ebegin{bmatrix} 1 & 0 & 220 \e\e 0 & 1 & 320 \e\e 0 & 0
+& 1 \eend{bmatrix} \ebegin{bmatrix} \ecos 30^{\ecirc} & -\esin 30^{\ecirc}
+& 0 \e\e \esin 30^{\ecirc} & \ecos 30^{\ecirc} & 0 \e\e 0 & 0 & 1
+\eend{bmatrix} \ebegin{bmatrix} 1 & 0 & -220 \e\e 0 & 1 & -320 \e\e
+0 & 0 & 1 \eend{bmatrix} \ebegin{bmatrix} 0 & 440 & 440 & 0
+\e\e 0 & 0 & 639 & 639 \e\e 1 & 1 & 1 & 1 \eend{bmatrix} =
+\ebegin{bmatrix} 189.4744 & 570.5256 & 251.0256 & -130.0256 \e\e
+-67.1281 & 152.8719 & 706.2621 & 486.2621 \e\e 1.0000 & 1.0000
+& 1.0000 & 1.0000 \eend{bmatrix} \equad, \e]
+.PP
+round these coordinates to integers, transpose the matrix, and produce the
+following map file, \fIpark_row_rot30.map\fP:
+
+.nf\f(CW 189 -67
+ 571 153
+ 251 706
+ -130 486\fP</pre>
+.PP
+(These are the 'to' coordinates; we use the default, full-image
+\&'from' coordinates.) The mapping then works as in all of the
+preceding examples:
+
+.nf\f(CW pamhomography -mapfile park_row_rot30.map park_row.ppm > park_row_rot30.ppm\fP</pre>
+
+
+.UN SEE-ALSO
+.SH SEE ALSO
+
+
+.IP \(bu
+
+.BR "pamcut" (1)\c
+\&
+.IP \(bu
+
+.BR "pamenlarge" (1)\c
+\&
+.IP \(bu
+
+.BR "pamflip" (1)\c
+\&
+.IP \(bu
+
+.BR "pamperspective" (1)\c
+\&
+.IP \(bu
+
+.BR "pamscale" (1)\c
+\&
+.IP \(bu
+
+.BR "pamstretch" (1)\c
+\&
+.IP \(bu
+
+.BR "pam" (1)\c
+\&
+.IP \(bu
+
+.BR "pnmmargin" (1)\c
+\&
+.IP \(bu
+
+.BR "pnmpad" (1)\c
+\&
+.IP \(bu
+
+.BR "pnmrotate" (1)\c
+\&
+.IP \(bu
+
+.BR "pnmshear" (1)\c
+\&
+
+
+
+.UN SEE-ALSO
+.SH SEE ALSO
+.PP
+\fBpamhomography\fP was new in Netpbm 10.94 (March 2021).
+
+
+.UN AUTHOR
+.SH AUTHOR
+.PP
+Copyright \(co 2020 Scott
+Pakin, \fIscott+pbm@pakin.org\fP
+
+
+.UN index
+.SH Table of Contents
+
+
+.IP \(bu
+
+.UR #SYNOPSIS
+SYNOPSIS
+.UE
+\&
+.IP \(bu
+
+.UR #DESCRIPTION
+DESCRIPTION
+.UE
+\&
+.IP \(bu
+
+.UR #OPTIONS
+OPTIONS
+.UE
+\&
+.IP \(bu
+
+.UR #PARAMETERS
+PARAMETERS
+.UE
+\&
+.IP \(bu
+
+.UR #NOTES
+NOTES
+.UE
+\&
+.IP \(bu
+
+.UR #EXAMPLES
+EXAMPLES
+.UE
+\&
+.IP \(bu
+
+.UR #SEE-ALSO
+SEE ALSO
+.UE
+\&
+.IP \(bu
+
+.UR #HISTORY
+HISTORY
+.UE
+\&
+.IP \(bu
+
+.UR #AUTHOR
+AUTHOR
+.UE
+\&
+.SH DOCUMENT SOURCE
+This manual page was generated by the Netpbm tool 'makeman' from HTML
+source. The master documentation is at
+.IP
+.B http://netpbm.sourceforge.net/doc/pamhomography.html
+.PP
\ Chybí znak konce řádku na konci souboru