-*- Text -*-
Changes from version 2.0 of the toolkit.

Due to a loss of source control for a time, not all changes are
represented in detail here.   However, the significant changes are
covered.  Changes are divided into External and Internal.  External
changes are those that affect a user of the toolkit.  Internal changes
are those that affect someone programming using the toolkit library.

Summary of External Changes
Toolkit setup:  A new configuration procedure is in place.  Edit the
	file urt.config (read README.conf for instructions) to
	configure the toolkit for your local installation.  
	Configuration files for some machines are included.

(Almost) all tools:
[-o outfile] option for explicit specification of output file.
	outfile='-' means send to standard output.
Input file name may be '-' for standard input.
If enabled (NO_OPEN_PIPES not defined in configuration file), a file
	name starting with '|' will be executed as a (sh) command.  If
	an input file, the output of the command will be read by the
	tool.  If an output file, the output of the tool will be sent
	to the standard input of the command.
If enabled, (NO_OPEN_PIPES not defined), a file name ending in ".Z"
	(and not starting with '|') will be decompressed (for input)
	or compressed (for output) using the unix compress command.
Most tools will process files containing multiple concatenated images.
	The exceptions are noted below and in the individual manual
	pages.  The only 'get' program that handles multiple images is
	getx11, and none of the 'cnv' programs handle multiple images.
Most tools add to a "HISTORY" comment in the RLE header.  The
	exception is rleaddcom.

Individual tools:
applymap	Now handles files with multiple images.  

avg4		Now handles files with multiple images.  

crop		New -b flag means to compute the bounding box (ala
		rlebox).  Input cannot come from a pipe if -b is
		given.  Now handles multiple images (even with -b).

fant		-o (origin) flag changes to -p (position).  New -o
		flag used for output file name.  Now handles files
		with multiple images.  Major changes by Jamie Painter,
		U of Utah -- inner loop rewritten in fixed point, gets
		from 50% to 500% speedup depending on hardware.  New
		-b flag uses filtering algorithm by Painter that is a
		little blurrier, but leaves fewer artifacts when the
		image has small features (e.g., lines).

mcut		Now handles files with multiple images.  -D flag
		(dither) changed to -d.  -d colors (number of colors
		to use) changed to -n colors.

mergechan	Now handles files with multiple images.  Each input
		file is viewed as a stream of images that are merged
		to produce a stream of output images.

pyrmask		Now handles files with multiple images.  

repos		Now handles files with multiple images.  Changed
		[-i xinc yinc] (incremental positioning) to 
		[-P xinc yinc].

rleaddcom	Now handles files with multiple images.  Adds the same
		comment(s) to all images.  Changed [-f infile] to 
		[infile].  Added -i for "in place" comment
		modification.  Works like the 'into' program -- writes
		the output to a temp file and then renames it onto the
		original.  Even works with compressed images.

rleaddeof	New program to add an end-of-image marker to images
		generated by programs that don't do so.

rlebg		Generates HISTORY comment.  [outfile] changes to 
		[-o outfile].

rlebox		Now handles files with multiple images.  

rlecomp		Name changed from 'comp' to avoid conflict with MH
		mail handling system.  Now handles files with multiple
		images (Two streams of input images merge into one
		stream of output images.)  The command line syntax
		changed to 'Afile op Bfile' from '-o op Afile Bfile'.
		There is no default operation now.  The new -o flag
		indicates the output file name.

rledither	New program.  Dithers an image against a given
		colormap using Floyd-Steinberg dithering.  Handles
		files with multiple images.

rleflip		Handles files with multiple images.

rlehdr		Now accepts multiple files and files with multiple images.

rlehisto	Handles files with multiple images (outputs
		concatenated histogram images.  For multiple channel
		images, the individual channel histograms are now
		overlaid on each other.  A new -c (cumulative) flag
		produces a cumulative histogram.  The -b flag causes
		the program to ignore the background color when
		computing the histogram scaling.  The default image
		size is changed to 256x256. (Some of these changes are
		courtesy of Gregg Townsend, University of Arizona).

rleldmap	Handles files with multiple images (but the colormap
		to be loaded is determined only once, and used for all
		images in the input file).

rlemandl	Creates a history comment.

rlenoise	Handles files with multiple images.

rlepatch	Handles files  with multiple images -- The set of
		files is treated as a collection of parallel image
		streams.  The n'th image in the first stream is patched
		with the n'th image in each of the patch streams.  The
		program exits as soon as one stream terminates.

rleprint	New program.  Prints all the pixel values (one pixel
		per line) in the input.  Not very useful because of
		the verbosity of its output.

rlequant	New program.  Quantizes images to a given number of
		colors using a variance-based algorithm written by
		Craig Kolb, Yale University.  Dithering code written
		by Rod Bogart, U of Michigan.

rlescale	Creates a history comment.

rlesetbg	Handles files with multiple images.

rleskel		Not really a program.  This source file provides a
		skeleton for a basic "filter" tool.  The program is
		not normally compiled and installed.  If it were, it
		would just copy its input to its output.

rlespiff	New program.  Uses a simplistic contrast enhancement
		process to "spiff up" an image.

rlesplice	New program.  Sticks two images together side by side
		or one above the other.  This can be accomplished with
		rlepatch, but this program is easier to use.  Written
		by Martin Friedmann, MIT Media Lab.

rlesplit	'-p prefix' changed to '-o output-file-name-prefix' to
		be consistent with the -o convention of the rest of
		the tools.  Always handled concatenated images.

rleswap		Handles files with multiple images.  Changed 
			-i input_channels to -f from_channels
			-o output_channels to -t to_channels
		Added 	-o outfile

rlezoom		Handles files with multiple images.  The major change
		here is the addition of "floating point" zoom.  It
		uses a simple algorithm to super- or sub- sample the
		image for non-integral zoom factors.  It's a lot
		faster than fant, even if it doesn't look as good.  It
		could probably be faster if someone wants to rewrite
		the inner loop using all integer arithmetic.

smush		Handles files with multiple images.

to8		Handles files with multiple images.

tobw		Handles files with multiple images.

unexp		Handles files with multiple images.

unslice		No major changes.  Does not handle files with multiple
		images.

Conversion programs:

cubitorle	No major changes.  Creates a history comment.

dvirle		Updated to work with current McTeX distribution (not
		included, see the README).

giftorle	New program.  Converts a GIF image to RLE.  By David Koblas.

graytorle	No major changes.  Creates a history comment.

painttorle	Takes input from a file as well as stdin.  Creates a
		history comment.

rastorle	A number of bug fixes, so that it no longer produces
		pathological RLE files.  Handles 24 bit raster files.
		Creates a history comment.

rawtorle	New program.  Converts a variety of "raw" image
		formats to RLE.  From Martin Friedmann, MIT.

rletoabA60	New program.  Converts RLE to the Abekas A60 digital
		video disk format.

rletoabA62	New program.  Converts RLE to the Abekas A62 digital
		video disk format.

rletoascii	New program.  For making simple "line printer"
		pictures from RLE images.  Doesn't do any overprinting
		(if someone is serious about this output form, maybe you
		could add this enhancement).

rletogif	New program.  Converts a single channel RLE file to
		GIF.  Use rlequant, mcut, to8, or tobw to get a 1
		channel image from an RGB image.  By Bailey Brown, U
		of Michigan.

rletogray	Changed -p prefix to -o outprefix.

rletopaint	Change -i (invert) to -r (reverse).  Add -o outfile.

rletops		Color postscript output with -C flag.  50% speedup.
		The image is printed at the top of the page instead of
		the bottom.  A %%BoundingBox comment is now output.
		Most of these changes courtesy of Gregg Townsend, U of
		Arizona.

rletorast	New program?  Converts RLE to Sun RASTER (8 or 24 bit,
		depending on input).

rletoraw	New program. Convert RLE to simple RGBRGBRGB raw
		format.  By Martin Friedmann.

rletotiff	New program.  Convert (24 bit) RLE images to TIFF.
		Requires Sam Leffler's 'libtiff'.  See cnv/README.  By
		Bailey Brown, U of Michigan.

targatorle	No major changes.  Creates history comment.

tifftorle	New program.  Convert (24 bit) TIFF images to RLE.
		Requires Leffler's libtiff.  By Bailey Brown, U of
		Michigan. 

wasatchrle	No major changes.  Creates history comment.

Display programs:
get4d		New program.  Displays RLE files on a Silicon Graphics
		Iris 4D (or the new IBM RS6000 with the GL compatible
		graphics).

getX		Changed -l levels to -n levels.

get_orion	Changed -b (black & white) to -w (for consistency).

getap		Change -i (inverse) to -r (reverse video).

getbob		No major changes.

getcx3d		No major changes.

getfb		No major changes.

getgmr		No major changes.

getiris		No major changes.

getmac		Updated to use 32 bit quickdraw if present.  Still
		only runs under MPW (not even A/UX).

getmex		No major changes.

getqcr		No major changes.

getren		Works with devices other than hp98721.

getsun		Now forks into background.

gettaac		New program.  Displays on a TAAC1 under the SunView
		environment.

getx11		New program.  All-singing-all-dancing display program
		for X11.  Includes zoom and pan and a "movie mode".

read98721	New program.  Reads an image from a HP "Renaissance"
		display and writes an RLE file.


****************************************************************
Internal changes:
One of the most obvious changes is the new configuration procedure.
This should make it much easier to maintain the toolkit in a
heterogeneous environment.  The configuration files and makefiles are
designed so that you could maintain multiple binary trees from a
single source tree, simply by specifying different destination
directories (and 'making clean' when switching machines).  There are a
lot of configuration variables, but most systems require only a few
changes from the default.  The large number of variables give us the
best flexibility.

Another "cataclysmic" change is the change in function and data
structure names.  Rather than enumerate the changes, you should refer
to the 'sv.sed' file in the toolkit root directory.  To convert your
toolkit program to use the new headers and library, you simply
	sed -f sv.sed myfile.c | into myfile.c
(Of course, if you are at all paranoid, you won't do this on the only
copy.)  You should examine the output for bizarre comments (I have not
run into any code problems in our conversion, just mangled comments).
A common one is to find the word 'hdral' (used to be 'global'), as one
of the changes was to get rid of the term 'globals' when refering to
the RLE header structure.  All the 'sv_' prefixes on function,
variable, and structure field names went away or changed to 'rle_'.
Again, see sv.sed for the details.

A lot of work was put into cleaning the code and making it compatible
with as many C compilers as possible (including ANSI).

Now, to the more specific changes.

exit_status.h:	This distribution actually includes this file,
		required by getx11.

rle.h		This file used to be called "svfb_global.h".  It now
		includes full prototypes for almost all the library
		functions (a few are defined in rle_raw.h).  This
		header is C++ compatible (i.e., you can include it in
		C++ programs).  However, the toolkit will not, in
		general, compile with C++.  Byte order dependencies
		were removed (hurray!)

rle_code.h	Used to be called XtndRunsv.h.  Byte order and word
		size dependencies removed.

rle_put.h	Used to be called svfb.h.

rle_raw.h	Used to be called rle_getraw.h, but since in includes
		definitions for rle_putraw, the name was changed.
		Includes prototypes for ANSI and C++ compilers.

Runput.c	Used to be called Runsv.c.  Major change here is due
		to Mike Muuss, Ballistic Research Lab.  The code is
		now totally byte order and word size independent
		(well, it may assume that a short is at least 16
		bits).  This should make Cray users happy.  Another
		fix eliminates the random values that were written
		into unused bytes of the file.  You should now be able
		to 'cmp' two RLE files.

bstring.c	Conditional on NEED_BSTRING

cmd_name.c	NEW. A convenience routine to extract the "command name"
		from argv.  Used in error messages.

colorquant.c	NEW. Variance-based color quantization code from Craig
		Kolb, Yale Univ.

dither.c	ANSI compatibility.

getopt.c	Conditional on NEED_GETOPT.

rle_addhist.c	NEW. Add to the HISTORY comment.  From Andrew Marrot,
		Curtin U of Tech. (Australia).

rle_cp.c	NEW.  Copy the "rest" of an rle image from input to
		output.  To properly handle concatenated images, the
		process of copying got more complex.  Thus, it was
		encapsulated here.

rle_getraw.c	After the last line is read, but before it is
		returned, any data remaining in the image ("above the
		top") is skipped.  This makes it easier to process
		multiple-image files.  This change should be
		invisible.  Now byte order & word size independent.
		Thanks to Thomas Palmer (NCI supercomputer facility)
		and Mike Muuss for this.  

rle_getrow.c	Same skipping logic as above added.  Byte order and
		word size independence as above (thanks Mike!).
		Routines added to make error checking rle_get_setup
		easier.

rle_getskip.c	NEW.  Skip scanlines in the input.

rle_global.c	Name changed from svfb_global.c.  Global variable
		initialization.

rle_open_f.c	NEW.  Common file opening code.  Try to encapsulate
		common code (e.g., '-' for stdin/stdout, pipe
		semantics, compressed file interface) and system
		dependencies ('b' for binary IO on some systems).  Has
		nothing to do with RLE files, really.

rle_putraw.c	Changed from sv_putraw.c.  Byte order/word size
		dependencies removed.

rle_putrow.c	Was sv_putrow.c.  Byte order/word size dependencies
		removed.  sv_setup changed to rle_put_setup, and first
		argument removed.  Added rle_put_init function -- like
		rle_put_setup, but just initializes the header
		structure, doesn't do any I/O.  Useful for appending
		more scanline data to an existing image.

rle_rawrow.c	NEW.  Convert "raw" data to normal scanline data.

sVsetlinebuf.c	Conditional on NEED_SETLINEBUF

scanargs.c	More portable.

vaxshort.c	NEW.  Support for byte order/word size independence.


Local variables:
fill-prefix: "\t\t"
End:
