From 0ea6c432a068fc4edf90c614e68a4f4be94edd14 Mon Sep 17 00:00:00 2001 From: Gaetan Nadon Date: Sun, 17 Oct 2010 12:51:15 -0400 Subject: doc: move doc files to the newly created doc dir. As per guidelines for all xorg modules. Signed-off-by: Gaetan Nadon --- CHANGES | 957 ------------------------------------------------------- FAQ.html | 344 -------------------- Makefile.am | 15 +- NEWS.old | 957 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ README.AMIGA | 10 - README.MSW | 127 -------- README.html | 303 ------------------ configure.ac | 1 + doc/FAQ.html | 344 ++++++++++++++++++++ doc/Makefile.am | 6 + doc/README.AMIGA | 10 + doc/README.MSW | 127 ++++++++ doc/README.html | 303 ++++++++++++++++++ doc/xpm.PS.gz | Bin 0 -> 49010 bytes xpm.PS.gz | Bin 49010 -> 0 bytes 15 files changed, 1752 insertions(+), 1752 deletions(-) delete mode 100644 CHANGES delete mode 100644 FAQ.html create mode 100644 NEWS.old delete mode 100644 README.AMIGA delete mode 100644 README.MSW delete mode 100644 README.html create mode 100644 doc/FAQ.html create mode 100644 doc/Makefile.am create mode 100644 doc/README.AMIGA create mode 100644 doc/README.MSW create mode 100644 doc/README.html create mode 100644 doc/xpm.PS.gz delete mode 100644 xpm.PS.gz diff --git a/CHANGES b/CHANGES deleted file mode 100644 index b90e6cd..0000000 --- a/CHANGES +++ /dev/null @@ -1,957 +0,0 @@ -/* - * Copyright (C) 1989-95 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/**************************************************************************\ -* * -* HISTORY of user-visible changes * -* * -\**************************************************************************/ - -3.4k (98/03/18) - - ENHANCEMENTS: - - A new program called cxpm is provided to check on XPM files and help - figuring out where the file might be invalid. - - The FAQ and README are now in HTML. - - BUGS CORRECTED: - - A bug in writing pixmaps out on an 32 bit depth visual and MSBFirst - machine. - - patch from Uwe Langenkamp - - A severe bug in parsing the pixels section when an unknown character - is encountered. - -3.4j (96/12/31) - - ENHANCEMENTS: - - The XPM library can now be built under Amiga DOS. This entirely comes - from: Lorens Younes - See the README.AMIGA file for details. - - Changes for MSW: big performance improvement in ParseAndPutPixels(), - fixed creation of the mask in SetColor() - - patch from Jan Wielemaker - - makefiles are provided for VMS - - given by Martin P.J. Zinser m.zinser@gsi.de - - Imakefiles reworked to get smoother builds and fixes from: - - Paul DuBois dubois@primate.wisc.edu - - Larry Schwimmer schwim@cyclone.stanford.edu - - thanks to some code rearrangement the library is smaller (the size - reduction goes from 4 to 7% depending on the system) - - BUGS CORRECTED: - - A severe bug (introduced in 3.4i as part of the sprintf - optimization) in code writing XPM extensions to a buffer - XpmCreateBufferFromImage/Pixmap. - - The XpmAttributes definition in xpm.h was declaring nalloc_colors to - be Bool, it's an int. - -3.4i (96/09/13) - - NEW FEATURES: - - The XPM library now allows the application to pass its own color - allocation/free functions. For this matter the following was done: - The XpmAttributes structure has three new fields alloc_color, - free_color, and color_closure. The following new valuemasks were - added XpmAllocColorFunc, XpmFreeColorsFunc, XpmColorClosure. And - two new types were defined XpmAllocColorFunc and XpmFreeColorsFunc. - See documentation for details. - - ENHANCEMENTS: - - Windows NT support. It should compile and run fine based on the X - Consortium X11R6 distribution. - - The README file contains information to compile on Solaris with gcc. - - Part of the code has been optimized by using the value returned by - sprintf instead of calling strlen. Add the flag -DVOID_SPRINTF - if on your system sprintf returns void. - - patch from Thomas Ott thommy@rz.fh-augsburg.de - - BUGS CORRECTED: - - XpmFree is now a real function (simply calling free by default). - - CHANGES TO THE DOC: - - The documentation describes the new XpmAttributes fields and their - use. - -3.4h (96/02/01) - - NEW FEATURES: - - The XpmAttributes has a new member called 'alloc_close_colors' which - lets the caller specify whether close colors should be allocated - using XAllocColor or not. This is especially useful when one uses a - private colormap full of read/write cells. - The xpm.h header file define a new bitmap flag called - XpmAllocCloseColors to use along with this new slot. - - Dale Pease peased@bigbird.cso.gtegsc.com - - The XpmAttributes has a new member called 'bitmap_format' which lets - the caller specify the format of 1 bit depth images (XYBitmap or - ZPixmap). The xpm.h header file define a new bitmap flag called - XpmBitmapFormat to use along with this new field. - - ENHANCEMENTS: - - XpmReadFileTo[Image/Pixmap], XpmCreate[Image/Pixmap]FromData, - XpmCreateImageFromDataFromBuffer functions do no longer use a - temporary XpmImage object, which reduces a lot the amount of memory - used. On the other hand it can take a little more time, but given the - following figures (based on sxpm) it is a real good trade-off. - - Reading a 22x22 pixmap with 5 colors no time change is detected - using time: - real 0.3 - user 0.1 - sys 0.1 - - Reading a 1279x1023 pixmap with 14 colors (quite extreme case for - XPM!) the time goes from: - real 1.9 - user 0.8 - sys 0.8 - - to: - real 2.2 - user 1.8 - sys 0.3 - - Reading the 22x22 pixmap with 5 colors the memory usage (under - purify) goes from: - 255256 code - 55496 data/bss - 163848 heap (peak use) - 4248 stack - to: - 271240 code - 55472 data/bss - 159752 heap (peak use) - 4224 stack - - And reading the 1279x1023 pixmap with 14 colors it goes from: - 255256 code - 55496 data/bss - 6705160 heap (peak use) - 4280 stack - to: - 271240 code - 55472 data/bss - 1732616 heap (peak use) - 4264 stack - - This clearly shows that while for small pixmaps there is no real - difference on both sides, for large pixmaps this makes a huge - difference about the amount of memory used and it is not much - slower. - - Note that you can still get the old behavior using both - XpmReadFileToXpmImage and XpmCreate[Image/Pixmap]FromXpmImage instead - of XpmReadFileTo[Image/Pixmap]. Once more XPM gives you the choice! - - BUGS CORRECTED: - - when defined locally the global symbols strcasecmp and strdup are - now called xpmstrcasecmp and xpmstrdup to avoid any possible - conflict. - - VMS has a bogus file system which requires a work around in - XpmReadFileToBuffer. - - patch from Bob.Deen@jpl.nasa.gov - - the type of the exactColors attribute has been changed from unsigned - int to Bool. - - CHANGES TO THE DOC: - - the documentation describes the new XpmAttributes fields - alloc_close_colors and bitmap_format. - -3.4g (95/10/08) - - ENHANCEMENTS: - - The XpmAttributes structure has now two new slots: alloc_pixels and - nalloc_pixels in order to provide an easy way to free allocated - colors. The new bitmask XpmReturnAllocPixels should be used to - request this data through the valuemask. Unless you really know why, - you should use this instead of XpmReturnPixels, pixels, and npixels. - - the XPM1 format parsing has been improved. - - patch from Chuck Thompson - - compilers defining _STDC_ to something different from 1 are now - considered as ANSI compilers. - - the README file provides now more info on how to build XPM depending - on the system. - - BUGS CORRECTED: - - a bug introduced in 3.4f in the XPM1 format parsing function. - - fix from Chuck Thompson - - the hashtable was not free when the color parsing failed. - - patch from ackley@cs.unm.edu (David Ackley) - - the close color mechanism wasn't used if one of the closeness - parameter was null. Now only one needs to be different from 0. - Lorens Younes d93-hyo@nada.kth.se - - parsing of long comments failed with a segmentation fault. - - CHANGES TO THE DOC: - - the documentation describes the new XpmAttributes fields - alloc_pixels and nalloc_pixels and how they are used. - -3.4f (95/05/29) - - ENHANCEMENTS: - - Defines IMAKE_DEFINES in the top Imakefile so one can easily avoid - building the shared library. - - Add some information about the installation process in the README. - - filenames are surrounded with quotes when calling gzip or compress in - order to allow spaces within filenames. - - William Parn - - the compilation and the shared library building should be smoother - on Alpha OSF/1. - - patch from Dale Moore - - BUGS CORRECTED: - - a segmentation fault occurring in some weird case. - -3.4e (95/03/01) - - ENHANCEMENTS: - - The top Imakefile passes CDEBUGFLAGS and DEFINES to subdirs. Thus - only this Imakefile should need to be edited by users. - - FAQ includes the answer to the question "How can I get a non - rectangular icon using XPM ?" - - VMS support updated - - patch from Martin P.J. Zinser m.zinser@gsi.de - - BUGS CORRECTED: - - XpmCreateImageFromXpmImage() called from XpmReadFileToPixmap() could - lead to a segmentation fault since free was called on a memory block - size variable instead of the block itself. Note: this bug has been - introduced in 3.4d. - -3.4d (95/01/31) - - ENHANCEMENTS: - - sxpm now supports a -version option command. - - BUGS CORRECTED: - - the list of pixels returned in XpmAttributes was wrong when two - colors were defined as None in the read XPM - - Lionel.Mallet@sophia.inria.fr - - the parser was skipping whitespace reading extensions strings. This - has been fixed so extensions lines are now returned exactly as they - are. - - some compilation control added for the dec alpha with X11R5 (LONG64) - - patch from Fredrik Lundh - - when writing an XPM file, '-' characters are replaced with '_' - characters in the array name, in order to get a valid C syntax name. - - XYPixmap format images were not correctly handled. - - XPM1 file with names using multiple '_' characters are now handled - correctly. - - todd@erda.rl.af.mil (Todd Gleason) - -3.4c (94/06/06) - - Yes, this is kind of quick. But this is because no code has been modified, - this is just a new packaging to make the whole stuff more suitable to the - X development team's requests for inclusion in the R6 contrib. - - ENHANCEMENTS: - - Several filenames were too long to fit without any conflict on DOS - and CD-ROM filesystems. They have been renamed. - - Imakefiles use XCOMM for comments instead of the # character. - - the Postscript documentation file doc/xpm.ps is now distributed as - doc/xpm.PS.gz and allows browsing with tools such as ghostview. - - Besides, parts of lib/misc.c have been moved to several new files, - and some functions of data.c have been moved to other files in - order to get a better link profile. - - I've also added a FAQ hoping this will prevent people from - continuously filling my mailbox with the same questions. - - sxpm.c includes instead of "xpm.h" and BUILDINCTOP is - used in Makefiles as expected. - - Everything can be done simply using "xmkmf -a" and "make". - -3.4b (94/05/24) - - ENHANCEMENTS: - - XPM can now be built under MS Windows. Yes, this is possible and this - entirely comes from: - - Hermann Dunkel - See the README.MSW file for details. - - - building the shared library now depends on the SharedLibXpm variable - and no longer on the SharedLibX variable which is private to the X - Window System project. - - patch from Stephen Gildea - Other variables can now be set for the various locations needed. - - - lib/parse.c does no longer use a 256x256 array in the stack but - malloc it instead. - - - The Copyright notice which has been re-written from the X11R6's one - should be clearer and is now present in every file. - - BUGS CORRECTED: - - lib/xpmP.h does no longer define a Boolean type which conflicts with - the Intrinsic definition. Instead the type Bool defined in Xlib is - used. - - neumann@watson.ibm.com (Gustaf Neumann) - -3.4a (94/03/29) - - BUGS CORRECTED: - - passing NULL as shapemask_return to XpmReadFileToPixmap and similar - functions was leading to a bus error. - - Dean Luick - -3.4 (94/03/14) - - IMPORTANT NOTE: - This version is not compatible with 3.3. Fortunately most people should - only need to recompile. - I apology for this but CDE/Motif have put heavy pressure to go that - way. The point is that I designed and released Xpm 3.3 in order to let - OSF include a clean version of Xpm in Motif 2.0. This new version was - not fully compatible with 3.2 but I thought it didn't matter since this - was going to be the first version used within Motif. Unfortunately CDE - was already using xpm-3.2 internally and requires both source and - binary backward compatibility. By the way I must say they didn't drop - us a single line to let us know they were using it and thus were - expecting stability. All this could have been avoided... - - However, since I had to go for a not compatible version I took this as - an opportunity to modify the lower level API, which was new in 3.3 and - which was somewhat clumsy, in order to provide yet a better API. - - The library has been modified to have both source and binary backward - compatibility with xpm-3.2. This implies it is not either source or - binary compatible with 3.3. The fields related to the 3.2 XpmInfos - mechanism have been put back into the XpmAttributes structure. The new - 3.3 XpmInfos struct has been renamed as XpmInfo to avoid conflict with - the old 3.2 flag which is back too. All the semantic related to the - XpmAttributes infos fields is back as well. - - So this new version provides a high level API which is fully - compatible with 3.2 and still provides the 3.3 lower level API - (XpmImage) with the XpmInfos struct renamed as XpmInfo. This leads to - some redundancy but this was the best I could do to satisfy both - CDE/Motif people who needed the backward compatibility and myself (who - always tries to provide you with the best ;-). - - Tests have been successfully performed with pixmap-2.1, pixmap-2.4, and - sxpm. - - ENHANCEMENTS: - - The colorTable member of the XpmAttributes structure is now an - (XpmColor*) in order to be compatible with an XpmImage colorTable. - However in order to be backward compatible this field is cast to - (XpmColor **), which is equivalent to (char ***), when it is used - with the old flags XpmInfos and XpmReturnInfos. To handle the new - type the new flags XpmColorTable and XpmReturnColorTable have been - defined. - - The XpmInfo struct has been extended to avoid having to deal with an - XpmAttributes at the lower level. The idea is that all the data - stored in an Xpm file can be retrieve through both an XpmImage and - an XpmInfo struct. See the documentation for details. - - XpmUndefPixel is defined and exported by xpm.h in order to let - clients providing their own colorTable when writing out an Xpm file. - See the documentation for details. - - in sxpm/sxpm.c, set attribute XtNinput to True on toplevel widget. - Windows that don't "take" input, never get focus, as mandated by - the ICCM. - patch from Henrique Martins - - lib/Imakefile modified to build the shared library under IRIX 5. - patch from simon@lia.di.epfl.ch (Simon Leinen) - - NEW FEATURES: - - a new function and a new define should help client figuring out with - which Xpm library version they are working. These are - XpmIncludeVersion and XpmLibraryVersion(). - -3.3 (93/12/20) - - NEW FEATURES: - - XPM1 files are now supported. - - a new function is provided to get an error string related to the - returned error code. - - suggested by Detlef Schmier - - ENHANCEMENTS: - - gzip and gunzip are called with the -q option (quiet) - - patch from Chris P. Ross - - the parser is again more flexible about the way the strings are - distributed on lines. Actually a single line XPM file can be read. - - the documentation should be clearer about shapemask generation and - XpmAttributes valuemask. - - BUGS CORRECTED: - - reading some binary file was leading to a bus error. - - patch from Detlef Schmier - - the ? character is no longer used when writing an XPM file in order - to avoid possible ANSI trigraphs. - -3.3alpha (93/08/13) - - NEW FEATURES: - - a new level interface is provided to allow applications to do either - icon editing or data caching. - The XpmAttributes has been changed but most applications will just - need to be recompiled. - - new structures are provided to deal with the new lower level: - XpmImage, XpmColor, XpmInfos. - - - a separate distribution called xpm-contrib is available. This - includes the converters which used to be part of this distribution - plus: - two new applications: - * nexpm to draw a pixmap in *any* existing window from - Ralph Betza - * xpmview to display a list of Xpm files from - Jean Michel Leon - - a hacky string to pixmap converter, provided by - Robert H. Forsman Jr. - - The Xpm editor called pixmap will also be part of this contrib. - This does not mean it is the best pixmap editor one can find - but it is the only one that I know of which tries to handle - all the features of this format. - - ENHANCEMENTS: - - the code to build XImage data has been optimized by - jules@x.co.uk (Julian Gosnell) - the old code is still available when compiling with the - -DWITHOUT_SPEEDUPS flag. - - - closecolor code was not re-entrant - - dbl@visual.com (David B. Lewis) - - fix gzip filename (*.gz and no longer *.z). - - Jason Patterson - - sxpm has 2 new options: - -nom to do not display the mask if there is one - -cp to override a color value with a given - pixel, i.e. sxpm plaid.xpm -cp red 4 - - also the '-s' adn '-p' options have been renamed to '-sc' and '-sp'. - - - xpm.h defines XpmFormat, XpmVersion, and XpmRevision numbers. - - BUGS CORRECTED: - - closecolor minor fix - - Jason Patterson - -3.2g (93/04/26) - - ENHANCEMENTS: - - much faster close colors - - piping from/to compressed files now handles GNU's gzip (.z) format - - added XpmColorKey attribute - ability to specify which visual's - colors to use (ie: now it's possible to read in a pixmap in a - color visual, but use the colors specified for monochrome). - - added -mono, -grey4, -grey and -color options to sxpm to demonstrate - the XpmColorKey attribute. - - Jason Patterson - - BUGS CORRECTED: - - fixed bug where redefining "None" as a pixel stopped mask generation - - minor SVR4 defines for - - fixed annoying closecolor bug related to read/write color cells - - fixed minor bug in color value -> pixel overloading - - manual updated to include new red/green/blue closeness attributes - - Jason Patterson - - - the top Imakefile was missing the depend target - - sxpm/Imakefile fixed so that -L../lib is set before the standard - library location. - - Vivek Khera - - - lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent - versions of VMS) - - J. Daniel Smith - - - the lib/Imakefile didn't work with X11R4. - - -3.2f (93/03/17) - - NEW FEATURES: - - the library provides four new functions to deal with Xpm files - loaded in memory as single character strings buffers: - - XpmCreateImageFromBuffer - XpmCreatePixmapFromBuffer - XpmCreateBufferFromImage - XpmCreateBufferFromPixmap - - - in addition, as a convenience, two functions are provided to copy a - file in a buffer and to write a file from a buffer: - - XpmReadFileToBuffer - XpmWriteFileFromBuffer - - ENHANCEMENTS: - - Files are now dispatched in the following sub-directories: - lib, sxpm, and doc. - - Imakefiles will let you build a shared library as well as the static - one (with either X11R4 or X11R5). - - The documentation has been ported from LaTeX to FrameMaker and is - now included in the distribution in its PostScript form (doc/xpm.ps). - Source files are available on request. - Also the documentation has been reorganized and includes a table of - contents and an index of the functions (the number of functions - increasing this became a requisite). - - BUGS CORRECTED: - - Many warnings have been fixed - patch from Daniel Dardailler - daniel@osf.org - -3.2e (93/02/05) - - ENHANCEMENTS: - - use XpmMalloc, XpmRealloc, XpmCalloc, and XpmFree which are defines - in xpmP.h. This should help people wanting to use their own functions. - - BUGS CORRECTED: - - Intrinsic.h is no longer included. - - bzero is defined as memset on SYSV and SVR4. - - some memory initialization bug concerning XpmAttributes. - -3.2d (93/01/27) - - ENHANCEMENTS: - - compile on Solaris 2.0 - - patch from Clint Jeffery - - BUGS CORRECTED: - - shape masks are now set correctly for LSBFirst (Decs). - - pixmaps are now set correctly for 2 bit displays (Nexts). - - patch from Josef Leherbauer - - isspace was called on getc which fails when EOF is returned. - - Marelli Paolo - -3.2c (92/12/29) - - ENHANCEMENTS: - - parsing optimized for single and double characters color - - patch originally from Martin Brunecky - marbru@build1.auto-trol.com - - BUGS CORRECTED: - - XpmFreeExtensions was calling free on some argument without checking - it was not NULL. - - strdup was not correctly defined for systems which do not provide - it. - Hans-Peter Lichtin - - some bug in XpmCrDataFI.c - - Sven Delmas garfield@avalanche.cs.tu-berlin.de - - NOTE: - - there is still a bug with the creation of the clipmask on display of - depth 2 but I can't find a fix because unfortunately I don't have such - a rendering system and nobody gets the time to investigate for me. - -3.2b (92/10/19) - - ENHANCEMENTS: - - Create XpmReadFileToData and XpmWriteFileFromData - - Dan Greening - - added "close colors" support and ability to redefine color values - as pixels at load time, as well as color names - - Jason Patterson - - errors while parsing or allocating colors now revert to other - visual defaults, creating pixmap/image as expected, and returning - XpmSuccess. The old behavior of XpmColorError being returned and no - pixmap/image being created can be retained by setting the - exactColors attribute. - - Jason Patterson - - BUGS CORRECTED: - - SVR4 defines for including instead of - - Jason Patterson - - attributes->extensions and attributes->nextensions fields were not - set correctly when no extensions present in file. - - Simon_Scott Cornish - -3.2a (92/08/17) - - ENHANCEMENTS: - - use the mock lisp hashing function instead of the gnu emacs one, - it is faster in some cases and never slower (I've not found any case). - - BUGS CORRECTED: - - function prototypes for ansi compilers. - - some memory initialization bugs (purify is just great for this). - - empty strings in extensions are now correctly handled. - -3.2 (92/07/06) - - NEW FEATURES: - - both format and functions handle extensions data. This allow people - to store additional data related to a pixmap. See documentation for - detail. - - sxpm supports the new option '-c' to use a private colormap. This is - useful when displaying pixmaps using a lot of colors. - - sxpm supports the new option '-v' (verbose) to get possible - extensions print out on standard error. - - ENHANCEMENTS: - - most of the code has been reworked to be improved and thus almost - every function is faster. It takes less than 6 seconds of real time on - a sun4 to display, with sxpm, a 487x635 pixmap using 213 colors, while - it takes 32 seconds with the old library! It takes 18 seconds to - display a 1279x1023 screen dump using 14 colors while xwud takes 10 - seconds. - Of course performance improvements are not always that great, they - depend on the size and number of colors but I'm sure everybody will - appreciate ;-) - I know how to improve it more but this will require changes in the - architecture so this is not for now. Some optimizations have been - contributed by gregor@kafka.saic.com (gregg hanna) and - jnc@csl.biosci.arizona.edu (John N. Calley). - - the Imakefile is modified to let you install sxpm - Rainer Klute - - - xpmP.h declares popen for Sequent platforms - Clinton Jeffery - - - XpmWriteFileFromImage/Pixmap rather than truncating the pixmap name - to the first dot changes dots to underscores to get a valid C syntax - name. - - - BUGS CORRECTED: - - there was a bug in the image creation function for some 24 bits - displays. It is fixed. - - allocated color pixels are now freed when an error occurs - - nusser@dec1.wu-wien.ac.at (Stefan Nusser) - - CHANGES TO THE DOC: - - the documentation describes the new XpmExtension structure and how - to use it with read and write functions. - -3.1 (92/02/03) - - ENHANCEMENTS: - - sxpm now have more standard options (mainly suggested by - Rainer Sinkwitz ): - - Usage: sxpm [options...] - Where options are: - - [-d host:display] Display to connect to. - [-g geom] Geometry of window. - [-hints] Set ResizeInc for window. - [-icon filename] Set pixmap for iconWindow. - [-s symbol_name color_name] Overwrite color defaults. - [-p symbol_name pixel_value] Overwrite color defaults. - [-plaid] Read the included plaid pixmap. - [filename] Read from file 'filename', and from - standard input if 'filename' is '-'. - [-o filename] Write to file 'filename', and to standard - output if 'filename' is '-'. - [-nod] Don't display in window. - [-rgb filename] Search color names in the rgb text file - 'filename'. - - if no input is specified sxpm reads from standard input. - - - - Xpm functions and Ppm converters now deal with multiword colornames. - patches from Rainer Sinkwitz . - - -3.0 (91/10/03) - - Functions name and defines have been modified again (sorry for that) - as follows: - - XpmReadPixmapFile XpmReadFileToPixmap - XpmWritePixmapFile XpmWriteFileFromPixmap - - XpmPixmapColorError XpmColorError - XpmPixmapSuccess XpmSuccess - XpmPixmapOpenFailed XpmOpenFailed - XpmPixmapFileInvalid XpmFileInvalid - XpmPixmapNoMemory XpmNoMemory - XpmPixmapColorFailed XpmColorFailed - - To update code using Xpm you can use the included shell script called - rename with the sed commands files name-3.0b-3.0c and name-3.0c-3.0. - Old names still valid though. - - NEW FEATURES: - - four new functions to work with images instead of pixmaps: - - XpmReadFileToImage - XpmWriteFileFromImage - XpmCreateImageFromData - XpmCreateDataFromImage - - ENHANCEMENTS: - Algorithms to create and scan images and pixmaps are based on the - MIT's R5 code, thus they are much cleaner than old ones and should - avoid any problem with any visual (yes, I trust MIT folks :-) - - BUGS CORRECTED: - Imakefile use INCDIR instead of ROOTDIR. - - CHANGES TO THE DOC: - - the documentation presents the four new functions. - -3.0c (91/09/18) - - In answer to request of people functions, types and defines names have - been changed as follows: - - XCreatePixmapFromData XpmCreatePixmapFromData - XCreateDataFromPixmap XpmCreateDataFromPixmap - XReadPixmapFile XpmReadPixmapFile - XWritePixmapFile XpmWritePixmapFile - XFreeXpmAttributes XpmFreeAttributes - - PixmapColorError XpmPixmapColorError - PixmapSuccess XpmPixmapSuccess - PixmapOpenFailed XpmPixmapOpenFailed - PixmapFileInvalid XpmPixmapFileInvalid - PixmapNoMemory XpmPixmapNoMemory - PixmapColorFailed XpmPixmapColorFailed - - ColorSymbol XpmColorSymbol - - Generally speaking every public name begins with 'Xpm' and every - private one with 'xpm'. This should avoid any possible conflict. - - Some files have also be renamed accordingly. - - NEW FEATURES: - - support for VMS and two new options for sxpm: icon and hints (see - manual for details) Richard Hess - - DEFINES in Imakefile and Makefile.noXtree allows you to set the - following: - - ZPIPE for un/compressing piped feature (default is on) - NEED_STRCASECMP for system which doesn't provide one (default - is off) - - - xpmtoppm.c has is own strstr function which is used if NEED_STRSTR - is defined when compiling - Hugues.Leroy@irisa.fr (Hugues Leroy). - - BUGS CORRECTED: - - many bugs have been fixed, especially for ansi compilers - - Doyle C. Davidson (doyle@doyled.b23b.ingr.com) and - Clifford D. Morrison (cdm%bigdaddy%edsr@uunet.UU.NET) - - parser is again a little more improved - -3.0b (91/09/12) - - This is a complete new version with a new API and where files and - structures have been renamed. So this should be taken as a new - starting release. - This release should be quickly followed by the 3.0 because I'm planning - to send it for X11R5 contrib which ends October 5th. - - NEW FEATURES: - - support for transparent color. - - support for hotspot. - - a new function: XCreateDataFromPixmap to create an XPM data from a - pixmap in order to be able to create a new pixmap from this data using - the XCreatePixmapFromData function later on. - - a new structure: XpmAttributes which replace the XpmInfo structure - and which leads to a much simpler API with less arguments. - - arguments such as visual, colormap and depth are optional, default - values are taken if omitted. - - parsing and allocating color failures don't simply break anymore. If - another default color can be found it is used and a PixmapColorError - is returned. In case no color can be found then it breaks and returns - PixmapColorFailed. - - for this reason the ErrorStatus codes are redefined as follows: - - null if full success - positive if partial success - negative if failure - - with: - #define PixmapColorError 1 - #define PixmapSuccess 0 - #define PixmapOpenFailed -1 - #define PixmapFileInvalid -2 - #define PixmapNoMemory -3 - #define PixmapColorFailed -4 - - - sxpm prints out a warning when a requested color could not be parsed - or alloc'ed, and an error when none has been found. - - sxpm handles pixmap with transparent color. For this purpose the - plaid_mask.xpm is added to the distribution. - - BUGS CORRECTED: - - I've again improved the memory management. - - the parser is also improved. - - when writing a pixmap to a file the variable name could be - "plaid.xpm" which is not valid in C. Now the extension name is cut off - to give "plaid" as variable name. - - reading multiple words colornames such as "peach puff" where leading - to non readable Xpm files. They are now skipped to have only single - word colorname. Lionel Mallet (mallet@ipvpel.unipv.it). - - parser was triggered by the "/" character inside string. - Doyle C. Davidson (doyle@doyled.b23b.ingr.com). This is corrected. - - sxpm maps the window only if the option "-nod" is not selected. - - CHANGES TO THE DOC: - - the documentation presents the new API and features. - -3.0a (91/04/10) - - This is an alpha version because it supports the new version of XPM, - but the library interface is still the same. Indeed it will change in - future release to get rid of obsolete stuff such as the type argument - of the XWritePixmapFile function. - - ******************************* WARNING ********************************* - The format is not anymore XPM2, it is XPM version 3 which is XPM2 - limited to the C syntax with the key word "XPM" in place of "XPM2 C". - The interface library has not changed yet but the type argument of - XWritePixmapFile and the type member of XpmInfo are not used anymore. - Meanwhile the library which is now called libXpm.a is backward - compatible as XPM2 files can be read. But the XWritePixmapFile - function only writes out XPM version 3 files. - ************************************************************************* - - NEW FEATURES: - - the library doesn't use global variables anymore, thus it should be - able to share it. - - sxpm has been rewritten on top of Xt, it can be used to convert - files from XPM2 to XPM version 3. - - xpm1to2c.perl has been upgraded to the new XPM version and renamed - as xpm1to3.perl - - ppmtoxpm2.c and ppmtoxpm2.1 have been upgraded too and renamed - ppmtoxpm.c and ppmtoxpm.1. In addition the xpmtoppm.c and xpmtoppm.1 - of the pbmplus package have been upgraded too. xpmtoppm can thus - convert XPM version 1 and 3 to a portable pixmap. These files should - replace the original ones which are part of the pbmplus package. See - the ppm.README file for more details. - - the library contains RCS variables which allows you to get revision - numbers with ident (which is part of the RCS package). The Id number - is an internal rcs number for my eyes only. The official one is found - in Version. - - BUGS CORRECTED: - - the memory management has been much improved in order to avoid - memory leaks. - - the XImage building algorithm has been changed to support correctly - different visual depths. There is special code to handle depths 1, 4, - 6, 8, 24, and 32 to build the image and send it in one whack, and - other depths are supported by building the image with XPutPixel which - is slow but sure. - - similar algorithms are used to read pixmaps and write them out. - - CHANGES TO THE DOC: - - the documentation presents the new XPM format. - - -2.8 (90/12/19) - - ******************************* WARNING ********************************* - Since the last release two structures have been modified and have now - bigger sizes, so ANY CODE USING THE libXPM2 NEEDS TO BE RECOMPILED. - ************************************************************************* - - NEW FEATURES: - - the ColorSymbol struct contains the new member 'pixel' which allow - to override default colors by giving a pixel value (in such a case - symbol value must be set to NULL), - - the XpmInfo struct contains the new member 'rgb_fname' in which one - can specify an rgb text file name while writing a pixmap with the - XWritePixmapFile function (otherwise this member should be set to - NULL). This way colorname will be searched and written out if found - instead of the RGB value, - - Imakefile originally provided by stolcke@ICSI.Berkeley.EDU, - - the old Makefile is now distributed as Makefile.noXtree and presents - install targets, - - the demo application is renamed sxpm (Show XPM), creates a window of - the size of the pixmap if no geometry is specified, prints out - messages instead of status when an error occurs, handles the new - option -p for overriding colors by giving a pixel value (not really - useful but is just here to show this new feature), handles the new - option -rgb for specifying an rgb text file, and ends on - keypress as buttonpress, - - defines for SYSV have been provided by Paul Breslaw - , - - the distribution includes a new directory called converters which - contains xpm1to2 and xpm1to2c perl converters and a ppmtoxpm2 - converter provided by Paul Breslaw who upgraded the original ppmtoxpm - written by Mark W. Snitily . - - CHANGES TO THE DOC: - - this file is created and will give old users a quick reference to - changes made from one release to the next one, - - documentation is changed to present the new ColorSymbol structure - and the way to override colors by giving a pixel value, and to present - the new XpmInfo structure and how to use it, - - a man page for sxpm is added to the distrib, - - the README file talks about sxpm and no more demo, and have - reference to the different converters. - -2.7 (90/11/12) - - NEW FEATURES: - - XReadPixmapFile reads from stdin if filename is NULL, - - XWritePixmapFile writes to stdin if filename is NULL, - - the demo application handles the new option -nod for no displaying - the pixmap in a window (useful when used as converter). - - CHANGES TO THE DOC: - - documentation about the new feature. - -2.6 (90/10/29) - - NEW FEATURES: - - from nazgul@alphalpha.com (Kee Hinckley): changes to make the - library usable as C++ code, and on Apollo without any warning. - - BUGS CORRECTED: - - from nazgul@alphalpha.com (Kee Hinckley): the xpm include files was - declaring XWritePixmapFile as taking in arg a Pixmap pointer instead - of a Pixmap. - -2.5 (90/10/17) - - BUGS CORRECTED: - - XWritePixmapFile was not closing the file while ending normally. - -2.4 (90/09/06) - - NEW FEATURES: - - XReadPixmapFile reads from a piped uncompress if the given filename - ends by .Z or if filename.Z exists, - - XWritePixmapFile writes to a piped compress if the given filename - ends by .Z. - - BUGS CORRECTED: - - demo now deals with window manager. - - CHANGES TO THE DOC: - - documentation about compressed files management. - -2.3 (90/08/30) - - BUGS CORRECTED: - - handle monochrome display correctly, - - comments can be empty. - -2.2 (90/08/27) - - BUGS CORRECTED: - - when reading some invalid free was dumping core on some machine. - -2.1 (90/08/24) - - First distribution of XPM2. - diff --git a/FAQ.html b/FAQ.html deleted file mode 100644 index 18d4ee6..0000000 --- a/FAQ.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - -FAQ XPM - - - -

The XPM
-Frequently Asked Questions

-

-This article contains the answers to some Frequently Asked Questions about the -XPM format and/or library. If you don't find the answer to your problem here, -then you can mail either to lehors@sophia.inria.fr or to the mailing list -xpm-talk@sophia.inria.fr. - - -

Contents

- -
    -
  1. How do I convert my images to or from XPM ? -
  2. Why are my XPM files said to be invalid ? -
  3. Why does my program core dumps using XPM ? -
  4. Why does my program core dumps using XPM with a widget ? -
  5. How can I get a non rectangular icon using XPM ? -
  6. What exactly triggers the creation of a mask when using XPM ? -
  7. How should I use the mask ? -
  8. Is there a string to pixmap converter somewhere ? -
  9. How can I edit XPM icons ? -
  10. Is there a collection of icons somewhere ? -
  11. The documentation fails to print out. Why ? -
  12. Copyright -
- - -

1. How do I convert my images to or from XPM ?

-

- Netpbm is surely the best image conversion package that I know of. It defines - formats for color, gray and monochrome images and provides a set of filters. - Thus a GIF image can be converted to XPM with something like: -

- $ giftoppm youricon.gif | ppmtoxpm > youricon.xpm -

- The latest release can be found at least from wuarchive.wustl.edu - (128.252.135.4), directory /graphics/graphics/packages/NetPBM - - -

2. Why are my XPM files said to be invalid ?

-

- There are three official versions of the XPM format. The XPM library since - version 3.3 can read all them but writes out only XPM 3. Also the small - program called sxpm which is part of the XPM library package can be used to - automatically translate XPM 1 and 2 files to XPM 3 with a command such as: -

- $ sxpm -nod yourxpm1or2file -o yourxpm3file -

- Also, the XPM format defines "None" to be the color name meaning - "transparent", but IXI used to hack the XPM library in its early days to - handle transparency as "#Transparent". This makes IXI format not compatible - with the official XPM format, and so not readable neither by the official XPM - library nor any of the programs built on top of it. -

- The only solutions are either to stick on IXI programs which can deal with - their format or convert your files to the standard XPM format. This can be - done simply by changing "#Transparent" to "None". - - -

3. Why does my program core dumps using XPM ?

-

- Be sure the XpmAttributes structure you pass by reference has a valid - valuemask. You can give NULL instead if you don't want to use an - XpmAttributes but if you do, you MUST initialize its valuemask component to - some valid value, at least 0, otherwise unpredictable errors can occur. -

- So instead of doing something like: -

-      XpmAttributes attrib;
-
-      XpmReadFileToPixmap(dpy, d, filename, &pixmap, &mask, &attrib);
-
-

- you should do: -

-      XpmAttributes attrib;
-
-      attrib.valuemask = 0;
-      XpmReadFileToPixmap(dpy, d, filename, &pixmap, &mask, &attrib);
-
- - -

4. Why does my program core dumps using XPM with a widget ?

-
    -
  • First the XPM library is Xlib level, so don't pass your widget as a - Drawable parameter. A Drawable is either a Window or a Pixmap. The widget's - window can do the job but: - -
  • Then a widget only gets a Window when realized, so passing XtWindow(widget) - with a not yet realized widget is wrong. Either realize you widget first or - use another window. Since the Drawable parameter is only used to specify - the screen to which the pixmap must be created on, most of the time the - default root window is just fine. -
- - -

5. How can I get a non rectangular icon using XPM ?

-

- The X Window System does not support transparent color. However there are - several ways you can use to get the same visual effect using XPM: -

    -
  • First you can use the None color to get a shape mask and use it as - explained below (question 7). - -
  • Second you can define a symbolic color name such as "mask" in the XPM - format file, then use the color overriding mechanism to set this symbolic - color to the color of the underlying object. Note that in this case the XPM - library won't create a shape mask, and that if the color of the underlying - object is changed then you'll have to create a new pixmap. -
- - -

6. What exactly triggers the creation of a mask when using XPM ?

-

- Basically a mask is created if "None" is used as one of the color of the - pixmap. Be aware that this is not only true if it is used in the XPM of the - pixmap since the colors can be overridden at load time. So a mask is created - if the "None" color is used at load time, coming either from the XPM - definition or the color overriding. - - -

7. How should I use the mask ?

-

- There are basically two ways of using the mask: -

    -
  • Use the mask as a shapemask with the X11 Nonrectangular Saphe Window - Extension. Typically this is what should be done when the icon is used in a - desktop. - -
  • Use the mask as a clipmask in the GC you pass to XCopyArea when drawing the - pixmap. So the "transparent" pixels being not actually drawn will get the - underlying pixels colors. -
- - -

8. Is there a string to pixmap converter for Motif ?

-

- Yes, Motif 2.0 or later does support XPM pixmaps as well as XBM bitmaps. - - -

9. How can I edit XPM icons ?

-

- As listed below several editors either commercial or not are supporting the - XPM format. However, pixmap is the one I would recommend since it is freely - available and, being fully dedicated to XPM, it allows to edit all the - special things, such as the symbolic color names, which makes XPM different - from all the other image formats. Pixmap can always be found by ftp from - ftp.x.org (contrib) and avahi.inria.fr (pub/pixmap). -

-Last Update: 3 August 1994 - - -
XPM Icon Editors
ProgramInfosSource/AuthorPlatformsSAXPMcost -
pixmap -Lionel Malletsourceyes3NC - -
pixt -J. Michael Flanerysourceyes1NC - -
pixed
    -
  • part of X.desktop -
  • current version doesn't work on 24-plane displays -
-
IXIMany UNIXno3N/A - -
olpixmap
    -
  • packaged with the OLIT (OpenLook) toolkit -
-
USLSun, SVR4.2, UnixWareno1N/A - -
xfedor
    -
  • only uses XLIB -
  • doesn't work on 24-plane displays -
-
Daniel Dardaillersourceyes3NC - -
SCOpaint
    -
  • included with the ODT package -
-
SCO/Wing EngODTyes2.8N/A - -
pme.icn
    -
  • written in the Icon language -
-
Icon Projectsourceyes3NC - -
PixEditT
    -
  • there is currently no support for editing the colormap -
-
Free Widget Foundationsourceyes3NC - -
xscribble -Robert Forsmansourceyes?NC - -
vueicon
    -
  • included with Vue3.0 -
-
Hewlett-PackardHPyes3N/A - -
iconedit V3 SunSoftSparc/Sun3yes2N/A - -
Pixmap Editor
    -
  • this is a Widget, not a complete program -
-
ICS?yes?? - -
ezX Sunrise Softwarey???N/A - -
XPaint
    -
  • full featured, works on all displays -
  • current release is 2.1.1 (last update January 1994) -
-
David Koblassourceyes3NC - -
Phoenix -ohtcolor@niksula.hut.fisourceyes3NC - -
pixed
    -
  • pixed is part of the TeleUSE UIMS -
  • More info is available from service@ignite.alsys.com -
-
AlsysMany UNIXyes3N/A - -
display -John Cristysourceyes3NC -
- -

-SA - Stand Alone program
-NC - No Charge (i.e. free); most programs are copyrighted.
-XPM - XPM format supported
-source - built from source code; likely works on all standard X platforms
-N/A - icon editor is normally distributed with other software - -

-Send updates, additions, corrections, etc. to dan@bristol.com - - -

10. Is there a collection of icons somewhere ?

-

- At least there is one freely available: Anthony's X Icon Library. You can - found it on several ftp servers, such as server.berkeley.edu/pub/AIcons. It - contains only small icons (less than about 100x100 pixels in size) which are - stored in groups in a logical way. Color icons are stored in XPM format and - Black & White icons in XBM. - - -

11. The documentation fails to print out. Why ?

-

- The PostScript documentation file is formatted for US letter paper. Frame - Maker tries very hard to ensure that you have the right paper and punts if - you don't. However, you can easily work around this problem by applying the - following patch. If for some reason applying the patch fails, you can still - do it by hand. Just locate the corresponding block in the PS file and remove - the lines with a leading '-' character. - By the way, this applies to any doc generated by Frame Maker. The - corresponding block might be slightly different depending on which version of - Frame Maker was used, but it is still easy to locate. - -

-*** xpm.PS      Wed Sep 11 15:47:43 1996
---- xpm-A4.PS   Thu Nov 21 09:27:28 1996
-***************
-*** 647,668 ****
-        0 ne /edown exch def 
-        /yscale exch def
-        /xscale exch def
--       FMLevel1 {
--               manualfeed {setmanualfeed} if
--               /FMdicttop countdictstack 1 add def 
--               /FMoptop count def 
--               setpapername 
--               manualfeed {true} {papersize} ifelse 
--               {manualpapersize} {false} ifelse 
--               {desperatepapersize} {false} ifelse 
--               { (Can't select requested paper size for Frame print job!) FMFAILURE } if
--               count -1 FMoptop {pop pop} for
--               countdictstack -1 FMdicttop {pop end} for 
--               }
--               {{1 dict dup /PageSize [paperwidth paperheight]put setpagedevice}stopped
--               { (Can't select requested paper size for Frame print job!) FMFAILURE } if
--                {1 dict dup /ManualFeed manualfeed put setpagedevice } stopped pop }
--       ifelse 
-        
-        FMPColor {
-                currentcolorscreen
---- 647,652 ----
-
- - -
-

Copyright (C) 1989-95 GROUPE BULL

-

-Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -

-The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -

-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -

-Except as contained in this notice, the name of GROUPE BULL shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from GROUPE BULL. - - diff --git a/Makefile.am b/Makefile.am index 569341b..08f6072 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,23 +1,16 @@ # Daniel Stone disowns all copyright on this file; no warranty is given as to its # suitability or otherwise. -SUBDIRS = include src sxpm cxpm +SUBDIRS = doc include src sxpm cxpm ACLOCAL_AMFLAGS = -I m4 pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = xpm.pc -MAINTAINERCLEANFILES = ChangeLog INSTALL -EXTRA_DIST = \ - xpm.PS.gz \ - CHANGES \ - COPYRIGHT \ - FAQ.html \ - FILES \ - README.AMIGA \ - README.html \ - README.MSW +EXTRA_DIST = COPYRIGHT FILES NEWS.old + +MAINTAINERCLEANFILES = ChangeLog INSTALL .PHONY: ChangeLog INSTALL diff --git a/NEWS.old b/NEWS.old new file mode 100644 index 0000000..b90e6cd --- /dev/null +++ b/NEWS.old @@ -0,0 +1,957 @@ +/* + * Copyright (C) 1989-95 GROUPE BULL + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of GROUPE BULL shall not be + * used in advertising or otherwise to promote the sale, use or other dealings + * in this Software without prior written authorization from GROUPE BULL. + */ + +/**************************************************************************\ +* * +* HISTORY of user-visible changes * +* * +\**************************************************************************/ + +3.4k (98/03/18) + + ENHANCEMENTS: + - A new program called cxpm is provided to check on XPM files and help + figuring out where the file might be invalid. + - The FAQ and README are now in HTML. + + BUGS CORRECTED: + - A bug in writing pixmaps out on an 32 bit depth visual and MSBFirst + machine. + - patch from Uwe Langenkamp + - A severe bug in parsing the pixels section when an unknown character + is encountered. + +3.4j (96/12/31) + + ENHANCEMENTS: + - The XPM library can now be built under Amiga DOS. This entirely comes + from: Lorens Younes + See the README.AMIGA file for details. + - Changes for MSW: big performance improvement in ParseAndPutPixels(), + fixed creation of the mask in SetColor() + - patch from Jan Wielemaker + - makefiles are provided for VMS + - given by Martin P.J. Zinser m.zinser@gsi.de + - Imakefiles reworked to get smoother builds and fixes from: + - Paul DuBois dubois@primate.wisc.edu + - Larry Schwimmer schwim@cyclone.stanford.edu + - thanks to some code rearrangement the library is smaller (the size + reduction goes from 4 to 7% depending on the system) + + BUGS CORRECTED: + - A severe bug (introduced in 3.4i as part of the sprintf + optimization) in code writing XPM extensions to a buffer + XpmCreateBufferFromImage/Pixmap. + - The XpmAttributes definition in xpm.h was declaring nalloc_colors to + be Bool, it's an int. + +3.4i (96/09/13) + + NEW FEATURES: + - The XPM library now allows the application to pass its own color + allocation/free functions. For this matter the following was done: + The XpmAttributes structure has three new fields alloc_color, + free_color, and color_closure. The following new valuemasks were + added XpmAllocColorFunc, XpmFreeColorsFunc, XpmColorClosure. And + two new types were defined XpmAllocColorFunc and XpmFreeColorsFunc. + See documentation for details. + + ENHANCEMENTS: + - Windows NT support. It should compile and run fine based on the X + Consortium X11R6 distribution. + - The README file contains information to compile on Solaris with gcc. + - Part of the code has been optimized by using the value returned by + sprintf instead of calling strlen. Add the flag -DVOID_SPRINTF + if on your system sprintf returns void. + - patch from Thomas Ott thommy@rz.fh-augsburg.de + + BUGS CORRECTED: + - XpmFree is now a real function (simply calling free by default). + + CHANGES TO THE DOC: + - The documentation describes the new XpmAttributes fields and their + use. + +3.4h (96/02/01) + + NEW FEATURES: + - The XpmAttributes has a new member called 'alloc_close_colors' which + lets the caller specify whether close colors should be allocated + using XAllocColor or not. This is especially useful when one uses a + private colormap full of read/write cells. + The xpm.h header file define a new bitmap flag called + XpmAllocCloseColors to use along with this new slot. + - Dale Pease peased@bigbird.cso.gtegsc.com + - The XpmAttributes has a new member called 'bitmap_format' which lets + the caller specify the format of 1 bit depth images (XYBitmap or + ZPixmap). The xpm.h header file define a new bitmap flag called + XpmBitmapFormat to use along with this new field. + + ENHANCEMENTS: + - XpmReadFileTo[Image/Pixmap], XpmCreate[Image/Pixmap]FromData, + XpmCreateImageFromDataFromBuffer functions do no longer use a + temporary XpmImage object, which reduces a lot the amount of memory + used. On the other hand it can take a little more time, but given the + following figures (based on sxpm) it is a real good trade-off. + + Reading a 22x22 pixmap with 5 colors no time change is detected + using time: + real 0.3 + user 0.1 + sys 0.1 + + Reading a 1279x1023 pixmap with 14 colors (quite extreme case for + XPM!) the time goes from: + real 1.9 + user 0.8 + sys 0.8 + + to: + real 2.2 + user 1.8 + sys 0.3 + + Reading the 22x22 pixmap with 5 colors the memory usage (under + purify) goes from: + 255256 code + 55496 data/bss + 163848 heap (peak use) + 4248 stack + to: + 271240 code + 55472 data/bss + 159752 heap (peak use) + 4224 stack + + And reading the 1279x1023 pixmap with 14 colors it goes from: + 255256 code + 55496 data/bss + 6705160 heap (peak use) + 4280 stack + to: + 271240 code + 55472 data/bss + 1732616 heap (peak use) + 4264 stack + + This clearly shows that while for small pixmaps there is no real + difference on both sides, for large pixmaps this makes a huge + difference about the amount of memory used and it is not much + slower. + + Note that you can still get the old behavior using both + XpmReadFileToXpmImage and XpmCreate[Image/Pixmap]FromXpmImage instead + of XpmReadFileTo[Image/Pixmap]. Once more XPM gives you the choice! + + BUGS CORRECTED: + - when defined locally the global symbols strcasecmp and strdup are + now called xpmstrcasecmp and xpmstrdup to avoid any possible + conflict. + - VMS has a bogus file system which requires a work around in + XpmReadFileToBuffer. + - patch from Bob.Deen@jpl.nasa.gov + - the type of the exactColors attribute has been changed from unsigned + int to Bool. + + CHANGES TO THE DOC: + - the documentation describes the new XpmAttributes fields + alloc_close_colors and bitmap_format. + +3.4g (95/10/08) + + ENHANCEMENTS: + - The XpmAttributes structure has now two new slots: alloc_pixels and + nalloc_pixels in order to provide an easy way to free allocated + colors. The new bitmask XpmReturnAllocPixels should be used to + request this data through the valuemask. Unless you really know why, + you should use this instead of XpmReturnPixels, pixels, and npixels. + - the XPM1 format parsing has been improved. + - patch from Chuck Thompson + - compilers defining _STDC_ to something different from 1 are now + considered as ANSI compilers. + - the README file provides now more info on how to build XPM depending + on the system. + + BUGS CORRECTED: + - a bug introduced in 3.4f in the XPM1 format parsing function. + - fix from Chuck Thompson + - the hashtable was not free when the color parsing failed. + - patch from ackley@cs.unm.edu (David Ackley) + - the close color mechanism wasn't used if one of the closeness + parameter was null. Now only one needs to be different from 0. + Lorens Younes d93-hyo@nada.kth.se + - parsing of long comments failed with a segmentation fault. + + CHANGES TO THE DOC: + - the documentation describes the new XpmAttributes fields + alloc_pixels and nalloc_pixels and how they are used. + +3.4f (95/05/29) + + ENHANCEMENTS: + - Defines IMAKE_DEFINES in the top Imakefile so one can easily avoid + building the shared library. + - Add some information about the installation process in the README. + - filenames are surrounded with quotes when calling gzip or compress in + order to allow spaces within filenames. + - William Parn + - the compilation and the shared library building should be smoother + on Alpha OSF/1. + - patch from Dale Moore + + BUGS CORRECTED: + - a segmentation fault occurring in some weird case. + +3.4e (95/03/01) + + ENHANCEMENTS: + - The top Imakefile passes CDEBUGFLAGS and DEFINES to subdirs. Thus + only this Imakefile should need to be edited by users. + - FAQ includes the answer to the question "How can I get a non + rectangular icon using XPM ?" + - VMS support updated + - patch from Martin P.J. Zinser m.zinser@gsi.de + + BUGS CORRECTED: + - XpmCreateImageFromXpmImage() called from XpmReadFileToPixmap() could + lead to a segmentation fault since free was called on a memory block + size variable instead of the block itself. Note: this bug has been + introduced in 3.4d. + +3.4d (95/01/31) + + ENHANCEMENTS: + - sxpm now supports a -version option command. + + BUGS CORRECTED: + - the list of pixels returned in XpmAttributes was wrong when two + colors were defined as None in the read XPM + - Lionel.Mallet@sophia.inria.fr + - the parser was skipping whitespace reading extensions strings. This + has been fixed so extensions lines are now returned exactly as they + are. + - some compilation control added for the dec alpha with X11R5 (LONG64) + - patch from Fredrik Lundh + - when writing an XPM file, '-' characters are replaced with '_' + characters in the array name, in order to get a valid C syntax name. + - XYPixmap format images were not correctly handled. + - XPM1 file with names using multiple '_' characters are now handled + correctly. + - todd@erda.rl.af.mil (Todd Gleason) + +3.4c (94/06/06) + + Yes, this is kind of quick. But this is because no code has been modified, + this is just a new packaging to make the whole stuff more suitable to the + X development team's requests for inclusion in the R6 contrib. + + ENHANCEMENTS: + - Several filenames were too long to fit without any conflict on DOS + and CD-ROM filesystems. They have been renamed. + - Imakefiles use XCOMM for comments instead of the # character. + - the Postscript documentation file doc/xpm.ps is now distributed as + doc/xpm.PS.gz and allows browsing with tools such as ghostview. + - Besides, parts of lib/misc.c have been moved to several new files, + and some functions of data.c have been moved to other files in + order to get a better link profile. + - I've also added a FAQ hoping this will prevent people from + continuously filling my mailbox with the same questions. + - sxpm.c includes instead of "xpm.h" and BUILDINCTOP is + used in Makefiles as expected. + - Everything can be done simply using "xmkmf -a" and "make". + +3.4b (94/05/24) + + ENHANCEMENTS: + - XPM can now be built under MS Windows. Yes, this is possible and this + entirely comes from: + - Hermann Dunkel + See the README.MSW file for details. + + - building the shared library now depends on the SharedLibXpm variable + and no longer on the SharedLibX variable which is private to the X + Window System project. + - patch from Stephen Gildea + Other variables can now be set for the various locations needed. + + - lib/parse.c does no longer use a 256x256 array in the stack but + malloc it instead. + + - The Copyright notice which has been re-written from the X11R6's one + should be clearer and is now present in every file. + + BUGS CORRECTED: + - lib/xpmP.h does no longer define a Boolean type which conflicts with + the Intrinsic definition. Instead the type Bool defined in Xlib is + used. + - neumann@watson.ibm.com (Gustaf Neumann) + +3.4a (94/03/29) + + BUGS CORRECTED: + - passing NULL as shapemask_return to XpmReadFileToPixmap and similar + functions was leading to a bus error. + - Dean Luick + +3.4 (94/03/14) + + IMPORTANT NOTE: + This version is not compatible with 3.3. Fortunately most people should + only need to recompile. + I apology for this but CDE/Motif have put heavy pressure to go that + way. The point is that I designed and released Xpm 3.3 in order to let + OSF include a clean version of Xpm in Motif 2.0. This new version was + not fully compatible with 3.2 but I thought it didn't matter since this + was going to be the first version used within Motif. Unfortunately CDE + was already using xpm-3.2 internally and requires both source and + binary backward compatibility. By the way I must say they didn't drop + us a single line to let us know they were using it and thus were + expecting stability. All this could have been avoided... + + However, since I had to go for a not compatible version I took this as + an opportunity to modify the lower level API, which was new in 3.3 and + which was somewhat clumsy, in order to provide yet a better API. + + The library has been modified to have both source and binary backward + compatibility with xpm-3.2. This implies it is not either source or + binary compatible with 3.3. The fields related to the 3.2 XpmInfos + mechanism have been put back into the XpmAttributes structure. The new + 3.3 XpmInfos struct has been renamed as XpmInfo to avoid conflict with + the old 3.2 flag which is back too. All the semantic related to the + XpmAttributes infos fields is back as well. + + So this new version provides a high level API which is fully + compatible with 3.2 and still provides the 3.3 lower level API + (XpmImage) with the XpmInfos struct renamed as XpmInfo. This leads to + some redundancy but this was the best I could do to satisfy both + CDE/Motif people who needed the backward compatibility and myself (who + always tries to provide you with the best ;-). + + Tests have been successfully performed with pixmap-2.1, pixmap-2.4, and + sxpm. + + ENHANCEMENTS: + - The colorTable member of the XpmAttributes structure is now an + (XpmColor*) in order to be compatible with an XpmImage colorTable. + However in order to be backward compatible this field is cast to + (XpmColor **), which is equivalent to (char ***), when it is used + with the old flags XpmInfos and XpmReturnInfos. To handle the new + type the new flags XpmColorTable and XpmReturnColorTable have been + defined. + - The XpmInfo struct has been extended to avoid having to deal with an + XpmAttributes at the lower level. The idea is that all the data + stored in an Xpm file can be retrieve through both an XpmImage and + an XpmInfo struct. See the documentation for details. + - XpmUndefPixel is defined and exported by xpm.h in order to let + clients providing their own colorTable when writing out an Xpm file. + See the documentation for details. + - in sxpm/sxpm.c, set attribute XtNinput to True on toplevel widget. + Windows that don't "take" input, never get focus, as mandated by + the ICCM. + patch from Henrique Martins + - lib/Imakefile modified to build the shared library under IRIX 5. + patch from simon@lia.di.epfl.ch (Simon Leinen) + + NEW FEATURES: + - a new function and a new define should help client figuring out with + which Xpm library version they are working. These are + XpmIncludeVersion and XpmLibraryVersion(). + +3.3 (93/12/20) + + NEW FEATURES: + - XPM1 files are now supported. + - a new function is provided to get an error string related to the + returned error code. + - suggested by Detlef Schmier + + ENHANCEMENTS: + - gzip and gunzip are called with the -q option (quiet) + - patch from Chris P. Ross + - the parser is again more flexible about the way the strings are + distributed on lines. Actually a single line XPM file can be read. + - the documentation should be clearer about shapemask generation and + XpmAttributes valuemask. + + BUGS CORRECTED: + - reading some binary file was leading to a bus error. + - patch from Detlef Schmier + - the ? character is no longer used when writing an XPM file in order + to avoid possible ANSI trigraphs. + +3.3alpha (93/08/13) + + NEW FEATURES: + - a new level interface is provided to allow applications to do either + icon editing or data caching. + The XpmAttributes has been changed but most applications will just + need to be recompiled. + - new structures are provided to deal with the new lower level: + XpmImage, XpmColor, XpmInfos. + + - a separate distribution called xpm-contrib is available. This + includes the converters which used to be part of this distribution + plus: + two new applications: + * nexpm to draw a pixmap in *any* existing window from + Ralph Betza + * xpmview to display a list of Xpm files from + Jean Michel Leon + + a hacky string to pixmap converter, provided by + Robert H. Forsman Jr. + + The Xpm editor called pixmap will also be part of this contrib. + This does not mean it is the best pixmap editor one can find + but it is the only one that I know of which tries to handle + all the features of this format. + + ENHANCEMENTS: + - the code to build XImage data has been optimized by + jules@x.co.uk (Julian Gosnell) + the old code is still available when compiling with the + -DWITHOUT_SPEEDUPS flag. + + - closecolor code was not re-entrant + - dbl@visual.com (David B. Lewis) + - fix gzip filename (*.gz and no longer *.z). + - Jason Patterson + - sxpm has 2 new options: + -nom to do not display the mask if there is one + -cp to override a color value with a given + pixel, i.e. sxpm plaid.xpm -cp red 4 + + also the '-s' adn '-p' options have been renamed to '-sc' and '-sp'. + + - xpm.h defines XpmFormat, XpmVersion, and XpmRevision numbers. + + BUGS CORRECTED: + - closecolor minor fix + - Jason Patterson + +3.2g (93/04/26) + + ENHANCEMENTS: + - much faster close colors + - piping from/to compressed files now handles GNU's gzip (.z) format + - added XpmColorKey attribute - ability to specify which visual's + colors to use (ie: now it's possible to read in a pixmap in a + color visual, but use the colors specified for monochrome). + - added -mono, -grey4, -grey and -color options to sxpm to demonstrate + the XpmColorKey attribute. + - Jason Patterson + + BUGS CORRECTED: + - fixed bug where redefining "None" as a pixel stopped mask generation + - minor SVR4 defines for + - fixed annoying closecolor bug related to read/write color cells + - fixed minor bug in color value -> pixel overloading + - manual updated to include new red/green/blue closeness attributes + - Jason Patterson + + - the top Imakefile was missing the depend target + - sxpm/Imakefile fixed so that -L../lib is set before the standard + library location. + - Vivek Khera + + - lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent + versions of VMS) + - J. Daniel Smith + + - the lib/Imakefile didn't work with X11R4. + + +3.2f (93/03/17) + + NEW FEATURES: + - the library provides four new functions to deal with Xpm files + loaded in memory as single character strings buffers: + + XpmCreateImageFromBuffer + XpmCreatePixmapFromBuffer + XpmCreateBufferFromImage + XpmCreateBufferFromPixmap + + - in addition, as a convenience, two functions are provided to copy a + file in a buffer and to write a file from a buffer: + + XpmReadFileToBuffer + XpmWriteFileFromBuffer + + ENHANCEMENTS: + - Files are now dispatched in the following sub-directories: + lib, sxpm, and doc. + - Imakefiles will let you build a shared library as well as the static + one (with either X11R4 or X11R5). + - The documentation has been ported from LaTeX to FrameMaker and is + now included in the distribution in its PostScript form (doc/xpm.ps). + Source files are available on request. + Also the documentation has been reorganized and includes a table of + contents and an index of the functions (the number of functions + increasing this became a requisite). + + BUGS CORRECTED: + - Many warnings have been fixed - patch from Daniel Dardailler + daniel@osf.org + +3.2e (93/02/05) + + ENHANCEMENTS: + - use XpmMalloc, XpmRealloc, XpmCalloc, and XpmFree which are defines + in xpmP.h. This should help people wanting to use their own functions. + + BUGS CORRECTED: + - Intrinsic.h is no longer included. + - bzero is defined as memset on SYSV and SVR4. + - some memory initialization bug concerning XpmAttributes. + +3.2d (93/01/27) + + ENHANCEMENTS: + - compile on Solaris 2.0 + - patch from Clint Jeffery + + BUGS CORRECTED: + - shape masks are now set correctly for LSBFirst (Decs). + - pixmaps are now set correctly for 2 bit displays (Nexts). + - patch from Josef Leherbauer + - isspace was called on getc which fails when EOF is returned. + - Marelli Paolo + +3.2c (92/12/29) + + ENHANCEMENTS: + - parsing optimized for single and double characters color + - patch originally from Martin Brunecky + marbru@build1.auto-trol.com + + BUGS CORRECTED: + - XpmFreeExtensions was calling free on some argument without checking + it was not NULL. + - strdup was not correctly defined for systems which do not provide + it. - Hans-Peter Lichtin + - some bug in XpmCrDataFI.c + - Sven Delmas garfield@avalanche.cs.tu-berlin.de + + NOTE: + - there is still a bug with the creation of the clipmask on display of + depth 2 but I can't find a fix because unfortunately I don't have such + a rendering system and nobody gets the time to investigate for me. + +3.2b (92/10/19) + + ENHANCEMENTS: + - Create XpmReadFileToData and XpmWriteFileFromData + - Dan Greening + - added "close colors" support and ability to redefine color values + as pixels at load time, as well as color names + - Jason Patterson + - errors while parsing or allocating colors now revert to other + visual defaults, creating pixmap/image as expected, and returning + XpmSuccess. The old behavior of XpmColorError being returned and no + pixmap/image being created can be retained by setting the + exactColors attribute. + - Jason Patterson + + BUGS CORRECTED: + - SVR4 defines for including instead of + - Jason Patterson + - attributes->extensions and attributes->nextensions fields were not + set correctly when no extensions present in file. + - Simon_Scott Cornish + +3.2a (92/08/17) + + ENHANCEMENTS: + - use the mock lisp hashing function instead of the gnu emacs one, + it is faster in some cases and never slower (I've not found any case). + + BUGS CORRECTED: + - function prototypes for ansi compilers. + - some memory initialization bugs (purify is just great for this). + - empty strings in extensions are now correctly handled. + +3.2 (92/07/06) + + NEW FEATURES: + - both format and functions handle extensions data. This allow people + to store additional data related to a pixmap. See documentation for + detail. + - sxpm supports the new option '-c' to use a private colormap. This is + useful when displaying pixmaps using a lot of colors. + - sxpm supports the new option '-v' (verbose) to get possible + extensions print out on standard error. + + ENHANCEMENTS: + - most of the code has been reworked to be improved and thus almost + every function is faster. It takes less than 6 seconds of real time on + a sun4 to display, with sxpm, a 487x635 pixmap using 213 colors, while + it takes 32 seconds with the old library! It takes 18 seconds to + display a 1279x1023 screen dump using 14 colors while xwud takes 10 + seconds. + Of course performance improvements are not always that great, they + depend on the size and number of colors but I'm sure everybody will + appreciate ;-) + I know how to improve it more but this will require changes in the + architecture so this is not for now. Some optimizations have been + contributed by gregor@kafka.saic.com (gregg hanna) and + jnc@csl.biosci.arizona.edu (John N. Calley). + - the Imakefile is modified to let you install sxpm - Rainer Klute + + - xpmP.h declares popen for Sequent platforms - Clinton Jeffery + + - XpmWriteFileFromImage/Pixmap rather than truncating the pixmap name + to the first dot changes dots to underscores to get a valid C syntax + name. + + + BUGS CORRECTED: + - there was a bug in the image creation function for some 24 bits + displays. It is fixed. + - allocated color pixels are now freed when an error occurs - + nusser@dec1.wu-wien.ac.at (Stefan Nusser) + + CHANGES TO THE DOC: + - the documentation describes the new XpmExtension structure and how + to use it with read and write functions. + +3.1 (92/02/03) + + ENHANCEMENTS: + - sxpm now have more standard options (mainly suggested by + Rainer Sinkwitz ): + + Usage: sxpm [options...] + Where options are: + + [-d host:display] Display to connect to. + [-g geom] Geometry of window. + [-hints] Set ResizeInc for window. + [-icon filename] Set pixmap for iconWindow. + [-s symbol_name color_name] Overwrite color defaults. + [-p symbol_name pixel_value] Overwrite color defaults. + [-plaid] Read the included plaid pixmap. + [filename] Read from file 'filename', and from + standard input if 'filename' is '-'. + [-o filename] Write to file 'filename', and to standard + output if 'filename' is '-'. + [-nod] Don't display in window. + [-rgb filename] Search color names in the rgb text file + 'filename'. + + if no input is specified sxpm reads from standard input. + + + - Xpm functions and Ppm converters now deal with multiword colornames. + patches from Rainer Sinkwitz . + + +3.0 (91/10/03) + + Functions name and defines have been modified again (sorry for that) + as follows: + + XpmReadPixmapFile XpmReadFileToPixmap + XpmWritePixmapFile XpmWriteFileFromPixmap + + XpmPixmapColorError XpmColorError + XpmPixmapSuccess XpmSuccess + XpmPixmapOpenFailed XpmOpenFailed + XpmPixmapFileInvalid XpmFileInvalid + XpmPixmapNoMemory XpmNoMemory + XpmPixmapColorFailed XpmColorFailed + + To update code using Xpm you can use the included shell script called + rename with the sed commands files name-3.0b-3.0c and name-3.0c-3.0. + Old names still valid though. + + NEW FEATURES: + - four new functions to work with images instead of pixmaps: + + XpmReadFileToImage + XpmWriteFileFromImage + XpmCreateImageFromData + XpmCreateDataFromImage + + ENHANCEMENTS: + Algorithms to create and scan images and pixmaps are based on the + MIT's R5 code, thus they are much cleaner than old ones and should + avoid any problem with any visual (yes, I trust MIT folks :-) + + BUGS CORRECTED: + Imakefile use INCDIR instead of ROOTDIR. + + CHANGES TO THE DOC: + - the documentation presents the four new functions. + +3.0c (91/09/18) + + In answer to request of people functions, types and defines names have + been changed as follows: + + XCreatePixmapFromData XpmCreatePixmapFromData + XCreateDataFromPixmap XpmCreateDataFromPixmap + XReadPixmapFile XpmReadPixmapFile + XWritePixmapFile XpmWritePixmapFile + XFreeXpmAttributes XpmFreeAttributes + + PixmapColorError XpmPixmapColorError + PixmapSuccess XpmPixmapSuccess + PixmapOpenFailed XpmPixmapOpenFailed + PixmapFileInvalid XpmPixmapFileInvalid + PixmapNoMemory XpmPixmapNoMemory + PixmapColorFailed XpmPixmapColorFailed + + ColorSymbol XpmColorSymbol + + Generally speaking every public name begins with 'Xpm' and every + private one with 'xpm'. This should avoid any possible conflict. + + Some files have also be renamed accordingly. + + NEW FEATURES: + - support for VMS and two new options for sxpm: icon and hints (see + manual for details) Richard Hess + - DEFINES in Imakefile and Makefile.noXtree allows you to set the + following: + + ZPIPE for un/compressing piped feature (default is on) + NEED_STRCASECMP for system which doesn't provide one (default + is off) + + - xpmtoppm.c has is own strstr function which is used if NEED_STRSTR + is defined when compiling - Hugues.Leroy@irisa.fr (Hugues Leroy). + + BUGS CORRECTED: + - many bugs have been fixed, especially for ansi compilers - + Doyle C. Davidson (doyle@doyled.b23b.ingr.com) and + Clifford D. Morrison (cdm%bigdaddy%edsr@uunet.UU.NET) + - parser is again a little more improved + +3.0b (91/09/12) + + This is a complete new version with a new API and where files and + structures have been renamed. So this should be taken as a new + starting release. + This release should be quickly followed by the 3.0 because I'm planning + to send it for X11R5 contrib which ends October 5th. + + NEW FEATURES: + - support for transparent color. + - support for hotspot. + - a new function: XCreateDataFromPixmap to create an XPM data from a + pixmap in order to be able to create a new pixmap from this data using + the XCreatePixmapFromData function later on. + - a new structure: XpmAttributes which replace the XpmInfo structure + and which leads to a much simpler API with less arguments. + - arguments such as visual, colormap and depth are optional, default + values are taken if omitted. + - parsing and allocating color failures don't simply break anymore. If + another default color can be found it is used and a PixmapColorError + is returned. In case no color can be found then it breaks and returns + PixmapColorFailed. + - for this reason the ErrorStatus codes are redefined as follows: + + null if full success + positive if partial success + negative if failure + + with: + #define PixmapColorError 1 + #define PixmapSuccess 0 + #define PixmapOpenFailed -1 + #define PixmapFileInvalid -2 + #define PixmapNoMemory -3 + #define PixmapColorFailed -4 + + - sxpm prints out a warning when a requested color could not be parsed + or alloc'ed, and an error when none has been found. + - sxpm handles pixmap with transparent color. For this purpose the + plaid_mask.xpm is added to the distribution. + + BUGS CORRECTED: + - I've again improved the memory management. + - the parser is also improved. + - when writing a pixmap to a file the variable name could be + "plaid.xpm" which is not valid in C. Now the extension name is cut off + to give "plaid" as variable name. + - reading multiple words colornames such as "peach puff" where leading + to non readable Xpm files. They are now skipped to have only single + word colorname. Lionel Mallet (mallet@ipvpel.unipv.it). + - parser was triggered by the "/" character inside string. + Doyle C. Davidson (doyle@doyled.b23b.ingr.com). This is corrected. + - sxpm maps the window only if the option "-nod" is not selected. + + CHANGES TO THE DOC: + - the documentation presents the new API and features. + +3.0a (91/04/10) + + This is an alpha version because it supports the new version of XPM, + but the library interface is still the same. Indeed it will change in + future release to get rid of obsolete stuff such as the type argument + of the XWritePixmapFile function. + + ******************************* WARNING ********************************* + The format is not anymore XPM2, it is XPM version 3 which is XPM2 + limited to the C syntax with the key word "XPM" in place of "XPM2 C". + The interface library has not changed yet but the type argument of + XWritePixmapFile and the type member of XpmInfo are not used anymore. + Meanwhile the library which is now called libXpm.a is backward + compatible as XPM2 files can be read. But the XWritePixmapFile + function only writes out XPM version 3 files. + ************************************************************************* + + NEW FEATURES: + - the library doesn't use global variables anymore, thus it should be + able to share it. + - sxpm has been rewritten on top of Xt, it can be used to convert + files from XPM2 to XPM version 3. + - xpm1to2c.perl has been upgraded to the new XPM version and renamed + as xpm1to3.perl + - ppmtoxpm2.c and ppmtoxpm2.1 have been upgraded too and renamed + ppmtoxpm.c and ppmtoxpm.1. In addition the xpmtoppm.c and xpmtoppm.1 + of the pbmplus package have been upgraded too. xpmtoppm can thus + convert XPM version 1 and 3 to a portable pixmap. These files should + replace the original ones which are part of the pbmplus package. See + the ppm.README file for more details. + - the library contains RCS variables which allows you to get revision + numbers with ident (which is part of the RCS package). The Id number + is an internal rcs number for my eyes only. The official one is found + in Version. + + BUGS CORRECTED: + - the memory management has been much improved in order to avoid + memory leaks. + - the XImage building algorithm has been changed to support correctly + different visual depths. There is special code to handle depths 1, 4, + 6, 8, 24, and 32 to build the image and send it in one whack, and + other depths are supported by building the image with XPutPixel which + is slow but sure. + - similar algorithms are used to read pixmaps and write them out. + + CHANGES TO THE DOC: + - the documentation presents the new XPM format. + + +2.8 (90/12/19) + + ******************************* WARNING ********************************* + Since the last release two structures have been modified and have now + bigger sizes, so ANY CODE USING THE libXPM2 NEEDS TO BE RECOMPILED. + ************************************************************************* + + NEW FEATURES: + - the ColorSymbol struct contains the new member 'pixel' which allow + to override default colors by giving a pixel value (in such a case + symbol value must be set to NULL), + - the XpmInfo struct contains the new member 'rgb_fname' in which one + can specify an rgb text file name while writing a pixmap with the + XWritePixmapFile function (otherwise this member should be set to + NULL). This way colorname will be searched and written out if found + instead of the RGB value, + - Imakefile originally provided by stolcke@ICSI.Berkeley.EDU, + - the old Makefile is now distributed as Makefile.noXtree and presents + install targets, + - the demo application is renamed sxpm (Show XPM), creates a window of + the size of the pixmap if no geometry is specified, prints out + messages instead of status when an error occurs, handles the new + option -p for overriding colors by giving a pixel value (not really + useful but is just here to show this new feature), handles the new + option -rgb for specifying an rgb text file, and ends on + keypress as buttonpress, + - defines for SYSV have been provided by Paul Breslaw + , + - the distribution includes a new directory called converters which + contains xpm1to2 and xpm1to2c perl converters and a ppmtoxpm2 + converter provided by Paul Breslaw who upgraded the original ppmtoxpm + written by Mark W. Snitily . + + CHANGES TO THE DOC: + - this file is created and will give old users a quick reference to + changes made from one release to the next one, + - documentation is changed to present the new ColorSymbol structure + and the way to override colors by giving a pixel value, and to present + the new XpmInfo structure and how to use it, + - a man page for sxpm is added to the distrib, + - the README file talks about sxpm and no more demo, and have + reference to the different converters. + +2.7 (90/11/12) + + NEW FEATURES: + - XReadPixmapFile reads from stdin if filename is NULL, + - XWritePixmapFile writes to stdin if filename is NULL, + - the demo application handles the new option -nod for no displaying + the pixmap in a window (useful when used as converter). + + CHANGES TO THE DOC: + - documentation about the new feature. + +2.6 (90/10/29) + + NEW FEATURES: + - from nazgul@alphalpha.com (Kee Hinckley): changes to make the + library usable as C++ code, and on Apollo without any warning. + + BUGS CORRECTED: + - from nazgul@alphalpha.com (Kee Hinckley): the xpm include files was + declaring XWritePixmapFile as taking in arg a Pixmap pointer instead + of a Pixmap. + +2.5 (90/10/17) + + BUGS CORRECTED: + - XWritePixmapFile was not closing the file while ending normally. + +2.4 (90/09/06) + + NEW FEATURES: + - XReadPixmapFile reads from a piped uncompress if the given filename + ends by .Z or if filename.Z exists, + - XWritePixmapFile writes to a piped compress if the given filename + ends by .Z. + + BUGS CORRECTED: + - demo now deals with window manager. + + CHANGES TO THE DOC: + - documentation about compressed files management. + +2.3 (90/08/30) + + BUGS CORRECTED: + - handle monochrome display correctly, + - comments can be empty. + +2.2 (90/08/27) + + BUGS CORRECTED: + - when reading some invalid free was dumping core on some machine. + +2.1 (90/08/24) + + First distribution of XPM2. + diff --git a/README.AMIGA b/README.AMIGA deleted file mode 100644 index 7a40137..0000000 --- a/README.AMIGA +++ /dev/null @@ -1,10 +0,0 @@ -The XPM library for Amiga works best with AmigaOS 3.x, but will work -(with limited color support) with earlier OS versions too. It can be -compiled with both SAS/C and GCC (makefiles are included). - -All functions except the Xpm*Pixmap* functions are supported. - -I have also written some Amiga-specific utility functions (not -included). Contact me if you would like to have them too. - --Lorens Younes (d93-hyo@nada.kth.se) diff --git a/README.MSW b/README.MSW deleted file mode 100644 index f631525..0000000 --- a/README.MSW +++ /dev/null @@ -1,127 +0,0 @@ - -README.MSW hedu@cul-ipn.uni-kiel.de 5/94 - - The XPM library for MS-Windows - -Motivated by the wxWindows library, which is a (freely available) toolkit -for developing multi-platform, graphical applications from the same body -of C++ code, I wanted to have XPM pixmaps for MS-windows. Instead of rewriting -a XPM-parser I managed to port the XPM-library-code to MS-windows. -Thanks to Anaud Le Hors this became a part of the official XPM-library. - -Until now it's only used together with wxWindows. And even there it's more -a kind of beta. But it should be possible to run it as a simple libxpm.a -without wxWindows. - -The key is a transformation of some X types plus some basic X functions. -There is not yet a special MSW-API, so you should know the X types used. - -The following is done in simx.h: - -typedef HDC Display; -typedef COLORREF Pixel; - -typedef struct { - Pixel pixel; - BYTE red, green, blue; -} XColor; - -typedef struct { - HBITMAP bitmap; - unsigned int width; - unsigned int height; - unsigned int depth; -} XImage; - -With these defines and the according functions from simx.c you can call -XPM-functions the way it's done under X windows. It can look like this: - - ErrorStatus=XpmCreateImageFromData(&dc, data, - &ximage,(XImage **)NULL, &xpmAttr); - ms_bitmap = ximage->bitmap; - // releases the malloc,but do not destroy the bitmap - XImageFree(ximage); - -Supported functions are the Xpm*Image* but not the Xpm*Pixmap*. - -DRAWBACKS: -The main drawback is the missing support for Colormaps! There was nothing for -it in wxWindows, so I did not know how to deal with Colormaps. - -The size of the pixmaps is bounded by malloc() (width*height*2 < 64K). - -Close colors do not look that close. But that seems to be the window system. - -Neither a special API for MSW nor a special MSW documentation other than this. -(I can only point you to wxxpm as an example , see below.) - -INSTALLATION: -There is not yet a makefile with it. Simply take all the *.c files -into your project except the files related to Pixmap operations: *P*.c. -!!!You MUST set FOR_MSW on the preprocessor options!!! -(You might uncomment NEED_STRCASECMP in xpm.h if it's in your lib) -This should compile into libxpm.a. Good luck... - -FTP: -wxWindows is currently available from the Artificial Intelligence -Applications Institute (University of Edinburgh) by anonymous FTP. - skye.aiai.ed.ac.uk pub/wxwin/ -or read http://burray.aiai.ed.ac.uk/aiai/aiai.html - -wxxpm, XPM support for wxWindows, the latest version is available at - yoda.cul-ipn.uni-kiel.de pub/wxxpm/ - and maybe in the contrib or tools of wxWindows - -Please contact me if you have suggestions, comments or problems! - -================================================================ -Some fixes and comments by Jan Wielemaker (jan@swi.psy.uva.nl), -Oct 24, 1996: - - * Please try not to disturb me on this, XPM is not my - piece of cake. - - * Hermann Dunkel has appearently moved in virtual space. - -Changes: - - * I've used the xpm package under NT 4.0 and MSVC++ 4.2. - - * I've made a big performance improvement in - ParseAndPutPixels(), fixed creation of the mask in - SetColor() in create.c. I looked into XCreateImage() - in simx.c, but commented out my improvement for reasons - you'll find there. If you know what is going on, statement - (1) does not apply to you. - -Comments on installation: - - * Donot include the to/from pixmap files into the project. - These are the ones containing a capital P somewhere in their - name. You can also first include all, and then remove all - the files you get errors on :-) - - * The DC that is requested should be a valid memory DC, thus - CreateCompatibleDC(NULL) provides a good generic one, but - GetDC(NULL) doesn't! This costed me some time. - - * The real difficulty is using the mask, mostly due to the - bad documentation. If 95 or NT is your target, use: - - MaskBlt(context.hdc, // Destination DC - x, y, w, h, // Destination area - mhdc, // Memory DC with the image selected - sx, sy, // Source X,Y - msk, // HBITMAP of the mask - sx, sy, // Mask X,Y - MAKEROP4(SRCPAINT, SRCCOPY)); // The magic op code. -================================================================ - - --- - ////|\\\\ \\\\\\ Hermann Dunkel - O O ////// IPN Uni Kiel, Germany - | \\\\\\ Tel: +49 431 / 880 3144 - \___/ ////// E-mail: hedu@cul-ipn.uni-kiel.de - \_/ \\\\\\ X.400 : c=de;a=d400;p=uni-kiel;ou=nw-didaktik;s=dunkel - diff --git a/README.html b/README.html deleted file mode 100644 index 6711f23..0000000 --- a/README.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - -XPM README - - - -

XPM README

- -

Contents

- -
    -
  1. What Is XPM? -
  2. Where to get XPM? -
  3. Documentation -
  4. Installation -
      -
    1. With imake -
    2. Without imake -
    -
  5. SXPM -
  6. CXPM -
  7. Other Tools -
  8. Discussion -
  9. Copyright -
- - -

1. What Is XPM?

-

-XPM (X PixMap) is a format for storing/retrieving X pixmaps to/from files. -

-Here is provided a library containing a set of four functions, similar to the -X bitmap functions as defined in the Xlib: XpmCreatePixmapFromData, -XpmCreateDataFromPixmap, XpmReadFileToPixmap and XpmWriteFileFromPixmap for -respectively including, storing, reading and writing this format, plus four -other: XpmCreateImageFromData, XpmCreateDataFromImage, XpmReadFileToImage and -XpmWriteFileFromImage for working with images instead of pixmaps. -

-This new version provides a C includable format, defaults for different types -of display: monochrome/color/grayscale, hotspot coordinates and symbol names -for colors for overriding default colors when creating the pixmap. It provides -a mechanism for storing information while reading a file which is re-used -while writing. This way comments, default colors and symbol names aren't lost. -It also handles "transparent pixels" by returning a shape mask in addition to -the created pixmap. -

-See the XPM Manual for details. - - -

2. Where to get XPM?

-

-New XPM updates are announced on the comp.windows.x newsgroup, and on the -"xpm-talk" list and you can always consult the XPM Home page at http://www.inria.fr/koala/lehors/xpm.html -

The latest "official" XPM release can always be found at: -
Boston, USA: ftp://ftp.x.org/contrib -
Sophia Antipolis, France: ftp://koala.inria.fr/pub/xpm - - -

3. Documentation

-

-Old users might read the CHANGES file for a history -of changes interesting the user. -

-Read the doc. The documentation is in PostScript format (doc/xpm.PS) and has been produced with -FrameMaker. The source files are available on request. -

-A FAQ (Frequently Asked Questions) is also provided, -so if you experience any problem you should have a look at this file. - - -

4. Installation

-

-To obtain the XPM library, first uncompress and untar the compressed tar file -in an appropriate directory. -

-Then you can either compile XPM via "imake" or in a stand-alone way. - -

4.1. With imake

-

- Imakefiles are provided to build both shared and unshared libraries. - However, building a shared lib is very OS dependent and often requires - specific files which are not available. Also config files are often not - set correctly for this task. So if it fails you can avoid trying to - build one and simply build the static library instead. In order to do - so you should edit the top Imakefile to add -DSharedLibXpm=NO to the - definition of IMAKE_DEFINES as described. -

- The compilation and installation of the library and the sxpm program - should only require you to edit the top Imakefile. But you should do so - in order to specify the locations where the various files should be - installed and to set the DEFINES variable accordingly to your system. -

- On Solaris 2.* the compilation works only in the native svr4 - environment, avoid the bsd one or it won't compile. Especially you - should be using /opt/SUNWspro/bin/cc and not /usr/ucb/cc. - Also since the compiler is no longer part of the OS distribution a lot - of people use gcc instead. This is fine, but be aware that the imake - tool you get as part of the X Window System on a solaris box is - configured for cc. Therefore the compilation using the generated - Makefiles will not succeed unless you have changed the default - configuration. An easy work around is to directly edit the generated - lib/Makefile to change '-K pic' to '-fpic'. Fixing your imake - configuration would be better though. -

- On Linux, if you do not use ELF yet you'd better get the binary - distribution available from sunsite. Because it's really a pain to - build a shared lib and the current XPM distribution doesn't contain - the jump files you would need to do so. On the other hand people have - had no problems building it using ELF. -

- Then execute the following command: -

-		xmkmf -a
-
-

- or if this option is not supported by your version of xmkmf: -

-		xmkmf
-		make Makefiles
-		make includes
-		make depend		(optional)
-
-

- Then simply execute: -

-		make
-
-

- which will build the XPM library and the sxpm application. - Then do: -

-	     	make install
-		make install.man
-
-

- which will install the library and the sxpm program and man page. -

- If it fails, be sure you have set the DEFINES correctly in the top - Imakefile to suit your machine. - -

NOTE ON USING IMAKE:

-

- Building the XPM distribution with imake requires to have imake - correctly installed and configured on your - system. I do my best at tweaking the Imakefiles so they work with - as many imake flavors people might have as possible but there is - nothing I can do against wrong imake configurations. So if your - build fails using imake, don't send me email for advice. Get your - imake configuration fixed or forget about it! - - -

4.2. Without imake

-

- A set of makefiles is provided for those who do not have imake - available on their system. However, this is only provided as a - convenience and you should be considered as a starting point and not as - something ready to use. These makefiles, called Makefile.noX, will most - likely require some editing in order be set accordingly to your system. -

- Once this setting is done, you should be able to compile XPM, by - executing the following command: -

-	        make -f Makefile.noX
-
-

- Then to install it, do: -

-		make -f Makefile.noX install
-
- - -

5. SXPM

-

-In addition to the library the sxpm tool is provided to show XPM file and -convert them from XPM1 or XPM2 to XPM version 3. If you have previously done -'make' or 'make all' you should already have it, otherwise just do: -

-		      cd sxpm; make
-
-

-This application shows you most of the features of XPM and its source can be -used to quickly see how to use the provided functions. -

-By executing 'sxpm -help' you will get the usage. -

-Executing 'sxpm -plaid' will show a demo of the XpmCreatePixmapFromData -function. The pixmap is created from the static variable plaid defined in the -sxpm.c file. sxpm will end when you press the key 'q' in the created window. -

-Executing 'sxpm -plaid -sc lines_in_mix blue' will show the feature of -overriding color symbols giving a colorname, executing 'sxpm -plaid -sp -lines_in_mix 1' will show overriding giving a pixel value, and executing 'sxpm --plaid -cp red 0' will show overriding giving a color value. -

-Then you should try 'sxpm -plaid -o output' to get an output file using the -XpmWriteFileFromPixmap function. -

-You can now try 'sxpm -plaid -o - -nod -rgb /usr/lib/X11/rgb.txt' to directly -get the pixmap printed out on the standard output with colornames instead of -rgb values. -

-Then you should try 'sxpm plaid.xpm' to use the XpmReadFileToPixmap function, -and 'cat plaid_mask.xpm|sxpm' to see how "transparent pixels" are handled. -

-The XpmCreatePixmapFromData function is on purpose called without any XpmInfos -flag to show the utility of this one. Indeed, compare the color section of the -two files foo and bar obtained from 'sxpm -nod -plaid -o foo' and 'sxpm -nod -plaid.xpm -o bar'. All the default colors and also the comments have been -restored. -

-To end look at plaid_ext.xpm and try "sxpm -nod plaid_ext.xpm -v" to see how -extensions are handled. -

-Of course, other combinations are allowed and should be tried. Thus, 'sxpm -plaid.xpm -o output -nod' will show you how to convert a file from XPM1 or XPM2 -to a XPM version 3 using sxpm. -

-See the manual page for more detail. - - -

6. CXPM

-

-The cxpm tool is provided to help you figure out whether an XPM file is correct -or not with regard to its format. If you have previously done 'make' or -'make all' you should already have it, otherwise just do: -

-		      cd cxpm; make
-
-

-The related man page will tell you everything about it but here is a simple -example of what it does: -

-$ ./cxpm bogus_pixmap
-Xpm Error: Invalid XPM file.
-Error found line 3 near character 5
-
-

-It is pretty limited but at least, unlike sxpm, it gives you some hint on where -the error occured within the file. - - -

7. Other Tools

-

-Several converters dealing with XPM and a pixmap editor can be found in the -xpm-contrib distribution. Also I recommend the use of netpbm to do any kind of -general image operations such as scaling, resizing, dithering, and to convert -from and to any other image format. - -

8. Discussion

-

-There is a mailing list to discuss about XPM which is xpm-talk@sophia.inria.fr. -Any request to subscribe should be sent to xpm-talk-request@sophia.inria.fr. -The archive of the xpm-talk list is available through the web at -http://zenon.inria.fr/koala/xpm-talk-hypermail -and through ftp at ftp://koala.inria.fr/pub/xpm/xpm-talk-archive -

-Please mail any bug reports or modifications done, comments, suggestions, -requests for updates or patches to port on another machine to: - -

Email: lehors@sophia.inria.fr -
Phone: +33 (0)4 93 65 78 89 -
Surface Mail:
-Arnaud Le Hors
-Inria BP.93
-2004, Route des lucioles
-06902 Sophia Antipolis Cedex
-FRANCE - - -


-

Copyright (C) 1989-95 GROUPE BULL

-

-Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -

-The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -

-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -

-Except as contained in this notice, the name of GROUPE BULL shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from GROUPE BULL. - diff --git a/configure.ac b/configure.ac index 166957e..8fc2caa 100644 --- a/configure.ac +++ b/configure.ac @@ -60,6 +60,7 @@ if test x$STAT_ZFILE = xyes ; then fi AC_CONFIG_FILES([Makefile + doc/Makefile include/Makefile src/Makefile sxpm/Makefile diff --git a/doc/FAQ.html b/doc/FAQ.html new file mode 100644 index 0000000..18d4ee6 --- /dev/null +++ b/doc/FAQ.html @@ -0,0 +1,344 @@ + + + + +FAQ XPM + + + +

The XPM
+Frequently Asked Questions

+

+This article contains the answers to some Frequently Asked Questions about the +XPM format and/or library. If you don't find the answer to your problem here, +then you can mail either to lehors@sophia.inria.fr or to the mailing list +xpm-talk@sophia.inria.fr. + + +

Contents

+ +
    +
  1. How do I convert my images to or from XPM ? +
  2. Why are my XPM files said to be invalid ? +
  3. Why does my program core dumps using XPM ? +
  4. Why does my program core dumps using XPM with a widget ? +
  5. How can I get a non rectangular icon using XPM ? +
  6. What exactly triggers the creation of a mask when using XPM ? +
  7. How should I use the mask ? +
  8. Is there a string to pixmap converter somewhere ? +
  9. How can I edit XPM icons ? +
  10. Is there a collection of icons somewhere ? +
  11. The documentation fails to print out. Why ? +
  12. Copyright +
+ + +

1. How do I convert my images to or from XPM ?

+

+ Netpbm is surely the best image conversion package that I know of. It defines + formats for color, gray and monochrome images and provides a set of filters. + Thus a GIF image can be converted to XPM with something like: +

+ $ giftoppm youricon.gif | ppmtoxpm > youricon.xpm +

+ The latest release can be found at least from wuarchive.wustl.edu + (128.252.135.4), directory /graphics/graphics/packages/NetPBM + + +

2. Why are my XPM files said to be invalid ?

+

+ There are three official versions of the XPM format. The XPM library since + version 3.3 can read all them but writes out only XPM 3. Also the small + program called sxpm which is part of the XPM library package can be used to + automatically translate XPM 1 and 2 files to XPM 3 with a command such as: +

+ $ sxpm -nod yourxpm1or2file -o yourxpm3file +

+ Also, the XPM format defines "None" to be the color name meaning + "transparent", but IXI used to hack the XPM library in its early days to + handle transparency as "#Transparent". This makes IXI format not compatible + with the official XPM format, and so not readable neither by the official XPM + library nor any of the programs built on top of it. +

+ The only solutions are either to stick on IXI programs which can deal with + their format or convert your files to the standard XPM format. This can be + done simply by changing "#Transparent" to "None". + + +

3. Why does my program core dumps using XPM ?

+

+ Be sure the XpmAttributes structure you pass by reference has a valid + valuemask. You can give NULL instead if you don't want to use an + XpmAttributes but if you do, you MUST initialize its valuemask component to + some valid value, at least 0, otherwise unpredictable errors can occur. +

+ So instead of doing something like: +

+      XpmAttributes attrib;
+
+      XpmReadFileToPixmap(dpy, d, filename, &pixmap, &mask, &attrib);
+
+

+ you should do: +

+      XpmAttributes attrib;
+
+      attrib.valuemask = 0;
+      XpmReadFileToPixmap(dpy, d, filename, &pixmap, &mask, &attrib);
+
+ + +

4. Why does my program core dumps using XPM with a widget ?

+
    +
  • First the XPM library is Xlib level, so don't pass your widget as a + Drawable parameter. A Drawable is either a Window or a Pixmap. The widget's + window can do the job but: + +
  • Then a widget only gets a Window when realized, so passing XtWindow(widget) + with a not yet realized widget is wrong. Either realize you widget first or + use another window. Since the Drawable parameter is only used to specify + the screen to which the pixmap must be created on, most of the time the + default root window is just fine. +
+ + +

5. How can I get a non rectangular icon using XPM ?

+

+ The X Window System does not support transparent color. However there are + several ways you can use to get the same visual effect using XPM: +

    +
  • First you can use the None color to get a shape mask and use it as + explained below (question 7). + +
  • Second you can define a symbolic color name such as "mask" in the XPM + format file, then use the color overriding mechanism to set this symbolic + color to the color of the underlying object. Note that in this case the XPM + library won't create a shape mask, and that if the color of the underlying + object is changed then you'll have to create a new pixmap. +
+ + +

6. What exactly triggers the creation of a mask when using XPM ?

+

+ Basically a mask is created if "None" is used as one of the color of the + pixmap. Be aware that this is not only true if it is used in the XPM of the + pixmap since the colors can be overridden at load time. So a mask is created + if the "None" color is used at load time, coming either from the XPM + definition or the color overriding. + + +

7. How should I use the mask ?

+

+ There are basically two ways of using the mask: +

    +
  • Use the mask as a shapemask with the X11 Nonrectangular Saphe Window + Extension. Typically this is what should be done when the icon is used in a + desktop. + +
  • Use the mask as a clipmask in the GC you pass to XCopyArea when drawing the + pixmap. So the "transparent" pixels being not actually drawn will get the + underlying pixels colors. +
+ + +

8. Is there a string to pixmap converter for Motif ?

+

+ Yes, Motif 2.0 or later does support XPM pixmaps as well as XBM bitmaps. + + +

9. How can I edit XPM icons ?

+

+ As listed below several editors either commercial or not are supporting the + XPM format. However, pixmap is the one I would recommend since it is freely + available and, being fully dedicated to XPM, it allows to edit all the + special things, such as the symbolic color names, which makes XPM different + from all the other image formats. Pixmap can always be found by ftp from + ftp.x.org (contrib) and avahi.inria.fr (pub/pixmap). +

+Last Update: 3 August 1994 + + +
XPM Icon Editors
ProgramInfosSource/AuthorPlatformsSAXPMcost +
pixmap +Lionel Malletsourceyes3NC + +
pixt +J. Michael Flanerysourceyes1NC + +
pixed
    +
  • part of X.desktop +
  • current version doesn't work on 24-plane displays +
+
IXIMany UNIXno3N/A + +
olpixmap
    +
  • packaged with the OLIT (OpenLook) toolkit +
+
USLSun, SVR4.2, UnixWareno1N/A + +
xfedor
    +
  • only uses XLIB +
  • doesn't work on 24-plane displays +
+
Daniel Dardaillersourceyes3NC + +
SCOpaint
    +
  • included with the ODT package +
+
SCO/Wing EngODTyes2.8N/A + +
pme.icn
    +
  • written in the Icon language +
+
Icon Projectsourceyes3NC + +
PixEditT
    +
  • there is currently no support for editing the colormap +
+
Free Widget Foundationsourceyes3NC + +
xscribble +Robert Forsmansourceyes?NC + +
vueicon
    +
  • included with Vue3.0 +
+
Hewlett-PackardHPyes3N/A + +
iconedit V3 SunSoftSparc/Sun3yes2N/A + +
Pixmap Editor
    +
  • this is a Widget, not a complete program +
+
ICS?yes?? + +
ezX Sunrise Softwarey???N/A + +
XPaint
    +
  • full featured, works on all displays +
  • current release is 2.1.1 (last update January 1994) +
+
David Koblassourceyes3NC + +
Phoenix +ohtcolor@niksula.hut.fisourceyes3NC + +
pixed
    +
  • pixed is part of the TeleUSE UIMS +
  • More info is available from service@ignite.alsys.com +
+
AlsysMany UNIXyes3N/A + +
display +John Cristysourceyes3NC +
+ +

+SA - Stand Alone program
+NC - No Charge (i.e. free); most programs are copyrighted.
+XPM - XPM format supported
+source - built from source code; likely works on all standard X platforms
+N/A - icon editor is normally distributed with other software + +

+Send updates, additions, corrections, etc. to dan@bristol.com + + +

10. Is there a collection of icons somewhere ?

+

+ At least there is one freely available: Anthony's X Icon Library. You can + found it on several ftp servers, such as server.berkeley.edu/pub/AIcons. It + contains only small icons (less than about 100x100 pixels in size) which are + stored in groups in a logical way. Color icons are stored in XPM format and + Black & White icons in XBM. + + +

11. The documentation fails to print out. Why ?

+

+ The PostScript documentation file is formatted for US letter paper. Frame + Maker tries very hard to ensure that you have the right paper and punts if + you don't. However, you can easily work around this problem by applying the + following patch. If for some reason applying the patch fails, you can still + do it by hand. Just locate the corresponding block in the PS file and remove + the lines with a leading '-' character. + By the way, this applies to any doc generated by Frame Maker. The + corresponding block might be slightly different depending on which version of + Frame Maker was used, but it is still easy to locate. + +

+*** xpm.PS      Wed Sep 11 15:47:43 1996
+--- xpm-A4.PS   Thu Nov 21 09:27:28 1996
+***************
+*** 647,668 ****
+        0 ne /edown exch def 
+        /yscale exch def
+        /xscale exch def
+-       FMLevel1 {
+-               manualfeed {setmanualfeed} if
+-               /FMdicttop countdictstack 1 add def 
+-               /FMoptop count def 
+-               setpapername 
+-               manualfeed {true} {papersize} ifelse 
+-               {manualpapersize} {false} ifelse 
+-               {desperatepapersize} {false} ifelse 
+-               { (Can't select requested paper size for Frame print job!) FMFAILURE } if
+-               count -1 FMoptop {pop pop} for
+-               countdictstack -1 FMdicttop {pop end} for 
+-               }
+-               {{1 dict dup /PageSize [paperwidth paperheight]put setpagedevice}stopped
+-               { (Can't select requested paper size for Frame print job!) FMFAILURE } if
+-                {1 dict dup /ManualFeed manualfeed put setpagedevice } stopped pop }
+-       ifelse 
+        
+        FMPColor {
+                currentcolorscreen
+--- 647,652 ----
+
+ + +
+

Copyright (C) 1989-95 GROUPE BULL

+

+Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +

+The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +

+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +

+Except as contained in this notice, the name of GROUPE BULL shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from GROUPE BULL. + + diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..5119700 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,6 @@ +EXTRA_DIST = \ + xpm.PS.gz \ + FAQ.html \ + README.AMIGA \ + README.html \ + README.MSW diff --git a/doc/README.AMIGA b/doc/README.AMIGA new file mode 100644 index 0000000..7a40137 --- /dev/null +++ b/doc/README.AMIGA @@ -0,0 +1,10 @@ +The XPM library for Amiga works best with AmigaOS 3.x, but will work +(with limited color support) with earlier OS versions too. It can be +compiled with both SAS/C and GCC (makefiles are included). + +All functions except the Xpm*Pixmap* functions are supported. + +I have also written some Amiga-specific utility functions (not +included). Contact me if you would like to have them too. + +-Lorens Younes (d93-hyo@nada.kth.se) diff --git a/doc/README.MSW b/doc/README.MSW new file mode 100644 index 0000000..f631525 --- /dev/null +++ b/doc/README.MSW @@ -0,0 +1,127 @@ + +README.MSW hedu@cul-ipn.uni-kiel.de 5/94 + + The XPM library for MS-Windows + +Motivated by the wxWindows library, which is a (freely available) toolkit +for developing multi-platform, graphical applications from the same body +of C++ code, I wanted to have XPM pixmaps for MS-windows. Instead of rewriting +a XPM-parser I managed to port the XPM-library-code to MS-windows. +Thanks to Anaud Le Hors this became a part of the official XPM-library. + +Until now it's only used together with wxWindows. And even there it's more +a kind of beta. But it should be possible to run it as a simple libxpm.a +without wxWindows. + +The key is a transformation of some X types plus some basic X functions. +There is not yet a special MSW-API, so you should know the X types used. + +The following is done in simx.h: + +typedef HDC Display; +typedef COLORREF Pixel; + +typedef struct { + Pixel pixel; + BYTE red, green, blue; +} XColor; + +typedef struct { + HBITMAP bitmap; + unsigned int width; + unsigned int height; + unsigned int depth; +} XImage; + +With these defines and the according functions from simx.c you can call +XPM-functions the way it's done under X windows. It can look like this: + + ErrorStatus=XpmCreateImageFromData(&dc, data, + &ximage,(XImage **)NULL, &xpmAttr); + ms_bitmap = ximage->bitmap; + // releases the malloc,but do not destroy the bitmap + XImageFree(ximage); + +Supported functions are the Xpm*Image* but not the Xpm*Pixmap*. + +DRAWBACKS: +The main drawback is the missing support for Colormaps! There was nothing for +it in wxWindows, so I did not know how to deal with Colormaps. + +The size of the pixmaps is bounded by malloc() (width*height*2 < 64K). + +Close colors do not look that close. But that seems to be the window system. + +Neither a special API for MSW nor a special MSW documentation other than this. +(I can only point you to wxxpm as an example , see below.) + +INSTALLATION: +There is not yet a makefile with it. Simply take all the *.c files +into your project except the files related to Pixmap operations: *P*.c. +!!!You MUST set FOR_MSW on the preprocessor options!!! +(You might uncomment NEED_STRCASECMP in xpm.h if it's in your lib) +This should compile into libxpm.a. Good luck... + +FTP: +wxWindows is currently available from the Artificial Intelligence +Applications Institute (University of Edinburgh) by anonymous FTP. + skye.aiai.ed.ac.uk pub/wxwin/ +or read http://burray.aiai.ed.ac.uk/aiai/aiai.html + +wxxpm, XPM support for wxWindows, the latest version is available at + yoda.cul-ipn.uni-kiel.de pub/wxxpm/ + and maybe in the contrib or tools of wxWindows + +Please contact me if you have suggestions, comments or problems! + +================================================================ +Some fixes and comments by Jan Wielemaker (jan@swi.psy.uva.nl), +Oct 24, 1996: + + * Please try not to disturb me on this, XPM is not my + piece of cake. + + * Hermann Dunkel has appearently moved in virtual space. + +Changes: + + * I've used the xpm package under NT 4.0 and MSVC++ 4.2. + + * I've made a big performance improvement in + ParseAndPutPixels(), fixed creation of the mask in + SetColor() in create.c. I looked into XCreateImage() + in simx.c, but commented out my improvement for reasons + you'll find there. If you know what is going on, statement + (1) does not apply to you. + +Comments on installation: + + * Donot include the to/from pixmap files into the project. + These are the ones containing a capital P somewhere in their + name. You can also first include all, and then remove all + the files you get errors on :-) + + * The DC that is requested should be a valid memory DC, thus + CreateCompatibleDC(NULL) provides a good generic one, but + GetDC(NULL) doesn't! This costed me some time. + + * The real difficulty is using the mask, mostly due to the + bad documentation. If 95 or NT is your target, use: + + MaskBlt(context.hdc, // Destination DC + x, y, w, h, // Destination area + mhdc, // Memory DC with the image selected + sx, sy, // Source X,Y + msk, // HBITMAP of the mask + sx, sy, // Mask X,Y + MAKEROP4(SRCPAINT, SRCCOPY)); // The magic op code. +================================================================ + + +-- + ////|\\\\ \\\\\\ Hermann Dunkel + O O ////// IPN Uni Kiel, Germany + | \\\\\\ Tel: +49 431 / 880 3144 + \___/ ////// E-mail: hedu@cul-ipn.uni-kiel.de + \_/ \\\\\\ X.400 : c=de;a=d400;p=uni-kiel;ou=nw-didaktik;s=dunkel + diff --git a/doc/README.html b/doc/README.html new file mode 100644 index 0000000..6711f23 --- /dev/null +++ b/doc/README.html @@ -0,0 +1,303 @@ + + + + +XPM README + + + +

XPM README

+ +

Contents

+ +
    +
  1. What Is XPM? +
  2. Where to get XPM? +
  3. Documentation +
  4. Installation +
      +
    1. With imake +
    2. Without imake +
    +
  5. SXPM +
  6. CXPM +
  7. Other Tools +
  8. Discussion +
  9. Copyright +
+ + +

1. What Is XPM?

+

+XPM (X PixMap) is a format for storing/retrieving X pixmaps to/from files. +

+Here is provided a library containing a set of four functions, similar to the +X bitmap functions as defined in the Xlib: XpmCreatePixmapFromData, +XpmCreateDataFromPixmap, XpmReadFileToPixmap and XpmWriteFileFromPixmap for +respectively including, storing, reading and writing this format, plus four +other: XpmCreateImageFromData, XpmCreateDataFromImage, XpmReadFileToImage and +XpmWriteFileFromImage for working with images instead of pixmaps. +

+This new version provides a C includable format, defaults for different types +of display: monochrome/color/grayscale, hotspot coordinates and symbol names +for colors for overriding default colors when creating the pixmap. It provides +a mechanism for storing information while reading a file which is re-used +while writing. This way comments, default colors and symbol names aren't lost. +It also handles "transparent pixels" by returning a shape mask in addition to +the created pixmap. +

+See the XPM Manual for details. + + +

2. Where to get XPM?

+

+New XPM updates are announced on the comp.windows.x newsgroup, and on the +"xpm-talk" list and you can always consult the XPM Home page at http://www.inria.fr/koala/lehors/xpm.html +

The latest "official" XPM release can always be found at: +
Boston, USA: ftp://ftp.x.org/contrib +
Sophia Antipolis, France: ftp://koala.inria.fr/pub/xpm + + +

3. Documentation

+

+Old users might read the CHANGES file for a history +of changes interesting the user. +

+Read the doc. The documentation is in PostScript format (doc/xpm.PS) and has been produced with +FrameMaker. The source files are available on request. +

+A FAQ (Frequently Asked Questions) is also provided, +so if you experience any problem you should have a look at this file. + + +

4. Installation

+

+To obtain the XPM library, first uncompress and untar the compressed tar file +in an appropriate directory. +

+Then you can either compile XPM via "imake" or in a stand-alone way. + +

4.1. With imake

+

+ Imakefiles are provided to build both shared and unshared libraries. + However, building a shared lib is very OS dependent and often requires + specific files which are not available. Also config files are often not + set correctly for this task. So if it fails you can avoid trying to + build one and simply build the static library instead. In order to do + so you should edit the top Imakefile to add -DSharedLibXpm=NO to the + definition of IMAKE_DEFINES as described. +

+ The compilation and installation of the library and the sxpm program + should only require you to edit the top Imakefile. But you should do so + in order to specify the locations where the various files should be + installed and to set the DEFINES variable accordingly to your system. +

+ On Solaris 2.* the compilation works only in the native svr4 + environment, avoid the bsd one or it won't compile. Especially you + should be using /opt/SUNWspro/bin/cc and not /usr/ucb/cc. + Also since the compiler is no longer part of the OS distribution a lot + of people use gcc instead. This is fine, but be aware that the imake + tool you get as part of the X Window System on a solaris box is + configured for cc. Therefore the compilation using the generated + Makefiles will not succeed unless you have changed the default + configuration. An easy work around is to directly edit the generated + lib/Makefile to change '-K pic' to '-fpic'. Fixing your imake + configuration would be better though. +

+ On Linux, if you do not use ELF yet you'd better get the binary + distribution available from sunsite. Because it's really a pain to + build a shared lib and the current XPM distribution doesn't contain + the jump files you would need to do so. On the other hand people have + had no problems building it using ELF. +

+ Then execute the following command: +

+		xmkmf -a
+
+

+ or if this option is not supported by your version of xmkmf: +

+		xmkmf
+		make Makefiles
+		make includes
+		make depend		(optional)
+
+

+ Then simply execute: +

+		make
+
+

+ which will build the XPM library and the sxpm application. + Then do: +

+	     	make install
+		make install.man
+
+

+ which will install the library and the sxpm program and man page. +

+ If it fails, be sure you have set the DEFINES correctly in the top + Imakefile to suit your machine. + +

NOTE ON USING IMAKE:

+

+ Building the XPM distribution with imake requires to have imake + correctly installed and configured on your + system. I do my best at tweaking the Imakefiles so they work with + as many imake flavors people might have as possible but there is + nothing I can do against wrong imake configurations. So if your + build fails using imake, don't send me email for advice. Get your + imake configuration fixed or forget about it! + + +

4.2. Without imake

+

+ A set of makefiles is provided for those who do not have imake + available on their system. However, this is only provided as a + convenience and you should be considered as a starting point and not as + something ready to use. These makefiles, called Makefile.noX, will most + likely require some editing in order be set accordingly to your system. +

+ Once this setting is done, you should be able to compile XPM, by + executing the following command: +

+	        make -f Makefile.noX
+
+

+ Then to install it, do: +

+		make -f Makefile.noX install
+
+ + +

5. SXPM

+

+In addition to the library the sxpm tool is provided to show XPM file and +convert them from XPM1 or XPM2 to XPM version 3. If you have previously done +'make' or 'make all' you should already have it, otherwise just do: +

+		      cd sxpm; make
+
+

+This application shows you most of the features of XPM and its source can be +used to quickly see how to use the provided functions. +

+By executing 'sxpm -help' you will get the usage. +

+Executing 'sxpm -plaid' will show a demo of the XpmCreatePixmapFromData +function. The pixmap is created from the static variable plaid defined in the +sxpm.c file. sxpm will end when you press the key 'q' in the created window. +

+Executing 'sxpm -plaid -sc lines_in_mix blue' will show the feature of +overriding color symbols giving a colorname, executing 'sxpm -plaid -sp +lines_in_mix 1' will show overriding giving a pixel value, and executing 'sxpm +-plaid -cp red 0' will show overriding giving a color value. +

+Then you should try 'sxpm -plaid -o output' to get an output file using the +XpmWriteFileFromPixmap function. +

+You can now try 'sxpm -plaid -o - -nod -rgb /usr/lib/X11/rgb.txt' to directly +get the pixmap printed out on the standard output with colornames instead of +rgb values. +

+Then you should try 'sxpm plaid.xpm' to use the XpmReadFileToPixmap function, +and 'cat plaid_mask.xpm|sxpm' to see how "transparent pixels" are handled. +

+The XpmCreatePixmapFromData function is on purpose called without any XpmInfos +flag to show the utility of this one. Indeed, compare the color section of the +two files foo and bar obtained from 'sxpm -nod -plaid -o foo' and 'sxpm -nod +plaid.xpm -o bar'. All the default colors and also the comments have been +restored. +

+To end look at plaid_ext.xpm and try "sxpm -nod plaid_ext.xpm -v" to see how +extensions are handled. +

+Of course, other combinations are allowed and should be tried. Thus, 'sxpm +plaid.xpm -o output -nod' will show you how to convert a file from XPM1 or XPM2 +to a XPM version 3 using sxpm. +

+See the manual page for more detail. + + +

6. CXPM

+

+The cxpm tool is provided to help you figure out whether an XPM file is correct +or not with regard to its format. If you have previously done 'make' or +'make all' you should already have it, otherwise just do: +

+		      cd cxpm; make
+
+

+The related man page will tell you everything about it but here is a simple +example of what it does: +

+$ ./cxpm bogus_pixmap
+Xpm Error: Invalid XPM file.
+Error found line 3 near character 5
+
+

+It is pretty limited but at least, unlike sxpm, it gives you some hint on where +the error occured within the file. + + +

7. Other Tools

+

+Several converters dealing with XPM and a pixmap editor can be found in the +xpm-contrib distribution. Also I recommend the use of netpbm to do any kind of +general image operations such as scaling, resizing, dithering, and to convert +from and to any other image format. + +

8. Discussion

+

+There is a mailing list to discuss about XPM which is xpm-talk@sophia.inria.fr. +Any request to subscribe should be sent to xpm-talk-request@sophia.inria.fr. +The archive of the xpm-talk list is available through the web at +http://zenon.inria.fr/koala/xpm-talk-hypermail +and through ftp at ftp://koala.inria.fr/pub/xpm/xpm-talk-archive +

+Please mail any bug reports or modifications done, comments, suggestions, +requests for updates or patches to port on another machine to: + +

Email: lehors@sophia.inria.fr +
Phone: +33 (0)4 93 65 78 89 +
Surface Mail:
+Arnaud Le Hors
+Inria BP.93
+2004, Route des lucioles
+06902 Sophia Antipolis Cedex
+FRANCE + + +


+

Copyright (C) 1989-95 GROUPE BULL

+

+Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +

+The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +

+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +

+Except as contained in this notice, the name of GROUPE BULL shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from GROUPE BULL. + diff --git a/doc/xpm.PS.gz b/doc/xpm.PS.gz new file mode 100644 index 0000000..40e25de Binary files /dev/null and b/doc/xpm.PS.gz differ diff --git a/xpm.PS.gz b/xpm.PS.gz deleted file mode 100644 index 40e25de..0000000 Binary files a/xpm.PS.gz and /dev/null differ -- cgit v1.2.1