ftp.nice.ch/pub/next/unix/graphics/netpbm.19940301.s.tar.gz#/netpbm

CHANGES
 
COPYRIGHT
 
FORMATS
 
Imakefile
 
MSDOS
 
Makefile
 
Netpbm
 
Netpbm.Changes
 
Netpbm.programming
 
OTHER.SYSTEMS
 
Pbmplus.tmpl
 
README
 
README.CONFOCAL
 
README.NeXTSTEP
 
README.VMS
 
SMakefile
 
TODO
 
amiga/
 
compat.csh
 
compat.ksh
 
compile.h
[View compile.h] 
doslistmake
 
dosnames
 
libtiff/
 
magic
 
mantocat
 
pbm/
 
pbmplus.h
[View pbmplus.h] 
pgm/
 
pnm/
 
ppm/
 
scoptions
 
stamp-date
 
stamp-date.amiga
 
version.h
[View version.h] 
vms/
 

README

                           N E T P B M
                     Release 7 December 1993

Netpbm is a toolkit for conversion of images between a variety of
different formats, as well as to allow a few basic image operations.
The package is intended to be portable to many platforms. It has been
tested under UNIX (BSD and SYSV, e.g. SGI, Sun4, Sun386i, DEC and
Apollo DN 3500), VMS and Amiga OS. There are also compiler directives
in it for MS-DOS.

You'll find the latest release of Netpbm at the following sites:
* wuarchive.wustl.edu (128.252.135.4),
  directory /graphics/graphics/packages/NetPBM
* ikaros.fysik4.kth.se (130.237.35.2), directory /pub/netpbm.
* ftp.informatik.uni-oldenburg.de (134.106.1.9). This site also carries
  binaries for the Amiga.
* peipa.essex.ac.uk (155.245.115.161), directory ipa/src/manip
* ftp.rahul.net (192.160.13.1), directory /pub/davidsen/source
* ftp.cs.ubc.ca, directory /ftp/archive/netpbm

You'll also find a mirror site at the BBS:
* sixhub.tmr.com, phone +1 518 3468033, in the "source" area.

Netpbm is based on the widely spread Pbmplus package (release: 10 Dec 91).
On top of that, a lot of improvements and additions have been made. After
the latest release of Pbmplus, a lot of additional filters have been
circulating on the net. The aim of Netpbm was, to collect these and to turn
them into a package. This work has been performed by a group of program-
mers all over the world. If *you* have some code to add, please contact us,
and we will incorporate it. There is a mailing list for discussions about
Netpbm. You post a message to the list by writing to "netpbm@fysik4.kth.se".
If you want to be on the list, send a mail with the message "subscribe netpbm"
to "majordomo@fysik4.kth.se". If you want to report a bug, please send
your report to netpbm@fysik4.kth.se, and to the author of Pbmplus,
jef@netcom.com.


Please note, that this is not an official Pbmplus release. The code in
this release is merely a collection of code from various sources around
the world. Not all of the new code parts follow the high standard of
programming of Pbmplus. We have tried to make the code portable to as
many systems as possible, but we haven't cleaned up all routines. We hope
that this release will help the many users of Pbmplus to upgrade their
code all in one piece, instead of having to hunt down different code
fragments at different sites around the world. We also hope, that our
effort will help the author of Pbmplus, Jef Poskanzer, to make a new
official release soon.

The file Netpbm lists all new featues and functions in netpbm.

Below this line follows the original README file from Pbmplus.

***************************************************************


                  Extended Portable Bitmap Toolkit
                      Distribution of 10dec91
                   Previous distribution 30oct91


PBMPLUS is a toolkit for converting various image formats to and from
portable formats, and therefore to and from each other.  The idea is,
if you want to convert among N image formats, you only need 2*N
conversion filters, instead of the N^2 you would need if you wrote each
one separately.

In addition to the converters, the package includes some simple tools
for manipulating the portable formats.

The package is broken up into four parts.  First is PBM, for bitmaps (1
bit per pixel).  Then there is PGM, for grayscale images.  Next is PPM,
for full-color images.  Last, there is PNM, which does content-independent
manipulations on any of the three internal formats, and also handles
external formats that have multiple types.

The parts are upwards compatible: PGM reads both PGM and PBM files and
writes PGM; PPM reads all three and writes PPM; and PNM reads all three
and writes, usually, the same type as it read.  Whenever PNM makes an
exception and "promotes" a file to a higher format, it lets you know.


INSTALLATION

    Unpack the files.
    If you have the TIFF library (./libtiff) and are going to use it, copy the
      appropriate Makefile into place, read the comments in libtiff/README,
      and edit libtiff/tiffconf.h or the Makefile to reflect your compiler and
      options.
    Decide whether you want to use Imakefiles or Makefiles.  If you want
      to use Makefiles:

	Edit the top-level Makefile, find each line with the string
	  "CONFIGURE", and follow the directions for setting configuration
	  options.
	Likewise edit pbmplus.h.
	If you are using gnu make, you have to edit *all* the Makefiles
	  and remove all the imake stuff at the ends, otherwise gnu make
	  will overwrite the Makefiles.
	Make.
	When you're happy that things compiled ok, make install.
    
    If you want to use Imakefiles:

	Edit Pbmplus.tmpl, find each line with the string "CONFIGURE",
	  and follow the directions for setting configuration options.
	Likewise edit pbmplus.h.
	Save the original Makefiles, in case you later want to switch back
	  to using them.
	The usual X11 sequence of xmkmf, make Makefiles, make depend, then
	  make should work. If you have the TIFF libraries, the second step
	  should be "make SUBDIRS='./pbm ./pgm ./ppm ./pnm' Makefiles".
	When you're happy that things compiled ok, make install and
	  make install.man.

After installing the manual pages, you may want to create the "whatis"
file by doing a catman -w -M <directory>, or whatever the equivalent is
on your system.


SUPPORT

I've tested this stuff under SysV and BSD, on Sun 3's 4's and 386's and
Sequents and Vaxen and HPs, with cc and gcc.  Nevertheless, I'm sure bugs
remain, and portability to systems like Amigas and IBM compatibles is
an interesting question.  Feedback is welcome; send bug reports,
enhancements, etc. to this address:

    jef@well.sf.ca.us
    apple!well!jef

When sending bug reports, always include the output from running any
PBMPLUS program with the -version flag.  Also include the type of
system you are on, what compiler you used, and whether you are using
Makefiles or Imakefiles.  I try to respond to bug reports and enhancements
promptly; say, within a week.

Also, if there is a new format or feature you would like to have added
to the package, feel free to drop me a line.  If it's a format, include
whatever documentation you have, and if possible a uuencoded sample.
My response time will depend on how busy I am, and how easy the job
looks.  If you need it right away, or it's a complicated job, you might
consider paying me; lately, that's how a lot of work on the package has
gotten done.

Finally, if you have access to Usenet, there's a newsgroup called
alt.graphics.pixutils which is specifically for discussion of image
conversion and editing packages such as PBMPLUS.  Posting stuff there
is even better than mailing it to me, since it lets other people help
out with the answers.


HOW TO FIND THE RIGHT CONVERTER

Some people get confused by all the different names.  If you want to
convert a pbm file to a Sun raster file, is it pbmtorast, pgmtorast,
ppmtorast, or pnmtorast?  In this case some of the confusion might be
because previous versions of the package did in fact have both
pbmtorast and ppmtorast.  But mostly it's just too many different
things to hold in your short term memory.  Fine, so don't even try to
remember what's what.  That's what computers are for.  Unix, at least
BSD Unix, has this great indexing feature on the "man" program.  You
say "man -k <keyword>" and it gives you all the one-line descriptions
with that keyword in them.  All the PBMPLUS man pages have nice useful
one-line descriptions, that mention all the relevant keywords.  Try it,
you'll like it.


COPYRIGHTS

All the software in this package, whether by me or by a contributer,
has a copyright similar to this one:

    Permission to use, copy, modify, and distribute this software and its
    documentation for any purpose and without fee is hereby granted, provided
    that the above copyright notice appear in all copies and that both that
    copyright notice and this permission notice appear in supporting
    documentation.  This software is provided "as is" without express or
    implied warranty.

Many people get confused by this legalese, especially the part about
"without fee".  Does this mean you can't charge for any product that
uses PBMPLUS?  No.  All it means is that you don't have to pay me.
You can do what you want with this software.  Build it into your
package, steal code from it, whatever.  Just be sure to let people
know where it came from.


CONTENTS

Files in pbmplus.shar:

    README		this
    CHANGES		list of changes between the various versions of PBM
    TODO		list of things still to be done
    FORMATS		list of the formats supported
    OTHER.SYSTEMS	list of other free image-processing software
    Makefile		guess
    Imakefile		for X11-type installations
    Imakefile.tiff	for X11-type installations
    Pbmplus.tmpl	for X11-type installations
    pbmplus.h		header file for PBM, PGM, PPM, and PNM

    compat.csh		csh script for compatibility with old versions
    compat.ksh		ksh script for compatibility with old versions
    magic		additions for /etc/magic to recognize some image formats

Files in pbm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    atktopbm.c		convert Andrew Toolkit raster object to portable bitmap
    brushtopbm.c	convert Xerox doodle brushes to portable bitmap
    cmuwmtopbm.c	convert CMU window manager format to portable bitmap
    g3topbm.c		convert Group 3 FAX to portable bitmap
    icontopbm.c		convert Sun icon to portable bitmap
    gemtopbm.c		convert GEM .img format to portable bitmap
    macptopbm.c		convert MacPaint to portable bitmap
    mgrtopbm.c		convert MGR format to portable bitmap
    pi3topbm.c		convert Atari Degas .pi3 to portable bitmap
    xbmtopbm.c		convert X10 or X11 bitmap to portable bitmap
    ybmtopbm.c		convert Bennet Yee "face" file into portable bitmap

    pbmto10x.c		convert portable bitmap to Gemini 10x printer graphics
    pbmtoascii.c	convert portable bitmap to ASCII graphic form
    pbmtoatk.c		convert portable bitmap to Andrew Toolkit raster object
    pbmtobbnbg.c	convert portable bitmap to BBN BitGraph graphics
    pbmtocmuwm.c	convert portable bitmap to CMU window manager format
    pbmtoepson.c	convert portable bitmap to Epson printer graphics
    pbmtog3.c		convert portable bitmap to Group 3 FAX
    pbmtogem.c		convert portable bitmap into GEM .img file
    pbmtogo.c		convert portable bitmap to GraphOn graphics
    pbmtoicon.c		convert portable bitmap to Sun icon
    pbmtolj.c		convert portable bitmap to HP LaserJet graphics
    pbmtomacp.c		convert portable bitmap to MacPaint
    pbmtomgr.c		convert portable bitmap to MGR format
    pbmtopi3.c		convert portable bitmap to Atari Degas .pi3
    pbmtoplot.c		convert portable bitmap into Unix plot(5) file
    pbmtoptx.c		convert portable bitmap to Printronix graphics
    pbmtoxbm.c		convert portable bitmap to X11 bitmap
    pbmtox10bm.c	convert portable bitmap to X10 bitmap
    pbmtoybm.c		convert portable bitmap into Bennet Yee "face" file
    pbmtozinc.c		convert portable bitmap to Zinc Interface Library icon

    pbmlife.c		apply Conway's rules of Life to a portable bitmap
    pbmmake.c		create a blank bitmap of a specified size
    pbmmask.c		create a mask bitmap from a regular bitmap
    pbmreduce.c		reduce a portable bitmap N times, using Floyd-Steinberg
    pbmtext.c		render text into a bitmap
    pbmupc.c		create a Universal Product Code bitmap

    libpbm[1-5].c	a few utility routines
    pbmmerge.c		merge wrapper routine
    pbm.h		header file for libpbm
    pbmfont.h		header file for font routines in libpbm
    libpbm.h		internal header file for libpbm
    g3.h		definitions for Group 3 FAX
    macp.h		definitions for MacPaint files
    bitreverse.h	useful include file
    *.1			manual entries for all of the tools
    pbm.5		manual entry for the pbm format
    libpbm.3		manual entry for the pbm library

Files in pgm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    fitstopgm.c		convert FITS format to portable graymap
    fstopgm.c		convert Usenix FaceSaver(tm) format to portable graymap
    hipstopgm.c		convert HIPS format to portable graymap
    lispmtopgm.c	convert a Lisp Machine bitmap file into pgm format
    psidtopgm.c		convert PostScript "image" data to portable graymap
    rawtopgm.c		convert raw grayscale bytes to portable graymap

    pgmtofits.c		convert portable graymap to FITS format
    pgmtofs.c		convert portable graymap to Usenix FaceSaver(tm) format
    pgmtolispm.c	convert a portable graymap into Lisp Machine format
    pgmtopbm.c		convert portable graymap to portable bitmap

    pgmbentley.c	Bentleyize a portable graymap
    pgmcrater.c		create cratered terrain by fractal forgery
    pgmedge.c		edge-detect a portable graymap
    pgmenhance.c	edge-enhance a portable graymap
    pgmhist.c		print a histogram of the values in a portable graymap
    pgmnorm.c		normalize contrast in a portable graymap
    pgmoil.c		turn a portable graymap into an oil painting
    pgmramp.c		generate a grayscale ramp
    pgmtexture.c	calculate textural features on a portable graymap

    libpgm[1-3].c	a few utility routines
    pgmmerge.c		merge wrapper routine
    pgm.h		header file for libpgm
    libpgm.h		internal header file for libpgm
    dithers.h		useful include file
    *.1			manual entries for all of the tools
    pgm.5		manual entry for the pgm format
    libpgm.3		manual entry for the pgm library

Files in ppm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    giftoppm.c		convert GIF to portable pixmap
    gouldtoppm.c	convert Gould scanner file to portable pixmap
    ilbmtoppm.c		convert IFF ILBM to portable pixmap
    imgtoppm.c		convert Img-whatnot to portable pixmap
    mtvtoppm.c		convert MTV ray-tracer output to portable pixmap
    pcxtoppm.c		convert PC Paintbrush format to portable pixmap
    pgmtoppm.c		colorize a portable graymap into a portable pixmap
    pi1toppm.c		convert Atari Degas .pi1 to portable pixmap
    picttoppm.c		convert Macintosh PICT to portable pixmap
    pjtoppm.c		convert HP PaintJet file to portable pixmap
    qrttoppm.c		convert QRT ray-tracer output to portable pixmap
    rawtoppm.c		convert raw RGB bytes to portable pixmap
    rgb3toppm.c		combine three portable graymaps into one portable pixmap
    sldtoppm.c		convert an AutoCAD slide file into a portable pixmap
    spctoppm.c		convert Atari compressed Spectrum to portable pixmap
    sputoppm.c		convert Atari uncompressed Spectrum to portable pixmap
    tgatoppm.c		convert TrueVision Targa file to portable pixmap
    ximtoppm.c		convert Xim to portable pixmap
    xpmtoppm.c		convert XPM format to portable pixmap
    yuvtoppm.c		convert Abekas YUV format to portable pixmap

    ppmtoacad.c		convert portable pixmap to AutoCAD database or slide
    ppmtogif.c		convert portable pixmap to GIF
    ppmtoicr.c		convert portable pixmap to NCSA ICR graphics
    ppmtoilbm.c		convert portable pixmap to IFF ILBM
    ppmtopcx.c		convert portable pixmap to PC Paintbrush format
    ppmtopgm.c		convert portable pixmap to portable graymap
    ppmtopi1.c		convert portable pixmap to Atari Degas .pi1
    ppmtopict.c		convert portable pixmap to Macintosh PICT
    ppmtopj.c		convert portable pixmap to HP PaintJet file
    ppmtopuzz.c		convert portable pixmap to X11 "puzzle" file
    ppmtorgb3.c		separate a portable pixmap into three portable graymaps
    ppmtosixel.c	convert portable pixmap to DEC sixel format
    ppmtotga.c		convert portable pixmap to TrueVision Targa file
    ppmtouil.c		convert portable pixmap to Motif UIL icon file
    ppmtoxpm.c		convert portable pixmap to XPM format
    ppmtoyuv.c		convert portable pixmap to Abekas YUV format

    ppmdither.c		ordered dither for color images
    ppmforge.c		fractal forgeries of clouds, planets, and starry skies
    ppmhist.c		print a histogram of a portable pixmap
    ppmmake.c		create a pixmap of a specified size and color
    ppmpat.c		create a pretty pixmap
    ppmquant.c		quantize colors down to a specified number
    ppmquantall		script to run ppmquant on a set of pixmaps
    ppmrelief.c		run a Laplacian Relief filter on a portable pixmap

    libppm[1-5].c	a few utility routines
    ppmmerge.c		merge wrapper routine
    ppm.h		header file for libppm
    ppmcmap.h		header file for colormap routines in libppm
    ppmdraw.h		header file for simple drawing routines in libppm
    libppm.h		internal header file for libppm
    autocad.h		definitions for AutoCAD files
    tga.h		definitions for TrueVision Targa files
    xim.h		definitions for Xim files
    *.1			manual entries for all of the tools
    ppm.5		manual entry for the ppm format
    libppm.3		manual entry for the ppm library

Files in pnm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    anytopnm		script to attempt to convert any format to P?M
    rasttopnm.c		convert Sun raster file to portable anymap
    tifftopnm.c		convert TIFF file to portable anymap
    xwdtopnm.c		convert X10 or X11 window dump to portable anymap

    pnmtops.c		convert portable anymap to PostScript
    pnmtorast.c		convert portable anymap to Sun raster file
    pnmtotiff.c		convert portable anymap to TIFF file
    pnmtoxwd.c		convert portable anymap to X11 window dump

    pnmarith.c		perform arithmetic on two portable anymaps
    pnmcat.c		concatenate portable anymaps
    pnmconvol.c		general MxN convolution on a portable anymap
    pnmcrop.c		crop all like-colored borders off a portable anymap
    pnmcut.c		select a rectangular region from a portable anymap
    pnmdepth.c		change the maxval in a portable anymap
    pnmenlarge.c	enlarge a portable anymap N times
    pnmfile.c		describe a portable anymap
    pnmflip.c		perform one or more flip operations on a portable anymap
    pnmgamma.c		perform gamma correction on a portable anymap
    pnmindex		script to build a visual index of a bunch of anymaps
    pnminvert.c		invert a portable anymap
    pnmmargin		script to add a margin to a portable anymap
    pnmnoraw.c		force a portable anymap into ASCII format
    pnmpaste.c		paste a rectangle into a portable anymap
    pnmrotate.c		rotate a portable anymap
    pnmscale.c		scale a portable anymap
    pnmshear.c		shear a portable anymap
    pnmsmooth		script that uses pnmconvol to smooth a anymap
    pnmtile.c		replicate a portable anymap into a specified size

    libpnm[1-4].c	a few utility routines
    pnmmerge.c		merge wrapper routine
    pnm.h		header file for libpnm
    rast.h		definitions for Sun raster files
    x10wd.h		definitions for X10 window dumps
    x11wd.h		definitions for X11 window dumps
    *.1			manual entries for all of the tools
    pnm.5		manual entry for the pnm format
    libpnm.3		manual entry for the pnm library

README.CONFOCAL

Additions to the PbmPlus package.

This enhanced version of the PbmPlus package supports reading of files
from three different confocal scanners, the Molecular Dynamics (Sarastro),
the Biorad and the Zeiss. The package can convert from any of these images
to the pbm format, from which it can produce gif, tiff, x11 dumps, mac paint,
etc. In order to convert from a confocal image format, use the following
commands:

* Molecular Dynamics (Sarastro) and Leica:

  rawtopgm -tb [file] > outfile.pgm

  For more information, give the command "man rawtopgm"

* Biorad

  bioradtopgm [-image#] [file] > outfile.pgm

  For more information, give the command "man bioradtopgm"

* Zeiss (old format)

  zeisstopnm [-pgm|-ppm] [file] > outfile.pnm

  For more information, give the command "man zeisstopnm"

* Zeiss (new format)

  tifftopnm [file] > outfile.pnm

I have tested the programs on one Zeiss file (old format) and on one
Biorad file. There probably remain some bugs to be fixed. Please report
them to me when you encounter them (email:oliver@fysik4.kth.se).

I have compiled and installed the PbmPlus package on the following machines:
* Silicon graphics (Personal Iris) with gcc 2.4.0
* Sun386i with gcc 2.4.0

BUGS

The libtiff part can be tricky to compile. On an sgi I managed to use
gcc. On a sun386i, I had to compile tif_dir.c, tif_error.c and tif_warning.c
with cc instead. The rest of the files could be compiled with gcc.

On the sun386i, the pgmtexture.c file would not compile with gcc -O.
It worked fine without the optimization flag. Probably a bug in gcc.



From the README file:

COPYRIGHTS

All the software in this package, whether by me or by a contributer,
has a copyright similar to this one:

    Permission to use, copy, modify, and distribute this software and its
    documentation for any purpose and without fee is hereby granted, provided
    that the above copyright notice appear in all copies and that both that
    copyright notice and this permission notice appear in supporting
    documentation.  This software is provided "as is" without express or
    implied warranty.

Many people get confused by this legalese, especially the part about
"without fee".  Does this mean you can't charge for any product that
uses PBMPLUS?  No.  All it means is that you don't have to pay me.
You can do what you want with this software.  Build it into your
package, steal code from it, whatever.  Just be sure to let people
know where it came from.

README.NeXTSTEP

NETPBM for NeXTSTEP
February 9, 1995

Enclosed is the original README for the NetPBM package.  NetPBM compiles
without difficulty under NeXTSTEP.  This is almost THE definitive
collection of image conversion software [plus a bunch of other
manipulation goodies].  I say almost because it does NOT include
JPEG-- but that is easily obtained from the site listed below and
compiles just fine under NeXTSTEP.  

Someone really should wrap these filters into a filter service-- it
certainly seems that using small executables, such as these, as
filters is significantly faster than using a filter service that has
the conversion built in (but I have yet to do any empirical testing).

IF YOU DOWNLOADED THE SOURCE:

The installation target directories are /LocalDeveloper/netpbm/bin
and /LocalDeveloper/netpbm/man/man{1,3,5}.  CFLAGS include "-arch i386 -arch
m68k -O2".  If you need to change these attributes (or anything else
about the make process), see Makefile and libtiff/Makefile (which used
to be libtiff/Makefile.next).

I would strongly recommend not installing the netpbm binaries into an
existing bin directory -- there are *175* executables associated
with this package;  unmerging all of these executables from an
existing bin directory would be tedious.

IF YOU DOWNLOADED THE BINARIES:

The archive is rooted on the directory "netpbm"; underneath that
directory, you will find bin, this readme, and man.  Copy to wherever
you see fit.

For completeness, you should probably obtain the Indpendent JPEG
groups JPEG compression/decompression/manipulation package from:

ftp://ftp.uu.net/ftp://ftp.uu.net/graphics/jpeg

If you want binaries, bug me and I'll compile and submit something
similar to this to the archives.

b.bum * <bbum@friday.com>

---------------- original README follows ------------------------

			    N E T P B M
                     Release 7 December 1993

Netpbm is a toolkit for conversion of images between a variety of
different formats, as well as to allow a few basic image operations.
The package is intended to be portable to many platforms. It has been
tested under UNIX (BSD and SYSV, e.g. SGI, Sun4, Sun386i, DEC and
Apollo DN 3500), VMS and Amiga OS. There are also compiler directives
in it for MS-DOS.

You'll find the latest release of Netpbm at the following sites:
* wuarchive.wustl.edu (128.252.135.4),
  directory /graphics/graphics/packages/NetPBM
* ikaros.fysik4.kth.se (130.237.35.2), directory /pub/netpbm.
* ftp.informatik.uni-oldenburg.de (134.106.1.9). This site also carries
  binaries for the Amiga.
* peipa.essex.ac.uk (155.245.115.161), directory ipa/src/manip
* ftp.rahul.net (192.160.13.1), directory /pub/davidsen/source
* ftp.cs.ubc.ca, directory /ftp/archive/netpbm

You'll also find a mirror site at the BBS:
* sixhub.tmr.com, phone +1 518 3468033, in the "source" area.

Netpbm is based on the widely spread Pbmplus package (release: 10 Dec 91).
On top of that, a lot of improvements and additions have been made. After
the latest release of Pbmplus, a lot of additional filters have been
circulating on the net. The aim of Netpbm was, to collect these and to turn
them into a package. This work has been performed by a group of program-
mers all over the world. If *you* have some code to add, please contact us,
and we will incorporate it. There is a mailing list for discussions about
Netpbm. You post a message to the list by writing to "netpbm@fysik4.kth.se".
If you want to be on the list, send a mail with the message "subscribe netpbm"
to "majordomo@fysik4.kth.se". If you want to report a bug, please send
your report to netpbm@fysik4.kth.se, and to the author of Pbmplus,
jef@netcom.com.


Please note, that this is not an official Pbmplus release. The code in
this release is merely a collection of code from various sources around
the world. Not all of the new code parts follow the high standard of
programming of Pbmplus. We have tried to make the code portable to as
many systems as possible, but we haven't cleaned up all routines. We hope
that this release will help the many users of Pbmplus to upgrade their
code all in one piece, instead of having to hunt down different code
fragments at different sites around the world. We also hope, that our
effort will help the author of Pbmplus, Jef Poskanzer, to make a new
official release soon.

The file Netpbm lists all new featues and functions in netpbm.

Below this line follows the original README file from Pbmplus.

***************************************************************


                  Extended Portable Bitmap Toolkit
                      Distribution of 10dec91
                   Previous distribution 30oct91


PBMPLUS is a toolkit for converting various image formats to and from
portable formats, and therefore to and from each other.  The idea is,
if you want to convert among N image formats, you only need 2*N
conversion filters, instead of the N^2 you would need if you wrote each
one separately.

In addition to the converters, the package includes some simple tools
for manipulating the portable formats.

The package is broken up into four parts.  First is PBM, for bitmaps (1
bit per pixel).  Then there is PGM, for grayscale images.  Next is PPM,
for full-color images.  Last, there is PNM, which does content-independent
manipulations on any of the three internal formats, and also handles
external formats that have multiple types.

The parts are upwards compatible: PGM reads both PGM and PBM files and
writes PGM; PPM reads all three and writes PPM; and PNM reads all three
and writes, usually, the same type as it read.  Whenever PNM makes an
exception and "promotes" a file to a higher format, it lets you know.


INSTALLATION

    Unpack the files.
    If you have the TIFF library (./libtiff) and are going to use it, copy the
      appropriate Makefile into place, read the comments in libtiff/README,
      and edit libtiff/tiffconf.h or the Makefile to reflect your compiler and
      options.
    Decide whether you want to use Imakefiles or Makefiles.  If you want
      to use Makefiles:

	Edit the top-level Makefile, find each line with the string
	  "CONFIGURE", and follow the directions for setting configuration
	  options.
	Likewise edit pbmplus.h.
	If you are using gnu make, you have to edit *all* the Makefiles
	  and remove all the imake stuff at the ends, otherwise gnu make
	  will overwrite the Makefiles.
	Make.
	When you're happy that things compiled ok, make install.
    
    If you want to use Imakefiles:

	Edit Pbmplus.tmpl, find each line with the string "CONFIGURE",
	  and follow the directions for setting configuration options.
	Likewise edit pbmplus.h.
	Save the original Makefiles, in case you later want to switch back
	  to using them.
	The usual X11 sequence of xmkmf, make Makefiles, make depend, then
	  make should work. If you have the TIFF libraries, the second step
	  should be "make SUBDIRS='./pbm ./pgm ./ppm ./pnm' Makefiles".
	When you're happy that things compiled ok, make install and
	  make install.man.

After installing the manual pages, you may want to create the "whatis"
file by doing a catman -w -M <directory>, or whatever the equivalent is
on your system.


SUPPORT

I've tested this stuff under SysV and BSD, on Sun 3's 4's and 386's and
Sequents and Vaxen and HPs, with cc and gcc.  Nevertheless, I'm sure bugs
remain, and portability to systems like Amigas and IBM compatibles is
an interesting question.  Feedback is welcome; send bug reports,
enhancements, etc. to this address:

    jef@well.sf.ca.us
    apple!well!jef

When sending bug reports, always include the output from running any
PBMPLUS program with the -version flag.  Also include the type of
system you are on, what compiler you used, and whether you are using
Makefiles or Imakefiles.  I try to respond to bug reports and enhancements
promptly; say, within a week.

Also, if there is a new format or feature you would like to have added
to the package, feel free to drop me a line.  If it's a format, include
whatever documentation you have, and if possible a uuencoded sample.
My response time will depend on how busy I am, and how easy the job
looks.  If you need it right away, or it's a complicated job, you might
consider paying me; lately, that's how a lot of work on the package has
gotten done.

Finally, if you have access to Usenet, there's a newsgroup called
alt.graphics.pixutils which is specifically for discussion of image
conversion and editing packages such as PBMPLUS.  Posting stuff there
is even better than mailing it to me, since it lets other people help
out with the answers.


HOW TO FIND THE RIGHT CONVERTER

Some people get confused by all the different names.  If you want to
convert a pbm file to a Sun raster file, is it pbmtorast, pgmtorast,
ppmtorast, or pnmtorast?  In this case some of the confusion might be
because previous versions of the package did in fact have both
pbmtorast and ppmtorast.  But mostly it's just too many different
things to hold in your short term memory.  Fine, so don't even try to
remember what's what.  That's what computers are for.  Unix, at least
BSD Unix, has this great indexing feature on the "man" program.  You
say "man -k <keyword>" and it gives you all the one-line descriptions
with that keyword in them.  All the PBMPLUS man pages have nice useful
one-line descriptions, that mention all the relevant keywords.  Try it,
you'll like it.


COPYRIGHTS

All the software in this package, whether by me or by a contributer,
has a copyright similar to this one:

    Permission to use, copy, modify, and distribute this software and its
    documentation for any purpose and without fee is hereby granted, provided
    that the above copyright notice appear in all copies and that both that
    copyright notice and this permission notice appear in supporting
    documentation.  This software is provided "as is" without express or
    implied warranty.

Many people get confused by this legalese, especially the part about
"without fee".  Does this mean you can't charge for any product that
uses PBMPLUS?  No.  All it means is that you don't have to pay me.
You can do what you want with this software.  Build it into your
package, steal code from it, whatever.  Just be sure to let people
know where it came from.


CONTENTS

Files in pbmplus.shar:

    README		this
    CHANGES		list of changes between the various versions of PBM
    TODO		list of things still to be done
    FORMATS		list of the formats supported
    OTHER.SYSTEMS	list of other free image-processing software
    Makefile		guess
    Imakefile		for X11-type installations
    Imakefile.tiff	for X11-type installations
    Pbmplus.tmpl	for X11-type installations
    pbmplus.h		header file for PBM, PGM, PPM, and PNM

    compat.csh		csh script for compatibility with old versions
    compat.ksh		ksh script for compatibility with old versions
    magic		additions for /etc/magic to recognize some image formats

Files in pbm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    atktopbm.c		convert Andrew Toolkit raster object to portable bitmap
    brushtopbm.c	convert Xerox doodle brushes to portable bitmap
    cmuwmtopbm.c	convert CMU window manager format to portable bitmap
    g3topbm.c		convert Group 3 FAX to portable bitmap
    icontopbm.c		convert Sun icon to portable bitmap
    gemtopbm.c		convert GEM .img format to portable bitmap
    macptopbm.c		convert MacPaint to portable bitmap
    mgrtopbm.c		convert MGR format to portable bitmap
    pi3topbm.c		convert Atari Degas .pi3 to portable bitmap
    xbmtopbm.c		convert X10 or X11 bitmap to portable bitmap
    ybmtopbm.c		convert Bennet Yee "face" file into portable bitmap

    pbmto10x.c		convert portable bitmap to Gemini 10x printer graphics
    pbmtoascii.c	convert portable bitmap to ASCII graphic form
    pbmtoatk.c		convert portable bitmap to Andrew Toolkit raster object
    pbmtobbnbg.c	convert portable bitmap to BBN BitGraph graphics
    pbmtocmuwm.c	convert portable bitmap to CMU window manager format
    pbmtoepson.c	convert portable bitmap to Epson printer graphics
    pbmtog3.c		convert portable bitmap to Group 3 FAX
    pbmtogem.c		convert portable bitmap into GEM .img file
    pbmtogo.c		convert portable bitmap to GraphOn graphics
    pbmtoicon.c		convert portable bitmap to Sun icon
    pbmtolj.c		convert portable bitmap to HP LaserJet graphics
    pbmtomacp.c		convert portable bitmap to MacPaint
    pbmtomgr.c		convert portable bitmap to MGR format
    pbmtopi3.c		convert portable bitmap to Atari Degas .pi3
    pbmtoplot.c		convert portable bitmap into Unix plot(5) file
    pbmtoptx.c		convert portable bitmap to Printronix graphics
    pbmtoxbm.c		convert portable bitmap to X11 bitmap
    pbmtox10bm.c	convert portable bitmap to X10 bitmap
    pbmtoybm.c		convert portable bitmap into Bennet Yee "face" file
    pbmtozinc.c		convert portable bitmap to Zinc Interface Library icon

    pbmlife.c		apply Conway's rules of Life to a portable bitmap
    pbmmake.c		create a blank bitmap of a specified size
    pbmmask.c		create a mask bitmap from a regular bitmap
    pbmreduce.c		reduce a portable bitmap N times, using Floyd-Steinberg
    pbmtext.c		render text into a bitmap
    pbmupc.c		create a Universal Product Code bitmap

    libpbm[1-5].c	a few utility routines
    pbmmerge.c		merge wrapper routine
    pbm.h		header file for libpbm
    pbmfont.h		header file for font routines in libpbm
    libpbm.h		internal header file for libpbm
    g3.h		definitions for Group 3 FAX
    macp.h		definitions for MacPaint files
    bitreverse.h	useful include file
    *.1			manual entries for all of the tools
    pbm.5		manual entry for the pbm format
    libpbm.3		manual entry for the pbm library

Files in pgm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    fitstopgm.c		convert FITS format to portable graymap
    fstopgm.c		convert Usenix FaceSaver(tm) format to portable graymap
    hipstopgm.c		convert HIPS format to portable graymap
    lispmtopgm.c	convert a Lisp Machine bitmap file into pgm format
    psidtopgm.c		convert PostScript "image" data to portable graymap
    rawtopgm.c		convert raw grayscale bytes to portable graymap

    pgmtofits.c		convert portable graymap to FITS format
    pgmtofs.c		convert portable graymap to Usenix FaceSaver(tm) format
    pgmtolispm.c	convert a portable graymap into Lisp Machine format
    pgmtopbm.c		convert portable graymap to portable bitmap

    pgmbentley.c	Bentleyize a portable graymap
    pgmcrater.c		create cratered terrain by fractal forgery
    pgmedge.c		edge-detect a portable graymap
    pgmenhance.c	edge-enhance a portable graymap
    pgmhist.c		print a histogram of the values in a portable graymap
    pgmnorm.c		normalize contrast in a portable graymap
    pgmoil.c		turn a portable graymap into an oil painting
    pgmramp.c		generate a grayscale ramp
    pgmtexture.c	calculate textural features on a portable graymap

    libpgm[1-3].c	a few utility routines
    pgmmerge.c		merge wrapper routine
    pgm.h		header file for libpgm
    libpgm.h		internal header file for libpgm
    dithers.h		useful include file
    *.1			manual entries for all of the tools
    pgm.5		manual entry for the pgm format
    libpgm.3		manual entry for the pgm library

Files in ppm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    giftoppm.c		convert GIF to portable pixmap
    gouldtoppm.c	convert Gould scanner file to portable pixmap
    ilbmtoppm.c		convert IFF ILBM to portable pixmap
    imgtoppm.c		convert Img-whatnot to portable pixmap
    mtvtoppm.c		convert MTV ray-tracer output to portable pixmap
    pcxtoppm.c		convert PC Paintbrush format to portable pixmap
    pgmtoppm.c		colorize a portable graymap into a portable pixmap
    pi1toppm.c		convert Atari Degas .pi1 to portable pixmap
    picttoppm.c		convert Macintosh PICT to portable pixmap
    pjtoppm.c		convert HP PaintJet file to portable pixmap
    qrttoppm.c		convert QRT ray-tracer output to portable pixmap
    rawtoppm.c		convert raw RGB bytes to portable pixmap
    rgb3toppm.c		combine three portable graymaps into one portable pixmap
    sldtoppm.c		convert an AutoCAD slide file into a portable pixmap
    spctoppm.c		convert Atari compressed Spectrum to portable pixmap
    sputoppm.c		convert Atari uncompressed Spectrum to portable pixmap
    tgatoppm.c		convert TrueVision Targa file to portable pixmap
    ximtoppm.c		convert Xim to portable pixmap
    xpmtoppm.c		convert XPM format to portable pixmap
    yuvtoppm.c		convert Abekas YUV format to portable pixmap

    ppmtoacad.c		convert portable pixmap to AutoCAD database or slide
    ppmtogif.c		convert portable pixmap to GIF
    ppmtoicr.c		convert portable pixmap to NCSA ICR graphics
    ppmtoilbm.c		convert portable pixmap to IFF ILBM
    ppmtopcx.c		convert portable pixmap to PC Paintbrush format
    ppmtopgm.c		convert portable pixmap to portable graymap
    ppmtopi1.c		convert portable pixmap to Atari Degas .pi1
    ppmtopict.c		convert portable pixmap to Macintosh PICT
    ppmtopj.c		convert portable pixmap to HP PaintJet file
    ppmtopuzz.c		convert portable pixmap to X11 "puzzle" file
    ppmtorgb3.c		separate a portable pixmap into three portable graymaps
    ppmtosixel.c	convert portable pixmap to DEC sixel format
    ppmtotga.c		convert portable pixmap to TrueVision Targa file
    ppmtouil.c		convert portable pixmap to Motif UIL icon file
    ppmtoxpm.c		convert portable pixmap to XPM format
    ppmtoyuv.c		convert portable pixmap to Abekas YUV format

    ppmdither.c		ordered dither for color images
    ppmforge.c		fractal forgeries of clouds, planets, and starry skies
    ppmhist.c		print a histogram of a portable pixmap
    ppmmake.c		create a pixmap of a specified size and color
    ppmpat.c		create a pretty pixmap
    ppmquant.c		quantize colors down to a specified number
    ppmquantall		script to run ppmquant on a set of pixmaps
    ppmrelief.c		run a Laplacian Relief filter on a portable pixmap

    libppm[1-5].c	a few utility routines
    ppmmerge.c		merge wrapper routine
    ppm.h		header file for libppm
    ppmcmap.h		header file for colormap routines in libppm
    ppmdraw.h		header file for simple drawing routines in libppm
    libppm.h		internal header file for libppm
    autocad.h		definitions for AutoCAD files
    tga.h		definitions for TrueVision Targa files
    xim.h		definitions for Xim files
    *.1			manual entries for all of the tools
    ppm.5		manual entry for the ppm format
    libppm.3		manual entry for the ppm library

Files in pnm.shar?:

    Makefile		guess
    Imakefile		for X11-type installations

    anytopnm		script to attempt to convert any format to P?M
    rasttopnm.c		convert Sun raster file to portable anymap
    tifftopnm.c		convert TIFF file to portable anymap
    xwdtopnm.c		convert X10 or X11 window dump to portable anymap

    pnmtops.c		convert portable anymap to PostScript
    pnmtorast.c		convert portable anymap to Sun raster file
    pnmtotiff.c		convert portable anymap to TIFF file
    pnmtoxwd.c		convert portable anymap to X11 window dump

    pnmarith.c		perform arithmetic on two portable anymaps
    pnmcat.c		concatenate portable anymaps
    pnmconvol.c		general MxN convolution on a portable anymap
    pnmcrop.c		crop all like-colored borders off a portable anymap
    pnmcut.c		select a rectangular region from a portable anymap
    pnmdepth.c		change the maxval in a portable anymap
    pnmenlarge.c	enlarge a portable anymap N times
    pnmfile.c		describe a portable anymap
    pnmflip.c		perform one or more flip operations on a portable anymap
    pnmgamma.c		perform gamma correction on a portable anymap
    pnmindex		script to build a visual index of a bunch of anymaps
    pnminvert.c		invert a portable anymap
    pnmmargin		script to add a margin to a portable anymap
    pnmnoraw.c		force a portable anymap into ASCII format
    pnmpaste.c		paste a rectangle into a portable anymap
    pnmrotate.c		rotate a portable anymap
    pnmscale.c		scale a portable anymap
    pnmshear.c		shear a portable anymap
    pnmsmooth		script that uses pnmconvol to smooth a anymap
    pnmtile.c		replicate a portable anymap into a specified size

    libpnm[1-4].c	a few utility routines
    pnmmerge.c		merge wrapper routine
    pnm.h		header file for libpnm
    rast.h		definitions for Sun raster files
    x10wd.h		definitions for X10 window dumps
    x11wd.h		definitions for X11 window dumps
    *.1			manual entries for all of the tools
    pnm.5		manual entry for the pnm format
    libpnm.3		manual entry for the pnm library

README.VMS

                                                             25-FEB-1994
    Hi VAX/VMS and future PBMplus users!!!

        This version of Jef Poskanzer's PBMplus package is ready-made to
    support the DEC VAX/VMS C environment.  In an attempt to make it run
    like the Unix environment, the  programs  have been modified to look
    like they use the "piping" and  "redirection"  features  of Unix and
    MSDOS.  In this way, the documentation  and  other people's comments
    (i.e.,  USENET  alt.graphics.pixutils discussions, etc.) will be the
    same for all platforms.

        This  VMS  implementation  borrows  heavily  from  the  previous
    PBMplus/VMS release  by  Rick Dyson for 10dec91 which in turn builds
    on the work  Terry  Poot (tp@mccall.com) did for the 05feb91 general
    release of PBMplus.   Many thanks and credits go his direction.  The
    "piping/redirection"    is    attributed    to    Mark     Pizzolato
    (mark@infopiz.uucp).  The creation of the  shareable  library is due
    to work done by Dave Jones (JONESD@kcgl1.eng.ohio-state.edu).

        Well, since you are reading this, I  guess  you have the PBMplus
    kit and have broken it out into it's  respective  directories.    At
    this  point you just have to start the build  operation.    In  this
    release  of the PBMplus package the process is much easier  than  in
    the past.  There is no patching of the source code necessary  and so
    there is no  extra  "patch-build kit".  This contains everything you
    need to build the PBMplus package.
    
        There is only one step to the preparation process and that is to
    copy  all the files from the [.VMS] sub-directory up one level  into
    the  root  [PBMplus]  directory.

"MAKEFILE.MMS"
-------------
        There are  two  methods  of building the executables.  The first
    (and prefered) method  uses DECs "makefile" utility, MMS, which uses
    the "MAKEFILE.MMS" files.   If  you  don't  have  MMS,  skip  to the
    section labeled "MAKE_PBMPLUS.COM" below.  If you are still with me,
    just  type  "MMS  /Description  =  Makefile.MMS"    and  follow  the
    directions outlined on the screen.  Your most probable sequence will
    be the something like the following:

$ MMS /Description = Makefile.MMS ALL
$ MMS /Description = Makefile.MMS INSTALL   ! creates & loads [.Exe]
$ MMS /Description = Makefile.MMS HELP      ! make PBMPLUS.HLB
$ MMS /Description = Makefile.MMS MANUAL    ! will need LaTeX and tr2TeX...
$ MMS /Description = Makefile.MMS INSTALLMANUAL ! creates & loads [.TeX]
$ MMS /Description = Makefile.MMS CLEAN     ! clean up all recoverable files

        The  available  choices  will  be  displayed  if you  don't  say
    anything, i.e.

            $ MMS /Description = Makefile.MMS

"MAKE_PBMPLUS.COM"
------------------
        The  other  method  of  building the package is to  execute  the
    "MAKE_PBMPLUS.COM" command  procedure.    This was mostly created by
    the "MMS BUILD_PROC"  command.    It  is not as flexible as MMS, but
    should get the job done.  Look  through the procedure and edit it as
    you see fit.  It builds and installs  just  about  everything, so it
    might be in your best interest to look through  it and use your veto
    powers to comment out the unneeded (or unavailable) parts.   Be sure
    to look and check what you have before executing the procedure.

"SETUP.COM"
-----------
        I  have  provided  two  setup  files  with  this distribution to
    facilitate  the  day-to-day use of PBMplus.  All you need to  do  is
    execute  the  SETUP.COM  command  procedure and it will make all the
    logical name  and  foreign  symbol  definitions.    You  should look
    through SETUP.COM and  read  the  comments  about the rooted logical
    names used.  After  all  that, look through the TeX documentation or
    the on-line help files to get an idea of how to start using PBMplus.
    
        NOTE:    An  error  in  MMS will occur if you  have  used
        SETUP.COM before  using  MMS.  A logical name conflict or
        something.  Either  logout  and login to clear things out
        or  Deassign PBMplus_Root and  PBMplus_Dir  before  using
        MMS.
    
Manifest
--------
        The following files are included  with this VMS port of PBMplus.
    The bare essential ones needed to complete the build are marked with
    an astreisk (*):

        [.VMS]MAKEFILE.MMS     -- VMS MMS description file (i.e., "makefile")
                                  for all of PBMplus
       *[.VMS]MAKE_PBMPLUS.COM -- VMS command procedure produced by MMS to build
                                  the PBMplus package for users without MMS
       *[.VMS]MAKE_PBMPLUSSHR.COM -- VMS command procedure to build Shareable
                                  link library of the four main PBMplus object
                                  libraries; LIBPBM, LIBPGM, LIBPPM, & LIBPNM
        [.VMS]SETUP.COM        -- An initialization/definition command proc for
                                  "everyday use" of PBMplus once it's built
        [.VMS]ADD_LIST.COM     -- Generic command procedure to add another
                                  library to any VMS librarian list, (i.e.,
                                  Hlp$Library_nn or Lnk$Library_nn)
        [.VMS]PBMPLUS.HLP      -- VMS Help library file for all of PBMplus
        [.PBM]MAKEFILE.MMS     -- VMS MMS description file for PBM routines
        [.PGM]MAKEFILE.MMS     -- VMS MMS description file for PGM routines
        [.PPM]MAKEFILE.MMS     -- VMS MMS description file for PPM routines
        [.PNM]MAKEFILE.MMS     -- VMS MMS description file for PNM routines
        [.LIBTIFF]MAKEFILE.MMS -- VMS MMS description file for LIBTIFF routines

        When it's all over and done, the  PBMplus  directory tree should
    resemble  the following:

    PBMPLUS  ---+ EXE                           <-- the binaries
                |
                + LIBTIFF                       <-- TIFF library
                |
                + PBM                           <-- Portable BitMaps
                |
                + PGM                           <-- Portable Grayscale Maps
                |
                + PNM                           <-- Portable aNy Maps
                |
                + PPM                           <-- Portable Picture Maps
                |
                + VMS                           <-- VMS specific files

Rick Dyson
--
Richard L. Dyson               INTERNET:  Dyson@IowaSP.Physics.UIowa.EDU
 _   _      _____    Senior Programmer Analyst          O: 319/335--1879
| | | |    |_   _|   Department of Physics & Astronomy  H: 319/338--6117
| | | | of   | |     Van Allen Hall            NSI/DECnet: IOWASP::DYSON
| \_/ |     _| |_    University of Iowa               or :   7231::DYSON
 \___/     |_____|   Iowa City, IA 52242-1479

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.