home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / xloadimg.zip / xloadimage.4.1 / README < prev    next >
Text File  |  1993-11-09  |  19KB  |  362 lines

  1. XLOADIMAGE - X11 Image Loading Utility
  2.  
  3. WHAT IS IT?
  4.  
  5. This utility will view several types of images under X11, load
  6. images onto the root window, or dump processed images into one of
  7. several image file formats.  The current version can read many
  8. different image file types; for a complete list type "xloadimage
  9. -supported".
  10.  
  11. A variety of options are available to modify images prior to viewing.
  12. These options include clipping, dithering, depth reduction, zoom
  13. (either X or Y axis independently or both at once), brightening or
  14. darkening, and image merging.  When applicable, these options are done
  15. automatically (eg a color image to be displayed on a monochrome screen
  16. will be dithered automatically).
  17.  
  18. TIFF AND JPEG SUPPORT
  19.  
  20. This version of xloadimage supports both JPEG and TIFF files through
  21. the IJG V4 JPEG library and the Sam Leffler's V3 TIFF library.  The
  22. libraries are included almost in their entirety.
  23.  
  24. The libconfig.c program is used to create appropriate Makefile
  25. configurations so that no special intervention is required to compile
  26. these libraries on most systems.  If there are problems compiling
  27. these libraries on your system you can leave out support for them
  28. during the configuration process.  In my tests on various machines
  29. there were never any problems building the supplied libraries.
  30.  
  31. Unfortunately I cannot answer most questions regarding these
  32. libraries.  You can direct such questions to:
  33.  
  34.     jpeg-info@uunet.uu.net
  35.     tiff@ucbvax.berkeley.edu
  36.  
  37. BUILDING THE RELEASE
  38.  
  39. To build xloadimage simply type "make".  If you prefer to use xmkmf or
  40. imake, please read the note below before doing so.
  41.  
  42. Xloadimage will build a configuration program first and run it -- the
  43. configuration program will look at your system to try to determine
  44. what variety of system it is, where the X libraries and include files
  45. are, and whether or not some nonstandard libraries are likely to be
  46. needed.  The configuration program is specifically designed to make
  47. the configuration process very painless on most systems available
  48. today, but it cannot predict all possible variations.
  49.  
  50. If the configuration program cannot find something that it's looking
  51. for it will ask you where it is and it will attempt to verify the
  52. correctness of your response.  You will also be prompted for the name
  53. of the C compiler you want to use, and where the TIFF and JPEG
  54. libraries and header files are located.  The questions should be
  55. simple and straightforward; if you don't know the answer to a question
  56. you can usually hit "return" and the default will work.
  57.  
  58. If you make a mistake during configuration you can interrupt the
  59. configuration program (using ^C or whatever the interrupt character is
  60. on your system); type "make" to restart.
  61.  
  62. If you are building xloadimage on multiple systems you should type
  63. "make clean" to clean up the build on the previous system; the
  64. configuration will be re-run when you type "make".
  65.  
  66. Once configured the xloadimage distribution will continue to use the
  67. same configuration parameters until a "make clean" or "make configure"
  68. is done.
  69.  
  70. All configuration options are written into Make.conf; if you need to
  71. make changes and don't like the configuration utility you can always
  72. edit the file yourself.  Keep another copy of any such changes because
  73. xloadimage will overwrite Make.conf whenever you do a "make clean" or
  74. if it needs to rebuild the configuration program.
  75.  
  76. NOTE: The Makefile assumes that "cc" exists and can be used to build
  77. the configuration program.  If your C compiler isn't called "cc" or is
  78. not found along your path you will need to edit the CC= line in
  79. Make.conf to provide the appropriate compiler name.
  80.  
  81. NOTE: Many sites use the xmkmf to generate an appropriate Makefile
  82. from an Imakefile when building X applications.  While xloadimage
  83. includes an Imakefile for this purpose IT IS STRONGLY RECOMMENDED THAT
  84. YOU DO NOT USE XMKMF OR IMAKE.  There is not enough information
  85. included in the MIT releases to determine the appropriate
  86. configuration for xloadimage.  For this reason some capabilities
  87. cannot be configured using xmkmf/imake.  If you decide to use xmkmf
  88. and/or imake anyway and you have problems building the distribution
  89. you should copy Makefile.std into Makefile and follow the normal
  90. installation instructions.
  91.  
  92. NOTE: If you are on a VMS system the automatic configuration code
  93. won't work at all.  There is a VMS_BUILD.COM script included which
  94. should be close to what you need to build xloadimage.  Unfortunately I
  95. cannot test this script so it may not be perfect -- you're on your own
  96. if you're using VMS (which is probably not surprising if you've done
  97. this kind of thing before).
  98.  
  99. INSTALLATION
  100.  
  101. After compiling and installing xloadimage, I recommend linking or
  102. symlinking to the executable with the names "xview" and "xsetbg".  The
  103. default behavior is slightly different when invoked with these
  104. commands (they're also easier to type).  If you have a public image
  105. area you should consider setting the SYSPATHFILE option in the
  106. makefile and setting up a system-wide configuration file.  See the man
  107. page for information on the format of this file.
  108.  
  109. IMPLEMENTATION
  110.  
  111. Most functions are not particularly fast, and some functions use
  112. simple-minded algorithms deliberately over more advanced ones.  I
  113. stressed portability over all and simplicity over performance,
  114. although many algorithms have become fairly complex over time.  I
  115. believe the result is a usable, portable tool which should serve the
  116. needs of most users.
  117.  
  118. The source code is basically in two parts: image manipulation routines
  119. and everything else.  The image manipulation routines should be
  120. completely independent of X, thus allowing people to use them under
  121. other graphical systems.  No guarantees here, but I tried.
  122.  
  123. Performance-oriented people will notice that some operations are
  124. redundant.  Xloadimage is designed to work fairly quickly for most
  125. operations but in some cases I opted for a cleaner internal design
  126. rather than pure performance.
  127.  
  128. OWNERSHIP AND COMMERCIAL USE
  129.  
  130. I used a modified version of the MIT X Consortium copyright with all
  131. of these functions, thereby allowing full freedom with the code so
  132. long as the copyright notices remain intact.  All contributions have
  133. similar notices.
  134.  
  135. Commercial sites are welcome to use the code even without special
  136. permission, licensing or royalty fees.  I'm very happy to hear of this
  137. stuff going toward real products (it's in several that I am aware of)
  138. so I appreciate hearing of any use of some or all of the code in other
  139. applications.  If you tell me you're using it I'm much more likely to
  140. keep you informed about new versions as well, so it works out well all
  141. around.  Xloadimage does not require any form of licensing or royalty
  142. payment to use in a commercial product, but the MIT copyright does
  143. require mention of the copyright notice in accompanying documentation;
  144. xloadimage has several copyrights that may need inclusion.  It's
  145. unlikely that I would ever prosecute someone for neglecting to follow
  146. the terms of the copyright.
  147.  
  148. If you're using xloadimage in a commercial product beware that it adds
  149. handlers for common exceptions that print out my email address.  While
  150. I'm happy to support any xloadimage user it is difficult to support
  151. them if I don't know about changes you have made.  At the very least
  152. modifications should include changes to the patchlevel information to
  153. indicate your company and/or product name even if you do not change
  154. the email address.
  155.  
  156. PRAISE, SUGGESTIONS AND BUG REPORTS
  157.  
  158. Praise, suggestions, and bug reports should go to:
  159.  
  160.     Jim Frost
  161.     CenterLine Software
  162.     10 Fawcett Street
  163.     Cambridge, MA  02138
  164.     (617) 498-3000
  165.     jimf@centerline.com
  166.  
  167. Please include the version number and sample image data if you are
  168. reporting a bug.
  169.  
  170. Functions implementing new image types are welcomed; mail them to the
  171. same address and I'll do my best to distribute them.  Please include a
  172. small sample image.  Try to send them as public domain so I can keep
  173. the number of differing copyright messages to a minimum -- I'll use my
  174. standard message and leave the implementor's name and information in
  175. the file for credit.  I wouldn't copyright this stuff at all except
  176. that it's a requirement for X11 distribution.
  177.  
  178. If you particularly like xloadimage, feel free to drop me a line.  It
  179. makes me feel good and I get a feel for who does what with it, which
  180. sometimes influences what parts are worked on.
  181.  
  182. THANKS
  183.  
  184. Special thanks to the crew at the Boston University Graphics Lab for
  185. their assistance and sample images, and to bzs@std.com for his simple
  186. dithering algorithm (or what's left of it).  Real special thanks to
  187. Kirk L. Johnson (tuna@athena.mit.edu) for a very nice GIF loader and
  188. dithering routine, to Mark Snitily (zok!mark@apple.com) for 386/ix
  189. compatibility work, to Andreas Stolcke (stolcke@icsib12.berkeley.edu)
  190. for miscellaneous bug fixes, to Anthony A. Datri (datri@convex.com)
  191. for a number of things, to Mark Moraes (moraes@cs.toronto.edu) for
  192. the slideshow colormap fix, to Gregg Townsend (gmt@cs.arizona.edu) for
  193. a suggested dithering routine and other fixes, to Brian Frost
  194. (B1F5814@RIGEL.TAMU.EDU) for changes for VMS, to Chip Horstman for G3
  195. FAX support, to Deron Dann Johnson (dj@eng.sun.com) for fixing the
  196. RetainTemporary bug, to Tom Tatlow (tatlow@dash.enet.dec.com) for
  197. image rotation code, to Mark A. Horstman (mhorstm@sarek.sbc.com) for
  198. tilde expansion in .xloadimagerc files and virtual-root support in
  199. root.c, to Tim Roper (timr@labtam.labtam.oz.au), Graeme Gill
  200. (graeme@labtam.oz.au) for gamma correction and Utah RLE image support,
  201. Mark Majhor (uunet!sequent!markm) for FBM and MacPaint support, Ian
  202. MacPhedran (macphed@dvinci.usask.ca) for PGM and PPM support, Per
  203. Fogelstrom (pf@diab.se) for a fix to send.c, Hans J. Albertsson
  204. (hans@Sweden.Sun.COM) for cleaning up GIF aborting, Graham Hudspith
  205. (gwh@inmos.com) for a geometry patch, Glenn P. Davis
  206. (davis@unidata.ucar.edu) for McIDAS areafile support, Keith S. Pickens
  207. (maxwell.nde.swri.edu!ksp) for fixing the RLE loader to work with the
  208. updated zio package, Mike Douglas (douglas@wilbur.coyote.trw.com) for
  209. normalization, Rod Johnson (johnson@wrl.epi.com) for speedup
  210. suggestions, Hal Peterson (hrp@cray.com) for his Imakefile fix, Matt
  211. Caprile (Matthew.Caprile@ec.bull.fr) for slideshow delay code, Bob
  212. Deroy (rwd@bucrsb.bu.edu) for mondo 24-bit Sun Rasterfile images that
  213. broke everything, Christos S. Zoulas (christo@ee.cornell.edu) for a
  214. first-cut 24-bit implementation, Gerald James Barnes
  215. (gjb@oasis.icl.stc.co.uk) for a first-cut forced-visual
  216. implementation, Michael Campanella (campanella@cvg.enet.dec.com) for
  217. more VMS changes, Kee Hinckley (nazgul@alfalfa.com) for robustness
  218. changes to the g3 and MacPaint loaders and the ZIO package, Tim
  219. Northrup (tim@brspyr1.brs.com) for PC Paintbrush and GEM image
  220. formats, Richard Weidner (richard@elroy.jpl.nasa.gov) for lots of
  221. 24-bit testing,  Eckhard Rueggeberg (erueg@cfgauss.uni-math.gwdg.de)
  222. for a better PCX loader, and any others whose names I've missed.
  223.  
  224. HISTORY
  225.  
  226. Patch 01 contained a new Makefile.std, Makefile.gcc, and Imakefile.
  227. It contained a bug-fix to sendImageToX() which allowed bitmaps to be
  228. sent from little-endian machines (eg VAX, 80386) correctly, and a fix
  229. to xbitmapLoad() to allow correct loading of X10 bitmap images.  An
  230. enhancement to imageInWindow() which allowed exiting from image
  231. windows by typing 'q' was submitted by Chris Tengi
  232. (tengi@idunno.princeton.edu) and was included.  The previously missing
  233. file 'patchlevel' was included.
  234.  
  235. Patch 02 contained modifications to the Makefiles, support for the X
  236. Pixmap image type, a different dithering algorithm that didn't blow
  237. the image up (with the old one moved to halftone.c), and a bug fix to
  238. zoom.c to correct problems when zooming bitmaps.
  239.  
  240. Patch 03 contained a new loader for GIF files.  The dither bits array
  241. in dither.c was changed so it worked properly, and both dither.c and
  242. halftone.c had minor bugs fixed.  Merge.c was modified to correct bugs
  243. when merging RGB images.  Pbm.c was modified to handle raw format
  244. images.  Root.c was modified to deny image loads which would change
  245. the root window's colormap.  Send.c was modified to use shared colors
  246. whenever possible and to handle color displays which have depths which
  247. are not a multiple of 8.  Window.c was modified to avoid deleting the
  248. default colormap, allowing proper operation on some servers prior to
  249. X11R3 patchlevel 08.  There were many miscellaneous bug fixes.
  250.  
  251. Patchlevel 04 contained an enhancement to root.c to use
  252. RetainTemporary and KillClient(disp, AllTemporary) so that it could
  253. clean up after itself when reloading.  The -quiet and -zoom options no
  254. longer cause garbage to be displayed for the image title.  A small bug
  255. in new.c that caused incorrect allocation of bitmap images was fixed.
  256. Several calls to XCreateColormap were missing the "visual" parameter
  257. in send.c; this was fixed.  A bug relating to -border and monochrome
  258. displays was fixed.  There were several changes to the Imakefile and
  259. Makefiles.
  260.  
  261. Patchlevel 05 contained enhancements to allow slideshows and
  262. fullscreen viewing, some bug fixes related to scrolling around within
  263. images, Saber-C makefile enhancements, a bug fix to the halftoning
  264. title, and the addition of greyscale Sun Rasterfile support.
  265.  
  266. Patchlevel 06 contained support for G3 FAX images, bug fixes to
  267. merge.c to fix some signed/unsigned errors and clipping problems,
  268. changes to root.c to make previously allocated resources be freed
  269. properly, and a completely new dithering routine.
  270.  
  271. Version 2, patchlevel 00 contained support for MacPaint, FBM, PGM,
  272. PPM, CMU, Utah RLE and XWD image formats, gamma equalization, image
  273. smoothing, and image rotation.  G3 FAX support was modified to cut
  274. down on false positive identifications.  The zio subsystem was
  275. modified to cache reads for performance improvements and to allow
  276. stdin to be used as an input source.  Several loader functions which
  277. did not properly close their files were fixed.  Color slideshows now
  278. work.  Icon titles use an abbreviated titlebar title to enhance
  279. readability.  The resource class name was changed from XLoadImage to
  280. xloadimage to be more predictable.  Several options now propagate to
  281. all images following them if the -slideshow option is specified.
  282.  
  283. Version 2.01 contained several fixes to window.c to work around a bug
  284. in twm/tvtwm which could crash servers.  The resource class name was
  285. changed (again) to Xloadimage to conform with standard class naming
  286. practices.  Several problems with System-V compilation were corrected.
  287. The gcc-1-37 make target was fixed to prevent a double-define.  The
  288. GIF loader was patched to respond better to short GIF files.  The Utah
  289. RLE image loader was patched to work with the updated ZIO package.
  290.  
  291. Version 2.02 added the options -default, -gray, -normalize, and
  292. -private.  The memToVal routines were macro-ized for substantial speed
  293. increases.  The atom used for deleting previously allocated colors for
  294. the -onroot option was changed to correspond to that used by xsetroot.
  295. Dithering and halftoning were changed to use a lookup table for
  296. intensities to speed them up somewhat.  Rle.h was changed to use
  297. memToValLSB() instead of its own byte-swapping algorithm for
  298. portability.  Window.c was modified to eliminate the initial paint,
  299. moving it instead to within ConfigureNotify.  A fix was made to xwd.c
  300. to fix its colormap loader for out-of-order colormaps.  The G3 FAX
  301. identification function was fixed and the G3 loader moved to prior to
  302. the MacPaint loader so that both can be used.  A bug in send.c where
  303. color images using the default colormap would not appear correctly if
  304. the display depth was not a multiple of 8 was corrected.  The default
  305. gamma value used in rle.c was changed from 2 to 1.  There were
  306. miscellaneous portability changes.
  307.  
  308. Version 2.03 added -delay.  Many minor programming errors were cleaned
  309. up.  Hash.c was changed to use image.h instead of local typedefs
  310. (fixing a problem with PPM image loading).  Window.c was changed to
  311. fix a problem with override redirect windows in fullscreen mode,
  312. and refresh problems with some servers in slideshow mode were fixed.
  313. Path.c was modified to ignore directories when searching for files.
  314. Send.c was modified to allow TrueColor and DirectColor visuals.
  315.  
  316. Version 2.03-JPL contained interim code to handle 24-bit TrueColor and
  317. DirectColor displays pending the release of Version 3.0.
  318.  
  319. Version 3.0 added full support for all server types.  Internal support
  320. for 24-bit images was implemented (including the improvement of Sun
  321. Rasterfile and PPM support to use the 24-bit format internally).  Many
  322. modifications to image processing routines to support or make use of
  323. 24-bit images.  A much-improved colormap reduction algorithm replaced
  324. the primitive one in previous versions.  The window display code was
  325. modified to work with the best possible visual.  The window display
  326. code was modified to use backing store when available (and -pixmap was
  327. added to force the old technique).  The -fit option was added to force
  328. an image to be fit into the default colormap if it didn't fit as
  329. supplied.  The -fork option was added to allow automatic
  330. backgrounding.  The -onroot -fullscreen options were modified to
  331. preserve aspect ratio.  The -windowid option was added to allow the
  332. setting of the background pixmap of any window.  The -onroot code was
  333. modified to work with DECWINDOWS servers.  The -normalize option was
  334. improved for color images.  The -slideshow option was removed (and
  335. made the default behavior) and -merge was added to allow more flexible
  336. image merging.  The WM_DELETE protocol is now recognized.  PC
  337. Paintbrush (PCX) and GEM bitmap image formats are now supported.  The
  338. GIF 89a signature is now recognized (although no support for its
  339. additional capabilities has been implemented).
  340.  
  341. Version 3.01 corrected color problems when merging RGB files and fixed
  342. a few small problems.
  343.  
  344. Version 3.02 fixed a -zoom bug for 24-bit images, a bug in the
  345. imageOnRoot() function for DEC and NCD servers, and a couple of bugs
  346. in merging and smoothing.
  347.  
  348. Version 3.03 added JPEG and color PCX image support and small fixes to
  349. smooth() and normalize().
  350.  
  351. Version 4.0 added color PCX support, VICAR image support, NIFF image
  352. support, -dump, -unhalftone, JPEG V4 and TIFF V3 integration, generic
  353. filtering, and fixed a lot of bugs and minor build problems on some
  354. systems.  Options are now handled in the order they are given rather
  355. than a fixed order.  G3 FAX loader was removed because it was totally
  356. unreliable.
  357.  
  358. Version 4.1 fixed a number of ANSI-C compilation problems, enhanced
  359. the automated configuration to target HP and SGI machines
  360. automatically, corrected a few minor bugs, and included the IJG JPEG
  361. V4A code.
  362.