2  * Copyright (C) 1989-94 GROUPE BULL
 
   4  * Permission is hereby granted, free of charge, to any person obtaining a copy
 
   5  * of this software and associated documentation files (the "Software"), to
 
   6  * deal in the Software without restriction, including without limitation the
 
   7  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 
   8  * sell copies of the Software, and to permit persons to whom the Software is
 
   9  * furnished to do so, subject to the following conditions:
 
  11  * The above copyright notice and this permission notice shall be included in
 
  12  * all copies or substantial portions of the Software.
 
  14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 
  15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 
  16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 
  17  * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 
  18  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 
  19  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
  21  * Except as contained in this notice, the name of GROUPE BULL shall not be
 
  22  * used in advertising or otherwise to promote the sale, use or other dealings
 
  23  * in this Software without prior written authorization from GROUPE BULL.
 
  26 /**************************************************************************\
 
  28 *                       HISTORY of user-visible changes                    *
 
  30 \**************************************************************************/
 
  35         - XPM can now be built under MS Windows. Yes, this is possible and this
 
  37                 - Hermann Dunkel <hedu@cul-ipn.uni-kiel.de>
 
  38           See the README.MSW file for details.
 
  40         - building the shared library now depends on the SharedLibXpm variable
 
  41           and no longer on the SharedLibX variable which is private to the X
 
  42           Window System project.
 
  43                 - patch from Stephen Gildea <gildea@x.org>
 
  44           Other variables can now be set for the various locations needed.
 
  46         - lib/parse.c does no longer use a 256x256 array in the stack but
 
  49         - The Copyright notice which has been re-written from the X11R6's one
 
  50           should be clearer and is now present in every file.
 
  53         - lib/xpmP.h does no longer define a Boolean type which conflicts with
 
  54           the Intrinsic definition. Instead the type Bool defined in Xlib is
 
  56                 - neumann@watson.ibm.com (Gustaf Neumann)
 
  61         - passing NULL as shapemask_return to XpmReadFileToPixmap and similar
 
  62           functions was leading to a bus error.
 
  63                 - Dean Luick <dean@falcon.natinst.com>
 
  68         This version is not compatible with 3.3. Fortunately most people should
 
  69         only need to recompile.
 
  70         I apology for this but CDE/Motif have put heavy pressure to go that
 
  71         way. The point is that I designed and released Xpm 3.3 in order to let
 
  72         OSF include a clean version of Xpm in Motif 2.0. This new version was
 
  73         not fully compatible with 3.2 but I thought it didn't matter since this
 
  74         was going to be the first version used within Motif. Unfortunately CDE
 
  75         was already using xpm-3.2 internally and requires both source and
 
  76         binary backward compatibility. By the way I must say they didn't drop
 
  77         us a single line to let us know they were using it and thus were
 
  78         expecting stability. All this could have been avoided...
 
  80         However, since I had to go for a not compatible version I took this as
 
  81         an opportunity to modify the lower level API, which was new in 3.3 and
 
  82         which was somewhat clumsy, in order to provide yet a better API.
 
  84         The library has been modified to have both source and binary backward
 
  85         compatibility with xpm-3.2. This implies it is not either source or
 
  86         binary compatible with 3.3. The fields related to the 3.2 XpmInfos
 
  87         mechanism have been put back into the XpmAttributes structure. The new
 
  88         3.3 XpmInfos struct has been renamed as XpmInfo to avoid conflict with
 
  89         the old 3.2 flag which is back too. All the semantic related to the
 
  90         XpmAttributes infos fields is back as well.
 
  92         So this new version provides a high level API which is fully
 
  93         compatible with 3.2 and still provides the 3.3 lower level API
 
  94         (XpmImage) with the XpmInfos struct renamed as XpmInfo. This leads to
 
  95         some redundancy but this was the best I could do to satisfy both
 
  96         CDE/Motif people who needed the backward compatibility and myself (who
 
  97         always tries to provide you with the best ;-).
 
  99         Tests have been successfully performed with pixmap-2.1, pixmap-2.4, and
 
 103         - The colorTable member of the XpmAttributes structure is now an
 
 104           (XpmColor*) in order to be compatible with an XpmImage colorTable.
 
 105           However in order to be backward compatible this field is cast to
 
 106           (XpmColor **), which is equivalent to (char ***), when it is used
 
 107           with the old flags XpmInfos and XpmReturnInfos. To handle the new
 
 108           type the new flags XpmColorTable and XpmReturnColorTable have been
 
 110         - The XpmInfo struct has been extended to avoid having to deal with an
 
 111           XpmAttributes at the lower level. The idea is that all the data
 
 112           stored in an Xpm file can be retreive through both an XpmImage and
 
 113           an XpmInfo struct. See the documentation for details.
 
 114         - XpmUndefPixel is defined and exported by xpm.h in order to let
 
 115           clients providing their own colorTable when writting out an Xpm file.
 
 116           See the documentation for details.
 
 117         - in sxpm/sxpm.c, set attribute XtNinput to True on toplevel widget.
 
 118           Windows that don't "take" input, never get focus, as mandated by
 
 120                 patch from Henrique Martins <martins@hplhasm.hpl.hp.com>
 
 121         - lib/Imakefile modified to build the shared library under IRIX 5.
 
 122                 patch from simon@lia.di.epfl.ch (Simon Leinen)
 
 125         - a new funtion and a new define should help client figuring out with
 
 126           which Xpm library version they are working. These are
 
 127           XpmIncludeVersion and XpmLibraryVersion().
 
 132         - XPM1 files are now supported.
 
 133         - a new function is provided to get an error string related to the
 
 135                 - suggested by Detlef Schmier <detlef@mfr.dec.com>
 
 138         - gzip and gunzip are called with the -q option (quiet)
 
 139                 - patch from Chris P. Ross <cross@eng.umd.edu>
 
 140         - the parser is again more flexible about the way the strings are
 
 141           distributed on lines. Actually a single line XPM file can be read.
 
 142         - the documentation should be clearer about shapemask generation and
 
 143           XpmAttributes valuemask.
 
 146         - reading some binary file was leading to a bus error.
 
 147                 - patch from Detlef Schmier <detlef@mfr.dec.com>
 
 148         - the ? character is no longer used when writting an XPM file in order
 
 149           to avoid possible ANSI trigraphs.
 
 154         - a new level interface is provided to allow applications to do either
 
 155           icon editing or data caching.
 
 156           The XpmAttributes has been changed but most applications will just
 
 157           need to be recompiled.
 
 158         - new structures are provided to deal with the new lower level:
 
 159                  XpmImage, XpmColor, XpmInfos.
 
 161         - a separate distribution called xpm-contrib is available. This
 
 162           includes the converters which used to be part of this distribution
 
 164                 two new appplications:
 
 165                 * nexpm to draw a pixmap in *any* existing window from
 
 166                          Ralph Betza <gnohmon@ssiny.com>
 
 167                 * xpmview to display a list of Xpm files from
 
 168                          Jean Michel Leon <leon@sophia.inria.fr>
 
 170                 a hacky string to pixmap converter, provided by
 
 171                         Robert H. Forsman Jr.  <thoth@manatee.cis.ufl.edu>
 
 173                 The Xpm editor called pixmap will also be part of this contrib.
 
 174                 This does not mean it is the best pixmap editor one can find
 
 175                 but it is the only one that I know of which tries to handle
 
 176                 all the features of this format.
 
 179         - the code to build XImage data has been optimized by
 
 180                  jules@x.co.uk (Julian Gosnell)
 
 181           the old code is still available when compiling with the
 
 182           -DWITHOUT_SPEEDUPS flag.
 
 184         - closecolor code was not re-entrant
 
 185                  - dbl@visual.com (David B. Lewis)
 
 186         - fix gzip filename (*.gz and no longer *.z).
 
 187                  - Jason Patterson <jasonp@fitmail.fit.qut.edu.au>
 
 188         - sxpm has 2 new options:
 
 189                  -nom to do not display the mask if there is one
 
 190                  -cp <color> <pixel> to override a color value with a given
 
 191                  pixel, i.e. sxpm plaid.xpm -cp red 4
 
 193           also the '-s' adn '-p' options have been renamed to '-sc' and '-sp'.
 
 195         - xpm.h defines XpmFormat, XpmVersion, and XpmRevision numbers.
 
 198         - closecolor minor fix
 
 199                  - Jason Patterson <jasonp@fitmail.fit.qut.edu.au>
 
 204         - much faster close colors
 
 205         - piping from/to compressed files now handles GNU's gzip (.z)  format
 
 206         - added XpmColorKey attribute - ability to specify which visual's
 
 207           colors to use (ie: now it's possible to read in a pixmap in a
 
 208           color visual, but use the colors specified for monochrome).
 
 209         - added -mono, -grey4, -grey and -color options to sxpm to demonstrate
 
 210           the XpmColorKey attribute.
 
 211                 - Jason Patterson <jasonp@fitmail.qut.edu.au>
 
 214         - fixed bug where redefining "None" as a pixel stopped mask generation
 
 215         - minor SVR4 defines for <string.h>
 
 216         - fixed annoying closecolor bug related to read/write color cells
 
 217         - fixed minor bug in color value -> pixel overloading
 
 218         - manual updated to include new red/green/blue closeness attributes
 
 219                 - Jason Patterson <jasonp@fitmail.qut.edu.au>
 
 221         - the top Imakefile was missing the depend target
 
 222         - sxpm/Imakefile fixed so that -L../lib is set before the standard
 
 224                 - Vivek Khera <khera@cs.duke.edu>
 
 226         - lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent
 
 228                 - J. Daniel Smith <dsmith@ann-arbor.applicon.slb.com>
 
 230         - the lib/Imakefile didn't work with X11R4.
 
 236         - the library provides four new functions to deal with Xpm files
 
 237           loaded in memory as single character strings buffers:
 
 239                         XpmCreateImageFromBuffer
 
 240                         XpmCreatePixmapFromBuffer
 
 241                         XpmCreateBufferFromImage
 
 242                         XpmCreateBufferFromPixmap
 
 244         - in addition, as a convenience, two functions are provided to copy a
 
 245           file in a buffer and to write a file from a buffer:
 
 248                         XpmWriteFileFromBuffer
 
 251         - Files are now dispatched in the following sub-directories:
 
 253         - Imakefiles will let you build a shared library as well as the static
 
 254           one (with either X11R4 or X11R5).
 
 255         - The documentation has been ported from LaTeX to FrameMaker and is
 
 256           now included in the distribution in its PostScript form (doc/xpm.ps).
 
 257           Source files are available on request.
 
 258           Also the documentation has been reoreganized and includes a table of
 
 259           contents and an index of the functions (the number of functions
 
 260           increasing this became a requisite).
 
 263         - Many warnings have been fixed - patch from Daniel Dardailler 
 
 269         - use XpmMalloc, XpmRealloc, XpmCalloc, and XpmFree which are defines
 
 270         in xpmP.h. This should help people wanting to use their own functions.
 
 273         - Intrinsic.h is no longer included.
 
 274         - bzero is defined as memset on SYSV and SVR4.
 
 275         - some memory initialisation bug concerning XpmAttributes.
 
 280         - compile on Solaris 2.0
 
 281                 - patch from Clint Jeffery <cjeffery@cs.arizona.edu>
 
 284         - shape masks are now set correctly for LSBFirst (Decs).
 
 285         - pixmaps are now set correctly for 2 bit displays (Nexts).
 
 286                 - patch from Josef Leherbauer <joe@takeFive.co.at>
 
 287         - isspace was called on getc which fails when EOF is returned.
 
 288                 - Marelli Paolo <marelli@colos3.usr.dsi.unimi.it>
 
 293         - parsing optimized for single and double characters color
 
 294                 - patch originally from Martin Brunecky 
 
 295                                        marbru@build1.auto-trol.com
 
 298         - XpmFreeExtensions was calling free on some argument without checking
 
 300         - strdup was not correctly defined for systems which do not provide
 
 301         it.     - Hans-Peter Lichtin <lich@zellweger.ch>
 
 302         - some bug in XpmCrDataFI.c
 
 303                 - Sven Delmas garfield@avalanche.cs.tu-berlin.de
 
 306         - there is still a bug with the creation of the clipmask on display of
 
 307         depth 2 but I can't find a fix because unfortunately I don't have such
 
 308         a rendering system and nobody gets the time to investigate for me.
 
 313         - Create XpmReadFileToData and XpmWriteFileFromData
 
 314                 - Dan Greening <dgreen@sti.com>
 
 315         - added "close colors" support and ability to redefine color values
 
 316           as pixels at load time, as well as color names
 
 317                 - Jason Patterson <jasonp@fitmail.qut.edu.au>
 
 318         - errors while parsing or allocating colors now revert to other
 
 319           visual defaults, creating pixmap/image as expected, and returning
 
 320           XpmSuccess. The old behaviour of XpmColorError being returned and no
 
 321           pixmap/image being created can be retained by setting the
 
 322           exactColors attribute.
 
 323                 - Jason Patterson <jasonp@fitmail.qut.edu.au>
 
 326         - SVR4 defines for including <string.h> instead of <strings.h>
 
 327                 - Jason Patterson <jasonp@fitmail.qut.edu.au>
 
 328         - attributes->extensions and attributes->nextensions fields were not 
 
 329           set correctly when no extensions present in file.
 
 330                 - Simon_Scott Cornish <cornish@ecr.mu.oz.au>
 
 335         - use the mock lisp hashing function instead of the gnu emacs one,
 
 336         it is faster in some cases and never slower (I've not found any case).
 
 339         - function prototypes for ansi compilers.
 
 340         - some memory initialization bugs (purify is just great for this).
 
 341         - empty strings in extensions are now correctly handled.
 
 346         - both format and functions handle extensions data. This allow people
 
 347         to store additional data related to a pixmap. See documentation for
 
 349         - sxpm supports the new option '-c' to use a private colormap. This is
 
 350         useful when displaying pixmaps using a lot of colors.
 
 351         - sxpm supports the new option '-v' (verbose) to get possible
 
 352         extensions print out on standard error.
 
 355         - most of the code has been reworked to be improved and thus almost
 
 356         every function is faster. It takes less than 6 seconds of real time on
 
 357         a sun4 to display, with sxpm, a 487x635 pixmap using 213 colors, while
 
 358         it takes 32 seconds with the old library! It takes 18 seconds to
 
 359         display a 1279x1023 screen dump using 14 colors while xwud takes 10
 
 361         Of course performance improvements are not always that great, they
 
 362         depend on the size and number of colors but I'm sure everybody will
 
 364         I know how to improve it more but this will require changes in the
 
 365         architecture so this is not for now. Some optimizations have been
 
 366         contributed by gregor@kafka.saic.com (gregg hanna) and
 
 367         jnc@csl.biosci.arizona.edu (John N. Calley).
 
 368         - the Imakefile is modified to let you install sxpm - Rainer Klute
 
 369            <klute@irb.informatik.uni-dortmund.de>
 
 370         - xpmP.h declares popen for Sequent platforms - Clinton Jeffery
 
 371            <cjeffery@cs.arizona.edu>
 
 372         - XpmWriteFileFromImage/Pixmap rather than truncating the pixmap name
 
 373         to the first dot changes dots to underscores to get a valid C syntax
 
 378         - there was a bug in the image creation function for some 24 bits
 
 379         displays. It is fixed.
 
 380         - allocated color pixels are now freed when an error occurs -
 
 381            nusser@dec1.wu-wien.ac.at (Stefan Nusser)
 
 384         - the documentation describes the new XpmExtension structure and how
 
 385         to use it with read and write functions.
 
 390         - sxpm now have more standard options (mainly suggested by 
 
 391         Rainer Sinkwitz <sinkwitz@ifi.unizh.ch>):
 
 393         Usage:  sxpm [options...]
 
 396         [-d host:display]            Display to connect to.
 
 397         [-g geom]                    Geometry of window.
 
 398         [-hints]                     Set ResizeInc for window.
 
 399         [-icon filename]             Set pixmap for iconWindow.
 
 400         [-s symbol_name color_name]  Overwrite color defaults.
 
 401         [-p symbol_name pixel_value] Overwrite color defaults.
 
 402         [-plaid]                     Read the included plaid pixmap.
 
 403         [filename]                   Read from file 'filename', and from
 
 404                                      standard input if 'filename' is '-'.
 
 405         [-o filename]                Write to file 'filename', and to standard
 
 406                                      output if 'filename' is '-'.
 
 407         [-nod]                       Don't display in window.
 
 408         [-rgb filename]              Search color names in the rgb text file
 
 411         if no input is specified sxpm reads from stdandard input.
 
 414         - Xpm functions and Ppm converters now deal with multiword colornames.
 
 415           patches from Rainer Sinkwitz <sinkwitz@ifi.unizh.ch>.
 
 420         Functions name and defines have been modified again (sorry for that)
 
 423              XpmReadPixmapFile    XpmReadFileToPixmap
 
 424              XpmWritePixmapFile   XpmWriteFileFromPixmap
 
 426              XpmPixmapColorError  XpmColorError
 
 427              XpmPixmapSuccess     XpmSuccess
 
 428              XpmPixmapOpenFailed  XpmOpenFailed
 
 429              XpmPixmapFileInvalid XpmFileInvalid
 
 430              XpmPixmapNoMemory    XpmNoMemory
 
 431              XpmPixmapColorFailed XpmColorFailed
 
 433         To update code using Xpm you can use the included shell script called
 
 434         rename with the sed commands files name-3.0b-3.0c and name-3.0c-3.0.
 
 435         Old names still valid though.
 
 438         - four new functions to work with images instead of pixmaps:
 
 441              XpmWriteFileFromImage
 
 442              XpmCreateImageFromData
 
 443              XpmCreateDataFromImage
 
 446         Algorithms to create and scan images and pixmaps are based on the
 
 447         MIT's R5 code, thus they are much cleaner than old ones and should
 
 448         avoid any problem with any visual (yes, I trust MIT folks :-)
 
 451         Imakefile use INCDIR instead of ROOTDIR.
 
 454         - the documentation presents the four new functions.
 
 458         In answer to request of people functions, types and defines names have
 
 459         been changed as follows:
 
 461              XCreatePixmapFromData       XpmCreatePixmapFromData
 
 462              XCreateDataFromPixmap       XpmCreateDataFromPixmap
 
 463              XReadPixmapFile             XpmReadPixmapFile
 
 464              XWritePixmapFile            XpmWritePixmapFile
 
 465              XFreeXpmAttributes          XpmFreeAttributes
 
 467              PixmapColorError            XpmPixmapColorError
 
 468              PixmapSuccess               XpmPixmapSuccess
 
 469              PixmapOpenFailed            XpmPixmapOpenFailed
 
 470              PixmapFileInvalid           XpmPixmapFileInvalid
 
 471              PixmapNoMemory              XpmPixmapNoMemory
 
 472              PixmapColorFailed           XpmPixmapColorFailed
 
 474              ColorSymbol                 XpmColorSymbol
 
 476         Generally speaking every public name begins with 'Xpm' and every
 
 477         private one with 'xpm'. This should avoid any possible conflict.
 
 479         Some files have also be renamed accordingly.
 
 482         - support for VMS and two new options for sxpm: icon and hints (see
 
 483         manual for details) Richard Hess <rhess%pleione%cimshop@uunet.UU.NET>
 
 484         - DEFINES in Imakefile and Makefile.noXtree allows you to set the
 
 487                  ZPIPE for un/compressing piped feature (default is on)
 
 488                  NEED_STRCASECMP for system which doesn't provide one (default
 
 491         - xpmtoppm.c has is own strstr function which is used if NEED_STRSTR
 
 492         is defined when compiling - Hugues.Leroy@irisa.fr (Hugues Leroy).
 
 495         - many bugs have been fixed, especially for ansi compilers -
 
 496                Doyle C. Davidson (doyle@doyled.b23b.ingr.com) and
 
 497                Clifford D. Morrison (cdm%bigdaddy%edsr@uunet.UU.NET)
 
 498         - parser is again a little more improved
 
 502         This is a complete new version with a new API and where files and
 
 503         structures have been renamed. So this should be taken as a new
 
 505         This release should be quickly followed by the 3.0 because I'm planning
 
 506         to send it for X11R5 contrib which ends October 5th.
 
 509         - support for transparent color.
 
 510         - support for hotspot.
 
 511         - a new function: XCreateDataFromPixmap to create an XPM data from a
 
 512         pixmap in order to be able to create a new pixmap from this data using
 
 513         the XCreatePixmapFromData function later on.
 
 514         - a new structure: XpmAttributes which replace the XpmInfo structure
 
 515         and which leads to a much simpler API with less arguments.
 
 516         - arguments such as visual, colormap and depth are optionnal, default
 
 517         values are taken if omitted.
 
 518         - parsing and allocating color failures don't simply break anymore. If
 
 519         another default color can be found it is used and a PixmapColorError
 
 520         is returned. In case no color can be found then it breaks and returns
 
 522         - for this reason the ErrorStatus codes are redefined as follows:
 
 525                    positive if partial success
 
 529                 #define PixmapColorError    1
 
 530                 #define PixmapSuccess       0
 
 531                 #define PixmapOpenFailed   -1
 
 532                 #define PixmapFileInvalid  -2
 
 533                 #define PixmapNoMemory     -3
 
 534                 #define PixmapColorFailed  -4
 
 536         - sxpm prints out a warning when a requested color could not be parsed
 
 537         or alloc'ed, and an error when none has been found.
 
 538         - sxpm handles pixmap with transparent color. For this purpose the
 
 539         plaid_mask.xpm is added to the distribution.
 
 542         - I've again improved the memory management.
 
 543         - the parser is also improved.
 
 544         - when writting a pixmap to a file the variable name could be
 
 545         "plaid.xpm" which is not valid in C. Now the extension name is cut off
 
 546         to give "plaid" as variable name.
 
 547         - reading multiple words colornames such as "peach puff" where leading
 
 548         to non readable Xpm files. They are now skipped to have only single
 
 549         word colorname. Lionel Mallet (mallet@ipvpel.unipv.it).
 
 550         - parser was triggered by the "/" character inside string.
 
 551         Doyle C. Davidson (doyle@doyled.b23b.ingr.com). This is corrected.
 
 552         - sxpm maps the window only if the option "-nod" is not selected. 
 
 555         - the documentation presents the new API and features.
 
 559         This is an alpha version because it supports the new version of XPM,
 
 560         but the library interface is still the same. Indeed it will change in
 
 561         future release to get rid of obsolete stuff such as the type argument
 
 562         of the XWritePixmapFile function.
 
 564     ******************************* WARNING *********************************
 
 565         The format is not anymore XPM2, it is XPM version 3 which is XPM2
 
 566         limited to the C syntax with the key word "XPM" in place of "XPM2 C".
 
 567         The interface library has not changed yet but the type argument of
 
 568         XWritePixmapFile and the type member of XpmInfo are not used anymore.
 
 569         Meanwhile the library which is now called libXpm.a is backward
 
 570         compatible as XPM2 files can be read. But the XWritePixmapFile
 
 571         function only writes out XPM version 3 files.
 
 572     *************************************************************************
 
 575         - the library doesn't use global variables anymore, thus it should be
 
 577         - sxpm has been rewritten on top of Xt, it can be used to convert
 
 578         files from XPM2 to XPM version 3.
 
 579         - xpm1to2c.perl has been upgraded to the new XPM version and renamed
 
 581         - ppmtoxpm2.c and ppmtoxpm2.1 have been upgraded too and renamed
 
 582         ppmtoxpm.c and ppmtoxpm.1. In addition the xpmtoppm.c and xpmtoppm.1
 
 583         of the pbmplus package have been upgraded too. xpmtoppm can thus
 
 584         convert XPM version 1 and 3 to a portable pixmap. These files should
 
 585         replace the original ones which are part of the pbmplus package. See
 
 586         the ppm.README file for more details.
 
 587         - the library contains RCS variables which allows you to get revision
 
 588         numbers with ident (which is part of the RCS package). The Id number
 
 589         is an internal rcs number for my eyes only. The official one is found
 
 593         - the memory management has been much improved in order to avoid
 
 595         - the XImage building algorythm has been changed to support correctly
 
 596         different visual depths. There is special code to handle depths 1, 4,
 
 597         6, 8, 24, and 32 to build the image and send it in one whack, and
 
 598         other depths are supported by building the image with XPutPixel which
 
 600         - similar algorithms are used to read pixmaps and write them out.
 
 603         - the documentation presents the new XPM format.
 
 608     ******************************* WARNING *********************************
 
 609         Since the last release two structures have been modified and have now
 
 610         bigger sizes, so ANY CODE USING THE libXPM2 NEEDS TO BE RECOMPILED.
 
 611     *************************************************************************
 
 614         - the ColorSymbol struct contains the new member 'pixel' which allow
 
 615         to override default colors by giving a pixel value (in such a case
 
 616         symbol value must be set to NULL),
 
 617         - the XpmInfo struct contains the new member 'rgb_fname' in which one
 
 618         can specify an rgb text file name while writing a pixmap with the 
 
 619         XWritePixmapFile function (otherwise this member should be set to
 
 620         NULL). This way colorname will be searched and written out if found
 
 621         instead of the RGB value,
 
 622         - Imakefile originally provided by stolcke@ICSI.Berkeley.EDU,
 
 623         - the old Makefile is now distributed as Makefile.noXtree and presents
 
 625         - the demo application is renamed sxpm (Show XPM), creates a window of
 
 626         the size of the pixmap if no geometry is specified, prints out
 
 627         messages instead of status when an error occurs, handles the new
 
 628         option -p for overriding colors by giving a pixel value (not really
 
 629         useful but is just here to show this new feature), handles the new
 
 630         option -rgb for specifying an rgb text file, and ends on
 
 631         keypress as buttonpress,
 
 632         - defines for SYSV have been provided by Paul Breslaw
 
 634         - the distribution includes a new directory called converters which
 
 635         contains xpm1to2 and xpm1to2c perl converters and a ppmtoxpm2
 
 636         converter provided by Paul Breslaw who upgraded the original ppmtoxpm
 
 637         written by Mark W. Snitily <mark@zok.uucp>.
 
 640         - this file is created and will give old users a quick reference to
 
 641         changes made from one release to the next one,
 
 642         - documentation is changed to present the new ColorSymbol structure
 
 643         and the way to override colors by giving a pixel value, and to present
 
 644         the new XpmInfo structure and how to use it,
 
 645         - a man page for sxpm is added to the distrib,
 
 646         - the README file talks about sxpm and no more demo, and have
 
 647         reference to the different converters.
 
 652         - XReadPixmapFile reads from stdin if filename is NULL,
 
 653         - XWritePixmapFile writes to stdin if filename is NULL,
 
 654         - the demo application handles the new option -nod for no displaying
 
 655         the pixmap in a window (useful when used as converter).
 
 658         - documentation about the new feature.
 
 663         - from nazgul@alphalpha.com (Kee Hinckley): changes to make the
 
 664         library usable as C++ code, and on Apollo without any warning.
 
 667         - from nazgul@alphalpha.com (Kee Hinckley): the xpm include files was
 
 668         declaring XWritePixmapFile as taking in arg a Pixmap pointer instead
 
 674         - XWritePixmapFile was not closing the file while ending normaly.
 
 679         - XReadPixmapFile reads from a piped uncompress if the given filename
 
 680         ends by .Z or if filename.Z exists,
 
 681         - XWritePixmapFile writes to a piped compress if the given filename
 
 685         - demo now deals with window manager.
 
 688         - documentation about compressed files management.
 
 693         - handle monochrom display correctly,
 
 694         - comments can be empty.
 
 699         - when reading some invalid free was dumping core on some machine.
 
 703     First distribution of XPM2.