-*- 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: