home *** CD-ROM | disk | FTP | other *** search
- XLOADIMAGE - X11 Image Loading Utility
-
- WHAT IS IT?
-
- This utility will view several types of images under X11, load
- images onto the root window, or dump processed images into one of
- several image file formats. The current version can read many
- different image file types; for a complete list type "xloadimage
- -supported".
-
- A variety of options are available to modify images prior to viewing.
- These options include clipping, dithering, depth reduction, zoom
- (either X or Y axis independently or both at once), brightening or
- darkening, and image merging. When applicable, these options are done
- automatically (eg a color image to be displayed on a monochrome screen
- will be dithered automatically).
-
- TIFF AND JPEG SUPPORT
-
- This version of xloadimage supports both JPEG and TIFF files through
- the IJG V4 JPEG library and the Sam Leffler's V3 TIFF library. The
- libraries are included almost in their entirety.
-
- The libconfig.c program is used to create appropriate Makefile
- configurations so that no special intervention is required to compile
- these libraries on most systems. If there are problems compiling
- these libraries on your system you can leave out support for them
- during the configuration process. In my tests on various machines
- there were never any problems building the supplied libraries.
-
- Unfortunately I cannot answer most questions regarding these
- libraries. You can direct such questions to:
-
- jpeg-info@uunet.uu.net
- tiff@ucbvax.berkeley.edu
-
- BUILDING THE RELEASE
-
- To build xloadimage simply type "make". If you prefer to use xmkmf or
- imake, please read the note below before doing so.
-
- Xloadimage will build a configuration program first and run it -- the
- configuration program will look at your system to try to determine
- what variety of system it is, where the X libraries and include files
- are, and whether or not some nonstandard libraries are likely to be
- needed. The configuration program is specifically designed to make
- the configuration process very painless on most systems available
- today, but it cannot predict all possible variations.
-
- If the configuration program cannot find something that it's looking
- for it will ask you where it is and it will attempt to verify the
- correctness of your response. You will also be prompted for the name
- of the C compiler you want to use, and where the TIFF and JPEG
- libraries and header files are located. The questions should be
- simple and straightforward; if you don't know the answer to a question
- you can usually hit "return" and the default will work.
-
- If you make a mistake during configuration you can interrupt the
- configuration program (using ^C or whatever the interrupt character is
- on your system); type "make" to restart.
-
- If you are building xloadimage on multiple systems you should type
- "make clean" to clean up the build on the previous system; the
- configuration will be re-run when you type "make".
-
- Once configured the xloadimage distribution will continue to use the
- same configuration parameters until a "make clean" or "make configure"
- is done.
-
- All configuration options are written into Make.conf; if you need to
- make changes and don't like the configuration utility you can always
- edit the file yourself. Keep another copy of any such changes because
- xloadimage will overwrite Make.conf whenever you do a "make clean" or
- if it needs to rebuild the configuration program.
-
- NOTE: The Makefile assumes that "cc" exists and can be used to build
- the configuration program. If your C compiler isn't called "cc" or is
- not found along your path you will need to edit the CC= line in
- Make.conf to provide the appropriate compiler name.
-
- NOTE: Many sites use the xmkmf to generate an appropriate Makefile
- from an Imakefile when building X applications. While xloadimage
- includes an Imakefile for this purpose IT IS STRONGLY RECOMMENDED THAT
- YOU DO NOT USE XMKMF OR IMAKE. There is not enough information
- included in the MIT releases to determine the appropriate
- configuration for xloadimage. For this reason some capabilities
- cannot be configured using xmkmf/imake. If you decide to use xmkmf
- and/or imake anyway and you have problems building the distribution
- you should copy Makefile.std into Makefile and follow the normal
- installation instructions.
-
- NOTE: If you are on a VMS system the automatic configuration code
- won't work at all. There is a VMS_BUILD.COM script included which
- should be close to what you need to build xloadimage. Unfortunately I
- cannot test this script so it may not be perfect -- you're on your own
- if you're using VMS (which is probably not surprising if you've done
- this kind of thing before).
-
- INSTALLATION
-
- After compiling and installing xloadimage, I recommend linking or
- symlinking to the executable with the names "xview" and "xsetbg". The
- default behavior is slightly different when invoked with these
- commands (they're also easier to type). If you have a public image
- area you should consider setting the SYSPATHFILE option in the
- makefile and setting up a system-wide configuration file. See the man
- page for information on the format of this file.
-
- IMPLEMENTATION
-
- Most functions are not particularly fast, and some functions use
- simple-minded algorithms deliberately over more advanced ones. I
- stressed portability over all and simplicity over performance,
- although many algorithms have become fairly complex over time. I
- believe the result is a usable, portable tool which should serve the
- needs of most users.
-
- The source code is basically in two parts: image manipulation routines
- and everything else. The image manipulation routines should be
- completely independent of X, thus allowing people to use them under
- other graphical systems. No guarantees here, but I tried.
-
- Performance-oriented people will notice that some operations are
- redundant. Xloadimage is designed to work fairly quickly for most
- operations but in some cases I opted for a cleaner internal design
- rather than pure performance.
-
- OWNERSHIP AND COMMERCIAL USE
-
- I used a modified version of the MIT X Consortium copyright with all
- of these functions, thereby allowing full freedom with the code so
- long as the copyright notices remain intact. All contributions have
- similar notices.
-
- Commercial sites are welcome to use the code even without special
- permission, licensing or royalty fees. I'm very happy to hear of this
- stuff going toward real products (it's in several that I am aware of)
- so I appreciate hearing of any use of some or all of the code in other
- applications. If you tell me you're using it I'm much more likely to
- keep you informed about new versions as well, so it works out well all
- around. Xloadimage does not require any form of licensing or royalty
- payment to use in a commercial product, but the MIT copyright does
- require mention of the copyright notice in accompanying documentation;
- xloadimage has several copyrights that may need inclusion. It's
- unlikely that I would ever prosecute someone for neglecting to follow
- the terms of the copyright.
-
- If you're using xloadimage in a commercial product beware that it adds
- handlers for common exceptions that print out my email address. While
- I'm happy to support any xloadimage user it is difficult to support
- them if I don't know about changes you have made. At the very least
- modifications should include changes to the patchlevel information to
- indicate your company and/or product name even if you do not change
- the email address.
-
- PRAISE, SUGGESTIONS AND BUG REPORTS
-
- Praise, suggestions, and bug reports should go to:
-
- Jim Frost
- CenterLine Software
- 10 Fawcett Street
- Cambridge, MA 02138
- (617) 498-3000
- jimf@centerline.com
-
- Please include the version number and sample image data if you are
- reporting a bug.
-
- Functions implementing new image types are welcomed; mail them to the
- same address and I'll do my best to distribute them. Please include a
- small sample image. Try to send them as public domain so I can keep
- the number of differing copyright messages to a minimum -- I'll use my
- standard message and leave the implementor's name and information in
- the file for credit. I wouldn't copyright this stuff at all except
- that it's a requirement for X11 distribution.
-
- If you particularly like xloadimage, feel free to drop me a line. It
- makes me feel good and I get a feel for who does what with it, which
- sometimes influences what parts are worked on.
-
- THANKS
-
- Special thanks to the crew at the Boston University Graphics Lab for
- their assistance and sample images, and to bzs@std.com for his simple
- dithering algorithm (or what's left of it). Real special thanks to
- Kirk L. Johnson (tuna@athena.mit.edu) for a very nice GIF loader and
- dithering routine, to Mark Snitily (zok!mark@apple.com) for 386/ix
- compatibility work, to Andreas Stolcke (stolcke@icsib12.berkeley.edu)
- for miscellaneous bug fixes, to Anthony A. Datri (datri@convex.com)
- for a number of things, to Mark Moraes (moraes@cs.toronto.edu) for
- the slideshow colormap fix, to Gregg Townsend (gmt@cs.arizona.edu) for
- a suggested dithering routine and other fixes, to Brian Frost
- (B1F5814@RIGEL.TAMU.EDU) for changes for VMS, to Chip Horstman for G3
- FAX support, to Deron Dann Johnson (dj@eng.sun.com) for fixing the
- RetainTemporary bug, to Tom Tatlow (tatlow@dash.enet.dec.com) for
- image rotation code, to Mark A. Horstman (mhorstm@sarek.sbc.com) for
- tilde expansion in .xloadimagerc files and virtual-root support in
- root.c, to Tim Roper (timr@labtam.labtam.oz.au), Graeme Gill
- (graeme@labtam.oz.au) for gamma correction and Utah RLE image support,
- Mark Majhor (uunet!sequent!markm) for FBM and MacPaint support, Ian
- MacPhedran (macphed@dvinci.usask.ca) for PGM and PPM support, Per
- Fogelstrom (pf@diab.se) for a fix to send.c, Hans J. Albertsson
- (hans@Sweden.Sun.COM) for cleaning up GIF aborting, Graham Hudspith
- (gwh@inmos.com) for a geometry patch, Glenn P. Davis
- (davis@unidata.ucar.edu) for McIDAS areafile support, Keith S. Pickens
- (maxwell.nde.swri.edu!ksp) for fixing the RLE loader to work with the
- updated zio package, Mike Douglas (douglas@wilbur.coyote.trw.com) for
- normalization, Rod Johnson (johnson@wrl.epi.com) for speedup
- suggestions, Hal Peterson (hrp@cray.com) for his Imakefile fix, Matt
- Caprile (Matthew.Caprile@ec.bull.fr) for slideshow delay code, Bob
- Deroy (rwd@bucrsb.bu.edu) for mondo 24-bit Sun Rasterfile images that
- broke everything, Christos S. Zoulas (christo@ee.cornell.edu) for a
- first-cut 24-bit implementation, Gerald James Barnes
- (gjb@oasis.icl.stc.co.uk) for a first-cut forced-visual
- implementation, Michael Campanella (campanella@cvg.enet.dec.com) for
- more VMS changes, Kee Hinckley (nazgul@alfalfa.com) for robustness
- changes to the g3 and MacPaint loaders and the ZIO package, Tim
- Northrup (tim@brspyr1.brs.com) for PC Paintbrush and GEM image
- formats, Richard Weidner (richard@elroy.jpl.nasa.gov) for lots of
- 24-bit testing, Eckhard Rueggeberg (erueg@cfgauss.uni-math.gwdg.de)
- for a better PCX loader, and any others whose names I've missed.
-
- HISTORY
-
- Patch 01 contained a new Makefile.std, Makefile.gcc, and Imakefile.
- It contained a bug-fix to sendImageToX() which allowed bitmaps to be
- sent from little-endian machines (eg VAX, 80386) correctly, and a fix
- to xbitmapLoad() to allow correct loading of X10 bitmap images. An
- enhancement to imageInWindow() which allowed exiting from image
- windows by typing 'q' was submitted by Chris Tengi
- (tengi@idunno.princeton.edu) and was included. The previously missing
- file 'patchlevel' was included.
-
- Patch 02 contained modifications to the Makefiles, support for the X
- Pixmap image type, a different dithering algorithm that didn't blow
- the image up (with the old one moved to halftone.c), and a bug fix to
- zoom.c to correct problems when zooming bitmaps.
-
- Patch 03 contained a new loader for GIF files. The dither bits array
- in dither.c was changed so it worked properly, and both dither.c and
- halftone.c had minor bugs fixed. Merge.c was modified to correct bugs
- when merging RGB images. Pbm.c was modified to handle raw format
- images. Root.c was modified to deny image loads which would change
- the root window's colormap. Send.c was modified to use shared colors
- whenever possible and to handle color displays which have depths which
- are not a multiple of 8. Window.c was modified to avoid deleting the
- default colormap, allowing proper operation on some servers prior to
- X11R3 patchlevel 08. There were many miscellaneous bug fixes.
-
- Patchlevel 04 contained an enhancement to root.c to use
- RetainTemporary and KillClient(disp, AllTemporary) so that it could
- clean up after itself when reloading. The -quiet and -zoom options no
- longer cause garbage to be displayed for the image title. A small bug
- in new.c that caused incorrect allocation of bitmap images was fixed.
- Several calls to XCreateColormap were missing the "visual" parameter
- in send.c; this was fixed. A bug relating to -border and monochrome
- displays was fixed. There were several changes to the Imakefile and
- Makefiles.
-
- Patchlevel 05 contained enhancements to allow slideshows and
- fullscreen viewing, some bug fixes related to scrolling around within
- images, Saber-C makefile enhancements, a bug fix to the halftoning
- title, and the addition of greyscale Sun Rasterfile support.
-
- Patchlevel 06 contained support for G3 FAX images, bug fixes to
- merge.c to fix some signed/unsigned errors and clipping problems,
- changes to root.c to make previously allocated resources be freed
- properly, and a completely new dithering routine.
-
- Version 2, patchlevel 00 contained support for MacPaint, FBM, PGM,
- PPM, CMU, Utah RLE and XWD image formats, gamma equalization, image
- smoothing, and image rotation. G3 FAX support was modified to cut
- down on false positive identifications. The zio subsystem was
- modified to cache reads for performance improvements and to allow
- stdin to be used as an input source. Several loader functions which
- did not properly close their files were fixed. Color slideshows now
- work. Icon titles use an abbreviated titlebar title to enhance
- readability. The resource class name was changed from XLoadImage to
- xloadimage to be more predictable. Several options now propagate to
- all images following them if the -slideshow option is specified.
-
- Version 2.01 contained several fixes to window.c to work around a bug
- in twm/tvtwm which could crash servers. The resource class name was
- changed (again) to Xloadimage to conform with standard class naming
- practices. Several problems with System-V compilation were corrected.
- The gcc-1-37 make target was fixed to prevent a double-define. The
- GIF loader was patched to respond better to short GIF files. The Utah
- RLE image loader was patched to work with the updated ZIO package.
-
- Version 2.02 added the options -default, -gray, -normalize, and
- -private. The memToVal routines were macro-ized for substantial speed
- increases. The atom used for deleting previously allocated colors for
- the -onroot option was changed to correspond to that used by xsetroot.
- Dithering and halftoning were changed to use a lookup table for
- intensities to speed them up somewhat. Rle.h was changed to use
- memToValLSB() instead of its own byte-swapping algorithm for
- portability. Window.c was modified to eliminate the initial paint,
- moving it instead to within ConfigureNotify. A fix was made to xwd.c
- to fix its colormap loader for out-of-order colormaps. The G3 FAX
- identification function was fixed and the G3 loader moved to prior to
- the MacPaint loader so that both can be used. A bug in send.c where
- color images using the default colormap would not appear correctly if
- the display depth was not a multiple of 8 was corrected. The default
- gamma value used in rle.c was changed from 2 to 1. There were
- miscellaneous portability changes.
-
- Version 2.03 added -delay. Many minor programming errors were cleaned
- up. Hash.c was changed to use image.h instead of local typedefs
- (fixing a problem with PPM image loading). Window.c was changed to
- fix a problem with override redirect windows in fullscreen mode,
- and refresh problems with some servers in slideshow mode were fixed.
- Path.c was modified to ignore directories when searching for files.
- Send.c was modified to allow TrueColor and DirectColor visuals.
-
- Version 2.03-JPL contained interim code to handle 24-bit TrueColor and
- DirectColor displays pending the release of Version 3.0.
-
- Version 3.0 added full support for all server types. Internal support
- for 24-bit images was implemented (including the improvement of Sun
- Rasterfile and PPM support to use the 24-bit format internally). Many
- modifications to image processing routines to support or make use of
- 24-bit images. A much-improved colormap reduction algorithm replaced
- the primitive one in previous versions. The window display code was
- modified to work with the best possible visual. The window display
- code was modified to use backing store when available (and -pixmap was
- added to force the old technique). The -fit option was added to force
- an image to be fit into the default colormap if it didn't fit as
- supplied. The -fork option was added to allow automatic
- backgrounding. The -onroot -fullscreen options were modified to
- preserve aspect ratio. The -windowid option was added to allow the
- setting of the background pixmap of any window. The -onroot code was
- modified to work with DECWINDOWS servers. The -normalize option was
- improved for color images. The -slideshow option was removed (and
- made the default behavior) and -merge was added to allow more flexible
- image merging. The WM_DELETE protocol is now recognized. PC
- Paintbrush (PCX) and GEM bitmap image formats are now supported. The
- GIF 89a signature is now recognized (although no support for its
- additional capabilities has been implemented).
-
- Version 3.01 corrected color problems when merging RGB files and fixed
- a few small problems.
-
- Version 3.02 fixed a -zoom bug for 24-bit images, a bug in the
- imageOnRoot() function for DEC and NCD servers, and a couple of bugs
- in merging and smoothing.
-
- Version 3.03 added JPEG and color PCX image support and small fixes to
- smooth() and normalize().
-
- Version 4.0 added color PCX support, VICAR image support, NIFF image
- support, -dump, -unhalftone, JPEG V4 and TIFF V3 integration, generic
- filtering, and fixed a lot of bugs and minor build problems on some
- systems. Options are now handled in the order they are given rather
- than a fixed order. G3 FAX loader was removed because it was totally
- unreliable.
-
- Version 4.1 fixed a number of ANSI-C compilation problems, enhanced
- the automated configuration to target HP and SGI machines
- automatically, corrected a few minor bugs, and included the IJG JPEG
- V4A code.
-