]> git.saurik.com Git - wxWidgets.git/commitdiff
removed libxpm
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 23 Feb 2002 13:21:47 +0000 (13:21 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 23 Feb 2002 13:21:47 +0000 (13:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

35 files changed:
src/xpm/Attrib.c [deleted file]
src/xpm/CrBufFrI.c [deleted file]
src/xpm/CrDatFrI.c [deleted file]
src/xpm/CrIFrBuf.c [deleted file]
src/xpm/CrIFrDat.c [deleted file]
src/xpm/Image.c [deleted file]
src/xpm/Info.c [deleted file]
src/xpm/MAKEFILE.VA [deleted file]
src/xpm/RdFToDat.c [deleted file]
src/xpm/RdFToI.c [deleted file]
src/xpm/WrFFrDat.c [deleted file]
src/xpm/WrFFrI.c [deleted file]
src/xpm/XpmI.h [deleted file]
src/xpm/changes [deleted file]
src/xpm/copyrigh.t [deleted file]
src/xpm/create.c [deleted file]
src/xpm/data.c [deleted file]
src/xpm/dataxpm.c [deleted file]
src/xpm/files [deleted file]
src/xpm/hashtab.c [deleted file]
src/xpm/imagexpm.c [deleted file]
src/xpm/makefile.b32 [deleted file]
src/xpm/makefile.bcc [deleted file]
src/xpm/makefile.dos [deleted file]
src/xpm/makefile.wat [deleted file]
src/xpm/misc.c [deleted file]
src/xpm/parse.c [deleted file]
src/xpm/readme.htm [deleted file]
src/xpm/readme.msw [deleted file]
src/xpm/rgb.c [deleted file]
src/xpm/rgbtab.h [deleted file]
src/xpm/scan.c [deleted file]
src/xpm/simx.c [deleted file]
src/xpm/simx.h [deleted file]
src/xpm/xpm.h [deleted file]

diff --git a/src/xpm/Attrib.c b/src/xpm/Attrib.c
deleted file mode 100644 (file)
index dafaec2..0000000
+++ /dev/null
@@ -1,339 +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.
- */
-
-/*****************************************************************************\
-* Attrib.c:                                                                   *
-*                                                                             *
-*  XPM library                                                                *
-*  Functions related to the XpmAttributes structure                           *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-/* 3.2 backward compatibility code */
-LFUNC(CreateOldColorTable, int, (XpmColor *ct, int ncolors,
-                                XpmColor ***oldct));
-
-LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors));
-
-/*
- * Create a colortable compatible with the old style colortable
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-CreateOldColorTable(XpmColor* ct, int ncolors, XpmColor*** oldct)
-#else
-static int
-CreateOldColorTable(ct, ncolors, oldct)
-    XpmColor *ct;
-    int ncolors;
-    XpmColor ***oldct;
-#endif
-{
-    XpmColor **colorTable, **color;
-    int a;
-
-    colorTable = (XpmColor **) XpmMalloc(ncolors * sizeof(XpmColor *));
-    if (!colorTable) {
-       *oldct = NULL;
-       return (XpmNoMemory);
-    }
-    for (a = 0, color = colorTable; a < ncolors; a++, color++, ct++)
-       *color = ct;
-    *oldct = colorTable;
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void FreeOldColorTable(XpmColor** colorTable, int ncolors)
-#else
-static void
-FreeOldColorTable(colorTable, ncolors)
-    XpmColor **colorTable;
-    int ncolors;
-#endif
-{
-    int a, b;
-    XpmColor **color;
-    char **sptr;
-
-    if (colorTable) {
-       for (a = 0, color = colorTable; a < ncolors; a++, color++) {
-           for (b = 0, sptr = (char **) *color; b <= NKEYS; b++, sptr++)
-               if (*sptr)
-                   XpmFree(*sptr);
-       }
-       XpmFree(*colorTable);
-       XpmFree(colorTable);
-    }
-}
-
-/* end 3.2 bc */
-
-/*
- * Free the computed color table
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void xpmFreeColorTable(XpmColor* colorTable, int ncolors)
-#else
-void
-xpmFreeColorTable(colorTable, ncolors)
-    XpmColor *colorTable;
-    int ncolors;
-#endif
-{
-    int a, b;
-    XpmColor *color;
-    char **sptr;
-
-    if (colorTable) {
-       for (a = 0, color = colorTable; a < ncolors; a++, color++) {
-           for (b = 0, sptr = (char **) color; b <= NKEYS; b++, sptr++)
-               if (*sptr)
-                   XpmFree(*sptr);
-       }
-       XpmFree(colorTable);
-    }
-}
-
-/*
- * Free array of extensions
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void XpmFreeExtensions(XpmExtension* extensions, int nextensions)
-#else
-void
-XpmFreeExtensions(extensions, nextensions)
-    XpmExtension *extensions;
-    int nextensions;
-#endif
-{
-    unsigned int i, j, nlines;
-    XpmExtension *ext;
-    char **sptr;
-
-    if (extensions) {
-       for (i = 0, ext = extensions; i < (unsigned)nextensions; i++, ext++) {
-           if (ext->name)
-               XpmFree(ext->name);
-           nlines = ext->nlines;
-           for (j = 0, sptr = ext->lines; j < nlines; j++, sptr++)
-               if (*sptr)
-                   XpmFree(*sptr);
-           if (ext->lines)
-               XpmFree(ext->lines);
-       }
-       XpmFree(extensions);
-    }
-}
-
-/*
- * Return the XpmAttributes structure size
- */
-
-int
-XpmAttributesSize()
-{
-    return sizeof(XpmAttributes);
-}
-
-/*
- * Init returned data to free safely later on
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-xpmInitAttributes(XpmAttributes* attributes)
-#else
-void
-xpmInitAttributes(attributes)
-    XpmAttributes *attributes;
-#endif
-{
-    if (attributes) {
-       attributes->pixels = NULL;
-       attributes->npixels = 0;
-       attributes->colorTable = NULL;
-       attributes->ncolors = 0;
-/* 3.2 backward compatibility code */
-       attributes->hints_cmt = NULL;
-       attributes->colors_cmt = NULL;
-       attributes->pixels_cmt = NULL;
-/* end 3.2 bc */
-       if (attributes->valuemask & XpmReturnExtensions) {
-           attributes->extensions = NULL;
-           attributes->nextensions = 0;
-       }
-       if (attributes->valuemask & XpmReturnAllocPixels) {
-           attributes->alloc_pixels = NULL;
-           attributes->nalloc_pixels = 0;
-       }
-    }
-}
-
-/*
- * Fill in the XpmAttributes with the XpmImage and the XpmInfo
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void xpmSetAttributes(XpmAttributes* attributes, XpmImage* image, XpmInfo* info)
-#else
-void
-xpmSetAttributes(attributes, image, info)
-    XpmAttributes *attributes;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    if (attributes->valuemask & XpmReturnColorTable) {
-       attributes->colorTable = image->colorTable;
-       attributes->ncolors = image->ncolors;
-
-       /* avoid deletion of copied data */
-       image->ncolors = 0;
-       image->colorTable = NULL;
-    }
-/* 3.2 backward compatibility code */
-    else if (attributes->valuemask & XpmReturnInfos) {
-       int ErrorStatus;
-
-       ErrorStatus = CreateOldColorTable(image->colorTable, image->ncolors,
-                                         (XpmColor ***)
-                                         &attributes->colorTable);
-
-       /* if error just say we can't return requested data */
-       if (ErrorStatus != XpmSuccess) {
-           attributes->valuemask &= ~XpmReturnInfos;
-           if (!(attributes->valuemask & XpmReturnPixels)) {
-               XpmFree(attributes->pixels);
-               attributes->pixels = NULL;
-               attributes->npixels = 0;
-           }
-           attributes->ncolors = 0;
-       } else {
-           attributes->ncolors = image->ncolors;
-           attributes->hints_cmt = info->hints_cmt;
-           attributes->colors_cmt = info->colors_cmt;
-           attributes->pixels_cmt = info->pixels_cmt;
-
-           /* avoid deletion of copied data */
-           image->ncolors = 0;
-           image->colorTable = NULL;
-           info->hints_cmt = NULL;
-           info->colors_cmt = NULL;
-           info->pixels_cmt = NULL;
-       }
-    }
-/* end 3.2 bc */
-    if (attributes->valuemask & XpmReturnExtensions) {
-       attributes->extensions = info->extensions;
-       attributes->nextensions = info->nextensions;
-
-       /* avoid deletion of copied data */
-       info->extensions = NULL;
-       info->nextensions = 0;
-    }
-    if (info->valuemask & XpmHotspot) {
-       attributes->valuemask |= XpmHotspot;
-       attributes->x_hotspot = info->x_hotspot;
-       attributes->y_hotspot = info->y_hotspot;
-    }
-    attributes->valuemask |= XpmCharsPerPixel;
-    attributes->cpp = image->cpp;
-    attributes->valuemask |= XpmSize;
-    attributes->width = image->width;
-    attributes->height = image->height;
-}
-
-/*
- * Free the XpmAttributes structure members
- * but the structure itself
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void XpmFreeAttributes(XpmAttributes* attributes)
-#else
-void
-XpmFreeAttributes(attributes)
-    XpmAttributes *attributes;
-#endif
-{
-    if (attributes->valuemask & XpmReturnPixels && attributes->npixels) {
-       XpmFree(attributes->pixels);
-       attributes->pixels = NULL;
-       attributes->npixels = 0;
-    }
-    if (attributes->valuemask & XpmReturnColorTable) {
-       xpmFreeColorTable(attributes->colorTable, attributes->ncolors);
-       attributes->colorTable = NULL;
-       attributes->ncolors = 0;
-    }
-/* 3.2 backward compatibility code */
-    else if (attributes->valuemask & XpmInfos) {
-       if (attributes->colorTable) {
-           FreeOldColorTable((XpmColor **) attributes->colorTable,
-                             attributes->ncolors);
-           attributes->colorTable = NULL;
-           attributes->ncolors = 0;
-       }
-       if (attributes->hints_cmt) {
-           XpmFree(attributes->hints_cmt);
-           attributes->hints_cmt = NULL;
-       }
-       if (attributes->colors_cmt) {
-           XpmFree(attributes->colors_cmt);
-           attributes->colors_cmt = NULL;
-       }
-       if (attributes->pixels_cmt) {
-           XpmFree(attributes->pixels_cmt);
-           attributes->pixels_cmt = NULL;
-       }
-       if (attributes->pixels) {
-           XpmFree(attributes->pixels);
-           attributes->pixels = NULL;
-           attributes->npixels = 0;
-       }
-    }
-/* end 3.2 bc */
-    if (attributes->valuemask & XpmReturnExtensions
-       && attributes->nextensions) {
-       XpmFreeExtensions(attributes->extensions, attributes->nextensions);
-       attributes->extensions = NULL;
-       attributes->nextensions = 0;
-    }
-    if (attributes->valuemask & XpmReturnAllocPixels
-       && attributes->nalloc_pixels) {
-       XpmFree(attributes->alloc_pixels);
-       attributes->alloc_pixels = NULL;
-       attributes->nalloc_pixels = 0;
-    }
-    attributes->valuemask = 0;
-}
diff --git a/src/xpm/CrBufFrI.c b/src/xpm/CrBufFrI.c
deleted file mode 100644 (file)
index f728fe4..0000000
+++ /dev/null
@@ -1,461 +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.
- */
-
-/*****************************************************************************\
-*  CrBufFrI.c:                                                                *
-*                                                                             *
-*  XPM library                                                                *
-*  Scan an image and possibly its mask and create an XPM buffer               *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-LFUNC(WriteColors, int, (char **dataptr, unsigned int *data_size,
-                        unsigned int *used_size, XpmColor *colors,
-                        unsigned int ncolors, unsigned int cpp));
-
-LFUNC(WritePixels, void, (char *dataptr, unsigned int *used_size,
-                         unsigned int width, unsigned int height,
-                         unsigned int cpp, unsigned int *pixels,
-                         XpmColor *colors));
-
-LFUNC(WriteExtensions, void, (char *dataptr, unsigned int *used_size,
-                             XpmExtension *ext, unsigned int num));
-
-LFUNC(ExtensionsSize, int, (XpmExtension *ext, unsigned int num));
-LFUNC(CommentsSize, int, (XpmInfo *info));
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateBufferFromImage(
-  Display*       display
-, char**         buffer_return
-, XImage*        image
-, XImage*        shapeimage
-, XpmAttributes* attributes
-)
-#else
-int
-XpmCreateBufferFromImage(display, buffer_return, image, shapeimage, attributes)
-    Display *display;
-    char **buffer_return;
-    XImage *image;
-    XImage *shapeimage;
-    XpmAttributes *attributes;
-#endif
-{
-    XpmImage xpmimage;
-    XpmInfo info;
-    int ErrorStatus;
-
-    /* initialize return value */
-    if (buffer_return)
-       *buffer_return = NULL;
-
-    /* create an XpmImage from the image */
-    ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
-                                            &xpmimage, attributes);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /* create the buffer from the XpmImage */
-    if (attributes) {
-       xpmSetInfo(&info, attributes);
-       ErrorStatus =
-           XpmCreateBufferFromXpmImage(buffer_return, &xpmimage, &info);
-    } else
-       ErrorStatus =
-           XpmCreateBufferFromXpmImage(buffer_return, &xpmimage, NULL);
-
-    /* free the XpmImage */
-    XpmFreeXpmImage(&xpmimage);
-
-    return (ErrorStatus);
-}
-
-
-#undef RETURN
-#define RETURN(status) \
-{ \
-      ErrorStatus = status; \
-      goto error; \
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateBufferFromXpmImage(char** buffer_return, XpmImage* image, XpmInfo* info)
-#else
-int
-XpmCreateBufferFromXpmImage(buffer_return, image, info)
-    char **buffer_return;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    /* calculation variables */
-    int ErrorStatus;
-    char buf[BUFSIZ];
-    unsigned int cmts, extensions, ext_size = 0;
-    unsigned int l, cmt_size = 0;
-    char *ptr = NULL, *p;
-    unsigned int ptr_size, used_size;
-
-    *buffer_return = NULL;
-
-    cmts = info && (info->valuemask & XpmComments);
-    extensions = info && (info->valuemask & XpmExtensions)
-       && info->nextensions;
-
-    /* compute the extensions and comments size */
-    if (extensions)
-       ext_size = ExtensionsSize(info->extensions, info->nextensions);
-    if (cmts)
-       cmt_size = CommentsSize(info);
-
-    /* write the header line */
-#ifndef VOID_SPRINTF
-    used_size =
-#endif
-    sprintf(buf, "/* XPM */\nstatic char * image_name[] = {\n");
-#ifdef VOID_SPRINTF
-    used_size = strlen(buf);
-#endif
-    ptr_size = used_size + ext_size + cmt_size + 1;
-    ptr = (char *) XpmMalloc(ptr_size);
-    if (!ptr)
-       return XpmNoMemory;
-    strcpy(ptr, buf);
-
-    /* write the values line */
-    if (cmts && info->hints_cmt) {
-#ifndef VOID_SPRINTF
-       used_size +=
-#endif
-       sprintf(ptr + used_size, "/*%s*/\n", info->hints_cmt);
-#ifdef VOID_SPRINTF
-       used_size += strlen(info->hints_cmt) + 5;
-#endif
-    }
-#ifndef VOID_SPRINTF
-    l =
-#endif
-    sprintf(buf, "\"%d %d %d %d", image->width, image->height,
-           image->ncolors, image->cpp);
-#ifdef VOID_SPRINTF
-    l = strlen(buf);
-#endif
-
-    if (info && (info->valuemask & XpmHotspot)) {
-#ifndef VOID_SPRINTF
-       l +=
-#endif
-       sprintf(buf + l, " %d %d", info->x_hotspot, info->y_hotspot);
-#ifdef VOID_SPRINTF
-       l = strlen(buf);
-#endif
-    }
-    if (extensions) {
-#ifndef VOID_SPRINTF
-       l +=
-#endif
-       sprintf(buf + l, " XPMEXT");
-#ifdef VOID_SPRINTF
-       l = strlen(buf);
-#endif
-    }
-#ifndef VOID_SPRINTF
-    l +=
-#endif
-    sprintf(buf + l, "\",\n");
-#ifdef VOID_SPRINTF
-    l = strlen(buf);
-#endif
-    ptr_size += l;
-    p = (char *) XpmRealloc(ptr, ptr_size);
-    if (!p)
-       RETURN(XpmNoMemory);
-    ptr = p;
-    strcpy(ptr + used_size, buf);
-    used_size += l;
-
-    /* write colors */
-    if (cmts && info->colors_cmt) {
-#ifndef VOID_SPRINTF
-       used_size +=
-#endif
-       sprintf(ptr + used_size, "/*%s*/\n", info->colors_cmt);
-#ifdef VOID_SPRINTF
-       used_size += strlen(info->colors_cmt) + 5;
-#endif
-    }
-    ErrorStatus = WriteColors(&ptr, &ptr_size, &used_size,
-                             image->colorTable, image->ncolors, image->cpp);
-
-    if (ErrorStatus != XpmSuccess)
-       RETURN(ErrorStatus);
-
-    /*
-     * now we know the exact size we need, realloc the data
-     * 4 = 1 (for '"') + 3 (for '",\n')
-     * 1 = - 2 (because the last line does not end with ',\n') + 3 (for '};\n')
-     */
-    ptr_size += image->height * (image->width * image->cpp + 4) + 1;
-
-    p = (char *) XpmRealloc(ptr, ptr_size);
-    if (!p)
-       RETURN(XpmNoMemory);
-    ptr = p;
-
-    /* print pixels */
-    if (cmts && info->pixels_cmt) {
-#ifndef VOID_SPRINTF
-       used_size +=
-#endif
-       sprintf(ptr + used_size, "/*%s*/\n", info->pixels_cmt);
-#ifdef VOID_SPRINTF
-       used_size += strlen(info->pixels_cmt) + 5;
-#endif
-    }
-    WritePixels(ptr + used_size, &used_size, image->width, image->height,
-               image->cpp, image->data, image->colorTable);
-
-    /* print extensions */
-    if (extensions)
-       WriteExtensions(ptr + used_size, &used_size,
-                       info->extensions, info->nextensions);
-
-    /* close the array */
-    strcpy(ptr + used_size, "};\n");
-
-    *buffer_return = ptr;
-
-    return (XpmSuccess);
-
-/* exit point in case of error, free only locally allocated variables */
-error:
-    if (ptr)
-       XpmFree(ptr);
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int WriteColors(
-  char**        dataptr
-, unsigned int* data_size
-, unsigned int* used_size
-, XpmColor*     colors
-, unsigned int  ncolors
-, unsigned int  cpp
-)
-#else
-static int
-WriteColors(dataptr, data_size, used_size, colors, ncolors, cpp)
-    char **dataptr;
-    unsigned int *data_size;
-    unsigned int *used_size;
-    XpmColor *colors;
-    unsigned int ncolors;
-    unsigned int cpp;
-#endif
-{
-    char buf[BUFSIZ];
-    unsigned int a, key, l;
-    char *s, *s2;
-    char **defaults;
-
-    *buf = '"';
-    for (a = 0; a < ncolors; a++, colors++) {
-
-       defaults = (char **) colors;
-       s = buf + 1;
-       strncpy(s, *defaults++, cpp);
-       s += cpp;
-
-       for (key = 1; key <= NKEYS; key++, defaults++) {
-           if (s2 = *defaults) {
-#ifndef VOID_SPRINTF
-               s +=
-#endif
-               sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2);
-#ifdef VOID_SPRINTF
-               s += strlen(s);
-#endif
-           }
-       }
-       strcpy(s, "\",\n");
-       l = s + 3 - buf;
-       s = (char *) XpmRealloc(*dataptr, *data_size + l);
-       if (!s)
-           return (XpmNoMemory);
-       *data_size += l;
-       strcpy(s + *used_size, buf);
-       *used_size += l;
-       *dataptr = s;
-    }
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void WritePixels(
-  char*         dataptr
-, unsigned int* used_size
-, unsigned int  width
-, unsigned int  height
-, unsigned int  cpp
-, unsigned int* pixels
-, XpmColor*     colors
-)
-#else
-static void
-WritePixels(dataptr, used_size, width, height, cpp, pixels, colors)
-    char *dataptr;
-    unsigned int *used_size;
-    unsigned int width;
-    unsigned int height;
-    unsigned int cpp;
-    unsigned int *pixels;
-    XpmColor *colors;
-#endif
-{
-    char *s = dataptr;
-    unsigned int x, y, h;
-
-    h = height - 1;
-    for (y = 0; y < h; y++) {
-       *s++ = '"';
-       for (x = 0; x < width; x++, pixels++) {
-           strncpy(s, colors[*pixels].string, cpp);
-           s += cpp;
-       }
-       strcpy(s, "\",\n");
-       s += 3;
-    }
-    /* duplicate some code to avoid a test in the loop */
-    *s++ = '"';
-    for (x = 0; x < width; x++, pixels++) {
-       strncpy(s, colors[*pixels].string, cpp);
-       s += cpp;
-    }
-    *s++ = '"';
-    *used_size += s - dataptr;
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-ExtensionsSize(XpmExtension* ext, unsigned int num)
-#else
-static int
-ExtensionsSize(ext, num)
-    XpmExtension *ext;
-    unsigned int num;
-#endif
-{
-    unsigned int x, y, a, size;
-    char **line;
-
-    size = 0;
-    for (x = 0; x < num; x++, ext++) {
-       /* 11 = 10 (for ',\n"XPMEXT ') + 1 (for '"') */
-       size += strlen(ext->name) + 11;
-       a = ext->nlines;
-       for (y = 0, line = ext->lines; y < a; y++, line++)
-           /* 4 = 3 (for ',\n"') + 1 (for '"') */
-           size += strlen(*line) + 4;
-    }
-    /* 13 is for ',\n"XPMENDEXT"' */
-    return size + 13;
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void WriteExtensions(
-  char*         dataptr
-, unsigned int* used_size
-, XpmExtension* ext
-, unsigned int  num
-)
-#else
-static void
-WriteExtensions(dataptr, used_size, ext, num)
-    char *dataptr;
-    unsigned int *used_size;
-    XpmExtension *ext;
-    unsigned int num;
-#endif
-{
-    unsigned int x, y, a;
-    char **line;
-    char *s = dataptr;
-
-    for (x = 0; x < num; x++, ext++) {
-#ifndef VOID_SPRINTF
-       s +=
-#endif
-       sprintf(s, ",\n\"XPMEXT %s\"", ext->name);
-#ifdef VOID_SPRINTF
-       s += strlen(ext->name) + 11;
-#endif
-       a = ext->nlines;
-       for (y = 0, line = ext->lines; y < a; y++, line++) {
-#ifndef VOID_SPRINTF
-           s +=
-#endif
-           sprintf(s, ",\n\"%s\"", *line);
-#ifdef VOID_SPRINTF
-           s += strlen(*line) + 4;
-#endif
-       }
-    }
-    strcpy(s, ",\n\"XPMENDEXT\"");
-    *used_size += s - dataptr + 13;
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int CommentsSize(XpmInfo* info)
-#else
-static int CommentsSize(info)
-    XpmInfo *info;
-#endif
-{
-    int size = 0;
-
-    /* 5 = 2 (for "/_*") + 3 (for "*_/\n") */
-    if (info->hints_cmt)
-       size += 5 + strlen(info->hints_cmt);
-
-    if (info->colors_cmt)
-       size += 5 + strlen(info->colors_cmt);
-
-    if (info->pixels_cmt)
-       size += 5 + strlen(info->pixels_cmt);
-
-    return size;
-}
diff --git a/src/xpm/CrDatFrI.c b/src/xpm/CrDatFrI.c
deleted file mode 100644 (file)
index f55d6d8..0000000
+++ /dev/null
@@ -1,404 +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.
- */
-
-/*****************************************************************************\
-*  CrDataFI.c:                                                                *
-*                                                                             *
-*  XPM library                                                                *
-*  Scan an image and possibly its mask and create an XPM array                *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-LFUNC(CreateColors, int, (char **dataptr, unsigned int *data_size,
-                         XpmColor *colors, unsigned int ncolors,
-                         unsigned int cpp));
-
-LFUNC(CreatePixels, void, (char **dataptr, unsigned int width,
-                          unsigned int height, unsigned int cpp,
-                          unsigned int *pixels, XpmColor *colors));
-
-LFUNC(CountExtensions, void, (XpmExtension *ext, unsigned int num,
-                             unsigned int *ext_size,
-                             unsigned int *ext_nlines));
-
-LFUNC(CreateExtensions, void, (char **dataptr, unsigned int offset,
-                              XpmExtension *ext, unsigned int num,
-                              unsigned int ext_nlines));
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int
-XpmCreateDataFromImage(
-  Display*       display
-, char***        data_return
-, XImage*        image
-, XImage*        shapeimage
-, XpmAttributes* attributes
-)
-#else
-int
-XpmCreateDataFromImage(display, data_return, image, shapeimage, attributes)
-    Display *display;
-    char ***data_return;
-    XImage *image;
-    XImage *shapeimage;
-    XpmAttributes *attributes;
-#endif
-{
-    XpmImage xpmimage;
-    XpmInfo info;
-    int ErrorStatus;
-
-    /* initialize return value */
-    if (data_return)
-       *data_return = NULL;
-
-    /* create an XpmImage from the image */
-    ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
-                                            &xpmimage, attributes);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /* create the data from the XpmImage */
-    if (attributes) {
-       xpmSetInfo(&info, attributes);
-       ErrorStatus = XpmCreateDataFromXpmImage(data_return, &xpmimage, &info);
-    } else
-       ErrorStatus = XpmCreateDataFromXpmImage(data_return, &xpmimage, NULL);
-
-    /* free the XpmImage */
-    XpmFreeXpmImage(&xpmimage);
-
-    return (ErrorStatus);
-}
-
-#undef RETURN
-#define RETURN(status) \
-{ \
-      ErrorStatus = status; \
-      goto exit; \
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int
-XpmCreateDataFromXpmImage(char*** data_return, XpmImage* image, XpmInfo* info)
-#else
-int
-XpmCreateDataFromXpmImage(data_return, image, info)
-    char ***data_return;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    /* calculation variables */
-    int ErrorStatus;
-    char buf[BUFSIZ];
-    char **header = NULL, **data, **sptr, **sptr2, *s;
-    unsigned int header_size, header_nlines;
-    unsigned int data_size, data_nlines;
-    unsigned int extensions = 0, ext_size = 0, ext_nlines = 0;
-    unsigned int offset, l, n;
-
-    *data_return = NULL;
-
-    extensions = info && (info->valuemask & XpmExtensions)
-       && info->nextensions;
-
-    /* compute the number of extensions lines and size */
-    if (extensions)
-       CountExtensions(info->extensions, info->nextensions,
-                       &ext_size, &ext_nlines);
-
-    /*
-     * alloc a temporary array of char pointer for the header section which
-     * is the hints line + the color table lines
-     */
-    header_nlines = 1 + image->ncolors;
-    header_size = sizeof(char *) * header_nlines;
-    header = (char **) XpmCalloc(header_size, sizeof(char *));
-    if (!header)
-       return (XpmNoMemory);
-
-    /* print the hints line */
-    s = buf;
-#ifndef VOID_SPRINTF
-    s +=
-#endif
-    sprintf(s, "%d %d %d %d", image->width, image->height,
-           image->ncolors, image->cpp);
-#ifdef VOID_SPRINTF
-    s += strlen(s);
-#endif
-
-    if (info && (info->valuemask & XpmHotspot)) {
-#ifndef VOID_SPRINTF
-       s +=
-#endif
-       sprintf(s, " %d %d", info->x_hotspot, info->y_hotspot);
-#ifdef VOID_SPRINTF
-       s += strlen(s);
-#endif
-    }
-    if (extensions) {
-       strcpy(s, " XPMEXT");
-       s += 7;
-    }
-    l = s - buf + 1;
-    *header = (char *) XpmMalloc(l);
-    if (!*header)
-       RETURN(XpmNoMemory);
-    header_size += l;
-    strcpy(*header, buf);
-
-    /* print colors */
-    ErrorStatus = CreateColors(header + 1, &header_size,
-                              image->colorTable, image->ncolors, image->cpp);
-
-    if (ErrorStatus != XpmSuccess)
-       RETURN(ErrorStatus);
-
-    /* now we know the size needed, alloc the data and copy the header lines */
-    offset = image->width * image->cpp + 1;
-    data_size = header_size + (image->height + ext_nlines) * sizeof(char *)
-       + image->height * offset + ext_size;
-
-    data = (char **) XpmMalloc(data_size);
-    if (!data)
-       RETURN(XpmNoMemory);
-
-    data_nlines = header_nlines + image->height + ext_nlines;
-    *data = (char *) (data + data_nlines);
-    n = image->ncolors;
-    for (l = 0, sptr = data, sptr2 = header; l <= n; l++, sptr++, sptr2++) {
-       strcpy(*sptr, *sptr2);
-       *(sptr + 1) = *sptr + strlen(*sptr2) + 1;
-    }
-
-    /* print pixels */
-    data[header_nlines] = (char *) data + header_size
-       + (image->height + ext_nlines) * sizeof(char *);
-
-    CreatePixels(data + header_nlines, image->width, image->height,
-                image->cpp, image->data, image->colorTable);
-
-    /* print extensions */
-    if (extensions)
-       CreateExtensions(data + header_nlines + image->height - 1, offset,
-                        info->extensions, info->nextensions,
-                        ext_nlines);
-
-    *data_return = data;
-    ErrorStatus = XpmSuccess;
-
-/* exit point, free only locally allocated variables */
-exit:
-    if (header) {
-       for (l = 0; l < header_nlines; l++)
-           if (header[l])
-               XpmFree(header[l]);
-               XpmFree(header);
-    }
-    return(ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-CreateColors(
-  char**        dataptr
-, unsigned int* data_size
-, XpmColor*     colors
-, unsigned int  ncolors
-, unsigned int  cpp
-)
-#else
-static int
-CreateColors(dataptr, data_size, colors, ncolors, cpp)
-    char **dataptr;
-    unsigned int *data_size;
-    XpmColor *colors;
-    unsigned int ncolors;
-    unsigned int cpp;
-#endif
-{
-    char buf[BUFSIZ];
-    unsigned int a, key, l;
-    char *s, *s2;
-    char **defaults;
-
-    for (a = 0; a < ncolors; a++, colors++, dataptr++) {
-
-       defaults = (char **) colors;
-       strncpy(buf, *defaults++, cpp);
-       s = buf + cpp;
-
-       for (key = 1; key <= NKEYS; key++, defaults++) {
-           if (s2 = *defaults) {
-#ifndef VOID_SPRINTF
-               s +=
-#endif
-               sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2);
-#ifdef VOID_SPRINTF
-               s += strlen(s);
-#endif
-           }
-       }
-       l = s - buf + 1;
-       s = (char *) XpmMalloc(l);
-       if (!s)
-           return (XpmNoMemory);
-       *data_size += l;
-       *dataptr = strcpy(s, buf);
-    }
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void CreatePixels(
-  char**        dataptr
-, unsigned int  width
-, unsigned int  height
-, unsigned int  cpp
-, unsigned int* pixels
-, XpmColor*     colors
-)
-#else
-static void
-CreatePixels(dataptr, width, height, cpp, pixels, colors)
-    char **dataptr;
-    unsigned int width;
-    unsigned int height;
-    unsigned int cpp;
-    unsigned int *pixels;
-    XpmColor *colors;
-#endif
-{
-    char *s;
-    unsigned int x, y, h, offset;
-
-    h = height - 1;
-    offset = width * cpp + 1;
-    for (y = 0; y < h; y++, dataptr++) {
-       s = *dataptr;
-       for (x = 0; x < width; x++, pixels++) {
-           strncpy(s, colors[*pixels].string, cpp);
-           s += cpp;
-       }
-       *s = '\0';
-       *(dataptr + 1) = *dataptr + offset;
-    }
-    /* duplicate some code to avoid a test in the loop */
-    s = *dataptr;
-    for (x = 0; x < width; x++, pixels++) {
-       strncpy(s, colors[*pixels].string, cpp);
-       s += cpp;
-    }
-    *s = '\0';
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void CountExtensions(
-  XpmExtension* ext
-, unsigned int  num
-, unsigned int* ext_size
-, unsigned int* ext_nlines
-)
-#else
-static void
-CountExtensions(ext, num, ext_size, ext_nlines)
-    XpmExtension *ext;
-    unsigned int num;
-    unsigned int *ext_size;
-    unsigned int *ext_nlines;
-#endif
-{
-    unsigned int x, y, a, size, nlines;
-    char **line;
-
-    size = 0;
-    nlines = 0;
-    for (x = 0; x < num; x++, ext++) {
-       /* 1 for the name */
-       nlines += ext->nlines + 1;
-       /* 8 = 7 (for "XPMEXT ") + 1 (for 0) */
-       size += strlen(ext->name) + 8;
-       a = ext->nlines;
-       for (y = 0, line = ext->lines; y < a; y++, line++)
-           size += strlen(*line) + 1;
-    }
-    /* 10 and 1 are for the ending "XPMENDEXT" */
-    *ext_size = size + 10;
-    *ext_nlines = nlines + 1;
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void
-CreateExtensions(
-  char**        dataptr
-, unsigned int  offset
-, XpmExtension* ext
-, unsigned int  num
-, unsigned int  ext_nlines
-)
-#else
-static void
-CreateExtensions(dataptr, offset, ext, num, ext_nlines)
-    char **dataptr;
-    unsigned int offset;
-    XpmExtension *ext;
-    unsigned int num;
-    unsigned int ext_nlines;
-#endif
-{
-    unsigned int x, y, a, b;
-    char **line;
-
-    *(dataptr + 1) = *dataptr + offset;
-    dataptr++;
-    a = 0;
-    for (x = 0; x < num; x++, ext++) {
-       sprintf(*dataptr, "XPMEXT %s", ext->name);
-       a++;
-       if (a < ext_nlines)
-           *(dataptr + 1) = *dataptr + strlen(ext->name) + 8;
-       dataptr++;
-       b = ext->nlines;
-       for (y = 0, line = ext->lines; y < b; y++, line++) {
-           strcpy(*dataptr, *line);
-           a++;
-           if (a < ext_nlines)
-               *(dataptr + 1) = *dataptr + strlen(*line) + 1;
-           dataptr++;
-       }
-    }
-    strcpy(*dataptr, "XPMENDEXT");
-}
diff --git a/src/xpm/CrIFrBuf.c b/src/xpm/CrIFrBuf.c
deleted file mode 100644 (file)
index 655cedf..0000000
+++ /dev/null
@@ -1,140 +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.
- */
-
-/*****************************************************************************\
-*  CrIFrBuf.c:                                                                *
-*                                                                             *
-*  XPM library                                                                *
-*  Parse an Xpm buffer (file in memory) and create the image and possibly its *
-*  mask                                                                       *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-LFUNC(OpenBuffer, void, (char *buffer, xpmData *mdata));
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateImageFromBuffer(
-  Display*       display
-, char*          buffer
-, XImage**       image_return
-, XImage**       shapeimage_return
-, XpmAttributes* attributes
-)
-#else
-int
-XpmCreateImageFromBuffer(display, buffer, image_return,
-                        shapeimage_return, attributes)
-    Display *display;
-    char *buffer;
-    XImage **image_return;
-    XImage **shapeimage_return;
-    XpmAttributes *attributes;
-#endif
-{
-    XpmImage image;
-    XpmInfo info;
-    int ErrorStatus;
-    xpmData mdata;
-
-    xpmInitXpmImage(&image);
-    xpmInitXpmInfo(&info);
-
-    /* open buffer to read */
-    OpenBuffer(buffer, &mdata);
-
-    /* create the XImage from the XpmData */
-    if (attributes) {
-       xpmInitAttributes(attributes);
-       xpmSetInfoMask(&info, attributes);
-       ErrorStatus = xpmParseDataAndCreate(display, &mdata,
-                                           image_return, shapeimage_return,
-                                           &image, &info, attributes);
-    } else
-       ErrorStatus = xpmParseDataAndCreate(display, &mdata,
-                                           image_return, shapeimage_return,
-                                           &image, NULL, attributes);
-    if (attributes) {
-       if (ErrorStatus >= 0)           /* no fatal error */
-           xpmSetAttributes(attributes, &image, &info);
-       XpmFreeXpmInfo(&info);
-    }
-
-    /* free the XpmImage */
-    XpmFreeXpmImage(&image);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateXpmImageFromBuffer(
-  char*     buffer
-, XpmImage* image
-, XpmInfo*  info
-)
-#else
-int
-XpmCreateXpmImageFromBuffer(buffer, image, info)
-    char *buffer;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    xpmData mdata;
-    int ErrorStatus;
-
-    /* init returned values */
-    xpmInitXpmImage(image);
-    xpmInitXpmInfo(info);
-
-    /* open buffer to read */
-    OpenBuffer(buffer, &mdata);
-
-    /* create the XpmImage from the XpmData */
-    ErrorStatus = xpmParseData(&mdata, image, info);
-
-    return (ErrorStatus);
-}
-
-/*
- * open the given buffer to be read or written as an xpmData which is returned
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void OpenBuffer(char* buffer, xpmData* mdata)
-#else
-static void
-OpenBuffer(buffer, mdata)
-    char *buffer;
-    xpmData *mdata;
-#endif
-{
-    mdata->type = XPMBUFFER;
-    mdata->cptr = buffer;
-    mdata->CommentLength = 0;
-}
diff --git a/src/xpm/CrIFrDat.c b/src/xpm/CrIFrDat.c
deleted file mode 100644 (file)
index 8f98e1c..0000000
+++ /dev/null
@@ -1,146 +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.
- */
-
-/*****************************************************************************\
-*  CrIFrData.c:                                                               *
-*                                                                             *
-*  XPM library                                                                *
-*  Parse an Xpm array and create the image and possibly its mask              *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-LFUNC(OpenArray, void, (char **data, xpmData *mdata));
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateImageFromData(
-  Display*       display
-, char**         data
-, XImage**       image_return
-, XImage**       shapeimage_return
-, XpmAttributes* attributes
-)
-#else
-int
-XpmCreateImageFromData(display, data, image_return,
-                      shapeimage_return, attributes)
-    Display *display;
-    char **data;
-    XImage **image_return;
-    XImage **shapeimage_return;
-    XpmAttributes *attributes;
-#endif
-{
-    XpmImage image;
-    XpmInfo info;
-    int ErrorStatus;
-    xpmData mdata;
-
-    xpmInitXpmImage(&image);
-    xpmInitXpmInfo(&info);
-
-    /* open data */
-    OpenArray(data, &mdata);
-
-    /* create an XpmImage from the file */
-    if (attributes) {
-       xpmInitAttributes(attributes);
-       xpmSetInfoMask(&info, attributes);
-       ErrorStatus = xpmParseDataAndCreate(display, &mdata,
-                                           image_return, shapeimage_return,
-                                           &image, &info, attributes);
-    } else
-       ErrorStatus = xpmParseDataAndCreate(display, &mdata,
-                                           image_return, shapeimage_return,
-                                           &image, NULL, attributes);
-    if (attributes) {
-       if (ErrorStatus >= 0)           /* no fatal error */
-           xpmSetAttributes(attributes, &image, &info);
-       XpmFreeXpmInfo(&info);
-    }
-
-    /* free the XpmImage */
-    XpmFreeXpmImage(&image);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int
-XpmCreateXpmImageFromData(
-  char**    data
-, XpmImage* image
-, XpmInfo*  info
-)
-#else
-int
-XpmCreateXpmImageFromData(data, image, info)
-    char **data;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    xpmData mdata;
-    int ErrorStatus;
-
-    /* init returned values */
-    xpmInitXpmImage(image);
-    xpmInitXpmInfo(info);
-
-    /* open data */
-    OpenArray(data, &mdata);
-
-    /* create the XpmImage from the XpmData */
-    ErrorStatus = xpmParseData(&mdata, image, info);
-
-    return (ErrorStatus);
-}
-
-/*
- * open the given array to be read or written as an xpmData which is returned
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void OpenArray(char** data, xpmData* mdata)
-#else
-static void
-OpenArray(data, mdata)
-    char **data;
-    xpmData *mdata;
-#endif
-{
-    mdata->type = XPMARRAY;
-    mdata->stream.data = data;
-    mdata->cptr = *data;
-    mdata->line = 0;
-    mdata->CommentLength = 0;
-    mdata->Bcmt = mdata->Ecmt = NULL;
-    mdata->Bos = mdata->Eos = '\0';
-    mdata->format = 0;                 /* this can only be Xpm 2 or 3 */
-}
diff --git a/src/xpm/Image.c b/src/xpm/Image.c
deleted file mode 100644 (file)
index 9090c3a..0000000
+++ /dev/null
@@ -1,73 +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.
- */
-
-/*****************************************************************************\
-*  Image.c:                                                                   *
-*                                                                             *
-*  XPM library                                                                *
-*  Functions to init and free the XpmImage structure.                         *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-/*
- * Init returned data to free safely later on
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-xpmInitXpmImage(XpmImage* image)
-#else
-void
-xpmInitXpmImage(image)
-    XpmImage *image;
-#endif
-{
-    image->ncolors = 0;
-    image->colorTable = NULL;
-    image->data = NULL;
-}
-
-/*
- * Free the XpmImage data which have been allocated
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-XpmFreeXpmImage(XpmImage* image)
-#else
-void
-XpmFreeXpmImage(image)
-    XpmImage *image;
-#endif
-{
-    if (image->colorTable)
-       xpmFreeColorTable(image->colorTable, image->ncolors);
-    if (image->data)
-       XpmFree(image->data);
-    image->data = NULL;
-}
diff --git a/src/xpm/Info.c b/src/xpm/Info.c
deleted file mode 100644 (file)
index bac2d44..0000000
+++ /dev/null
@@ -1,147 +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.
- */
-
-/*****************************************************************************\
-*  Info.c:                                                                    *
-*                                                                             *
-*  XPM library                                                                *
-*  Functions related to the XpmInfo structure.                                *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-/*
- * Init returned data to free safely later on
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-xpmInitXpmInfo(XpmInfo* info)
-#else
-void
-xpmInitXpmInfo(info)
-    XpmInfo *info;
-#endif
-{
-    if (info) {
-       info->hints_cmt = NULL;
-       info->colors_cmt = NULL;
-       info->pixels_cmt = NULL;
-       info->extensions = NULL;
-       info->nextensions = 0;
-    }
-}
-
-/*
- * Free the XpmInfo data which have been allocated
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-XpmFreeXpmInfo(XpmInfo* info)
-#else
-void
-XpmFreeXpmInfo(info)
-    XpmInfo *info;
-#endif
-{
-    if (info) {
-       if (info->valuemask & XpmComments) {
-           if (info->hints_cmt) {
-               XpmFree(info->hints_cmt);
-               info->hints_cmt = NULL;
-           }
-           if (info->colors_cmt) {
-               XpmFree(info->colors_cmt);
-               info->colors_cmt = NULL;
-           }
-           if (info->pixels_cmt) {
-               XpmFree(info->pixels_cmt);
-               info->pixels_cmt = NULL;
-           }
-       }
-       if (info->valuemask & XpmReturnExtensions && info->nextensions) {
-           XpmFreeExtensions(info->extensions, info->nextensions);
-           info->extensions = NULL;
-           info->nextensions = 0;
-       }
-       info->valuemask = 0;
-    }
-}
-
-/*
- * Set the XpmInfo valuemask to retrieve required info
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void xpmSetInfoMask(XpmInfo* info, XpmAttributes* attributes)
-#else
-void
-xpmSetInfoMask(info, attributes)
-    XpmInfo *info;
-    XpmAttributes *attributes;
-#endif
-{
-    info->valuemask = 0;
-    if (attributes->valuemask & XpmReturnInfos)
-       info->valuemask |= XpmReturnComments;
-    if (attributes->valuemask & XpmReturnExtensions)
-       info->valuemask |= XpmReturnExtensions;
-}
-
-/*
- * Fill in the XpmInfo with the XpmAttributes
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-xpmSetInfo(XpmInfo* info, XpmAttributes* attributes)
-#else
-void
-xpmSetInfo(info, attributes)
-    XpmInfo *info;
-    XpmAttributes *attributes;
-#endif
-{
-    info->valuemask = 0;
-    if (attributes->valuemask & XpmInfos) {
-       info->valuemask |= XpmComments | XpmColorTable;
-       info->hints_cmt = attributes->hints_cmt;
-       info->colors_cmt = attributes->colors_cmt;
-       info->pixels_cmt = attributes->pixels_cmt;
-    }
-    if (attributes->valuemask & XpmExtensions) {
-       info->valuemask |= XpmExtensions;
-       info->extensions = attributes->extensions;
-       info->nextensions = attributes->nextensions;
-    }
-    if (attributes->valuemask & XpmHotspot) {
-       info->valuemask |= XpmHotspot;
-       info->x_hotspot = attributes->x_hotspot;
-       info->y_hotspot = attributes->y_hotspot;
-    }
-}
diff --git a/src/xpm/MAKEFILE.VA b/src/xpm/MAKEFILE.VA
deleted file mode 100644 (file)
index 00a3b0e..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-#
-# File:      makefile.vc
-# Author:    David Webster
-# Created:   1999
-# Updated:
-# Copyright: c) 1993, AIAI, University of Edinburgh
-#
-# "%W% %G%"
-#
-# Makefile : Builds os2xpm.lib library for OS/2 3.0/4.0
-
-# Suffixes
-OBJSUFF=obj
-SRCSUFF=cpp
-
-OS2FLAGS=/c /W2 /DOS232 /D__VISAGECPP30__ /Dwx_msw /Q /N100
-OS2LINKFLAGS=/BASE:0x00010000 /PMTYPE:PM /NOE /NOD /ALIGN:16
-OS2LIBFLAGS=/NOL /NOE
-OS2LIBS=CPPOM30.lib CPPOOC3.LIB OS2386.LIB
-
-!if "$(WXMAKINGDLL)" != "0"
-EXTRADLLFLAGS=/DWXMAKINGDLL=1 /Ge- /D__OS2DLL__
-EXTRALNKFLAGS=/DLL
-!endif
-
-# Change WXDIR or WXWIN to wherever wxWindows is found
-WXDIR = $(WXWIN)
-
-OS2XPMDIR=$(WXDIR)\src\xpm
-OS2XPMINC=$(WINXPMDIR)
-
-!if "$(WXMAKINGDLL)" != "1"
-OS2XPMLIB=$(WXDIR)\lib\os2xpm.lib
-!else
-OS2XPMLIB=$(WXDIR)\lib\os2xpm.dll
-!endif
-INC=-I$(WXDIR)\src\xpm -I$(OS2XPMINC)
-
-!ifndef FINAL
-FINAL=0
-!endif
-
-!if "$(NOPCH)" == "1"
-PCH=
-PRECOMP=
-MAKEPRECOMP=
-!else
-PCH=$(WXLIBNAME).pch
-PRECOMP=/Si$(PCH)
-MAKEPRECOMP=/Fi$(PCH)
-!endif
-
-!if "$(FINAL)" == "0"
-!if "$(WXMAKINGDLL)" == "1"
-D=DebugOS2DLL
-!else
-D=DebugOS2
-!endif
-OPT =
-DEBUG_FLAGS= /Ti /D__WXDEBUG__ #/Fb
-LINK_DEBUG_FLAGS=/DEBUG
-CRTFLAG=/Gm /Gd
-!else
-# /O1 - smallest code
-# /O2 - fastest code
-!if "$(WXMAKINGDLL)" == "1"
-D=RelseOS2DLL
-!else
-D=RelseOS2
-!endif
-OPT = /O+ /Oc /G5
-DEBUG_FLAGS=
-LINK_DEBUG_FLAGS=/RELEASE
-CRTFLAG=/Gm /Gd
-!endif
-
-!if [md $(OS2XPMDIR)\$D]
-!endif
-
-
-CPPFLAGS=$(OS2FLAGS) $(EXTRADLLFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(INC) $(OPT) $(CRTFLAG)
-LINKFKAGS=$(OS2LINKFLAGS) $(EXTRALNKFLAGS)
-
-{..\xpm}.c{..\xpm\$D}.obj:
-    @echo $<
-    icc @<<
-$(CPPFLAGS) /Fo$@ /Tp $<
-<<
-
-OBJECTS = \
-  ..\xpm\$D\attrib.obj \
-  ..\xpm\$D\crbuffri.obj \
-  ..\xpm\$D\crdatfri.obj \
-  ..\xpm\$D\create.obj \
-  ..\xpm\$D\crifrbuf.obj \
-  ..\xpm\$D\crifrdat.obj \
-  ..\xpm\$D\data.obj \
-  ..\xpm\$D\image.obj \
-  ..\xpm\$D\info.obj \
-  ..\xpm\$D\hashtab.obj \
-  ..\xpm\$D\misc.obj \
-  ..\xpm\$D\parse.obj \
-  ..\xpm\$D\rdftodat.obj \
-  ..\xpm\$D\rdftoi.obj \
-  ..\xpm\$D\rgb.obj \
-  ..\xpm\$D\scan.obj \
-  ..\xpm\$D\simx.obj \
-  ..\xpm\$D\wrffrdat.obj \
-  ..\xpm\$D\wrffri.obj
-
-LIBOBJECTS = \
-  attrib.obj \
-  crbuffri.obj \
-  crdatfri.obj \
-  create.obj \
-  crifrbuf.obj \
-  crifrdat.obj \
-  data.obj \
-  image.obj \
-  info.obj \
-  hashtab.obj \
-  misc.obj \
-  parse.obj \
-  rdftodat.obj \
-  rdftoi.obj \
-  rgb.obj \
-  scan.obj \
-  simx.obj \
-  wrffrdat.obj \
-  wrffri.obj
-
-all:  $(OBJECTS) $(OS2XPMLIB)
-
-!if "$(WXMAKINGDLL)" != "1"
-
-$(WXDIR)\lib\os2xpm.lib: $(LIBOBJECTS)
- touch $(WXDIR)\lib\os2xpm.lib
- del $(WXDIR)\lib\os2xpm.lib
- ilib $(OS2LIBFLAGS) $@ @<<
-    $**;
-<<
-  del *.obj
-
-!else
-
-# Update the dynamic link library
-$(WXDIR)\lib\os2xpm.dll: $(OBJECTS)
-    icc @<<
-    /B" $(LINKFLAGS)" /Fe$@
-    $(LIBS)
-    $(OBJECTS)
-    $(WXDIR)\src\os2\os2xpm.def
-<<
-    implib $(WXDIR)\lib\os2xpmd.lib $(WXDIR)\src\os2\os2xpm.def
-
-!endif
-
-clean:
-        del      $(OS2XPMLIB)
-        erase /N $(OS2XPMDIR)\$D
-        rd       $(OS2XPMDIR)\$D
-
-cleanall:     clean
-
-$(LIBOBJECTS):
-  copy ..\xpm\$D\attrib.obj
-  copy ..\xpm\$D\crbuffri.obj
-  copy ..\xpm\$D\crdatfri.obj
-  copy ..\xpm\$D\create.obj
-  copy ..\xpm\$D\crifrbuf.obj
-  copy ..\xpm\$D\crifrdat.obj
-  copy ..\xpm\$D\data.obj
-  copy ..\xpm\$D\image.obj
-  copy ..\xpm\$D\info.obj
-  copy ..\xpm\$D\hashtab.obj
-  copy ..\xpm\$D\misc.obj
-  copy ..\xpm\$D\parse.obj
-  copy ..\xpm\$D\rdftodat.obj
-  copy ..\xpm\$D\rdftoi.obj
-  copy ..\xpm\$D\rgb.obj
-  copy ..\xpm\$D\scan.obj
-  copy ..\xpm\$D\simx.obj
-  copy ..\xpm\$D\wrffrdat.obj
-  copy ..\xpm\$D\wrffri.obj
-
diff --git a/src/xpm/RdFToDat.c b/src/xpm/RdFToDat.c
deleted file mode 100644 (file)
index 253ef8e..0000000
+++ /dev/null
@@ -1,70 +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.
- */
-
-/*****************************************************************************\
-*  RdFToDat.c:                                                                *
-*                                                                             *
-*  XPM library                                                                *
-*  Parse an XPM file and create an array of strings corresponding to it.      *
-*                                                                             *
-*  Developed by Dan Greening dgreen@cs.ucla.edu / dgreen@sti.com              *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmReadFileToData(char* filename, char*** data_return)
-#else
-int
-XpmReadFileToData(filename, data_return)
-    char *filename;
-    char ***data_return;
-#endif
-{
-    XpmImage image;
-    XpmInfo info;
-    int ErrorStatus;
-
-    info.valuemask = XpmReturnComments | XpmReturnExtensions;
-
-    /*
-     * initialize return value
-     */
-    if (data_return)
-       *data_return = NULL;
-
-    ErrorStatus = XpmReadFileToXpmImage(filename, &image, &info);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    ErrorStatus =
-       XpmCreateDataFromXpmImage(data_return, &image, &info);
-
-    XpmFreeXpmImage(&image);
-    XpmFreeXpmInfo(&info);
-
-    return (ErrorStatus);
-}
diff --git a/src/xpm/RdFToI.c b/src/xpm/RdFToI.c
deleted file mode 100644 (file)
index eff47d3..0000000
+++ /dev/null
@@ -1,256 +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.
- */
-
-/*****************************************************************************\
-*  RdFToI.c:                                                                  *
-*                                                                             *
-*  XPM library                                                                *
-*  Parse an XPM file and create the image and possibly its mask               *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-#include <sys/stat.h>
-#if !defined(NO_ZPIPE) && defined(WIN32)
-# define popen _popen
-# define pclose _pclose
-# if defined(STAT_ZFILE)
-#  include <io.h>
-#  define stat _stat
-#  define fstat _fstat
-# endif
-#endif
-
-LFUNC(OpenReadFile, int, (char *filename, xpmData *mdata));
-LFUNC(xpmDataClose, void, (xpmData *mdata));
-
-#ifndef CXPMPROG
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmReadFileToImage(
-  Display*       display
-, char*          filename
-, XImage**       image_return
-, XImage**       shapeimage_return
-, XpmAttributes* attributes
-)
-#else
-int
-XpmReadFileToImage(display, filename,
-                  image_return, shapeimage_return, attributes)
-    Display *display;
-    char *filename;
-    XImage **image_return;
-    XImage **shapeimage_return;
-    XpmAttributes *attributes;
-#endif
-{
-    XpmImage image;
-    XpmInfo info;
-    int ErrorStatus;
-    xpmData mdata;
-
-    xpmInitXpmImage(&image);
-    xpmInitXpmInfo(&info);
-
-    /* open file to read */
-    if ((ErrorStatus = OpenReadFile(filename, &mdata)) != XpmSuccess)
-       return (ErrorStatus);
-
-    /* create the XImage from the XpmData */
-    if (attributes) {
-       xpmInitAttributes(attributes);
-       xpmSetInfoMask(&info, attributes);
-       ErrorStatus = xpmParseDataAndCreate(display, &mdata,
-                                           image_return, shapeimage_return,
-                                           &image, &info, attributes);
-    } else
-       ErrorStatus = xpmParseDataAndCreate(display, &mdata,
-                                           image_return, shapeimage_return,
-                                           &image, NULL, attributes);
-    if (attributes) {
-       if (ErrorStatus >= 0)           /* no fatal error */
-           xpmSetAttributes(attributes, &image, &info);
-       XpmFreeXpmInfo(&info);
-    }
-
-    xpmDataClose(&mdata);
-    /* free the XpmImage */
-    XpmFreeXpmImage(&image);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-#define popen fopen
-#define pclose fclose
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmReadFileToXpmImage(
-  char*     filename
-, XpmImage* image
-, XpmInfo*  info
-)
-#else
-int
-XpmReadFileToXpmImage(filename, image, info)
-    char *filename;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    xpmData mdata;
-    int ErrorStatus;
-
-    /* init returned values */
-    xpmInitXpmImage(image);
-    xpmInitXpmInfo(info);
-
-    /* open file to read */
-    if ((ErrorStatus = OpenReadFile(filename, &mdata)) != XpmSuccess)
-       return (ErrorStatus);
-
-    /* create the XpmImage from the XpmData */
-    ErrorStatus = xpmParseData(&mdata, image, info);
-
-    xpmDataClose(&mdata);
-
-    return (ErrorStatus);
-}
-#endif /* CXPMPROG */
-
-/*
- * open the given file to be read as an xpmData which is returned.
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int OpenReadFile(char* filename, xpmData* mdata)
-#else
-static int
-OpenReadFile(filename, mdata)
-    char *filename;
-    xpmData *mdata;
-#endif
-{
-#ifndef NO_ZPIPE
-    char buf[BUFSIZ];
-# ifdef STAT_ZFILE
-    char *compressfile;
-    struct stat status;
-# endif
-#endif
-
-    if (!filename) {
-       mdata->stream.file = (stdin);
-       mdata->type = XPMFILE;
-    } else {
-#ifndef NO_ZPIPE
-       int len = strlen(filename);
-       if ((len > 2) && !strcmp(".Z", filename + (len - 2))) {
-           mdata->type = XPMPIPE;
-           sprintf(buf, "uncompress -c \"%s\"", filename);
-           if (!(mdata->stream.file = popen(buf, "r")))
-               return (XpmOpenFailed);
-
-       } else if ((len > 3) && !strcmp(".gz", filename + (len - 3))) {
-           mdata->type = XPMPIPE;
-           sprintf(buf, "gunzip -qc \"%s\"", filename);
-           if (!(mdata->stream.file = popen(buf, "r")))
-               return (XpmOpenFailed);
-
-       } else {
-# ifdef STAT_ZFILE
-           if (!(compressfile = (char *) XpmMalloc(len + 4)))
-               return (XpmNoMemory);
-
-           sprintf(compressfile, "%s.Z", filename);
-           if (!stat(compressfile, &status)) {
-               sprintf(buf, "uncompress -c \"%s\"", compressfile);
-               if (!(mdata->stream.file = popen(buf, "r"))) {
-                   XpmFree(compressfile);
-                   return (XpmOpenFailed);
-               }
-               mdata->type = XPMPIPE;
-           } else {
-               sprintf(compressfile, "%s.gz", filename);
-               if (!stat(compressfile, &status)) {
-                   sprintf(buf, "gunzip -c \"%s\"", compressfile);
-                   if (!(mdata->stream.file = popen(buf, "r"))) {
-                       XpmFree(compressfile);
-                       return (XpmOpenFailed);
-                   }
-                   mdata->type = XPMPIPE;
-               } else {
-# endif
-#endif
-                   if (!(mdata->stream.file = fopen(filename, "r"))) {
-#if !defined(NO_ZPIPE) && defined(STAT_ZFILE)
-                       XpmFree(compressfile);
-#endif
-                       return (XpmOpenFailed);
-                   }
-                   mdata->type = XPMFILE;
-#ifndef NO_ZPIPE
-# ifdef STAT_ZFILE
-               }
-           }
-           XpmFree(compressfile);
-# endif
-       }
-#endif
-    }
-    mdata->CommentLength = 0;
-#ifdef CXPMPROG
-    mdata->lineNum = 0;
-    mdata->charNum = 0;
-#endif
-    return (XpmSuccess);
-}
-
-/*
- * close the file related to the xpmData if any
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void
-xpmDataClose(xpmData* mdata)
-#else
-static void
-xpmDataClose(mdata)
-    xpmData *mdata;
-#endif
-{
-    switch (mdata->type) {
-    case XPMFILE:
-       if (mdata->stream.file != (stdin))
-           fclose(mdata->stream.file);
-       break;
-#ifndef NO_ZPIPE
-    case XPMPIPE:
-       pclose(mdata->stream.file);
-       break;
-#endif
-    }
-}
diff --git a/src/xpm/WrFFrDat.c b/src/xpm/WrFFrDat.c
deleted file mode 100644 (file)
index f47cba1..0000000
+++ /dev/null
@@ -1,64 +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.
- */
-
-/*****************************************************************************\
-*  WrFFrData.c:                                                               *
-*                                                                             *
-*  XPM library                                                                *
-*  Parse an Xpm array and write a file that corresponds to it.                *
-*                                                                             *
-*  Developed by Dan Greening dgreen@cs.ucla.edu / dgreen@sti.com              *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmWriteFileFromData(char* filename, char** data)
-#else
-int
-XpmWriteFileFromData(filename, data)
-    char *filename;
-    char **data;
-#endif
-{
-    XpmImage image;
-    XpmInfo info;
-    int ErrorStatus;
-
-    info.valuemask = XpmReturnComments | XpmReturnExtensions;
-
-    ErrorStatus = XpmCreateXpmImageFromData(data, &image, &info);
-
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    ErrorStatus = XpmWriteFileFromXpmImage(filename, &image, &info);
-
-    XpmFreeXpmImage(&image);
-    XpmFreeXpmInfo(&info);
-
-    return (ErrorStatus);
-}
diff --git a/src/xpm/WrFFrI.c b/src/xpm/WrFFrI.c
deleted file mode 100644 (file)
index a81174c..0000000
+++ /dev/null
@@ -1,435 +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.
- */
-
-/*****************************************************************************\
-*  WrFFrI.c:                                                                  *
-*                                                                             *
-*  XPM library                                                                *
-*  Write an image and possibly its mask to an XPM file                        *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to AMIGA has been added by
- * Lorens Younes (d93-hyo@nada.kth.se) 4/96
- */
-
-#include "XpmI.h"
-#if !defined(NO_ZPIPE) && defined(WIN32)
-# define popen _popen
-# define pclose _pclose
-#endif
-
-/* MS Windows define a function called WriteFile @#%#&!!! */
-LFUNC(xpmWriteFile, int, (FILE *file, XpmImage *image, char *name,
-                         XpmInfo *info));
-
-LFUNC(WriteColors, void, (FILE *file, XpmColor *colors, unsigned int ncolors));
-
-LFUNC(WritePixels, int, (FILE *file, unsigned int width, unsigned int height,
-                        unsigned int cpp, unsigned int *pixels,
-                        XpmColor *colors));
-
-LFUNC(WriteExtensions, void, (FILE *file, XpmExtension *ext,
-                             unsigned int num));
-
-LFUNC(OpenWriteFile, int, (char *filename, xpmData *mdata));
-LFUNC(xpmDataClose, void, (xpmData *mdata));
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmWriteFileFromImage(
-  Display*       display
-, char*          filename
-, XImage*        image
-, XImage*        shapeimage
-, XpmAttributes* attributes
-)
-#else
-int
-XpmWriteFileFromImage(display, filename, image, shapeimage, attributes)
-    Display *display;
-    char *filename;
-    XImage *image;
-    XImage *shapeimage;
-    XpmAttributes *attributes;
-#endif
-{
-    XpmImage xpmimage;
-    XpmInfo info;
-    int ErrorStatus;
-
-    /* create an XpmImage from the image */
-    ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
-                                            &xpmimage, attributes);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /* write the file from the XpmImage */
-    if (attributes) {
-       xpmSetInfo(&info, attributes);
-       ErrorStatus = XpmWriteFileFromXpmImage(filename, &xpmimage, &info);
-    } else
-       ErrorStatus = XpmWriteFileFromXpmImage(filename, &xpmimage, NULL);
-
-    /* free the XpmImage */
-    XpmFreeXpmImage(&xpmimage);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmWriteFileFromXpmImage(
-  char*     filename
-, XpmImage* image
-, XpmInfo*  info
-)
-#else
-int
-XpmWriteFileFromXpmImage(filename, image, info)
-    char *filename;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    xpmData mdata;
-    char *name, *dot, *s, new_name[BUFSIZ];
-    int ErrorStatus;
-
-    /* open file to write */
-    if ((ErrorStatus = OpenWriteFile(filename, &mdata)) != XpmSuccess)
-       return (ErrorStatus);
-
-    /* figure out a name */
-    if (filename) {
-#ifdef VMS
-       name = filename;
-#else
-       if (!(name = rindex(filename, '/'))
-#ifdef AMIGA
-           && !(name = rindex(filename, ':'))
-#endif
-     )
-           name = filename;
-       else
-           name++;
-#endif
-       /* let's try to make a valid C syntax name */
-       if (dot = index(name, '.')) {
-           strcpy(new_name, name);
-           /* change '.' to '_' */
-           name = s = new_name;
-           while (dot = index(s, '.')) {
-               *dot = '_';
-               s = dot;
-           }
-       }
-       if (dot = index(name, '-')) {
-           if (name != new_name) {
-               strcpy(new_name, name);
-               name = new_name;
-           }
-           /* change '-' to '_' */
-           s = name;
-           while (dot = index(s, '-')) {
-               *dot = '_';
-               s = dot;
-           }
-       }
-    } else
-       name = "image_name";
-
-    /* write the XpmData from the XpmImage */
-    if (ErrorStatus == XpmSuccess)
-       ErrorStatus = xpmWriteFile(mdata.stream.file, image, name, info);
-
-    xpmDataClose(&mdata);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-xpmWriteFile(
-  FILE*     file
-, XpmImage* image
-, char*     name
-, XpmInfo*  info
-)
-#else
-static int
-xpmWriteFile(file, image, name, info)
-    FILE *file;
-    XpmImage *image;
-    char *name;
-    XpmInfo *info;
-#endif
-{
-    /* calculation variables */
-    unsigned int cmts, extensions;
-    int ErrorStatus;
-
-    cmts = info && (info->valuemask & XpmComments);
-    extensions = info && (info->valuemask & XpmExtensions)
-       && info->nextensions;
-
-    /* print the header line */
-    fprintf(file, "/* XPM */\nstatic char * %s[] = {\n", name);
-
-    /* print the hints line */
-    if (cmts && info->hints_cmt)
-       fprintf(file, "/*%s*/\n", info->hints_cmt);
-
-    fprintf(file, "\"%d %d %d %d", image->width, image->height,
-           image->ncolors, image->cpp);
-
-    if (info && (info->valuemask & XpmHotspot))
-       fprintf(file, " %d %d", info->x_hotspot, info->y_hotspot);
-
-    if (extensions)
-       fprintf(file, " XPMEXT");
-
-    fprintf(file, "\",\n");
-
-    /* print colors */
-    if (cmts && info->colors_cmt)
-       fprintf(file, "/*%s*/\n", info->colors_cmt);
-
-    WriteColors(file, image->colorTable, image->ncolors);
-
-    /* print pixels */
-    if (cmts && info->pixels_cmt)
-       fprintf(file, "/*%s*/\n", info->pixels_cmt);
-
-    ErrorStatus = WritePixels(file, image->width, image->height, image->cpp,
-                             image->data, image->colorTable);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /* print extensions */
-    if (extensions)
-       WriteExtensions(file, info->extensions, info->nextensions);
-
-    /* close the array */
-    fprintf(file, "};\n");
-
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void
-WriteColors(
-  FILE*        file
-, XpmColor*    colors
-, unsigned int ncolors
-)
-#else
-static void
-WriteColors(file, colors, ncolors)
-    FILE *file;
-    XpmColor *colors;
-    unsigned int ncolors;
-#endif
-{
-    unsigned int a, key;
-    char *s;
-    char **defaults;
-
-    for (a = 0; a < ncolors; a++, colors++) {
-
-       defaults = (char **) colors;
-       fprintf(file, "\"%s", *defaults++);
-
-       for (key = 1; key <= NKEYS; key++, defaults++) {
-           if (s = *defaults)
-               fprintf(file, "\t%s %s", xpmColorKeys[key - 1], s);
-       }
-       fprintf(file, "\",\n");
-    }
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int WritePixels(
-  FILE*         file
-, unsigned int  width
-, unsigned int  height
-, unsigned int  cpp
-, unsigned int* pixels
-, XpmColor*     colors
-)
-#else
-static int
-WritePixels(file, width, height, cpp, pixels, colors)
-    FILE *file;
-    unsigned int width;
-    unsigned int height;
-    unsigned int cpp;
-    unsigned int *pixels;
-    XpmColor *colors;
-#endif
-{
-    char *s, *p, *buf;
-    unsigned int x, y, h;
-
-    h = height - 1;
-    p = buf = (char *) XpmMalloc(width * cpp + 3);
-    if (!buf)
-       return (XpmNoMemory);
-    *buf = '"';
-    p++;
-    for (y = 0; y < h; y++) {
-       s = p;
-       for (x = 0; x < width; x++, pixels++) {
-           strncpy(s, colors[*pixels].string, cpp);
-           s += cpp;
-       }
-       *s++ = '"';
-       *s = '\0';
-       fprintf(file, "%s,\n", buf);
-    }
-    /* duplicate some code to avoid a test in the loop */
-    s = p;
-    for (x = 0; x < width; x++, pixels++) {
-       strncpy(s, colors[*pixels].string, cpp);
-       s += cpp;
-    }
-    *s++ = '"';
-    *s = '\0';
-    fprintf(file, "%s", buf);
-
-    XpmFree(buf);
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void WriteExtensions(
-  FILE*         file
-, XpmExtension* ext
-, unsigned int  num
-)
-#else
-static void
-WriteExtensions(file, ext, num)
-    FILE *file;
-    XpmExtension *ext;
-    unsigned int num;
-#endif
-{
-    unsigned int x, y, n;
-    char **line;
-
-    for (x = 0; x < num; x++, ext++) {
-       fprintf(file, ",\n\"XPMEXT %s\"", ext->name);
-       n = ext->nlines;
-       for (y = 0, line = ext->lines; y < n; y++, line++)
-           fprintf(file, ",\n\"%s\"", *line);
-    }
-    fprintf(file, ",\n\"XPMENDEXT\"");
-}
-
-/*
- * open the given file to be written as an xpmData which is returned
- */
-#ifdef __OS2__
-#define popen fopen
-#define pclose fclose
-/* Visual Age cannot deal with old, non-ansi, code */
-static int OpenWriteFile(
-  char*    filename
-, xpmData* mdata
-)
-#else
-static int
-OpenWriteFile(filename, mdata)
-    char *filename;
-    xpmData *mdata;
-#endif
-{
-#ifndef NO_ZPIPE
-    char buf[BUFSIZ];
-
-#endif
-
-    if (!filename) {
-       mdata->stream.file = (stdout);
-       mdata->type = XPMFILE;
-    } else {
-#ifndef NO_ZPIPE
-       int len = strlen(filename);
-       if (len > 2 && !strcmp(".Z", filename + (len - 2))) {
-           sprintf(buf, "compress > \"%s\"", filename);
-           if (!(mdata->stream.file = popen(buf, "w")))
-               return (XpmOpenFailed);
-
-           mdata->type = XPMPIPE;
-       } else if (len > 3 && !strcmp(".gz", filename + (len - 3))) {
-           sprintf(buf, "gzip -q > \"%s\"", filename);
-           if (!(mdata->stream.file = popen(buf, "w")))
-               return (XpmOpenFailed);
-
-           mdata->type = XPMPIPE;
-       } else {
-#endif
-           if (!(mdata->stream.file = fopen(filename, "w")))
-               return (XpmOpenFailed);
-
-           mdata->type = XPMFILE;
-#ifndef NO_ZPIPE
-       }
-#endif
-    }
-    return (XpmSuccess);
-}
-
-/*
- * close the file related to the xpmData if any
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void xpmDataClose(xpmData* mdata)
-#else
-static void
-xpmDataClose(mdata)
-    xpmData *mdata;
-#endif
-{
-    switch (mdata->type) {
-    case XPMFILE:
-       if (mdata->stream.file != (stdout))
-           fclose(mdata->stream.file);
-       break;
-#ifndef NO_ZPIPE
-    case XPMPIPE:
-       pclose(mdata->stream.file);
-       break;
-#endif
-    }
-}
diff --git a/src/xpm/XpmI.h b/src/xpm/XpmI.h
deleted file mode 100644 (file)
index c5ebaeb..0000000
+++ /dev/null
@@ -1,348 +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.
- */
-
-/*****************************************************************************\
-* XpmI.h:                                                                     *
-*                                                                             *
-*  XPM library                                                                *
-*  Internal Include file                                                      *
-*                                                                             *
-*  ** Everything defined here is subject to changes any time. **              *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to FOR_MSW has been added by
- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
- */
-
-#ifndef XPMI_h
-#define XPMI_h
-
-#include "xpm.h"
-
-// Added by JACS for some compilers (no popen/pclose functions)
-#if defined(__WATCOMC__) || (!defined(WIN32) && defined(_MSC_VER)) || (!defined(WIN32) && defined(__BORLANDC__))
-#define NO_ZPIPE
-#endif
-
-/*
- * lets try to solve include files
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-/* stdio.h doesn't declare popen on a Sequent DYNIX OS */
-#ifdef sequent
-extern FILE *popen();
-#endif
-
-#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32)
-#include <string.h>
-
-#ifndef index
-#define index strchr
-#endif
-
-#ifndef rindex
-#define rindex strrchr
-#endif
-
-#else  /* defined(SYSV) || defined(SVR4) || defined(VMS) */
-#include <strings.h>
-#endif
-
-
-
-#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32)
-#ifndef bcopy
-#define bcopy(source, dest, count) memcpy(dest, source, count)
-#endif
-#ifndef bzero
-#define bzero(b, len) memset(b, 0, len)
-#endif
-#endif
-
-/* the following is defined in X11R6 but not in previous versions */
-#ifdef __alpha
-#ifndef LONG64
-#define LONG64
-#endif
-#endif
-
-#ifdef VMS
-#include <unixio.h>
-#include <file.h>
-#endif
-
-/* The following should help people wanting to use their own memory allocation
- * functions. To avoid the overhead of a function call when the standard
- * functions are used these are all macros, even the XpmFree function which
- * needs to be a real function for the outside world though.
- * So if change these be sure to change the XpmFree function in misc.c
- * accordingly.
- */
-#define XpmFree(ptr) free(ptr)
-
-#ifndef FOR_MSW
-#define XpmMalloc(size) malloc((size))
-#define XpmRealloc(ptr, size) realloc((ptr), (size))
-#define XpmCalloc(nelem, elsize) calloc((nelem), (elsize))
-#else
-/* checks for mallocs bigger than 64K */
-#define XpmMalloc(size) boundCheckingMalloc((long)(size))/* in simx.[ch] */
-#define XpmRealloc(ptr, size) boundCheckingRealloc((ptr),(long)(size))
-#define XpmCalloc(nelem, elsize) \
-               boundCheckingCalloc((long)(nelem),(long) (elsize))
-#endif
-
-#define XPMMAXCMTLEN BUFSIZ
-typedef struct {
-    unsigned int type;
-    union {
-       FILE *file;
-       char **data;
-    }     stream;
-    char *cptr;
-    unsigned int line;
-    int CommentLength;
-    char Comment[XPMMAXCMTLEN];
-    char *Bcmt, *Ecmt, Bos, Eos;
-    int format;                        /* 1 if XPM1, 0 otherwise */
-#ifdef CXPMPROG
-    int lineNum;
-    int charNum;
-#endif
-}      xpmData;
-
-#define XPMARRAY 0
-#define XPMFILE  1
-#define XPMPIPE  2
-#define XPMBUFFER 3
-
-#define EOL '\n'
-#define TAB '\t'
-#define SPC ' '
-
-typedef struct {
-    char *type;                        /* key word */
-    char *Bcmt;                        /* string beginning comments */
-    char *Ecmt;                        /* string ending comments */
-    char Bos;                  /* character beginning strings */
-    char Eos;                  /* character ending strings */
-    char *Strs;                        /* strings separator */
-    char *Dec;                 /* data declaration string */
-    char *Boa;                 /* string beginning assignment */
-    char *Eoa;                 /* string ending assignment */
-}      xpmDataType;
-
-extern xpmDataType xpmDataTypes[];
-
-/*
- * rgb values and ascii names (from rgb text file) rgb values,
- * range of 0 -> 65535 color mnemonic of rgb value
- */
-typedef struct {
-    int r, g, b;
-    char *name;
-}      xpmRgbName;
-
-/* Maximum number of rgb mnemonics allowed in rgb text file. */
-#define MAX_RGBNAMES 1024
-
-extern char *xpmColorKeys[];
-
-#define TRANSPARENT_COLOR "None"       /* this must be a string! */
-
-/* number of xpmColorKeys */
-#define NKEYS 5
-
-/* XPM internal routines */
-
-FUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
-FUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
-                                 XImage **image_return,
-                                 XImage **shapeimage_return,
-                                 XpmImage *image, XpmInfo *info,
-                                 XpmAttributes *attributes));
-
-FUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
-
-FUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
-
-FUNC(xpmInitXpmImage, void, (XpmImage *image));
-
-FUNC(xpmInitXpmInfo, void, (XpmInfo *info));
-
-FUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
-FUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
-FUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
-                             XpmInfo *info));
-
-#if !defined(FOR_MSW) && !defined(AMIGA)
-FUNC(xpmCreatePixmapFromImage, void, (Display *display, Drawable d,
-                                     XImage *ximage, Pixmap *pixmap_return));
-
-FUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
-                                     XImage **ximage_return,
-                                     unsigned int *width,
-                                     unsigned int *height));
-#endif
-
-/* structures and functions related to hastable code */
-
-typedef struct _xpmHashAtom {
-    char *name;
-    void *data;
-}      *xpmHashAtom;
-
-typedef struct {
-    int size;
-    int limit;
-    int used;
-    xpmHashAtom *atomTable;
-}      xpmHashTable;
-
-FUNC(xpmHashTableInit, int, (xpmHashTable *table));
-FUNC(xpmHashTableFree, void, (xpmHashTable *table));
-FUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
-FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
-
-#define HashAtomData(i) ((void *)i)
-#define HashColorIndex(slot) ((unsigned int)((*slot)->data))
-#define USE_HASHTABLE (cpp > 2 && ncolors > 4)
-
-/* I/O utility */
-
-FUNC(xpmNextString, int, (xpmData *mdata));
-FUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
-FUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
-
-#define xpmGetC(mdata) \
-       ((!mdata->type || mdata->type == XPMBUFFER) ? \
-        (*mdata->cptr++) : (getc(mdata->stream.file)))
-
-FUNC(xpmNextWord, unsigned int,
-     (xpmData *mdata, char *buf, unsigned int buflen));
-FUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
-FUNC(xpmParseHeader, int, (xpmData *mdata));
-FUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
-                          unsigned int *height, unsigned int *ncolors,
-                          unsigned int *cpp, unsigned int *x_hotspot,
-                          unsigned int *y_hotspot, unsigned int *hotspot,
-                          unsigned int *extensions));
-
-FUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
-                          unsigned int cpp, XpmColor **colorTablePtr,
-                          xpmHashTable *hashtable));
-
-FUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
-                              unsigned int *nextensions));
-
-/* RGB utility */
-
-FUNC(xpmReadRgbNames, int, (char *rgb_fname, xpmRgbName *rgbn));
-FUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
-                            int red, int green, int blue));
-FUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max));
-#ifdef FOR_MSW
-FUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
-#endif
-
-#ifndef AMIGA
-FUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
-                                     register XImage *img));
-FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
-                                    register XImage *img));
-
-/*
- * Macros
- *
- * The XYNORMALIZE macro determines whether XY format data requires
- * normalization and calls a routine to do so if needed. The logic in
- * this module is designed for LSBFirst byte and bit order, so
- * normalization is done as required to present the data in this order.
- *
- * The ZNORMALIZE macro performs byte and nibble order normalization if
- * required for Z format data.
- *
- * The XYINDEX macro computes the index to the starting byte (char) boundary
- * for a bitmap_unit containing a pixel with coordinates x and y for image
- * data in XY format.
- *
- * The ZINDEX* macros compute the index to the starting byte (char) boundary
- * for a pixel with coordinates x and y for image data in ZPixmap format.
- *
- */
-
-#define XYNORMALIZE(bp, img) \
-    if ((img->byte_order == MSBFirst) || (img->bitmap_bit_order == MSBFirst)) \
-       xpm_xynormalizeimagebits((unsigned char *)(bp), img)
-
-#define ZNORMALIZE(bp, img) \
-    if (img->byte_order == MSBFirst) \
-       xpm_znormalizeimagebits((unsigned char *)(bp), img)
-
-#define XYINDEX(x, y, img) \
-    ((y) * img->bytes_per_line) + \
-    (((x) + img->xoffset) / img->bitmap_unit) * (img->bitmap_unit >> 3)
-
-#define ZINDEX(x, y, img) ((y) * img->bytes_per_line) + \
-    (((x) * img->bits_per_pixel) >> 3)
-
-#define ZINDEX32(x, y, img) ((y) * img->bytes_per_line) + ((x) << 2)
-
-#define ZINDEX16(x, y, img) ((y) * img->bytes_per_line) + ((x) << 1)
-
-#define ZINDEX8(x, y, img) ((y) * img->bytes_per_line) + (x)
-
-#define ZINDEX1(x, y, img) ((y) * img->bytes_per_line) + ((x) >> 3)
-#endif /* not AMIGA */
-
-#ifdef __STDC__
-#define Const const
-#else
-#define Const /**/
-#endif
-
-#ifdef NEED_STRDUP
-FUNC(xpmstrdup, char *, (char *s1));
-#else
-#undef xpmstrdup
-#define xpmstrdup strdup
-#endif
-
-#ifdef NEED_STRCASECMP                   
-FUNC(xpmstrcasecmp, int, (char *s1, char *s2));
-#else
-#undef xpmstrcasecmp
-#define xpmstrcasecmp strcasecmp
-#endif
-
-FUNC(xpmatoui, unsigned int,
-     (char *p, unsigned int l, unsigned int *ui_return));
-
-#endif
diff --git a/src/xpm/changes b/src/xpm/changes
deleted file mode 100644 (file)
index b90e6cd..0000000
+++ /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 <Uwe.Langenkamp@t-online.de>
-        - 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 <d93-hyo@nada.kth.se>
-         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 <jan@swi.psy.uva.nl>
-       - 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 <cthomp@cs.uiuc.edu>
-       - 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 <cthomp@cs.uiuc.edu>
-       - 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 <parn@fgm.com>
-       - the compilation and the shared library building should be smoother
-         on Alpha OSF/1.
-                 - patch from Dale Moore <Dale.Moore@CS.cmu.edu>
-
-    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 <Fredrik_Lundh@ivab.se>
-       - 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 <X11/xpm.h> 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 <hedu@cul-ipn.uni-kiel.de>
-         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 <gildea@x.org>
-         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 <dean@falcon.natinst.com>
-
-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 <martins@hplhasm.hpl.hp.com>
-       - 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 <detlef@mfr.dec.com>
-
-    ENHANCEMENTS:
-       - gzip and gunzip are called with the -q option (quiet)
-               - patch from Chris P. Ross <cross@eng.umd.edu>
-       - 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 <detlef@mfr.dec.com>
-       - 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 <gnohmon@ssiny.com>
-               * xpmview to display a list of Xpm files from
-                        Jean Michel Leon <leon@sophia.inria.fr>
-
-               a hacky string to pixmap converter, provided by
-                       Robert H. Forsman Jr.  <thoth@manatee.cis.ufl.edu>
-
-               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 <jasonp@fitmail.fit.qut.edu.au>
-       - sxpm has 2 new options:
-                -nom to do not display the mask if there is one
-                -cp <color> <pixel> 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 <jasonp@fitmail.fit.qut.edu.au>
-
-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 <jasonp@fitmail.qut.edu.au>
-
-    BUGS CORRECTED:
-       - fixed bug where redefining "None" as a pixel stopped mask generation
-       - minor SVR4 defines for <string.h>
-       - 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 <jasonp@fitmail.qut.edu.au>
-
-       - the top Imakefile was missing the depend target
-       - sxpm/Imakefile fixed so that -L../lib is set before the standard
-         library location.
-               - Vivek Khera <khera@cs.duke.edu>
-
-       - lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent
-         versions of VMS)
-               - J. Daniel Smith <dsmith@ann-arbor.applicon.slb.com>
-
-       - 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 <cjeffery@cs.arizona.edu>
-
-    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 <joe@takeFive.co.at>
-       - isspace was called on getc which fails when EOF is returned.
-               - Marelli Paolo <marelli@colos3.usr.dsi.unimi.it>
-
-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 <lich@zellweger.ch>
-       - 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 <dgreen@sti.com>
-       - added "close colors" support and ability to redefine color values
-         as pixels at load time, as well as color names
-               - Jason Patterson <jasonp@fitmail.qut.edu.au>
-       - 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 <jasonp@fitmail.qut.edu.au>
-
-    BUGS CORRECTED:
-       - SVR4 defines for including <string.h> instead of <strings.h>
-               - Jason Patterson <jasonp@fitmail.qut.edu.au>
-       - attributes->extensions and attributes->nextensions fields were not 
-         set correctly when no extensions present in file.
-               - Simon_Scott Cornish <cornish@ecr.mu.oz.au>
-
-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
-           <klute@irb.informatik.uni-dortmund.de>
-       - xpmP.h declares popen for Sequent platforms - Clinton Jeffery
-          <cjeffery@cs.arizona.edu>
-       - 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 <sinkwitz@ifi.unizh.ch>):
-
-       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 <sinkwitz@ifi.unizh.ch>.
-
-
-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 <rhess%pleione%cimshop@uunet.UU.NET>
-       - 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
-       <paul@mecazh.uucp>,
-       - 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 <mark@zok.uucp>.
-
-    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/src/xpm/copyrigh.t b/src/xpm/copyrigh.t
deleted file mode 100644 (file)
index 446fa4c..0000000
+++ /dev/null
@@ -1,31 +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.
- */
-
-Arnaud LE HORS      BULL Research FRANCE -- Koala Project 
-                    (XPM - X PixMap format version 2 & 3)
-    Internet:       lehors@sophia.inria.fr
-Surface Mail:       Arnaud LE HORS, INRIA - Sophia Antipolis, 
-                    2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE
- Voice phone:       (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F
diff --git a/src/xpm/create.c b/src/xpm/create.c
deleted file mode 100644 (file)
index a667eb8..0000000
+++ /dev/null
@@ -1,2865 +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.
- */
-
-/*****************************************************************************\
-* create.c:                                                                   *
-*                                                                             *
-*  XPM library                                                                *
-*  Create an X image and possibly its related shape mask                      *
-*  from the given XpmImage.                                                   *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to FOR_MSW has been added by
- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
- */
-
-/*
- * The code related to AMIGA has been added by
- * Lorens Younes (d93-hyo@nada.kth.se) 4/96
- */
-
-#include "XpmI.h"
-#include <ctype.h>
-
-LFUNC(xpmVisualType, int, (Visual *visual));
-
-LFUNC(AllocColor, int, (Display *display, Colormap colormap,
-                       char *colorname, XColor *xcolor, void *closure));
-LFUNC(FreeColors, int, (Display *display, Colormap colormap,
-                       Pixel *pixels, int n, void *closure));
-
-#ifndef FOR_MSW
-LFUNC(SetCloseColor, int, (Display *display, Colormap colormap,
-                          Visual *visual, XColor *col,
-                          Pixel *image_pixel, Pixel *mask_pixel,
-                          Pixel *alloc_pixels, unsigned int *nalloc_pixels,
-                          XpmAttributes *attributes, XColor *cols, int ncols,
-                          XpmAllocColorFunc allocColor, void *closure));
-#else
-/* let the window system take care of close colors */
-#endif
-
-LFUNC(SetColor, int, (Display *display, Colormap colormap, Visual *visual,
-                     char *colorname, unsigned int color_index,
-                     Pixel *image_pixel, Pixel *mask_pixel,
-                     unsigned int *mask_pixel_index,
-                     Pixel *alloc_pixels, unsigned int *nalloc_pixels,
-                     Pixel *used_pixels, unsigned int *nused_pixels,
-                     XpmAttributes *attributes, XColor *cols, int ncols,
-                     XpmAllocColorFunc allocColor, void *closure));
-
-LFUNC(CreateXImage, int, (Display *display, Visual *visual,
-                         unsigned int depth, int format, unsigned int width,
-                          unsigned int height, XImage **image_return));
-
-LFUNC(CreateColors, int, (Display *display, XpmAttributes *attributes,
-                          XpmColor *colors, unsigned int ncolors,
-                          Pixel *image_pixels, Pixel *mask_pixels,
-                          unsigned int *mask_pixel_index,
-                          Pixel *alloc_pixels, unsigned int *nalloc_pixels,
-                          Pixel *used_pixels, unsigned int *nused_pixels));
-
-#ifndef FOR_MSW
-LFUNC(ParseAndPutPixels, int, (xpmData *data, unsigned int width,
-                              unsigned int height, unsigned int ncolors,
-                              unsigned int cpp, XpmColor *colorTable,
-                              xpmHashTable *hashtable,
-                              XImage *image, Pixel *image_pixels,
-                              XImage *mask, Pixel *mask_pixels));
-#else  /* FOR_MSW */
-LFUNC(ParseAndPutPixels, int, (Display *dc, xpmData *data, unsigned int width,
-                              unsigned int height, unsigned int ncolors,
-                              unsigned int cpp, XpmColor *colorTable,
-                              xpmHashTable *hashtable,
-                              XImage *image, Pixel *image_pixels,
-                              XImage *mask, Pixel *mask_pixels));
-#endif
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-/* XImage pixel routines */
-LFUNC(PutImagePixels, void, (XImage *image, unsigned int width,
-                            unsigned int height, unsigned int *pixelindex,
-                            Pixel *pixels));
-
-LFUNC(PutImagePixels32, void, (XImage *image, unsigned int width,
-                              unsigned int height, unsigned int *pixelindex,
-                              Pixel *pixels));
-
-LFUNC(PutImagePixels16, void, (XImage *image, unsigned int width,
-                              unsigned int height, unsigned int *pixelindex,
-                              Pixel *pixels));
-
-LFUNC(PutImagePixels8, void, (XImage *image, unsigned int width,
-                             unsigned int height, unsigned int *pixelindex,
-                             Pixel *pixels));
-
-LFUNC(PutImagePixels1, void, (XImage *image, unsigned int width,
-                             unsigned int height, unsigned int *pixelindex,
-                             Pixel *pixels));
-
-LFUNC(PutPixel1, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel32, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel32MSB, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel32LSB, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel16MSB, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel16LSB, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel8, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel1MSB, int, (XImage *ximage, int x, int y, unsigned long pixel));
-LFUNC(PutPixel1LSB, int, (XImage *ximage, int x, int y, unsigned long pixel));
-
-# else /* AMIGA */
-LFUNC(APutImagePixels, void, (XImage *ximage, unsigned int width,
-                             unsigned int height, unsigned int *pixelindex,
-                             Pixel *pixels));
-# endif/* AMIGA */
-#else  /* FOR_MSW */
-/* FOR_MSW pixel routine */
-LFUNC(MSWPutImagePixels, void, (Display *dc, XImage *image,
-                               unsigned int width, unsigned int height,
-                               unsigned int *pixelindex, Pixel *pixels));
-#endif /* FOR_MSW */
-
-#ifdef NEED_STRCASECMP
-FUNC(xpmstrcasecmp, int, (char *s1, char *s2));
-
-/*
- * in case strcasecmp is not provided by the system here is one
- * which does the trick
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmstrcasecmp(register char* s1, register char* s2)
-#else
-int
-xpmstrcasecmp(s1, s2)
-    register char *s1, *s2;
-#endif
-{
-    register int c1, c2;
-
-    while (*s1 && *s2) {
-       c1 = tolower(*s1);
-       c2 = tolower(*s2);
-       if (c1 != c2)
-           return (c1 - c2);
-       s1++;
-       s2++;
-    }
-    return (int) (*s1 - *s2);
-}
-
-#endif
-
-/*
- * return the default color key related to the given visual
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int xpmVisualType(Visual* visual)
-#else
-static int
-xpmVisualType(visual)
-    Visual *visual;
-#endif
-{
-#ifndef FOR_MSW
-# ifndef AMIGA
-    switch (visual->class) {
-    case StaticGray:
-    case GrayScale:
-       switch (visual->map_entries) {
-       case 2:
-           return (XPM_MONO);
-       case 4:
-           return (XPM_GRAY4);
-       default:
-           return (XPM_GRAY);
-       }
-    default:
-       return (XPM_COLOR);
-    }
-# else
-    /* set the key explicitly in the XpmAttributes to override this */
-    return (XPM_COLOR);
-# endif
-#else
-    /* there should be a similar switch for MSW */
-    return (XPM_COLOR);
-#endif
-}
-
-
-typedef struct {
-    int cols_index;
-    long closeness;
-}      CloseColor;
-
-#ifndef FOR_MSW
-static int closeness_cmp(Const void* a, Const void* b)
-{
-    CloseColor *x = (CloseColor *) a, *y = (CloseColor *) b;
-
-    /* cast to int as qsort requires */
-    return (int) (x->closeness - y->closeness);
-}
-#endif
-
-
-/* default AllocColor function:
- *   call XParseColor if colorname is given, return negative value if failure
- *   call XAllocColor and return 0 if failure, positive otherwise
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-AllocColor(
-  Display*      display
-, Colormap      colormap
-, char*         colorname
-, XColor*       xcolor
-, void*         closure
-)
-#else
-static int
-AllocColor(display, colormap, colorname, xcolor, closure)
-    Display *display;
-    Colormap colormap;
-    char *colorname;
-    XColor *xcolor;
-    void *closure;             /* not used */
-#endif
-{
-    int status;
-    if (colorname)
-#ifdef __OS2__
-       if (!XParseColor(display, &colormap, colorname, xcolor))
-           return -1;
-    status = XAllocColor(display, &colormap, xcolor);
-#else
-       if (!XParseColor(display, colormap, colorname, xcolor))
-           return -1;
-    status = XAllocColor(display, colormap, xcolor);
-#endif
-    return status != 0 ? 1 : 0;
-}
-
-
-#ifndef FOR_MSW
-/*
- * set a close color in case the exact one can't be set
- * return 0 if success, 1 otherwise.
- */
-
-static int
-SetCloseColor(display, colormap, visual, col, image_pixel, mask_pixel,
-             alloc_pixels, nalloc_pixels, attributes, cols, ncols,
-             allocColor, closure)
-    Display *display;
-    Colormap colormap;
-    Visual *visual;
-    XColor *col;
-    Pixel *image_pixel, *mask_pixel;
-    Pixel *alloc_pixels;
-    unsigned int *nalloc_pixels;
-    XpmAttributes *attributes;
-    XColor *cols;
-    int ncols;
-    XpmAllocColorFunc allocColor;
-    void *closure;
-{
-
-    /*
-     * Allocation failed, so try close colors. To get here the visual must
-     * be GreyScale, PseudoColor or DirectColor (or perhaps StaticColor?
-     * What about sharing systems like QDSS?). Beware: we have to treat
-     * DirectColor differently.
-     */
-
-
-    long int red_closeness, green_closeness, blue_closeness;
-    int n;
-    Bool alloc_color;
-
-    if (attributes && (attributes->valuemask & XpmCloseness))
-       red_closeness = green_closeness = blue_closeness =
-           attributes->closeness;
-    else {
-       red_closeness = attributes->red_closeness;
-       green_closeness = attributes->green_closeness;
-       blue_closeness = attributes->blue_closeness;
-    }
-    if (attributes && (attributes->valuemask & XpmAllocCloseColors))
-       alloc_color = attributes->alloc_close_colors;
-    else
-       alloc_color = True;
-
-    /*
-     * We sort the colormap by closeness and try to allocate the color
-     * closest to the target. If the allocation of this close color fails,
-     * which almost never happens, then one of two scenarios is possible.
-     * Either the colormap must have changed (since the last close color
-     * allocation or possibly while we were sorting the colormap), or the
-     * color is allocated as Read/Write by some other client. (Note: X
-     * _should_ allow clients to check if a particular color is Read/Write,
-     * but it doesn't! :-( ). We cannot determine which of these scenarios
-     * occurred, so we try the next closest color, and so on, until no more
-     * colors are within closeness of the target. If we knew that the
-     * colormap had changed, we could skip this sequence.
-     *
-     * If _none_ of the colors within closeness of the target can be allocated,
-     * then we can finally be pretty sure that the colormap has actually
-     * changed. In this case we try to allocate the original color (again),
-     * then try the closecolor stuff (again)...
-     *
-     * In theory it would be possible for an infinite loop to occur if another
-     * process kept changing the colormap every time we sorted it, so we set
-     * a maximum on the number of iterations. After this many tries, we use
-     * XGrabServer() to ensure that the colormap remains unchanged.
-     *
-     * This approach gives particularly bad worst case performance - as many as
-     * <MaximumIterations> colormap reads and sorts may be needed, and as
-     * many as <MaximumIterations> * <ColormapSize> attempted allocations
-     * may fail. On an 8-bit system, this means as many as 3 colormap reads,
-     * 3 sorts and 768 failed allocations per execution of this code!
-     * Luckily, my experiments show that in general use in a typical 8-bit
-     * color environment only about 1 in every 10000 allocations fails to
-     * succeed in the fastest possible time. So virtually every time what
-     * actually happens is a single sort followed by a successful allocate.
-     * The very first allocation also costs a colormap read, but no further
-     * reads are usually necessary.
-     */
-
-#define ITERATIONS 2                   /* more than one is almost never
-                                        * necessary */
-
-    for (n = 0; n <= ITERATIONS; ++n) {
-       CloseColor *closenesses =
-           (CloseColor *) XpmCalloc(ncols, sizeof(CloseColor));
-       int i, c;
-
-       for (i = 0; i < ncols; ++i) {   /* build & sort closenesses table */
-#define COLOR_FACTOR       3
-#define BRIGHTNESS_FACTOR  1
-
-           closenesses[i].cols_index = i;
-           closenesses[i].closeness =
-               COLOR_FACTOR * (abs((long) col->red - (long) cols[i].red)
-                               + abs((long) col->green - (long) cols[i].green)
-                               + abs((long) col->blue - (long) cols[i].blue))
-               + BRIGHTNESS_FACTOR * abs(((long) col->red +
-                                          (long) col->green +
-                                          (long) col->blue)
-                                          - ((long) cols[i].red +
-                                             (long) cols[i].green +
-                                             (long) cols[i].blue));
-       }
-       qsort(closenesses, ncols, sizeof(CloseColor), closeness_cmp);
-
-       i = 0;
-       c = closenesses[i].cols_index;
-       while ((long) cols[c].red >= (long) col->red - red_closeness &&
-              (long) cols[c].red <= (long) col->red + red_closeness &&
-              (long) cols[c].green >= (long) col->green - green_closeness &&
-              (long) cols[c].green <= (long) col->green + green_closeness &&
-              (long) cols[c].blue >= (long) col->blue - blue_closeness &&
-              (long) cols[c].blue <= (long) col->blue + blue_closeness) {
-           if (alloc_color) {
-               if ((*allocColor)(display, colormap, NULL, &cols[c], closure)){
-                   if (n == ITERATIONS)
-                       XUngrabServer(display);
-                   XpmFree(closenesses);
-                   *image_pixel = cols[c].pixel;
-                   *mask_pixel = 1;
-                   alloc_pixels[(*nalloc_pixels)++] = cols[c].pixel;
-                   return (0);
-               } else {
-                   ++i;
-                   if (i == ncols)
-                       break;
-                   c = closenesses[i].cols_index;
-               }
-           } else {
-               if (n == ITERATIONS)
-                   XUngrabServer(display);
-               XpmFree(closenesses);
-               *image_pixel = cols[c].pixel;
-               *mask_pixel = 1;
-               return (0);
-           }
-       }
-
-       /* Couldn't allocate _any_ of the close colors! */
-
-       if (n == ITERATIONS)
-           XUngrabServer(display);
-       XpmFree(closenesses);
-
-       if (i == 0 || i == ncols)       /* no color close enough or cannot */
-           return (1);                 /* alloc any color (full of r/w's) */
-
-       if ((*allocColor)(display, colormap, NULL, col, closure)) {
-           *image_pixel = col->pixel;
-           *mask_pixel = 1;
-           alloc_pixels[(*nalloc_pixels)++] = col->pixel;
-           return (0);
-       } else {                        /* colormap has probably changed, so
-                                        * re-read... */
-           if (n == ITERATIONS - 1)
-               XGrabServer(display);
-
-#if 0
-           if (visual->class == DirectColor) {
-               /* TODO */
-           } else
-#endif
-               XQueryColors(display, colormap, cols, ncols);
-       }
-    }
-    return (1);
-}
-
-#define USE_CLOSECOLOR attributes && \
-(((attributes->valuemask & XpmCloseness) && attributes->closeness != 0) \
- || ((attributes->valuemask & XpmRGBCloseness) && \
-     (attributes->red_closeness != 0 \
-      || attributes->green_closeness != 0 \
-      || attributes->blue_closeness != 0)))
-
-#else
-    /* FOR_MSW part */
-    /* nothing to do here, the window system does it */
-#endif
-
-/*
- * set the color pixel related to the given colorname,
- * return 0 if success, 1 otherwise.
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-SetColor(
-  Display*          display
-, Colormap          colormap
-, Visual*           visual
-, char*             colorname
-, unsigned int      color_index
-, Pixel*            image_pixel
-, Pixel*            mask_pixel
-, unsigned int*     mask_pixel_index
-, Pixel*            alloc_pixels
-, unsigned int*     nalloc_pixels
-, Pixel*            used_pixels
-, unsigned int*     nused_pixels
-, XpmAttributes*    attributes
-, XColor*           cols
-, int               ncols
-, XpmAllocColorFunc allocColor
-, void*             closure
-)
-#else
-static int
-SetColor(display, colormap, visual, colorname, color_index,
-        image_pixel, mask_pixel, mask_pixel_index,
-        alloc_pixels, nalloc_pixels, used_pixels, nused_pixels,
-        attributes, cols, ncols, allocColor, closure)
-    Display *display;
-    Colormap colormap;
-    Visual *visual;
-    char *colorname;
-    unsigned int color_index;
-    Pixel *image_pixel, *mask_pixel;
-    unsigned int *mask_pixel_index;
-    Pixel *alloc_pixels;
-    unsigned int *nalloc_pixels;
-    Pixel *used_pixels;
-    unsigned int *nused_pixels;
-    XpmAttributes *attributes;
-    XColor *cols;
-    int ncols;
-    XpmAllocColorFunc allocColor;
-    void *closure;
-#endif
-{
-    XColor xcolor;
-    int status;
-
-    if (xpmstrcasecmp(colorname, TRANSPARENT_COLOR)) {
-       status = (*allocColor)(display, colormap, colorname, &xcolor, closure);
-       if (status < 0)         /* parse color failed */
-           return (1);
-
-       if (status == 0) {
-#ifndef FOR_MSW
-           if (USE_CLOSECOLOR)
-               return (SetCloseColor(display, colormap, visual, &xcolor,
-                                     image_pixel, mask_pixel,
-                                     alloc_pixels, nalloc_pixels,
-                                     attributes, cols, ncols,
-                                     allocColor, closure));
-           else
-#endif /* ndef FOR_MSW */
-               return (1);
-       } else
-           alloc_pixels[(*nalloc_pixels)++] = xcolor.pixel;
-       *image_pixel = xcolor.pixel;
-#ifndef FOR_MSW
-       *mask_pixel = 1;
-#else
-#ifdef __OS2__
-       *mask_pixel = OS2RGB(0,0,0);
-#else
-       *mask_pixel = RGB(0,0,0);
-#endif
-#endif
-       used_pixels[(*nused_pixels)++] = xcolor.pixel;
-    } else {
-       *image_pixel = 0;
-#ifndef FOR_MSW
-       *mask_pixel = 0;
-#else
-#ifdef __OS2__
-    *mask_pixel = OS2RGB(255,255,255);
-#else
-    *mask_pixel = RGB(255,255,255);
-#endif
-#endif
-       /* store the color table index */
-       *mask_pixel_index = color_index;
-    }
-    return (0);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-CreateColors(
-  Display*          display
-, XpmAttributes*    attributes
-, XpmColor*         colors
-, unsigned int      ncolors
-, Pixel*            image_pixels
-, Pixel*            mask_pixels
-, unsigned int*     mask_pixel_index
-, Pixel*            alloc_pixels
-, unsigned int*     nalloc_pixels
-, Pixel*            used_pixels
-, unsigned int*     nused_pixels
-)
-#else
-static int
-CreateColors(display, attributes, colors, ncolors, image_pixels, mask_pixels,
-             mask_pixel_index, alloc_pixels, nalloc_pixels,
-             used_pixels, nused_pixels)
-    Display *display;
-    XpmAttributes *attributes;
-    XpmColor *colors;
-    unsigned int ncolors;
-    Pixel *image_pixels;
-    Pixel *mask_pixels;
-    unsigned int *mask_pixel_index;
-    Pixel *alloc_pixels;
-    unsigned int *nalloc_pixels;
-    Pixel *used_pixels;
-    unsigned int *nused_pixels;
-#endif
-{
-    /* variables stored in the XpmAttributes structure */
-    Visual *visual;
-    Colormap colormap;
-    XpmColorSymbol *colorsymbols;
-    unsigned int numsymbols;
-    XpmAllocColorFunc allocColor;
-    void *closure;
-
-    char *colorname;
-    unsigned int color, key;
-    Bool pixel_defined;
-    XpmColorSymbol *symbol;
-    char **defaults;
-    int ErrorStatus = XpmSuccess;
-    char *s;
-    int default_index;
-
-    XColor *cols = NULL;
-    unsigned int ncols = 0;
-
-    /*
-     * retrieve information from the XpmAttributes
-     */
-    if (attributes && attributes->valuemask & XpmColorSymbols) {
-       colorsymbols = attributes->colorsymbols;
-       numsymbols = attributes->numsymbols;
-    } else
-       numsymbols = 0;
-
-    if (attributes && attributes->valuemask & XpmVisual)
-       visual = attributes->visual;
-    else
-       visual = XDefaultVisual(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmColormap))
-       colormap = attributes->colormap;
-    else
-       colormap = XDefaultColormap(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmColorKey))
-       key = attributes->color_key;
-    else
-       key = xpmVisualType(visual);
-
-    if (attributes && (attributes->valuemask & XpmAllocColor))
-       allocColor = attributes->alloc_color;
-    else
-       allocColor = AllocColor;
-    if (attributes && (attributes->valuemask & XpmColorClosure))
-       closure = attributes->color_closure;
-    else
-       closure = NULL;
-
-#ifndef FOR_MSW
-    if (USE_CLOSECOLOR) {
-       /* originally from SetCloseColor */
-#if 0
-       if (visual->class == DirectColor) {
-
-           /*
-            * TODO: Implement close colors for DirectColor visuals. This is
-            * difficult situation. Chances are that we will never get here,
-            * because any machine that supports DirectColor will probably
-            * also support TrueColor (and probably PseudoColor). Also,
-            * DirectColor colormaps can be very large, so looking for close
-            * colors may be too slow.
-            */
-       } else {
-#endif
-           int i;
-
-#ifndef AMIGA
-           ncols = visual->map_entries;
-#else
-           ncols = colormap->Count;
-#endif
-           cols = (XColor *) XpmCalloc(ncols, sizeof(XColor));
-           for (i = 0; i < ncols; ++i)
-               cols[i].pixel = i;
-           XQueryColors(display, colormap, cols, ncols);
-#if 0
-       }
-#endif
-    }
-#endif /* ndef FOR_MSW */
-
-    switch (key) {
-    case XPM_MONO:
-       default_index = 2;
-       break;
-    case XPM_GRAY4:
-       default_index = 3;
-       break;
-    case XPM_GRAY:
-       default_index = 4;
-       break;
-    case XPM_COLOR:
-    default:
-       default_index = 5;
-       break;
-    }
-
-    for (color = 0; color < ncolors; color++, colors++,
-                                        image_pixels++, mask_pixels++) {
-       colorname = NULL;
-       pixel_defined = False;
-       defaults = (char **) colors;
-
-       /*
-        * look for a defined symbol
-        */
-       if (numsymbols) {
-
-           unsigned int n;
-
-           s = defaults[1];
-           for (n = 0, symbol = colorsymbols; n < numsymbols; n++, symbol++) {
-               if (symbol->name && s && !strcmp(symbol->name, s))
-                   /* override name */
-                   break;
-               if (!symbol->name && symbol->value) {   /* override value */
-                   int def_index = default_index;
-
-                   while (defaults[def_index] == NULL) /* find defined
-                                                        * colorname */
-                       --def_index;
-                   if (def_index < 2) {/* nothing towards mono, so try
-                                        * towards color */
-                       def_index = default_index + 1;
-                       while (def_index <= 5 && defaults[def_index] == NULL)
-                           ++def_index;
-                   }
-                   if (def_index >= 2 && defaults[def_index] != NULL &&
-                       !xpmstrcasecmp(symbol->value, defaults[def_index]))
-                       break;
-               }
-           }
-           if (n != numsymbols) {
-               if (symbol->name && symbol->value)
-                   colorname = symbol->value;
-               else
-                   pixel_defined = True;
-           }
-       }
-       if (!pixel_defined) {           /* pixel not given as symbol value */
-
-           unsigned int k;
-
-           if (colorname) {            /* colorname given as symbol value */
-               if (!SetColor(display, colormap, visual, colorname, color,
-                             image_pixels, mask_pixels, mask_pixel_index,
-                             alloc_pixels, nalloc_pixels, used_pixels,
-                             nused_pixels, attributes, cols, ncols,
-                             allocColor, closure))
-                   pixel_defined = True;
-               else
-                   ErrorStatus = XpmColorError;
-           }
-           k = key;
-           while (!pixel_defined && k > 1) {
-               if (defaults[k]) {
-                   if (!SetColor(display, colormap, visual, defaults[k],
-                                 color, image_pixels, mask_pixels,
-                                 mask_pixel_index, alloc_pixels,
-                                 nalloc_pixels, used_pixels, nused_pixels,
-                                 attributes, cols, ncols,
-                                 allocColor, closure)) {
-                       pixel_defined = True;
-                       break;
-                   } else
-                       ErrorStatus = XpmColorError;
-               }
-               k--;
-           }
-           k = key + 1;
-           while (!pixel_defined && k < NKEYS + 1) {
-               if (defaults[k]) {
-                   if (!SetColor(display, colormap, visual, defaults[k],
-                                 color, image_pixels, mask_pixels,
-                                 mask_pixel_index, alloc_pixels,
-                                 nalloc_pixels, used_pixels, nused_pixels,
-                                 attributes, cols, ncols,
-                                 allocColor, closure)) {
-                       pixel_defined = True;
-                       break;
-                   } else
-                       ErrorStatus = XpmColorError;
-               }
-               k++;
-           }
-           if (!pixel_defined) {
-               if (cols)
-                   XpmFree(cols);
-               return (XpmColorFailed);
-           }
-       } else {
-           /* simply use the given pixel */
-           *image_pixels = symbol->pixel;
-           /* the following makes the mask to be built even if none
-              is given a particular pixel */
-           if (symbol->value
-               && !xpmstrcasecmp(symbol->value, TRANSPARENT_COLOR)) {
-               *mask_pixels = 0;
-               *mask_pixel_index = color;
-           } else
-               *mask_pixels = 1;
-           used_pixels[(*nused_pixels)++] = *image_pixels;
-       }
-    }
-    if (cols)
-       XpmFree(cols);
-    return (ErrorStatus);
-}
-
-
-/* default FreeColors function, simply call XFreeColors */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-FreeColors(
-  Display*      display
-, Colormap      colormap
-, Pixel*        pixels
-, int           n
-, void*         closure
-)
-#else
-static int
-FreeColors(display, colormap, pixels, n, closure)
-    Display *display;
-    Colormap colormap;
-    Pixel *pixels;
-    int n;
-    void *closure;             /* not used */
-#endif
-{
-    return XFreeColors(display, colormap, pixels, n, 0);
-}
-
-
-/* function call in case of error */
-#undef RETURN
-#define RETURN(status) \
-{ \
-      ErrorStatus = status; \
-      goto error; \
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateImageFromXpmImage(
-  Display*       display
-, XpmImage*      image
-, XImage**       image_return
-, XImage**       shapeimage_return
-, XpmAttributes* attributes
-)
-#else
-int
-XpmCreateImageFromXpmImage(display, image,
-                          image_return, shapeimage_return, attributes)
-    Display *display;
-    XpmImage *image;
-    XImage **image_return;
-    XImage **shapeimage_return;
-    XpmAttributes *attributes;
-#endif
-{
-#ifdef __OS2__
-     HAB          hab = WinQueryAnchorBlock(HWND_DESKTOP);
-     HPS          hps;
-     SIZEL        sizl = {0, 0};
-#endif
-    /* variables stored in the XpmAttributes structure */
-    Visual *visual;
-    Colormap colormap;
-    unsigned int depth;
-    int bitmap_format;
-    XpmFreeColorsFunc freeColors;
-    void *closure;
-
-    /* variables to return */
-    XImage *ximage = NULL;
-    XImage *shapeimage = NULL;
-    unsigned int mask_pixel_index = XpmUndefPixel;
-    int ErrorStatus;
-
-    /* calculation variables */
-    Pixel *image_pixels = NULL;
-    Pixel *mask_pixels = NULL;
-    Pixel *alloc_pixels = NULL;
-    Pixel *used_pixels = NULL;
-    unsigned int nalloc_pixels = 0;
-    unsigned int nused_pixels = 0;
-
-    /* initialize return values */
-    if (image_return)
-       *image_return = NULL;
-    if (shapeimage_return)
-       *shapeimage_return = NULL;
-
-    /* retrieve information from the XpmAttributes */
-    if (attributes && (attributes->valuemask & XpmVisual))
-       visual = attributes->visual;
-    else
-       visual = XDefaultVisual(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmColormap))
-       colormap = attributes->colormap;
-    else
-       colormap = XDefaultColormap(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmDepth))
-       depth = attributes->depth;
-    else
-       depth = XDefaultDepth(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmBitmapFormat))
-       bitmap_format = attributes->bitmap_format;
-    else
-       bitmap_format = ZPixmap;
-
-    if (attributes && (attributes->valuemask & XpmFreeColors))
-       freeColors = attributes->free_colors;
-    else
-       freeColors = FreeColors;
-    if (attributes && (attributes->valuemask & XpmColorClosure))
-       closure = attributes->color_closure;
-    else
-       closure = NULL;
-
-    ErrorStatus = XpmSuccess;
-
-    /* malloc pixels index tables */
-    image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
-    if (!image_pixels)
-       return (XpmNoMemory);
-
-    mask_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
-    if (!mask_pixels)
-       RETURN(XpmNoMemory);
-
-    /* maximum of allocated pixels will be the number of colors */
-    alloc_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
-    if (!alloc_pixels)
-       RETURN(XpmNoMemory);
-
-    /* maximum of allocated pixels will be the number of colors */
-    used_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
-    if (!used_pixels)
-       RETURN(XpmNoMemory);
-
-    /* get pixel colors, store them in index tables */
-    ErrorStatus = CreateColors(display, attributes, image->colorTable,
-                              image->ncolors, image_pixels, mask_pixels,
-                              &mask_pixel_index, alloc_pixels, &nalloc_pixels,
-                              used_pixels, &nused_pixels);
-
-    if (ErrorStatus != XpmSuccess
-       && (ErrorStatus < 0 || (attributes
-                               && (attributes->valuemask & XpmExactColors)
-                               && attributes->exactColors)))
-       RETURN(ErrorStatus);
-
-    /* create the ximage */
-    if (image_return) {
-       ErrorStatus = CreateXImage(display, visual, depth,
-                                  (depth == 1 ? bitmap_format : ZPixmap),
-                                  image->width, image->height, &ximage);
-       if (ErrorStatus != XpmSuccess)
-           RETURN(ErrorStatus);
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-
-       /*
-        * set the ximage data using optimized functions for ZPixmap
-        */
-
-       if (ximage->bits_per_pixel == 8)
-           PutImagePixels8(ximage, image->width, image->height,
-                           image->data, image_pixels);
-       else if (((ximage->bits_per_pixel | ximage->depth) == 1) &&
-                (ximage->byte_order == ximage->bitmap_bit_order))
-           PutImagePixels1(ximage, image->width, image->height,
-                           image->data, image_pixels);
-       else if (ximage->bits_per_pixel == 16)
-           PutImagePixels16(ximage, image->width, image->height,
-                            image->data, image_pixels);
-       else if (ximage->bits_per_pixel == 32)
-           PutImagePixels32(ximage, image->width, image->height,
-                            image->data, image_pixels);
-       else
-           PutImagePixels(ximage, image->width, image->height,
-                          image->data, image_pixels);
-# else /* AMIGA */
-       APutImagePixels(ximage, image->width, image->height,
-                       image->data, image_pixels);
-# endif
-#else  /* FOR_MSW */
-       MSWPutImagePixels(display, ximage, image->width, image->height,
-                         image->data, image_pixels);
-#endif
-    }
-    /* create the shape mask image */
-    if (mask_pixel_index != XpmUndefPixel && shapeimage_return) {
-       ErrorStatus = CreateXImage(display, visual, 1, bitmap_format,
-                                  image->width, image->height, &shapeimage);
-       if (ErrorStatus != XpmSuccess)
-           RETURN(ErrorStatus);
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-       PutImagePixels1(shapeimage, image->width, image->height,
-                       image->data, mask_pixels);
-# else /* AMIGA */
-       APutImagePixels(shapeimage, image->width, image->height,
-                       image->data, mask_pixels);
-# endif
-#else  /* FOR_MSW */
-       MSWPutImagePixels(display, shapeimage, image->width, image->height,
-                         image->data, mask_pixels);
-#endif
-
-    }
-    XpmFree(image_pixels);
-    XpmFree(mask_pixels);
-
-    /* if requested return used pixels in the XpmAttributes structure */
-    if (attributes && (attributes->valuemask & XpmReturnPixels ||
-/* 3.2 backward compatibility code */
-       attributes->valuemask & XpmReturnInfos)) {
-/* end 3.2 bc */
-       attributes->pixels = used_pixels;
-       attributes->npixels = nused_pixels;
-       attributes->mask_pixel = mask_pixel_index;
-    } else
-       XpmFree(used_pixels);
-
-    /* if requested return alloc'ed pixels in the XpmAttributes structure */
-    if (attributes && (attributes->valuemask & XpmReturnAllocPixels)) {
-       attributes->alloc_pixels = alloc_pixels;
-       attributes->nalloc_pixels = nalloc_pixels;
-    } else
-       XpmFree(alloc_pixels);
-
-    /* return created images */
-    if (image_return)
-       *image_return = ximage;
-    if (shapeimage_return)
-       *shapeimage_return = shapeimage;
-
-    return (ErrorStatus);
-
-/* exit point in case of error, free only locally allocated variables */
-error:
-    if (ximage)
-       XDestroyImage(ximage);
-    if (shapeimage)
-       XDestroyImage(shapeimage);
-    if (image_pixels)
-       XpmFree(image_pixels);
-    if (mask_pixels)
-       XpmFree(mask_pixels);
-    if (nalloc_pixels)
-       (*freeColors)(display, colormap, alloc_pixels, nalloc_pixels, NULL);
-    if (alloc_pixels)
-       XpmFree(alloc_pixels);
-    if (used_pixels)
-       XpmFree(used_pixels);
-
-    return (ErrorStatus);
-}
-
-
-/*
- * Create an XImage with its data
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int CreateXImage(
-  Display*      display
-, Visual*       visual
-, unsigned int  depth
-, int           format
-, unsigned int  width
-, unsigned int  height
-, XImage**      image_return
-)
-#else
-static int
-CreateXImage(display, visual, depth, format, width, height, image_return)
-    Display *display;
-    Visual *visual;
-    unsigned int depth;
-    int format;
-    unsigned int width;
-    unsigned int height;
-    XImage **image_return;
-#endif
-{
-    int bitmap_pad;
-
-    /* first get bitmap_pad */
-    if (depth > 16)
-       bitmap_pad = 32;
-    else if (depth > 8)
-       bitmap_pad = 16;
-    else
-       bitmap_pad = 8;
-
-    /* then create the XImage with data = NULL and bytes_per_line = 0 */
-    *image_return = XCreateImage(display, visual, depth, format, 0, 0,
-                                width, height, bitmap_pad, 0);
-    if (!*image_return)
-       return (XpmNoMemory);
-
-#if !defined(FOR_MSW) && !defined(AMIGA)
-    /* now that bytes_per_line must have been set properly alloc data */
-    (*image_return)->data =
-       (char *) XpmMalloc((*image_return)->bytes_per_line * height);
-
-    if (!(*image_return)->data) {
-       XDestroyImage(*image_return);
-       *image_return = NULL;
-       return (XpmNoMemory);
-    }
-#else
-    /* under FOR_MSW and AMIGA XCreateImage has done it all */
-#endif
-    return (XpmSuccess);
-}
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-/*
- * The functions below are written from X11R5 MIT's code (XImUtil.c)
- *
- * The idea is to have faster functions than the standard XPutPixel function
- * to build the image data. Indeed we can speed up things by suppressing tests
- * performed for each pixel. We do the same tests but at the image level.
- * We also assume that we use only ZPixmap images with null offsets.
- */
-
-LFUNC(_putbits, void, (register char *src, int dstoffset,
-                      register int numbits, register char *dst));
-
-LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register int nb));
-
-static unsigned char Const _reverse_byte[0x100] = {
-    0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
-    0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
-    0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
-    0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
-    0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
-    0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
-    0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
-    0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
-    0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
-    0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
-    0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
-    0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
-    0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
-    0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
-    0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
-    0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
-    0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
-    0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
-    0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
-    0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
-    0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
-    0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
-    0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
-    0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
-    0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
-    0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
-    0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
-    0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
-    0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
-    0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
-    0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
-    0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-_XReverse_Bytes(register unsigned char* bpt, register int nb)
-#else
-static int
-_XReverse_Bytes(bpt, nb)
-    register unsigned char *bpt;
-    register int nb;
-#endif
-{
-    do {
-       *bpt = _reverse_byte[*bpt];
-       bpt++;
-    } while (--nb > 0);
-    return 0;
-}
-
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void xpm_xynormalizeimagebits(register unsigned char* bp, register XImage* img)
-#else
-void
-xpm_xynormalizeimagebits(bp, img)
-    register unsigned char *bp;
-    register XImage *img;
-#endif
-{
-    register unsigned char c;
-
-    if (img->byte_order != img->bitmap_bit_order) {
-       switch (img->bitmap_unit) {
-
-       case 16:
-           c = *bp;
-           *bp = *(bp + 1);
-           *(bp + 1) = c;
-           break;
-
-       case 32:
-           c = *(bp + 3);
-           *(bp + 3) = *bp;
-           *bp = c;
-           c = *(bp + 2);
-           *(bp + 2) = *(bp + 1);
-           *(bp + 1) = c;
-           break;
-       }
-    }
-    if (img->bitmap_bit_order == MSBFirst)
-       _XReverse_Bytes(bp, img->bitmap_unit >> 3);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void xpm_znormalizeimagebits(register unsigned char* bp, register XImage* img)
-#else
-void
-xpm_znormalizeimagebits(bp, img)
-    register unsigned char *bp;
-    register XImage *img;
-#endif
-{
-    register unsigned char c;
-
-    switch (img->bits_per_pixel) {
-
-    case 2:
-       _XReverse_Bytes(bp, 1);
-       break;
-
-    case 4:
-       *bp = ((*bp >> 4) & 0xF) | ((*bp << 4) & ~0xF);
-       break;
-
-    case 16:
-       c = *bp;
-       *bp = *(bp + 1);
-       *(bp + 1) = c;
-       break;
-
-    case 24:
-       c = *(bp + 2);
-       *(bp + 2) = *bp;
-       *bp = c;
-       break;
-
-    case 32:
-       c = *(bp + 3);
-       *(bp + 3) = *bp;
-       *bp = c;
-       c = *(bp + 2);
-       *(bp + 2) = *(bp + 1);
-       *(bp + 1) = c;
-       break;
-    }
-}
-
-static unsigned char Const _lomask[0x09] = {
-0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
-static unsigned char Const _himask[0x09] = {
-0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00};
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void _putbits(
-  register char* src
-, int            dstoffset
-, register int   numbits
-, register char* dst
-)
-#else
-static void
-_putbits(src, dstoffset, numbits, dst)
-    register char *src;                        /* address of source bit string */
-    int dstoffset;                     /* bit offset into destination;
-                                        * range is 0-31 */
-    register int numbits;              /* number of bits to copy to
-                                        * destination */
-    register char *dst;                        /* address of destination bit string */
-#endif
-{
-    register unsigned char chlo, chhi;
-    int hibits;
-
-    dst = dst + (dstoffset >> 3);
-    dstoffset = dstoffset & 7;
-    hibits = 8 - dstoffset;
-    chlo = *dst & _lomask[dstoffset];
-    for (;;) {
-       chhi = (*src << dstoffset) & _himask[dstoffset];
-       if (numbits <= hibits) {
-           chhi = chhi & _lomask[dstoffset + numbits];
-           *dst = (*dst & _himask[dstoffset + numbits]) | chlo | chhi;
-           break;
-       }
-       *dst = chhi | chlo;
-       dst++;
-       numbits = numbits - hibits;
-       chlo = (unsigned char) (*src & _himask[hibits]) >> hibits;
-       src++;
-       if (numbits <= dstoffset) {
-           chlo = chlo & _lomask[numbits];
-           *dst = (*dst & _himask[numbits]) | chlo;
-           break;
-       }
-       numbits = numbits - dstoffset;
-    }
-}
-
-/*
- * Default method to write pixels into a Z image data structure.
- * The algorithm used is:
- *
- *     copy the destination bitmap_unit or Zpixel to temp
- *     normalize temp if needed
- *     copy the pixel bits into the temp
- *     renormalize temp if needed
- *     copy the temp back into the destination image data
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void PutImagePixels(
-, XImage*       image
-, unsigned int  width
-, unsigned int  height
-, unsigned int* pixelindex
-, Pixel*        pixels
-)
-#else
-static void
-PutImagePixels(image, width, height, pixelindex, pixels)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    unsigned int *pixelindex;
-    Pixel *pixels;
-#endif
-{
-    register char *src;
-    register char *dst;
-    register unsigned int *iptr;
-    register int x, y, i;
-    register char *data;
-    Pixel pixel, px;
-    int nbytes, depth, ibu, ibpp;
-
-    data = image->data;
-    iptr = pixelindex;
-    depth = image->depth;
-    if (depth == 1) {
-       ibu = image->bitmap_unit;
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               pixel = pixels[*iptr];
-               for (i = 0, px = pixel; i < sizeof(unsigned long);
-                    i++, px >>= 8)
-                   ((unsigned char *) &pixel)[i] = px;
-               src = &data[XYINDEX(x, y, image)];
-               dst = (char *) &px;
-               px = 0;
-               nbytes = ibu >> 3;
-               for (i = nbytes; --i >= 0;)
-                   *dst++ = *src++;
-               XYNORMALIZE(&px, image);
-               _putbits((char *) &pixel, (x % ibu), 1, (char *) &px);
-               XYNORMALIZE(&px, image);
-               src = (char *) &px;
-               dst = &data[XYINDEX(x, y, image)];
-               for (i = nbytes; --i >= 0;)
-                   *dst++ = *src++;
-           }
-    } else {
-       ibpp = image->bits_per_pixel;
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               pixel = pixels[*iptr];
-               if (depth == 4)
-                   pixel &= 0xf;
-               for (i = 0, px = pixel; i < sizeof(unsigned long); i++,
-                    px >>= 8)
-                   ((unsigned char *) &pixel)[i] = px;
-               src = &data[ZINDEX(x, y, image)];
-               dst = (char *) &px;
-               px = 0;
-               nbytes = (ibpp + 7) >> 3;
-               for (i = nbytes; --i >= 0;)
-                   *dst++ = *src++;
-               ZNORMALIZE(&px, image);
-               _putbits((char *) &pixel, (x * ibpp) & 7, ibpp, (char *) &px);
-               ZNORMALIZE(&px, image);
-               src = (char *) &px;
-               dst = &data[ZINDEX(x, y, image)];
-               for (i = nbytes; --i >= 0;)
-                   *dst++ = *src++;
-           }
-    }
-}
-
-/*
- * write pixels into a 32-bits Z image data structure
- */
-
-#if !defined(WORD64) && !defined(LONG64)
-/* this item is static but deterministic so let it slide; doesn't
- * hurt re-entrancy of this library. Note if it is actually const then would
- * be OK under rules of ANSI-C but probably not C++ which may not
- * want to allocate space for it.
- */
-static unsigned long byteorderpixel = MSBFirst << 24;
-
-#endif
-
-/*
-   WITHOUT_SPEEDUPS is a flag to be turned on if you wish to use the original
-   3.2e code - by default you get the speeded-up version.
-*/
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void
-PutImagePixels32(
-, XImage*       image
-, unsigned int  width
-, unsigned int  height
-, unsigned int* pixelindex
-, Pixel*        pixels
-)
-#else
-static void
-PutImagePixels32(image, width, height, pixelindex, pixels)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    unsigned int *pixelindex;
-    Pixel *pixels;
-#endif
-{
-    unsigned char *data;
-    unsigned int *iptr;
-    int y;
-    Pixel pixel;
-
-#ifdef WITHOUT_SPEEDUPS
-
-    int x;
-    unsigned char *addr;
-
-    data = (unsigned char *) image->data;
-    iptr = pixelindex;
-#if !defined(WORD64) && !defined(LONG64)
-    if (*((char *) &byteorderpixel) == image->byte_order) {
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX32(x, y, image)];
-               *((unsigned long *) addr) = pixels[*iptr];
-           }
-    } else
-#endif
-    if (image->byte_order == MSBFirst)
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX32(x, y, image)];
-               pixel = pixels[*iptr];
-               addr[0] = pixel >> 24;
-               addr[1] = pixel >> 16;
-               addr[2] = pixel >> 8;
-               addr[3] = pixel;
-           }
-    else
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX32(x, y, image)];
-               pixel = pixels[*iptr];
-               addr[0] = pixel;
-               addr[1] = pixel >> 8;
-               addr[2] = pixel >> 16;
-               addr[3] = pixel >> 24;
-           }
-
-#else  /* WITHOUT_SPEEDUPS */
-
-    int bpl = image->bytes_per_line;
-    unsigned char *data_ptr, *max_data;
-
-    data = (unsigned char *) image->data;
-    iptr = pixelindex;
-#if !defined(WORD64) && !defined(LONG64)
-    if (*((char *) &byteorderpixel) == image->byte_order) {
-       for (y = 0; y < height; y++) {
-           data_ptr = data;
-           max_data = data_ptr + (width << 2);
-
-           while (data_ptr < max_data) {
-               *((unsigned long *) data_ptr) = pixels[*(iptr++)];
-               data_ptr += (1 << 2);
-           }
-           data += bpl;
-       }
-    } else
-#endif
-    if (image->byte_order == MSBFirst)
-       for (y = 0; y < height; y++) {
-           data_ptr = data;
-           max_data = data_ptr + (width << 2);
-
-           while (data_ptr < max_data) {
-               pixel = pixels[*(iptr++)];
-
-               *data_ptr++ = pixel >> 24;
-               *data_ptr++ = pixel >> 16;
-               *data_ptr++ = pixel >> 8;
-               *data_ptr++ = pixel;
-
-           }
-           data += bpl;
-       }
-    else
-       for (y = 0; y < height; y++) {
-           data_ptr = data;
-           max_data = data_ptr + (width << 2);
-
-           while (data_ptr < max_data) {
-               pixel = pixels[*(iptr++)];
-
-               *data_ptr++ = pixel;
-               *data_ptr++ = pixel >> 8;
-               *data_ptr++ = pixel >> 16;
-               *data_ptr++ = pixel >> 24;
-           }
-           data += bpl;
-       }
-
-#endif /* WITHOUT_SPEEDUPS */
-}
-
-/*
- * write pixels into a 16-bits Z image data structure
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void PutImagePixels16(
-, XImage*       image
-, unsigned int  width
-, unsigned int  height
-, unsigned int* pixelindex
-, Pixel*        pixels
-)
-#else
-static void
-PutImagePixels16(image, width, height, pixelindex, pixels)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    unsigned int *pixelindex;
-    Pixel *pixels;
-#endif
-{
-    unsigned char *data;
-    unsigned int *iptr;
-    int y;
-
-#ifdef WITHOUT_SPEEDUPS
-
-    int x;
-    unsigned char *addr;
-
-    data = (unsigned char *) image->data;
-    iptr = pixelindex;
-    if (image->byte_order == MSBFirst)
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX16(x, y, image)];
-               addr[0] = pixels[*iptr] >> 8;
-               addr[1] = pixels[*iptr];
-           }
-    else
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX16(x, y, image)];
-               addr[0] = pixels[*iptr];
-               addr[1] = pixels[*iptr] >> 8;
-           }
-
-#else  /* WITHOUT_SPEEDUPS */
-
-    Pixel pixel;
-
-    int bpl = image->bytes_per_line;
-    unsigned char *data_ptr, *max_data;
-
-    data = (unsigned char *) image->data;
-    iptr = pixelindex;
-    if (image->byte_order == MSBFirst)
-       for (y = 0; y < height; y++) {
-           data_ptr = data;
-           max_data = data_ptr + (width << 1);
-
-           while (data_ptr < max_data) {
-               pixel = pixels[*(iptr++)];
-
-               data_ptr[0] = pixel >> 8;
-               data_ptr[1] = pixel;
-
-               data_ptr += (1 << 1);
-           }
-           data += bpl;
-       }
-    else
-       for (y = 0; y < height; y++) {
-           data_ptr = data;
-           max_data = data_ptr + (width << 1);
-
-           while (data_ptr < max_data) {
-               pixel = pixels[*(iptr++)];
-
-               data_ptr[0] = pixel;
-               data_ptr[1] = pixel >> 8;
-
-               data_ptr += (1 << 1);
-           }
-           data += bpl;
-       }
-
-#endif /* WITHOUT_SPEEDUPS */
-}
-
-/*
- * write pixels into a 8-bits Z image data structure
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void PutImagePixels8(
-, XImage*       image
-, unsigned int  width
-, unsigned int  height
-, unsigned int* pixelindex
-, Pixel*        pixels
-)
-#else
-static void
-PutImagePixels8(image, width, height, pixelindex, pixels)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    unsigned int *pixelindex;
-    Pixel *pixels;
-#endif
-{
-    char *data;
-    unsigned int *iptr;
-    int y;
-
-#ifdef WITHOUT_SPEEDUPS
-
-    int x;
-
-    data = image->data;
-    iptr = pixelindex;
-    for (y = 0; y < height; y++)
-       for (x = 0; x < width; x++, iptr++)
-           data[ZINDEX8(x, y, image)] = pixels[*iptr];
-
-#else  /* WITHOUT_SPEEDUPS */
-
-    int bpl = image->bytes_per_line;
-    char *data_ptr, *max_data;
-
-    data = image->data;
-    iptr = pixelindex;
-
-    for (y = 0; y < height; y++) {
-       data_ptr = data;
-       max_data = data_ptr + width;
-
-       while (data_ptr < max_data)
-           *(data_ptr++) = pixels[*(iptr++)];
-
-       data += bpl;
-    }
-
-#endif /* WITHOUT_SPEEDUPS */
-}
-
-/*
- * write pixels into a 1-bit depth image data structure and **offset null**
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void PutImagePixels1(
-, XImage*       image
-, unsigned int  width
-, unsigned int  height
-, unsigned int* pixelindex
-, Pixel*        pixels
-)
-#else
-static void
-PutImagePixels1(image, width, height, pixelindex, pixels)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    unsigned int *pixelindex;
-    Pixel *pixels;
-#endif
-{
-    if (image->byte_order != image->bitmap_bit_order)
-       PutImagePixels(image, width, height, pixelindex, pixels);
-    else {
-       unsigned int *iptr;
-       int y;
-       char *data;
-
-#ifdef WITHOUT_SPEEDUPS
-
-       int x;
-
-       data = image->data;
-       iptr = pixelindex;
-       if (image->bitmap_bit_order == MSBFirst)
-           for (y = 0; y < height; y++)
-               for (x = 0; x < width; x++, iptr++) {
-                   if (pixels[*iptr] & 1)
-                       data[ZINDEX1(x, y, image)] |= 0x80 >> (x & 7);
-                   else
-                       data[ZINDEX1(x, y, image)] &= ~(0x80 >> (x & 7));
-               }
-       else
-           for (y = 0; y < height; y++)
-               for (x = 0; x < width; x++, iptr++) {
-                   if (pixels[*iptr] & 1)
-                       data[ZINDEX1(x, y, image)] |= 1 << (x & 7);
-                   else
-                       data[ZINDEX1(x, y, image)] &= ~(1 << (x & 7));
-               }
-
-#else  /* WITHOUT_SPEEDUPS */
-
-       char value;
-       char *data_ptr, *max_data;
-       int bpl = image->bytes_per_line;
-       int diff, count;
-
-       data = image->data;
-       iptr = pixelindex;
-
-       diff = width & 7;
-       width >>= 3;
-
-       if (image->bitmap_bit_order == MSBFirst)
-           for (y = 0; y < height; y++) {
-               data_ptr = data;
-               max_data = data_ptr + width;
-               while (data_ptr < max_data) {
-                   value = 0;
-
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-                   value = (value << 1) | (pixels[*(iptr++)] & 1);
-
-                   *(data_ptr++) = value;
-               }
-               if (diff) {
-                   value = 0;
-                   for (count = 0; count < diff; count++) {
-                       if (pixels[*(iptr++)] & 1)
-                           value |= (0x80 >> count);
-                   }
-                   *(data_ptr) = value;
-               }
-               data += bpl;
-           }
-       else
-           for (y = 0; y < height; y++) {
-               data_ptr = data;
-               max_data = data_ptr + width;
-               while (data_ptr < max_data) {
-                   value = 0;
-                   iptr += 8;
-
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-                   value = (value << 1) | (pixels[*(--iptr)] & 1);
-
-                   iptr += 8;
-                   *(data_ptr++) = value;
-               }
-               if (diff) {
-                   value = 0;
-                   for (count = 0; count < diff; count++) {
-                       if (pixels[*(iptr++)] & 1)
-                           value |= (1 << count);
-                   }
-                   *(data_ptr) = value;
-               }
-               data += bpl;
-           }
-
-#endif /* WITHOUT_SPEEDUPS */
-    }
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreatePixmapFromXpmImage(
-, Display*       display
-, Drawable       d
-, XpmImage*      image
-, Pixmap*        pixmap_return
-, Pixmap*        shapemask_return
-, XpmAttributes* attributes
-#else
-int
-XpmCreatePixmapFromXpmImage(display, d, image,
-                           pixmap_return, shapemask_return, attributes)
-    Display *display;
-    Drawable d;
-    XpmImage *image;
-    Pixmap *pixmap_return;
-    Pixmap *shapemask_return;
-    XpmAttributes *attributes;
-#endif
-{
-    XImage *ximage, *shapeimage;
-    int ErrorStatus;
-
-    /* initialize return values */
-    if (pixmap_return)
-       *pixmap_return = 0;
-    if (shapemask_return)
-       *shapemask_return = 0;
-
-    /* create the ximages */
-    ErrorStatus = XpmCreateImageFromXpmImage(display, image,
-                                            (pixmap_return ? &ximage : NULL),
-                                            (shapemask_return ?
-                                             &shapeimage : NULL),
-                                            attributes);
-    if (ErrorStatus < 0)
-       return (ErrorStatus);
-
-    /* create the pixmaps and destroy images */
-    if (pixmap_return && ximage) {
-       xpmCreatePixmapFromImage(display, d, ximage, pixmap_return);
-       XDestroyImage(ximage);
-    }
-    if (shapemask_return && shapeimage) {
-       xpmCreatePixmapFromImage(display, d, shapeimage, shapemask_return);
-       XDestroyImage(shapeimage);
-    }
-    return (ErrorStatus);
-}
-
-# else /* AMIGA */
-
-static void
-APutImagePixels (
-    XImage        *image,
-    unsigned int   width,
-    unsigned int   height,
-    unsigned int  *pixelindex,
-    Pixel         *pixels)
-{
-    unsigned int   *data = pixelindex;
-    unsigned int    x, y;
-    unsigned char  *array;
-    XImage         *tmp_img;
-    BOOL            success = FALSE;
-
-    array = XpmMalloc ((((width+15)>>4)<<4)*sizeof (*array));
-    if (array != NULL)
-    {
-       tmp_img = AllocXImage ((((width+15)>>4)<<4), 1,
-                              image->rp->BitMap->Depth);
-       if (tmp_img != NULL)
-       {
-           for (y = 0; y < height; ++y)
-           {
-               for (x = 0; x < width; ++x)
-                   array[x] = pixels[*(data++)];
-               WritePixelLine8 (image->rp, 0, y, width, array, tmp_img->rp);
-           }
-           FreeXImage (tmp_img);
-           success = TRUE;
-       }
-       XpmFree (array);
-    }
-
-    if (!success)
-    {
-       for (y = 0; y < height; ++y)
-           for (x = 0; x < width; ++x)
-               XPutPixel (image, x, y, pixels[*(data++)]);
-    }
-}
-
-# endif/* AMIGA */
-#else  /* FOR_MSW part follows */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static void MSWPutImagePixels(
-  Display*      dc
-, XImage*       image
-, unsigned int  width
-, unsigned int  height
-, unsigned int* pixelindex
-, Pixel*        pixels
-)
-#else
-static void
-MSWPutImagePixels(dc, image, width, height, pixelindex, pixels)
-    Display *dc;
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    unsigned int *pixelindex;
-    Pixel *pixels;
-#endif
-{
-    unsigned int *data = pixelindex;
-    unsigned int x, y;
-    HBITMAP obm;
-
-#ifdef __OS2__
-    POINTL                                point;
-
-    obm = GpiSetBitmap(*dc, image->bitmap);
-#else
-    obm = SelectObject(*dc, image->bitmap);
-#endif
-
-    for (y = 0; y < height; y++) {
-       for (x = 0; x < width; x++) {
-#ifdef __OS2__
-     point.x = x;
-     point.y = y;
-     GpiSetColor(*dc, (LONG)pixels[*(data++)]);
-     GpiSetPel(*dc, &point);
-#else
-
-           SetPixel(*dc, x, y, pixels[*(data++)]); /* data is [x+y*width] */
-#endif
-       }
-    }
-#ifdef __OS2__
-    GpiSetBitmap(*dc, obm);
-#else
-    SelectObject(*dc, obm);
-#endif
-}
-
-#endif /* FOR_MSW */
-
-
-
-#if !defined(FOR_MSW) && !defined(AMIGA)
-
-static int
-PutPixel1(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    register char *src;
-    register char *dst;
-    register int i;
-    register char *data;
-    Pixel px;
-    int nbytes;
-
-    for (i=0, px=pixel; i<sizeof(unsigned long); i++, px>>=8)
-       ((unsigned char *)&pixel)[i] = px;
-    src = &ximage->data[XYINDEX(x, y, ximage)];
-    dst = (char *)&px;
-    px = 0;
-    nbytes = ximage->bitmap_unit >> 3;
-    for (i = nbytes; --i >= 0; ) *dst++ = *src++;
-    XYNORMALIZE(&px, ximage);
-    i = ((x + ximage->xoffset) % ximage->bitmap_unit);
-    _putbits ((char *)&pixel, i, 1, (char *)&px);
-    XYNORMALIZE(&px, ximage);
-    src = (char *) &px;
-    dst = &ximage->data[XYINDEX(x, y, ximage)];
-    for (i = nbytes; --i >= 0; )
-       *dst++ = *src++;
-
-    return 1;
-}
-
-static int
-PutPixel(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    register char *src;
-    register char *dst;
-    register int i;
-    register char *data;
-    Pixel px;
-    int nbytes, ibpp;
-
-    ibpp = ximage->bits_per_pixel;
-    if (ximage->depth == 4)
-       pixel &= 0xf;
-    for (i = 0, px = pixel; i < sizeof(unsigned long); i++, px >>= 8)
-       ((unsigned char *) &pixel)[i] = px;
-    src = &ximage->data[ZINDEX(x, y, ximage)];
-    dst = (char *) &px;
-    px = 0;
-    nbytes = (ibpp + 7) >> 3;
-    for (i = nbytes; --i >= 0;)
-       *dst++ = *src++;
-    ZNORMALIZE(&px, ximage);
-    _putbits((char *) &pixel, (x * ibpp) & 7, ibpp, (char *) &px);
-    ZNORMALIZE(&px, ximage);
-    src = (char *) &px;
-    dst = &ximage->data[ZINDEX(x, y, ximage)];
-    for (i = nbytes; --i >= 0;)
-       *dst++ = *src++;
-
-    return 1;
-}
-
-static int
-PutPixel32(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    unsigned char *addr;
-
-    addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)];
-    *((unsigned long *)addr) = pixel;
-    return 1;
-}
-
-static int
-PutPixel32MSB(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    unsigned char *addr;
-
-    addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)];
-    addr[0] = pixel >> 24;
-    addr[1] = pixel >> 16;
-    addr[2] = pixel >> 8;
-    addr[3] = pixel;
-    return 1;
-}
-
-static int
-PutPixel32LSB(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    unsigned char *addr;
-
-    addr = &((unsigned char *)ximage->data) [ZINDEX32(x, y, ximage)];
-    addr[3] = pixel >> 24;
-    addr[2] = pixel >> 16;
-    addr[1] = pixel >> 8;
-    addr[0] = pixel;
-    return 1;
-}
-
-static int
-PutPixel16MSB(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    unsigned char *addr;
-
-    addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)];
-    addr[0] = pixel >> 8;
-    addr[1] = pixel;
-    return 1;
-}
-
-static int
-PutPixel16LSB(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    unsigned char *addr;
-
-    addr = &((unsigned char *)ximage->data) [ZINDEX16(x, y, ximage)];
-    addr[1] = pixel >> 8;
-    addr[0] = pixel;
-    return 1;
-}
-
-static int
-PutPixel8(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    ximage->data[ZINDEX8(x, y, ximage)] = pixel;
-    return 1;
-}
-
-static int
-PutPixel1MSB(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    if (pixel & 1)
-       ximage->data[ZINDEX1(x, y, ximage)] |= 0x80 >> (x & 7);
-    else
-       ximage->data[ZINDEX1(x, y, ximage)] &= ~(0x80 >> (x & 7));
-    return 1;
-}
-
-static int
-PutPixel1LSB(ximage, x, y, pixel)
-    register XImage *ximage;
-    int x;
-    int y;
-    unsigned long pixel;
-{
-    if (pixel & 1)
-       ximage->data[ZINDEX1(x, y, ximage)] |= 1 << (x & 7);
-    else
-       ximage->data[ZINDEX1(x, y, ximage)] &= ~(1 << (x & 7));
-    return 1;
-}
-
-#endif /* not FOR_MSW && not AMIGA */
-
-/*
- * This function parses an Xpm file or data and directly create an XImage
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmParseDataAndCreate(
-  Display*       display
-, xpmData*       data
-, XImage**       image_return
-, XImage**       shapeimage_return
-, XpmImage*      image
-, XpmInfo*       info
-, XpmAttributes* attributes
-)
-#else
-int
-xpmParseDataAndCreate(display, data, image_return, shapeimage_return,
-                     image, info, attributes)
-    Display *display;
-    xpmData *data;
-    XImage **image_return;
-    XImage **shapeimage_return;
-    XpmImage *image;
-    XpmInfo *info;
-    XpmAttributes *attributes;
-#endif
-{
-    /* variables stored in the XpmAttributes structure */
-    Visual *visual;
-    Colormap colormap;
-    unsigned int depth;
-    int bitmap_format;
-    XpmFreeColorsFunc freeColors;
-    void *closure;
-
-    /* variables to return */
-    XImage *ximage = NULL;
-    XImage *shapeimage = NULL;
-    unsigned int mask_pixel_index = XpmUndefPixel;
-
-    /* calculation variables */
-    Pixel *image_pixels = NULL;
-    Pixel *mask_pixels = NULL;
-    Pixel *alloc_pixels = NULL;
-    Pixel *used_pixels = NULL;
-    unsigned int nalloc_pixels = 0;
-    unsigned int nused_pixels = 0;
-    unsigned int width, height, ncolors, cpp;
-    unsigned int x_hotspot, y_hotspot, hotspot = 0, extensions = 0;
-    XpmColor *colorTable = NULL;
-    char *hints_cmt = NULL;
-    char *colors_cmt = NULL;
-    char *pixels_cmt = NULL;
-
-    unsigned int cmts;
-    int ErrorStatus;
-    xpmHashTable hashtable;
-
-
-    /* initialize return values */
-    if (image_return)
-       *image_return = NULL;
-    if (shapeimage_return)
-       *shapeimage_return = NULL;
-
-
-    /* retrieve information from the XpmAttributes */
-    if (attributes && (attributes->valuemask & XpmVisual))
-       visual = attributes->visual;
-    else
-       visual = XDefaultVisual(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmColormap))
-       colormap = attributes->colormap;
-    else
-       colormap = XDefaultColormap(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmDepth))
-       depth = attributes->depth;
-    else
-       depth = XDefaultDepth(display, XDefaultScreen(display));
-
-    if (attributes && (attributes->valuemask & XpmBitmapFormat))
-       bitmap_format = attributes->bitmap_format;
-    else
-       bitmap_format = ZPixmap;
-
-    if (attributes && (attributes->valuemask & XpmFreeColors))
-       freeColors = attributes->free_colors;
-    else
-       freeColors = FreeColors;
-    if (attributes && (attributes->valuemask & XpmColorClosure))
-       closure = attributes->color_closure;
-    else
-       closure = NULL;
-
-    cmts = info && (info->valuemask & XpmReturnComments);
-
-    /*
-     * parse the header
-     */
-    ErrorStatus = xpmParseHeader(data);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /*
-     * read values
-     */
-    ErrorStatus = xpmParseValues(data, &width, &height, &ncolors, &cpp,
-                                &x_hotspot, &y_hotspot, &hotspot,
-                                &extensions);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /*
-     * store the hints comment line
-     */
-    if (cmts)
-       xpmGetCmt(data, &hints_cmt);
-
-    /*
-     * init the hastable
-     */
-    if (USE_HASHTABLE) {
-       ErrorStatus = xpmHashTableInit(&hashtable);
-       if (ErrorStatus != XpmSuccess)
-           return (ErrorStatus);
-    }
-
-    /*
-     * read colors
-     */
-    ErrorStatus = xpmParseColors(data, ncolors, cpp, &colorTable, &hashtable);
-    if (ErrorStatus != XpmSuccess)
-       RETURN(ErrorStatus);
-
-    /*
-     * store the colors comment line
-     */
-    if (cmts)
-       xpmGetCmt(data, &colors_cmt);
-
-    /* malloc pixels index tables */
-    image_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors);
-    if (!image_pixels)
-       RETURN(XpmNoMemory);
-
-    mask_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors);
-    if (!mask_pixels)
-       RETURN(XpmNoMemory);
-
-    /* maximum of allocated pixels will be the number of colors */
-    alloc_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors);
-    if (!alloc_pixels)
-       RETURN(XpmNoMemory);
-
-    /* maximum of allocated pixels will be the number of colors */
-    used_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * ncolors);
-    if (!used_pixels)
-       RETURN(XpmNoMemory);
-
-    /* get pixel colors, store them in index tables */
-    ErrorStatus = CreateColors(display, attributes, colorTable, ncolors,
-                              image_pixels, mask_pixels, &mask_pixel_index,
-                              alloc_pixels, &nalloc_pixels, used_pixels,
-                              &nused_pixels);
-
-    if (ErrorStatus != XpmSuccess
-       && (ErrorStatus < 0 || (attributes
-                               && (attributes->valuemask & XpmExactColors)
-                               && attributes->exactColors)))
-       RETURN(ErrorStatus);
-
-    /* now create the ximage */
-    if (image_return) {
-       ErrorStatus = CreateXImage(display, visual, depth,
-                                  (depth == 1 ? bitmap_format : ZPixmap),
-                                  width, height, &ximage);
-       if (ErrorStatus != XpmSuccess)
-           RETURN(ErrorStatus);
-
-#if !defined(FOR_MSW) && !defined(AMIGA)
-
-       /*
-        * set the XImage pointer function, to be used with XPutPixel,
-        * to an internal optimized function
-        */
-
-       if (ximage->bits_per_pixel == 8)
-           ximage->f.put_pixel = PutPixel8;
-       else if (((ximage->bits_per_pixel | ximage->depth) == 1) &&
-                (ximage->byte_order == ximage->bitmap_bit_order))
-           if (ximage->bitmap_bit_order == MSBFirst)
-               ximage->f.put_pixel = PutPixel1MSB;
-           else
-               ximage->f.put_pixel = PutPixel1LSB;
-       else if (ximage->bits_per_pixel == 16)
-           if (ximage->bitmap_bit_order == MSBFirst)
-               ximage->f.put_pixel = PutPixel16MSB;
-           else
-               ximage->f.put_pixel = PutPixel16LSB;
-       else if (ximage->bits_per_pixel == 32)
-#if !defined(WORD64) && !defined(LONG64)
-           if (*((char *)&byteorderpixel) == ximage->byte_order)
-               ximage->f.put_pixel = PutPixel32;
-           else
-#endif
-               if (ximage->bitmap_bit_order == MSBFirst)
-                   ximage->f.put_pixel = PutPixel32MSB;
-               else
-                   ximage->f.put_pixel = PutPixel32LSB;
-       else if ((ximage->bits_per_pixel | ximage->depth) == 1)
-           ximage->f.put_pixel = PutPixel1;
-       else
-           ximage->f.put_pixel = PutPixel;
-#endif /* not FOR_MSW && not AMIGA */
-    }
-
-    /* create the shape mask image */
-    if (mask_pixel_index != XpmUndefPixel && shapeimage_return) {
-       ErrorStatus = CreateXImage(display, visual, 1, bitmap_format,
-                                  width, height, &shapeimage);
-       if (ErrorStatus != XpmSuccess)
-           RETURN(ErrorStatus);
-
-#if !defined(FOR_MSW) && !defined(AMIGA)
-       if (shapeimage->bitmap_bit_order == MSBFirst)
-           shapeimage->f.put_pixel = PutPixel1MSB;
-       else
-           shapeimage->f.put_pixel = PutPixel1LSB;
-#endif
-    }
-
-    /*
-     * read pixels and put them in the XImage
-     */
-    ErrorStatus = ParseAndPutPixels(
-#ifdef FOR_MSW
-                                   display,
-#endif
-                                   data, width, height, ncolors, cpp,
-                                   colorTable, &hashtable,
-                                   ximage, image_pixels,
-                                   shapeimage, mask_pixels);
-    XpmFree(image_pixels);
-    image_pixels = NULL;
-    XpmFree(mask_pixels);
-    mask_pixels = NULL;
-
-    /*
-     * free the hastable
-     */
-    if (ErrorStatus != XpmSuccess)
-       RETURN(ErrorStatus)
-    else if (USE_HASHTABLE)
-       xpmHashTableFree(&hashtable);
-
-    /*
-     * store the pixels comment line
-     */
-    if (cmts)
-       xpmGetCmt(data, &pixels_cmt);
-
-    /*
-     * parse extensions
-     */
-    if (info && (info->valuemask & XpmReturnExtensions))
-       if (extensions) {
-           ErrorStatus = xpmParseExtensions(data, &info->extensions,
-                                            &info->nextensions);
-           if (ErrorStatus != XpmSuccess)
-               RETURN(ErrorStatus);
-       } else {
-           info->extensions = NULL;
-           info->nextensions = 0;
-       }
-
-    /*
-     * store found informations in the XpmImage structure
-     */
-    image->width = width;
-    image->height = height;
-    image->cpp = cpp;
-    image->ncolors = ncolors;
-    image->colorTable = colorTable;
-    image->data = NULL;
-
-    if (info) {
-       if (cmts) {
-           info->hints_cmt = hints_cmt;
-           info->colors_cmt = colors_cmt;
-           info->pixels_cmt = pixels_cmt;
-       }
-       if (hotspot) {
-           info->x_hotspot = x_hotspot;
-           info->y_hotspot = y_hotspot;
-           info->valuemask |= XpmHotspot;
-       }
-    }
-    /* if requested return used pixels in the XpmAttributes structure */
-    if (attributes && (attributes->valuemask & XpmReturnPixels ||
-/* 3.2 backward compatibility code */
-       attributes->valuemask & XpmReturnInfos)) {
-/* end 3.2 bc */
-       attributes->pixels = used_pixels;
-       attributes->npixels = nused_pixels;
-       attributes->mask_pixel = mask_pixel_index;
-    } else
-       XpmFree(used_pixels);
-
-    /* if requested return alloc'ed pixels in the XpmAttributes structure */
-    if (attributes && (attributes->valuemask & XpmReturnAllocPixels)) {
-       attributes->alloc_pixels = alloc_pixels;
-       attributes->nalloc_pixels = nalloc_pixels;
-    } else
-       XpmFree(alloc_pixels);
-
-    /* return created images */
-    if (image_return)
-       *image_return = ximage;
-    if (shapeimage_return)
-       *shapeimage_return = shapeimage;
-
-    return (XpmSuccess);
-
-/* exit point in case of error, free only locally allocated variables */
-error:
-    if (USE_HASHTABLE)
-       xpmHashTableFree(&hashtable);
-    if (colorTable)
-       xpmFreeColorTable(colorTable, ncolors);
-    if (hints_cmt)
-       XpmFree(hints_cmt);
-    if (colors_cmt)
-       XpmFree(colors_cmt);
-    if (pixels_cmt)
-       XpmFree(pixels_cmt);
-    if (ximage)
-       XDestroyImage(ximage);
-    if (shapeimage)
-       XDestroyImage(shapeimage);
-    if (image_pixels)
-       XpmFree(image_pixels);
-    if (mask_pixels)
-       XpmFree(mask_pixels);
-    if (nalloc_pixels)
-       (*freeColors)(display, colormap, alloc_pixels, nalloc_pixels, NULL);
-    if (alloc_pixels)
-       XpmFree(alloc_pixels);
-    if (used_pixels)
-       XpmFree(used_pixels);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int ParseAndPutPixels(
-  Display*      dc
-, xpmData*      data
-, unsigned int  width
-, unsigned int  height
-, unsigned int  ncolors
-, unsigned int  cpp
-, XpmColor*     colorTable
-, xpmHashTable* hashtable
-, XImage*       image
-, Pixel*        image_pixels
-, XImage*       shapeimage
-, Pixel*        shape_pixels
-)
-#else
-static int
-ParseAndPutPixels(
-#ifdef FOR_MSW
-                 dc,
-#endif
-                 data, width, height, ncolors, cpp, colorTable, hashtable,
-                 image, image_pixels, shapeimage, shape_pixels)
-#ifdef FOR_MSW
-    Display *dc;
-#endif
-    xpmData *data;
-    unsigned int width;
-    unsigned int height;
-    unsigned int ncolors;
-    unsigned int cpp;
-    XpmColor *colorTable;
-    xpmHashTable *hashtable;
-    XImage *image;
-    Pixel *image_pixels;
-    XImage *shapeimage;
-    Pixel *shape_pixels;
-#endif
-{
-    unsigned int a, x, y;
-#ifdef __OS2__
-     HAB          hab = WinQueryAnchorBlock(HWND_DESKTOP);
-     DEVOPENSTRUC dop = {NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL};
-     SIZEL        sizl = {0, 0};
-     POINTL       point;
-#endif
-
-    switch (cpp) {
-
-    case (1):                          /* Optimize for single character
-                                        * colors */
-       {
-           unsigned short colidx[256];
-#ifdef FOR_MSW
-           HDC shapedc;
-           HBITMAP obm, sobm;
-
-           if ( shapeimage ) {
-#ifdef __OS2__
-      shapedc = DevOpenDC(hab, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dop, NULLHANDLE);
-      *dc = GpiCreatePS(hab, shapedc, &sizl, GPIA_ASSOC | PU_PELS);
-      sobm = GpiSetBitmap(*dc, shapeimage->bitmap);
-#else
-               shapedc = CreateCompatibleDC(*dc);
-               sobm = SelectObject(shapedc, shapeimage->bitmap);
-#endif
-           } else {
-               shapedc = NULL;
-           }
-#ifdef __OS2__
-        obm = GpiSetBitmap(*dc, image->bitmap);
-#else
-           obm = SelectObject(*dc, image->bitmap);
-#endif
-
-#endif
-
-
-           bzero((char *)colidx, 256 * sizeof(short));
-           for (a = 0; a < ncolors; a++)
-               colidx[(unsigned char)colorTable[a].string[0]] = a + 1;
-
-           for (y = 0; y < height; y++) {
-               xpmNextString(data);
-               for (x = 0; x < width; x++) {
-                   int c = xpmGetC(data);
-
-                   if (c > 0 && c < 256 && colidx[c] != 0) {
-#ifndef FOR_MSW
-                       XPutPixel(image, x, y, image_pixels[colidx[c] - 1]);
-                       if (shapeimage)
-                           XPutPixel(shapeimage, x, y,
-                                     shape_pixels[colidx[c] - 1]);
-#else
-#ifdef __OS2__
-            point.x = x;
-            point.y = y;
-            GpiSetColor(*dc, (LONG)image_pixels[colidx[c] - 1]);
-            GpiSetPel(*dc, &point);
-#else
-                       SetPixel(*dc, x, y, image_pixels[colidx[c] - 1]);
-#endif
-                       if (shapedc) {
-#ifdef __OS2__
-                point.x = x;
-                point.y = y;
-                GpiSetColor(*dc, (LONG)shape_pixels[colidx[c] - 1]);
-                GpiSetPel(*dc, &point);
-#else
-                           SetPixel(shapedc, x, y, shape_pixels[colidx[c] - 1]);
-#endif
-                       }
-#endif
-                   } else
-                       return (XpmFileInvalid);
-               }
-           }
-#ifdef FOR_MSW
-           if ( shapedc ) {
-#ifdef __OS2__
-            GpiSetBitmap(*dc, sobm);
-            GpiDestroyPS(*dc);
-            DevCloseDC(shapedc);
-#else
-               SelectObject(shapedc, sobm);
-                   DeleteDC(shapedc);
-#endif
-           }
-#ifdef __OS2__
-        GpiSetBitmap(*dc, obm);
-#else
-           SelectObject(*dc, obm);
-#endif
-#endif
-       }
-       break;
-
-    case (2):                          /* Optimize for double character
-                                        * colors */
-       {
-/* free all allocated pointers at all exits */
-#define FREE_CIDX {int f; for (f = 0; f < 256; f++) \
-if (cidx[f]) XpmFree(cidx[f]);}
-
-           /* array of pointers malloced by need */
-           unsigned short *cidx[256];
-           int char1;
-#ifdef __OS2__
-           HDC shapedc;
-#endif
-
-           bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */
-           for (a = 0; a < ncolors; a++) {
-               char1 = colorTable[a].string[0];
-               if (cidx[char1] == NULL) { /* get new memory */
-                   cidx[char1] = (unsigned short *)
-                       XpmCalloc(256, sizeof(unsigned short));
-                   if (cidx[char1] == NULL) { /* new block failed */
-                       FREE_CIDX;
-                       return (XpmNoMemory);
-                   }
-               }
-               cidx[char1][(unsigned char)colorTable[a].string[1]] = a + 1;
-           }
-
-           for (y = 0; y < height; y++) {
-               xpmNextString(data);
-               for (x = 0; x < width; x++) {
-                   int cc1 = xpmGetC(data);
-                   if (cc1 > 0 && cc1 < 256) {
-                       int cc2 = xpmGetC(data);
-                       if (cc2 > 0 && cc2 < 256 &&
-                           cidx[cc1] && cidx[cc1][cc2] != 0) {
-#ifndef FOR_MSW
-                           XPutPixel(image, x, y,
-                                     image_pixels[cidx[cc1][cc2] - 1]);
-                           if (shapeimage)
-                               XPutPixel(shapeimage, x, y,
-                                         shape_pixels[cidx[cc1][cc2] - 1]);
-#else
-#ifdef __OS2__
-            shapedc = DevOpenDC(hab, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dop, NULLHANDLE);
-            *dc = GpiCreatePS(hab, shapedc, &sizl, GPIA_ASSOC | PU_PELS);
-
-            GpiSetBitmap(*dc, image->bitmap);
-            point.x = x;
-            point.y = y;
-            GpiSetColor(*dc, (LONG)image_pixels[cidx[cc1][cc2] - 1]);
-            GpiSetPel(*dc, &point);
-#else
-           SelectObject(*dc, image->bitmap);
-               SetPixel(*dc, x, y, image_pixels[cidx[cc1][cc2] - 1]);
-#endif
-                       if (shapeimage) {
-#ifdef __OS2__
-                GpiSetBitmap(*dc, shapeimage->bitmap);
-                point.x = x;
-                point.y = y;
-                GpiSetColor(*dc, (LONG)shape_pixels[cidx[cc1][cc2] - 1]);
-                GpiSetPel(*dc, &point);
-#else
-                           SelectObject(*dc, shapeimage->bitmap);
-                           SetPixel(*dc, x, y,
-                                    shape_pixels[cidx[cc1][cc2] - 1]);
-#endif
-                       }
-#endif
-                       } else {
-                           FREE_CIDX;
-                           return (XpmFileInvalid);
-                       }
-                   } else {
-                       FREE_CIDX;
-                       return (XpmFileInvalid);
-                   }
-               }
-           }
-           FREE_CIDX;
-       }
-       break;
-
-    default:                           /* Non-optimized case of long color
-                                        * names */
-       {
-           char *s;
-           char buf[BUFSIZ];
-#ifdef __OS2__
-           HDC shapedc;
-#endif
-
-           buf[cpp] = '\0';
-           if (USE_HASHTABLE) {
-               xpmHashAtom *slot;
-
-               for (y = 0; y < height; y++) {
-                   xpmNextString(data);
-                   for (x = 0; x < width; x++) {
-                       for (a = 0, s = buf; a < cpp; a++, s++)
-                           *s = xpmGetC(data);
-                       slot = xpmHashSlot(hashtable, buf);
-                       if (!*slot)     /* no color matches */
-                           return (XpmFileInvalid);
-#ifndef FOR_MSW
-                       XPutPixel(image, x, y,
-                                 image_pixels[HashColorIndex(slot)]);
-                       if (shapeimage)
-                           XPutPixel(shapeimage, x, y,
-                                     shape_pixels[HashColorIndex(slot)]);
-#else
-#ifdef __OS2__
-
-            shapedc = DevOpenDC(hab, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dop, NULLHANDLE);
-            *dc = GpiCreatePS(hab, shapedc, &sizl, GPIA_ASSOC | PU_PELS);
-
-            GpiSetBitmap(*dc, image->bitmap);
-            point.x = x;
-            point.y = y;
-            GpiSetColor(*dc, (LONG)image_pixels[HashColorIndex(slot)]);
-            GpiSetPel(*dc, &point);
-#else
-                       SelectObject(*dc, image->bitmap);
-                       SetPixel(*dc, x, y,
-                                image_pixels[HashColorIndex(slot)]);
-#endif
-                       if (shapeimage) {
-#ifdef __OS2__
-                GpiSetBitmap(*dc, shapeimage->bitmap);
-                point.x = x;
-                point.y = y;
-                GpiSetColor(*dc, (LONG)shape_pixels[HashColorIndex(slot)]);
-                GpiSetPel(*dc, &point);
-#else
-                           SelectObject(*dc, shapeimage->bitmap);
-                           SetPixel(*dc, x, y,
-                                    shape_pixels[HashColorIndex(slot)]);
-#endif
-                       }
-#endif
-                   }
-               }
-           } else {
-               for (y = 0; y < height; y++) {
-                   xpmNextString(data);
-                   for (x = 0; x < width; x++) {
-                       for (a = 0, s = buf; a < cpp; a++, s++)
-                           *s = xpmGetC(data);
-                       for (a = 0; a < ncolors; a++)
-                           if (!strcmp(colorTable[a].string, buf))
-                               break;
-                       if (a == ncolors)       /* no color matches */
-                           return (XpmFileInvalid);
-#ifndef FOR_MSW
-                       XPutPixel(image, x, y, image_pixels[a]);
-                       if (shapeimage)
-                           XPutPixel(shapeimage, x, y, shape_pixels[a]);
-#else
-#ifdef __OS2__
-
-            shapedc = DevOpenDC(hab, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dop, NULLHANDLE);
-            *dc = GpiCreatePS(hab, shapedc, &sizl, GPIA_ASSOC | PU_PELS);
-
-            GpiSetBitmap(*dc, image->bitmap);
-            point.x = x;
-            point.y = y;
-            GpiSetColor(*dc, (LONG)image_pixels[a]);
-            GpiSetPel(*dc, &point);
-#else
-                       SelectObject(*dc, image->bitmap);
-                       SetPixel(*dc, x, y, image_pixels[a]);
-#endif
-                       if (shapeimage) {
-#ifdef __OS2__
-                GpiSetBitmap(*dc, image->bitmap);
-                point.x = x;
-                point.y = y;
-                GpiSetColor(*dc, (LONG)shape_pixels[a]);
-                GpiSetPel(*dc, &point);
-#else
-                           SelectObject(*dc, shapeimage->bitmap);
-                           SetPixel(*dc, x, y, shape_pixels[a]);
-#endif
-                       }
-#endif
-                   }
-               }
-           }
-       }
-       break;
-    }
-    return (XpmSuccess);
-}
diff --git a/src/xpm/data.c b/src/xpm/data.c
deleted file mode 100644 (file)
index c79069b..0000000
+++ /dev/null
@@ -1,514 +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.
- */
-
-/*****************************************************************************\
-* data.c:                                                                     *
-*                                                                             *
-*  XPM library                                                                *
-*  IO utilities                                                               *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#ifndef CXPMPROG
-#include "XpmI.h"
-#endif
-#include <ctype.h>
-
-#ifndef CXPMPROG
-#define Getc(data, file) getc(file)
-#define Ungetc(data, c, file) ungetc(c, file)
-#endif
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-ParseComment(xpmData* data)
-#else
-static int
-ParseComment(data)
-    xpmData *data;
-#endif
-{
-    if (data->type == XPMBUFFER) {
-       register char c;
-       register unsigned int n = 0;
-       unsigned int notend;
-       char *s, *s2;
-
-       s = data->Comment;
-       *s = data->Bcmt[0];
-
-       /* skip the string beginning comment */
-       s2 = data->Bcmt;
-       do {
-           c = *data->cptr++;
-           *++s = c;
-           n++;
-           s2++;
-       } while (c == *s2 && *s2 != '\0' && c);
-
-       if (*s2 != '\0') {
-           /* this wasn't the beginning of a comment */
-           data->cptr -= n;
-           return 0;
-       }
-       /* store comment */
-       data->Comment[0] = *s;
-       s = data->Comment;
-       notend = 1;
-       n = 0;
-       while (notend) {
-           s2 = data->Ecmt;
-           while (*s != *s2 && c) {
-               c = *data->cptr++;
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-           }
-           data->CommentLength = n;
-           do {
-               c = *data->cptr++;
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-               s2++;
-           } while (c == *s2 && *s2 != '\0' && c);
-           if (*s2 == '\0') {
-               /* this is the end of the comment */
-               notend = 0;
-               data->cptr--;
-           }
-       }
-       return 0;
-    } else {
-       FILE *file = data->stream.file;
-       register int c;
-       register unsigned int n = 0, a;
-       unsigned int notend;
-       char *s, *s2;
-
-       s = data->Comment;
-       *s = data->Bcmt[0];
-
-       /* skip the string beginning comment */
-       s2 = data->Bcmt;
-       do {
-           c = Getc(data, file);
-           *++s = c;
-           n++;
-           s2++;
-       } while (c == *s2 && *s2 != '\0' && c != EOF);
-
-       if (*s2 != '\0') {
-           /* this wasn't the beginning of a comment */
-           /* put characters back in the order that we got them */
-           for (a = n; a > 0; a--, s--)
-               Ungetc(data, *s, file);
-           return 0;
-       }
-       /* store comment */
-       data->Comment[0] = *s;
-       s = data->Comment;
-       notend = 1;
-       n = 0;
-       while (notend) {
-           s2 = data->Ecmt;
-           while (*s != *s2 && c != EOF) {
-               c = Getc(data, file);
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-           }
-           data->CommentLength = n;
-           do {
-               c = Getc(data, file);
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-               s2++;
-           } while (c == *s2 && *s2 != '\0' && c != EOF);
-           if (*s2 == '\0') {
-               /* this is the end of the comment */
-               notend = 0;
-               Ungetc(data, *s, file);
-           }
-       }
-       return 0;
-    }
-}
-
-/*
- * skip to the end of the current string and the beginning of the next one
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmNextString(xpmData* data)
-#else
-int
-xpmNextString(data)
-    xpmData *data;
-#endif
-{
-    if (!data->type)
-       data->cptr = (data->stream.data)[++data->line];
-    else if (data->type == XPMBUFFER) {
-       register char c;
-
-       /* get to the end of the current string */
-       if (data->Eos)
-           while ((c = *data->cptr++) && c != data->Eos);
-
-       /*
-        * then get to the beginning of the next string looking for possible
-        * comment
-        */
-       if (data->Bos) {
-           while ((c = *data->cptr++) && c != data->Bos)
-               if (data->Bcmt && c == data->Bcmt[0])
-                   ParseComment(data);
-       } else if (data->Bcmt) {        /* XPM2 natural */
-           while ((c = *data->cptr++) == data->Bcmt[0])
-               ParseComment(data);
-           data->cptr--;
-       }
-    } else {
-       register int c;
-       FILE *file = data->stream.file;
-
-       /* get to the end of the current string */
-       if (data->Eos)
-           while ((c = Getc(data, file)) != data->Eos && c != EOF);
-
-       /*
-        * then get to the beginning of the next string looking for possible
-        * comment
-        */
-       if (data->Bos) {
-           while ((c = Getc(data, file)) != data->Bos && c != EOF)
-               if (data->Bcmt && c == data->Bcmt[0])
-                   ParseComment(data);
-
-       } else if (data->Bcmt) {        /* XPM2 natural */
-           while ((c = Getc(data, file)) == data->Bcmt[0])
-               ParseComment(data);
-           Ungetc(data, c, file);
-       }
-    }
-    return 0;
-}
-
-
-/*
- * skip whitespace and return the following word
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-unsigned int xpmNextWord(
-  xpmData*     data
-, char*        buf
-, unsigned int buflen
-)
-#else
-unsigned int
-xpmNextWord(data, buf, buflen)
-    xpmData *data;
-    char *buf;
-    unsigned int buflen;
-#endif
-{
-    register unsigned int n = 0;
-    int c;
-
-    if (!data->type || data->type == XPMBUFFER) {
-       while (isspace(c = *data->cptr) && c != data->Eos)
-           data->cptr++;
-       do {
-           c = *data->cptr++;
-           *buf++ = c;
-           n++;
-       } while (!isspace(c) && c != data->Eos && n < buflen);
-       n--;
-       data->cptr--;
-    } else {
-       FILE *file = data->stream.file;
-
-       while ((c = Getc(data, file)) != EOF && isspace(c) && c != data->Eos);
-       while (!isspace(c) && c != data->Eos && c != EOF && n < buflen) {
-           *buf++ = c;
-           n++;
-           c = Getc(data, file);
-       }
-       Ungetc(data, c, file);
-    }
-    return (n);
-}
-
-/*
- * skip whitespace and compute the following unsigned int,
- * returns 1 if one is found and 0 if not
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int
-xpmNextUI(xpmData* data, unsigned int* ui_return)
-#else
-int
-xpmNextUI(data, ui_return)
-    xpmData *data;
-    unsigned int *ui_return;
-#endif
-{
-    char buf[BUFSIZ];
-    int l;
-
-    l = xpmNextWord(data, buf, BUFSIZ);
-    return xpmatoui(buf, l, ui_return);
-}
-
-/*
- * return end of string - WARNING: malloc!
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmGetString(xpmData* data, char** sptr, unsigned int* l)
-#else
-int
-xpmGetString(data, sptr, l)
-    xpmData *data;
-    char **sptr;
-    unsigned int *l;
-#endif
-{
-    unsigned int i, n = 0;
-    int c;
-    char *p = NULL, *q, buf[BUFSIZ];
-
-    if (!data->type || data->type == XPMBUFFER) {
-       if (data->cptr) {
-           char *start = data->cptr;
-           while ((c = *data->cptr) && c != data->Eos)
-               data->cptr++;
-           n = data->cptr - start + 1;
-           p = (char *) XpmMalloc(n);
-           if (!p)
-               return (XpmNoMemory);
-           strncpy(p, start, n);
-           if (data->type)             /* XPMBUFFER */
-               p[n - 1] = '\0';
-       }
-    } else {
-       FILE *file = data->stream.file;
-
-       if ((c = Getc(data, file)) == EOF)
-           return (XpmFileInvalid);
-
-       i = 0;
-       q = buf;
-       p = (char *) XpmMalloc(1);
-       while (c != data->Eos && c != EOF) {
-           if (i == BUFSIZ) {
-               /* get to the end of the buffer */
-               /* malloc needed memory */
-               q = (char *) XpmRealloc(p, n + i);
-               if (!q) {
-                   XpmFree(p);
-                   return (XpmNoMemory);
-               }
-               p = q;
-               q += n;
-               /* and copy what we already have */
-               strncpy(q, buf, i);
-               n += i;
-               i = 0;
-               q = buf;
-           }
-           *q++ = c;
-           i++;
-           c = Getc(data, file);
-       }
-       if (c == EOF) {
-           XpmFree(p);
-           return (XpmFileInvalid);
-       }
-       if (n + i != 0) {
-           /* malloc needed memory */
-           q = (char *) XpmRealloc(p, n + i + 1);
-           if (!q) {
-               XpmFree(p);
-               return (XpmNoMemory);
-           }
-           p = q;
-           q += n;
-           /* and copy the buffer */
-           strncpy(q, buf, i);
-           n += i;
-           p[n++] = '\0';
-       } else {
-           *p = '\0';
-           n = 1;
-       }
-       Ungetc(data, c, file);
-    }
-    *sptr = p;
-    *l = n;
-    return (XpmSuccess);
-}
-
-/*
- * get the current comment line
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmGetCmt(xpmData* data, char** cmt)
-#else
-int
-xpmGetCmt(data, cmt)
-    xpmData *data;
-    char **cmt;
-#endif
-{
-    if (!data->type)
-       *cmt = NULL;
-    else if (data->CommentLength) {
-       *cmt = (char *) XpmMalloc(data->CommentLength + 1);
-       strncpy(*cmt, data->Comment, data->CommentLength);
-       (*cmt)[data->CommentLength] = '\0';
-       data->CommentLength = 0;
-    } else
-       *cmt = NULL;
-    return 0;
-}
-
-xpmDataType xpmDataTypes[] =
-{
-    "", "!", "\n", '\0', '\n', "", "", "", "", /* Natural type */
-    "C", "/*", "*/", '"', '"', ",\n", "static char *", "[] = {\n", "};\n",
-    "Lisp", ";", "\n", '"', '"', "\n", "(setq ", " '(\n", "))\n",
-#ifdef VMS
-    NULL
-#else
-    NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL
-#endif
-};
-
-/*
- * parse xpm header
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmParseHeader(xpmData* data)
-#else
-int
-xpmParseHeader(data)
-    xpmData *data;
-#endif
-{
-    char buf[BUFSIZ];
-    int l, n = 0;
-
-    if (data->type) {
-       data->Bos = '\0';
-       data->Eos = '\n';
-       data->Bcmt = data->Ecmt = NULL;
-       l = xpmNextWord(data, buf, BUFSIZ);
-       if (l == 7 && !strncmp("#define", buf, 7)) {
-           /* this maybe an XPM 1 file */
-           char *ptr;
-
-           l = xpmNextWord(data, buf, BUFSIZ);
-           if (!l)
-               return (XpmFileInvalid);
-           buf[l] = '\0';
-           ptr = rindex(buf, '_');
-           if (!ptr || strncmp("_format", ptr, l - (ptr - buf)))
-               return XpmFileInvalid;
-           /* this is definitely an XPM 1 file */
-           data->format = 1;
-           n = 1;                      /* handle XPM1 as mainly XPM2 C */
-       } else {
-
-           /*
-            * skip the first word, get the second one, and see if this is
-            * XPM 2 or 3
-            */
-           l = xpmNextWord(data, buf, BUFSIZ);
-           if ((l == 3 && !strncmp("XPM", buf, 3)) ||
-               (l == 4 && !strncmp("XPM2", buf, 4))) {
-               if (l == 3)
-                   n = 1;              /* handle XPM as XPM2 C */
-               else {
-                   /* get the type key word */
-                   l = xpmNextWord(data, buf, BUFSIZ);
-
-                   /*
-                    * get infos about this type
-                    */
-                   while (xpmDataTypes[n].type
-                          && strncmp(xpmDataTypes[n].type, buf, l))
-                       n++;
-               }
-               data->format = 0;
-           } else
-               /* nope this is not an XPM file */
-               return XpmFileInvalid;
-       }
-       if (xpmDataTypes[n].type) {
-           if (n == 0) {               /* natural type */
-               data->Bcmt = xpmDataTypes[n].Bcmt;
-               data->Ecmt = xpmDataTypes[n].Ecmt;
-               xpmNextString(data);    /* skip the end of the headerline */
-               data->Bos = xpmDataTypes[n].Bos;
-               data->Eos = xpmDataTypes[n].Eos;
-           } else {
-               data->Bcmt = xpmDataTypes[n].Bcmt;
-               data->Ecmt = xpmDataTypes[n].Ecmt;
-               if (!data->format) {    /* XPM 2 or 3 */
-                   data->Bos = xpmDataTypes[n].Bos;
-                   data->Eos = '\0';
-                   /* get to the beginning of the first string */
-                   xpmNextString(data);
-                   data->Eos = xpmDataTypes[n].Eos;
-               } else                  /* XPM 1 skip end of line */
-                   xpmNextString(data);
-           }
-       } else
-           /* we don't know about that type of XPM file... */
-           return XpmFileInvalid;
-    }
-    return XpmSuccess;
-}
diff --git a/src/xpm/dataxpm.c b/src/xpm/dataxpm.c
deleted file mode 100644 (file)
index 917614e..0000000
+++ /dev/null
@@ -1,479 +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.
- */
-
-/*****************************************************************************\
-* data.c:                                                                     *
-*                                                                             *
-*  XPM library                                                                *
-*  IO utilities                                                               *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#ifndef CXPMPROG
-/* Official version number */
-static char *RCS_Version = "$XpmVersion: 3.4k $";
-
-/* Internal version number */
-static char *RCS_Id = "$Id$";
-
-#include "XpmI.h"
-#endif
-#include <ctype.h>
-
-#ifndef CXPMPROG
-#define Getc(data, file) getc(file)
-#define Ungetc(data, c, file) ungetc(c, file)
-#endif
-
-static int
-ParseComment(data)
-    xpmData *data;
-{
-    if (data->type == XPMBUFFER) {
-       register char c;
-       register unsigned int n = 0;
-       unsigned int notend;
-       char *s, *s2;
-
-       s = data->Comment;
-       *s = data->Bcmt[0];
-
-       /* skip the string beginning comment */
-       s2 = data->Bcmt;
-       do {
-           c = *data->cptr++;
-           *++s = c;
-           n++;
-           s2++;
-       } while (c == *s2 && *s2 != '\0' && c);
-
-       if (*s2 != '\0') {
-           /* this wasn't the beginning of a comment */
-           data->cptr -= n;
-           return 0;
-       }
-       /* store comment */
-       data->Comment[0] = *s;
-       s = data->Comment;
-       notend = 1;
-       n = 0;
-       while (notend) {
-           s2 = data->Ecmt;
-           while (*s != *s2 && c) {
-               c = *data->cptr++;
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-           }
-           data->CommentLength = n;
-           do {
-               c = *data->cptr++;
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-               s2++;
-           } while (c == *s2 && *s2 != '\0' && c);
-           if (*s2 == '\0') {
-               /* this is the end of the comment */
-               notend = 0;
-               data->cptr--;
-           }
-       }
-       return 0;
-    } else {
-       FILE *file = data->stream.file;
-       register int c;
-       register unsigned int n = 0, a;
-       unsigned int notend;
-       char *s, *s2;
-
-       s = data->Comment;
-       *s = data->Bcmt[0];
-
-       /* skip the string beginning comment */
-       s2 = data->Bcmt;
-       do {
-           c = Getc(data, file);
-           *++s = c;
-           n++;
-           s2++;
-       } while (c == *s2 && *s2 != '\0' && c != EOF);
-
-       if (*s2 != '\0') {
-           /* this wasn't the beginning of a comment */
-           /* put characters back in the order that we got them */
-           for (a = n; a > 0; a--, s--)
-               Ungetc(data, *s, file);
-           return 0;
-       }
-       /* store comment */
-       data->Comment[0] = *s;
-       s = data->Comment;
-       notend = 1;
-       n = 0;
-       while (notend) {
-           s2 = data->Ecmt;
-           while (*s != *s2 && c != EOF) {
-               c = Getc(data, file);
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-           }
-           data->CommentLength = n;
-           do {
-               c = Getc(data, file);
-               if (n == XPMMAXCMTLEN - 1)  { /* forget it */
-                   s = data->Comment;
-                   n = 0;
-               }
-               *++s = c;
-               n++;
-               s2++;
-           } while (c == *s2 && *s2 != '\0' && c != EOF);
-           if (*s2 == '\0') {
-               /* this is the end of the comment */
-               notend = 0;
-               Ungetc(data, *s, file);
-           }
-       }
-       return 0;
-    }
-}
-
-/*
- * skip to the end of the current string and the beginning of the next one
- */
-int
-xpmNextString(data)
-    xpmData *data;
-{
-    if (!data->type)
-       data->cptr = (data->stream.data)[++data->line];
-    else if (data->type == XPMBUFFER) {
-       register char c;
-
-       /* get to the end of the current string */
-       if (data->Eos)
-           while ((c = *data->cptr++) && c != data->Eos);
-
-       /*
-        * then get to the beginning of the next string looking for possible
-        * comment
-        */
-       if (data->Bos) {
-           while ((c = *data->cptr++) && c != data->Bos)
-               if (data->Bcmt && c == data->Bcmt[0])
-                   ParseComment(data);
-       } else if (data->Bcmt) {        /* XPM2 natural */
-           while ((c = *data->cptr++) == data->Bcmt[0])
-               ParseComment(data);
-           data->cptr--;
-       }
-    } else {
-       register int c;
-       FILE *file = data->stream.file;
-
-       /* get to the end of the current string */
-       if (data->Eos)
-           while ((c = Getc(data, file)) != data->Eos && c != EOF);
-
-       /*
-        * then get to the beginning of the next string looking for possible
-        * comment
-        */
-       if (data->Bos) {
-           while ((c = Getc(data, file)) != data->Bos && c != EOF)
-               if (data->Bcmt && c == data->Bcmt[0])
-                   ParseComment(data);
-
-       } else if (data->Bcmt) {        /* XPM2 natural */
-           while ((c = Getc(data, file)) == data->Bcmt[0])
-               ParseComment(data);
-           Ungetc(data, c, file);
-       }
-    }
-    return 0;
-}
-
-
-/*
- * skip whitespace and return the following word
- */
-unsigned int
-xpmNextWord(data, buf, buflen)
-    xpmData *data;
-    char *buf;
-    unsigned int buflen;
-{
-    register unsigned int n = 0;
-    int c;
-
-    if (!data->type || data->type == XPMBUFFER) {
-       while (isspace(c = *data->cptr) && c != data->Eos)
-           data->cptr++;
-       do {
-           c = *data->cptr++;
-           *buf++ = c;
-           n++;
-       } while (!isspace(c) && c != data->Eos && n < buflen);
-       n--;
-       data->cptr--;
-    } else {
-       FILE *file = data->stream.file;
-
-       while ((c = Getc(data, file)) != EOF && isspace(c) && c != data->Eos);
-       while (!isspace(c) && c != data->Eos && c != EOF && n < buflen) {
-           *buf++ = c;
-           n++;
-           c = Getc(data, file);
-       }
-       Ungetc(data, c, file);
-    }
-    return (n);
-}
-
-/*
- * skip whitespace and compute the following unsigned int,
- * returns 1 if one is found and 0 if not
- */
-int
-xpmNextUI(data, ui_return)
-    xpmData *data;
-    unsigned int *ui_return;
-{
-    char buf[BUFSIZ];
-    int l;
-
-    l = xpmNextWord(data, buf, BUFSIZ);
-    return xpmatoui(buf, l, ui_return);
-}
-
-/*
- * return end of string - WARNING: malloc!
- */
-int
-xpmGetString(data, sptr, l)
-    xpmData *data;
-    char **sptr;
-    unsigned int *l;
-{
-    unsigned int i, n = 0;
-    int c;
-    char *p = NULL, *q, buf[BUFSIZ];
-
-    if (!data->type || data->type == XPMBUFFER) {
-       if (data->cptr) {
-           char *start = data->cptr;
-           while ((c = *data->cptr) && c != data->Eos)
-               data->cptr++;
-           n = data->cptr - start + 1;
-           p = (char *) XpmMalloc(n);
-           if (!p)
-               return (XpmNoMemory);
-           strncpy(p, start, n);
-           if (data->type)             /* XPMBUFFER */
-               p[n - 1] = '\0';
-       }
-    } else {
-       FILE *file = data->stream.file;
-
-       if ((c = Getc(data, file)) == EOF)
-           return (XpmFileInvalid);
-
-       i = 0;
-       q = buf;
-       p = (char *) XpmMalloc(1);
-       while (c != data->Eos && c != EOF) {
-           if (i == BUFSIZ) {
-               /* get to the end of the buffer */
-               /* malloc needed memory */
-               q = (char *) XpmRealloc(p, n + i);
-               if (!q) {
-                   XpmFree(p);
-                   return (XpmNoMemory);
-               }
-               p = q;
-               q += n;
-               /* and copy what we already have */
-               strncpy(q, buf, i);
-               n += i;
-               i = 0;
-               q = buf;
-           }
-           *q++ = c;
-           i++;
-           c = Getc(data, file);
-       }
-       if (c == EOF) {
-           XpmFree(p);
-           return (XpmFileInvalid);
-       }
-       if (n + i != 0) {
-           /* malloc needed memory */
-           q = (char *) XpmRealloc(p, n + i + 1);
-           if (!q) {
-               XpmFree(p);
-               return (XpmNoMemory);
-           }
-           p = q;
-           q += n;
-           /* and copy the buffer */
-           strncpy(q, buf, i);
-           n += i;
-           p[n++] = '\0';
-       } else {
-           *p = '\0';
-           n = 1;
-       }
-       Ungetc(data, c, file);
-    }
-    *sptr = p;
-    *l = n;
-    return (XpmSuccess);
-}
-
-/*
- * get the current comment line
- */
-int
-xpmGetCmt(data, cmt)
-    xpmData *data;
-    char **cmt;
-{
-    if (!data->type)
-       *cmt = NULL;
-    else if (data->CommentLength) {
-       *cmt = (char *) XpmMalloc(data->CommentLength + 1);
-       strncpy(*cmt, data->Comment, data->CommentLength);
-       (*cmt)[data->CommentLength] = '\0';
-       data->CommentLength = 0;
-    } else
-       *cmt = NULL;
-    return 0;
-}
-
-xpmDataType xpmDataTypes[] =
-{
-    "", "!", "\n", '\0', '\n', "", "", "", "", /* Natural type */
-    "C", "/*", "*/", '"', '"', ",\n", "static char *", "[] = {\n", "};\n",
-    "Lisp", ";", "\n", '"', '"', "\n", "(setq ", " '(\n", "))\n",
-#ifdef VMS
-    NULL
-#else
-    NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL
-#endif
-};
-
-/*
- * parse xpm header
- */
-int
-xpmParseHeader(data)
-    xpmData *data;
-{
-    char buf[BUFSIZ];
-    int l, n = 0;
-
-    if (data->type) {
-       data->Bos = '\0';
-       data->Eos = '\n';
-       data->Bcmt = data->Ecmt = NULL;
-       l = xpmNextWord(data, buf, BUFSIZ);
-       if (l == 7 && !strncmp("#define", buf, 7)) {
-           /* this maybe an XPM 1 file */
-           char *ptr;
-
-           l = xpmNextWord(data, buf, BUFSIZ);
-           if (!l)
-               return (XpmFileInvalid);
-           buf[l] = '\0';
-           ptr = rindex(buf, '_');
-           if (!ptr || strncmp("_format", ptr, l - (ptr - buf)))
-               return XpmFileInvalid;
-           /* this is definitely an XPM 1 file */
-           data->format = 1;
-           n = 1;                      /* handle XPM1 as mainly XPM2 C */
-       } else {
-
-           /*
-            * skip the first word, get the second one, and see if this is
-            * XPM 2 or 3
-            */
-           l = xpmNextWord(data, buf, BUFSIZ);
-           if ((l == 3 && !strncmp("XPM", buf, 3)) ||
-               (l == 4 && !strncmp("XPM2", buf, 4))) {
-               if (l == 3)
-                   n = 1;              /* handle XPM as XPM2 C */
-               else {
-                   /* get the type key word */
-                   l = xpmNextWord(data, buf, BUFSIZ);
-
-                   /*
-                    * get infos about this type
-                    */
-                   while (xpmDataTypes[n].type
-                          && strncmp(xpmDataTypes[n].type, buf, l))
-                       n++;
-               }
-               data->format = 0;
-           } else
-               /* nope this is not an XPM file */
-               return XpmFileInvalid;
-       }
-       if (xpmDataTypes[n].type) {
-           if (n == 0) {               /* natural type */
-               data->Bcmt = xpmDataTypes[n].Bcmt;
-               data->Ecmt = xpmDataTypes[n].Ecmt;
-               xpmNextString(data);    /* skip the end of the headerline */
-               data->Bos = xpmDataTypes[n].Bos;
-               data->Eos = xpmDataTypes[n].Eos;
-           } else {
-               data->Bcmt = xpmDataTypes[n].Bcmt;
-               data->Ecmt = xpmDataTypes[n].Ecmt;
-               if (!data->format) {    /* XPM 2 or 3 */
-                   data->Bos = xpmDataTypes[n].Bos;
-                   data->Eos = '\0';
-                   /* get to the beginning of the first string */
-                   xpmNextString(data);
-                   data->Eos = xpmDataTypes[n].Eos;
-               } else                  /* XPM 1 skip end of line */
-                   xpmNextString(data);
-           }
-       } else
-           /* we don't know about that type of XPM file... */
-           return XpmFileInvalid;
-    }
-    return XpmSuccess;
-}
diff --git a/src/xpm/files b/src/xpm/files
deleted file mode 100644 (file)
index e1bf3fa..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-CHANGES
-COPYRIGHT
-FAQ.html
-FILES
-Imakefile
-Makefile.noX
-README.html
-README.AMIGA
-README.MSW
-namecvt
-lib
-lib/Imakefile
-lib/Makefile.noX
-lib/Makefile.AmigaGCC
-lib/Smakefile
-lib/Attrib.c
-lib/CrBufFrI.c
-lib/CrBufFrP.c
-lib/CrDatFrI.c
-lib/CrDatFrP.c
-lib/CrIFrBuf.c
-lib/CrIFrDat.c
-lib/CrIFrP.c
-lib/CrPFrBuf.c
-lib/CrPFrDat.c
-lib/CrPFrI.c
-lib/Image.c
-lib/Info.c
-lib/RdFToBuf.c
-lib/RdFToDat.c
-lib/RdFToI.c
-lib/RdFToP.c
-lib/WrFFrBuf.c
-lib/WrFFrDat.c
-lib/WrFFrI.c
-lib/WrFFrP.c
-lib/amigax.h
-lib/amigax.c
-lib/create.c
-lib/data.c
-lib/descrip.mms
-lib/hashtab.c
-lib/make.com
-lib/misc.c
-lib/parse.c
-lib/rgb.c
-lib/rgbtab.h
-lib/scan.c
-lib/simx.h
-lib/simx.c
-lib/xpm.h
-lib/XpmI.h
-lib/Xpm-def.cpp
-doc
-doc/xpm.PS
-sxpm
-sxpm/Imakefile
-sxpm/Makefile.noX
-sxpm/plaid.xpm
-sxpm/plaid_ext.xpm
-sxpm/plaid_mask.xpm
-sxpm/sxpm.c
-sxpm/sxpm.man
-cxpm
-cxpm/Imakefile
-cxpm/Makefile.noX
-cxpm/cxpm.c
-cxpm/cxpm.man
diff --git a/src/xpm/hashtab.c b/src/xpm/hashtab.c
deleted file mode 100644 (file)
index 521a918..0000000
+++ /dev/null
@@ -1,266 +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.
- */
-
-/*****************************************************************************\
-* hashtab.c:                                                                  *
-*                                                                             *
-*  XPM library                                                                *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-*  this originaly comes from Colas Nahaboo as a part of Wool                  *
-*                                                                             *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-LFUNC(AtomMake, xpmHashAtom, (char *name, void *data));
-LFUNC(HashTableGrows, int, (xpmHashTable * table));
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static xpmHashAtom
-AtomMake(char* name, void* data)                       /* makes an atom */
-#else
-static xpmHashAtom
-AtomMake(name, data)                   /* makes an atom */
-    char *name;                                /* WARNING: is just pointed to */
-    void *data;
-#endif
-{
-    xpmHashAtom object = (xpmHashAtom) XpmMalloc(sizeof(struct _xpmHashAtom));
-
-    if (object) {
-       object->name = name;
-       object->data = data;
-    }
-    return object;
-}
-
-/************************\
-*                       *
-*  hash table routines          *
-*                       *
-\************************/
-
-/*
- * Hash function definition:
- * HASH_FUNCTION: hash function, hash = hashcode, hp = pointer on char,
- *                              hash2 = temporary for hashcode.
- * INITIAL_TABLE_SIZE in slots
- * HASH_TABLE_GROWS how hash table grows.
- */
-
-/* Mock lisp function */
-#define HASH_FUNCTION    hash = (hash << 5) - hash + *hp++;
-/* #define INITIAL_HASH_SIZE 2017 */
-#define INITIAL_HASH_SIZE 256          /* should be enough for colors */
-#define HASH_TABLE_GROWS  size = size * 2;
-
-/* aho-sethi-ullman's HPJ (sizes should be primes)*/
-#ifdef notdef
-#define HASH_FUNCTION  hash <<= 4; hash += *hp++; \
-    if(hash2 = hash & 0xf0000000) hash ^= (hash2 >> 24) ^ hash2;
-#define INITIAL_HASH_SIZE 4095         /* should be 2^n - 1 */
-#define HASH_TABLE_GROWS  size = size << 1 + 1;
-#endif
-
-/* GNU emacs function */
-/*
-#define HASH_FUNCTION    hash = (hash << 3) + (hash >> 28) + *hp++;
-#define INITIAL_HASH_SIZE 2017
-#define HASH_TABLE_GROWS  size = size * 2;
-*/
-
-/* end of hash functions */
-
-/*
- * The hash table is used to store atoms via their NAME:
- *
- * NAME --hash--> ATOM |--name--> "foo"
- *                    |--data--> any value which has to be stored
- *
- */
-
-/*
- * xpmHashSlot gives the slot (pointer to xpmHashAtom) of a name
- * (slot points to NULL if it is not defined)
- *
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-xpmHashAtom* xpmHashSlot(xpmHashTable* table, char* s)
-#else
-xpmHashAtom *
-xpmHashSlot(table, s)
-    xpmHashTable *table;
-    char *s;
-#endif
-{
-    xpmHashAtom *atomTable = table->atomTable;
-    unsigned int hash;
-    xpmHashAtom *p;
-    char *hp = s;
-    char *ns;
-
-    hash = 0;
-    while (*hp) {                      /* computes hash function */
-       HASH_FUNCTION
-    }
-    p = atomTable + hash % table->size;
-    while (*p) {
-       ns = (*p)->name;
-       if (ns[0] == s[0] && strcmp(ns, s) == 0)
-           break;
-       p--;
-       if (p < atomTable)
-           p = atomTable + table->size - 1;
-    }
-    return p;
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int HashTableGrows(xpmHashTable* table)
-#else
-static int
-HashTableGrows(table)
-    xpmHashTable *table;
-#endif
-{
-    xpmHashAtom *atomTable = table->atomTable;
-    int size = table->size;
-    xpmHashAtom *t, *p;
-    int i;
-    int oldSize = size;
-
-    t = atomTable;
-    HASH_TABLE_GROWS
-       table->size = size;
-    table->limit = size / 3;
-    atomTable = (xpmHashAtom *) XpmMalloc(size * sizeof(*atomTable));
-    if (!atomTable)
-       return (XpmNoMemory);
-    table->atomTable = atomTable;
-    for (p = atomTable + size; p > atomTable;)
-       *--p = NULL;
-    for (i = 0, p = t; i < oldSize; i++, p++)
-       if (*p) {
-           xpmHashAtom *ps = xpmHashSlot(table, (*p)->name);
-
-           *ps = *p;
-       }
-    XpmFree(t);
-    return (XpmSuccess);
-}
-
-/*
- * xpmHashIntern(table, name, data)
- * an xpmHashAtom is created if name doesn't exist, with the given data.
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmHashIntern(xpmHashTable* table, char* tag, void* data)
-#else
-int
-xpmHashIntern(table, tag, data)
-    xpmHashTable *table;
-    char *tag;
-    void *data;
-#endif
-{
-    xpmHashAtom *slot;
-
-    if (!*(slot = xpmHashSlot(table, tag))) {
-       /* undefined, make a new atom with the given data */
-       if (!(*slot = AtomMake(tag, data)))
-           return (XpmNoMemory);
-       if (table->used >= table->limit) {
-           int ErrorStatus;
-
-           if ((ErrorStatus = HashTableGrows(table)) != XpmSuccess)
-               return (ErrorStatus);
-           table->used++;
-           return (XpmSuccess);
-       }
-       table->used++;
-    }
-    return (XpmSuccess);
-}
-
-/*
- *  must be called before allocating any atom
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmHashTableInit(xpmHashTable* table)
-#else
-int
-xpmHashTableInit(table)
-    xpmHashTable *table;
-#endif
-{
-    xpmHashAtom *p;
-    xpmHashAtom *atomTable;
-
-    table->size = INITIAL_HASH_SIZE;
-    table->limit = table->size / 3;
-    table->used = 0;
-    atomTable = (xpmHashAtom *) XpmMalloc(table->size * sizeof(*atomTable));
-    if (!atomTable)
-       return (XpmNoMemory);
-    for (p = atomTable + table->size; p > atomTable;)
-       *--p = NULL;
-    table->atomTable = atomTable;
-    return (XpmSuccess);
-}
-
-/*
- *   frees a hashtable and all the stored atoms
- */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-xpmHashTableFree(xpmHashTable* table)
-#else
-void
-xpmHashTableFree(table)
-    xpmHashTable *table;
-#endif
-{
-    xpmHashAtom *p;
-    xpmHashAtom *atomTable = table->atomTable;
-
-    if (!atomTable)
-       return;
-    for (p = atomTable + table->size; p > atomTable;)
-       if (*--p)
-           XpmFree(*p);
-    XpmFree(atomTable);
-    table->atomTable = NULL;
-}
diff --git a/src/xpm/imagexpm.c b/src/xpm/imagexpm.c
deleted file mode 100644 (file)
index 0753622..0000000
+++ /dev/null
@@ -1,61 +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.
- */
-
-/*****************************************************************************\
-*  Image.c:                                                                   *
-*                                                                             *
-*  XPM library                                                                *
-*  Functions to init and free the XpmImage structure.                         *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-/*
- * Init returned data to free safely later on
- */
-void
-xpmInitXpmImage(image)
-    XpmImage *image;
-{
-    image->ncolors = 0;
-    image->colorTable = NULL;
-    image->data = NULL;
-}
-
-/*
- * Free the XpmImage data which have been allocated
- */
-void
-XpmFreeXpmImage(image)
-    XpmImage *image;
-{
-    if (image->colorTable)
-       xpmFreeColorTable(image->colorTable, image->ncolors);
-    if (image->data)
-       XpmFree(image->data);
-    image->data = NULL;
-}
diff --git a/src/xpm/makefile.b32 b/src/xpm/makefile.b32
deleted file mode 100644 (file)
index c912cd6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# Makefile for xpm
-# Borland C++   
-
-
-LIBTARGET=$(WXDIR)\lib\xpm.lib
-
-OBJECTS = attrib.obj crbuffri.obj crdatfri.obj create.obj crifrbuf.obj crifrdat.obj\
-          data.obj image.obj info.obj hashtab.obj misc.obj parse.obj\
-          rdftodat.obj rdftoi.obj rgb.obj scan.obj simx.obj wrffrdat.obj wrffri.obj
-
-!include $(WXWIN)\src\makelib.b32
-
-create.obj: create.c
-       bcc32 $(CPPFLAGS) -Od -P- -c create.c
-
-rgb.obj: rgb.c
-       bcc32 $(CPPFLAGS) -Od -P- -c rgb.c
-
diff --git a/src/xpm/makefile.bcc b/src/xpm/makefile.bcc
deleted file mode 100644 (file)
index b01c0cb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Makefile for xpm
-# Borland C++   
-
-
-LIBTARGET=$(WXDIR)\lib\xpm.lib
-
-OBJECTS = attrib.obj crbuffri.obj crdatfri.obj create.obj crifrbuf.obj crifrdat.obj\
-          data.obj image.obj info.obj hashtab.obj misc.obj parse.obj\
-          rdftodat.obj rdftoi.obj rgb.obj scan.obj simx.obj wrffrdat.obj wrffri.obj
-
-!include $(WXWIN)\src\makelib.bcc
diff --git a/src/xpm/makefile.dos b/src/xpm/makefile.dos
deleted file mode 100644 (file)
index 07f2716..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-# File:                makefile.vc
-# Author:      Julian Smart
-# Created:     1997
-# Updated:
-# Copyright:   (c) 1997, Julian Smart
-#
-# "%W% %G%"
-#
-# Makefile : Builds xpm.lib for VC++ (16-bit)
-#
-!include <..\makemsc.env>
-
-THISDIR=$(WXWIN)\src\xpm
-
-LIBTARGET=$(WXDIR)\lib\xpm.lib
-
-XPMDIR=$(WXDIR)\src\xpm
-
-OBJECTS =      $(XPMDIR)\attrib.obj\
-               $(XPMDIR)\crbuffri.obj\
-               $(XPMDIR)\crdatfri.obj\
-               $(XPMDIR)\create.obj\
-               $(XPMDIR)\crifrbuf.obj\
-               $(XPMDIR)\crifrdat.obj\
-               $(XPMDIR)\dataxpm.obj\
-               $(XPMDIR)\imagexpm.obj\
-               $(XPMDIR)\info.obj\
-               $(XPMDIR)\hashtab.obj\
-               $(XPMDIR)\misc.obj\
-               $(XPMDIR)\parse.obj\
-               $(XPMDIR)\rdftodat.obj\
-               $(XPMDIR)\rdftoi.obj\
-               $(XPMDIR)\rgb.obj\
-               $(XPMDIR)\scan.obj\
-               $(XPMDIR)\simx.obj\
-               $(XPMDIR)\wrffrdat.obj\
-               $(XPMDIR)\wrffri.obj
-
-all:    $(LIBTARGET)
-
-$(LIBTARGET):      $(OBJECTS)
-       -erase $(LIBTARGET)
-       lib /PAGESIZE:128 @<<
-$(LIBTARGET)
-y
-$(OBJECTS)
-nul
-;
-<<
-
-$(XPMDIR)\attrib.obj: $(XPMDIR)\attrib.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\crbuffri.obj: $(XPMDIR)\crbuffri.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\crdatfri.obj: $(XPMDIR)\crdatfri.c
-               cl @<<
-$(CPPFLAGS2) /c  $*.c /Fo$@
-<<
-
-$(XPMDIR)\create.obj: $(XPMDIR)\create.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\crifrbuf.obj: $(XPMDIR)\crifrbuf.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\crifrdat.obj: $(XPMDIR)\crifrdat.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\dataxpm.obj: $(XPMDIR)\dataxpm.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\imagexpm.obj: $(XPMDIR)\imagexpm.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\info.obj: $(XPMDIR)\info.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\hashtab.obj: $(XPMDIR)\hashtab.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\misc.obj: $(XPMDIR)\misc.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\parse.obj: $(XPMDIR)\parse.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\rdftodat.obj: $(XPMDIR)\rdftodat.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\rdftoi.obj: $(XPMDIR)\rdftoi.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\rgb.obj: $(XPMDIR)\rgb.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\scan.obj: $(XPMDIR)\scan.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\simx.obj: $(XPMDIR)\simx.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\wrffrdat.obj: $(XPMDIR)\wrffrdat.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-$(XPMDIR)\wrffri.obj: $(XPMDIR)\wrffri.c
-               cl @<<
-$(CPPFLAGS2) /c $*.c /Fo$@
-<<
-
-clean:
-        -erase *.obj
-        -erase $(LIBTARGET)
-        -erase *.pdb
-        -erase *.sbr
-        -erase *.pch
-
-cleanall: clean
-
diff --git a/src/xpm/makefile.wat b/src/xpm/makefile.wat
deleted file mode 100644 (file)
index f540381..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/binb/wmake.exe
-#
-# File:                makefile.wat
-# Author:      Julian Smart
-# Created:     1998
-#
-# Makefile : Builds XPM library for Watcom C++, WIN32
-
-WXDIR = ..\..
-
-!include $(WXDIR)\src\makewat.env
-
-WXLIB = $(WXDIR)\lib
-
-LIBTARGET   = $(WXLIB)\xpm.lib
-
-OBJECTS =      attrib.obj &
-               crbuffri.obj &
-               crdatfri.obj &
-               create.obj &
-               crifrbuf.obj &
-               crifrdat.obj &
-               data.obj &
-               image.obj &
-               info.obj &
-               hashtab.obj &
-               misc.obj &
-               parse.obj &
-               rdftodat.obj &
-               rdftoi.obj &
-               rgb.obj &
-               scan.obj &
-               simx.obj &
-               wrffrdat.obj &
-               wrffri.obj
-
-all:        $(OBJECTS) $(LIBTARGET)
-
-$(LIBTARGET) : $(OBJECTS)
-    %create tmp.lbc
-    @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i
-    wlib /b /c /n /p=512 $^@ @tmp.lbc
-
-clean:   .SYMBOLIC
-    -erase *.obj
-    -erase $(LIBTARGET)
-    -erase *.pch
-    -erase *.err
-    -erase *.lbc
-
-cleanall:   clean
-
-#accel.obj:     $(MSWDIR)\accel.cpp
-#  *$(CCC) $(CPPFLAGS) $(IFLAGS) $<
-
-
diff --git a/src/xpm/misc.c b/src/xpm/misc.c
deleted file mode 100644 (file)
index b8c704b..0000000
+++ /dev/null
@@ -1,150 +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.
- */
-
-/*****************************************************************************\
-* misc.c:                                                                     *
-*                                                                             *
-*  XPM library                                                                *
-*  Miscellaneous utilities                                                    *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-#include "XpmI.h"
-
-#ifdef NEED_STRDUP
-/*
- * in case strdup is not provided by the system here is one
- * which does the trick
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-char* xpmstrdup(char* s1)
-#else
-char *
-xpmstrdup(s1)
-    char *s1;
-#endif
-{
-    char *s2;
-    int l = strlen(s1) + 1;
-
-    if (s2 = (char *) XpmMalloc(l))
-       strcpy(s2, s1);
-    return s2;
-}
-
-#endif
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-unsigned int
-xpmatoui(
-  register char* p
-, unsigned int   l
-, unsigned int*  ui_return
-)
-#else
-unsigned int
-xpmatoui(p, l, ui_return)
-    register char *p;
-    unsigned int l;
-    unsigned int *ui_return;
-#endif
-{
-    register unsigned int n, i;
-
-    n = 0;
-    for (i = 0; i < l; i++)
-       if (*p >= '0' && *p <= '9')
-           n = n * 10 + *p++ - '0';
-       else
-           break;
-
-    if (i != 0 && i == l) {
-       *ui_return = n;
-       return 1;
-    } else
-       return 0;
-}
-
-/*
- * Function returning a character string related to an error code.
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-char* XpmGetErrorString(int errcode)
-#else
-char *
-XpmGetErrorString(errcode)
-    int errcode;
-#endif
-{
-    switch (errcode) {
-    case XpmColorError:
-       return ("XpmColorError");
-    case XpmSuccess:
-       return ("XpmSuccess");
-    case XpmOpenFailed:
-       return ("XpmOpenFailed");
-    case XpmFileInvalid:
-       return ("XpmFileInvalid");
-    case XpmNoMemory:
-       return ("XpmNoMemory");
-    case XpmColorFailed:
-       return ("XpmColorFailed");
-    default:
-       return ("Invalid XpmError");
-    }
-}
-
-/*
- * The following function provides a way to figure out if the linked library is
- * newer or older than the one with which a program has been first compiled.
- */
-int
-XpmLibraryVersion()
-{
-    return XpmIncludeVersion;
-}
-
-
-/* The following should help people wanting to use their own functions */
-#ifdef XpmFree
-#undef XpmFree
-#endif
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void
-XpmFree(void* ptr)
-#else
-void
-XpmFree(ptr)
-    void *ptr;
-#endif
-{
-    free(ptr);
-}
diff --git a/src/xpm/parse.c b/src/xpm/parse.c
deleted file mode 100644 (file)
index 9c5249f..0000000
+++ /dev/null
@@ -1,804 +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.
- */
-
-/*****************************************************************************\
-* parse.c:                                                                    *
-*                                                                             *
-*  XPM library                                                                *
-*  Parse an XPM file or array and store the found informations                *
-*  in the given XpmImage structure.                                           *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to FOR_MSW has been added by
- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
- */
-
-#include "XpmI.h"
-#include <ctype.h>
-
-LFUNC(ParsePixels, int, (xpmData *data, unsigned int width,
-                        unsigned int height, unsigned int ncolors,
-                        unsigned int cpp, XpmColor *colorTable,
-                        xpmHashTable *hashtable, unsigned int **pixels));
-
-char *xpmColorKeys[] = {
-    "s",                               /* key #1: symbol */
-    "m",                               /* key #2: mono visual */
-    "g4",                              /* key #3: 4 grays visual */
-    "g",                               /* key #4: gray visual */
-    "c",                               /* key #5: color visual */
-};
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmParseValues(
-  xpmData*      data
-, unsigned int* width
-, unsigned int* height
-, unsigned int* ncolors
-, unsigned int* cpp
-, unsigned int* x_hotspot
-, unsigned int* y_hotspot
-, unsigned int* hotspot
-, unsigned int* extensions
-)
-#else
-int
-xpmParseValues(data, width, height, ncolors, cpp,
-           x_hotspot, y_hotspot, hotspot, extensions)
-    xpmData *data;
-    unsigned int *width, *height, *ncolors, *cpp;
-    unsigned int *x_hotspot, *y_hotspot, *hotspot;
-    unsigned int *extensions;
-#endif
-{
-    unsigned int l;
-    char buf[BUFSIZ];
-
-    if (!data->format) {               /* XPM 2 or 3 */
-
-       /*
-        * read values: width, height, ncolors, chars_per_pixel
-        */
-       if (!(xpmNextUI(data, width) && xpmNextUI(data, height)
-             && xpmNextUI(data, ncolors) && xpmNextUI(data, cpp)))
-           return (XpmFileInvalid);
-
-       /*
-        * read optional information (hotspot and/or XPMEXT) if any
-        */
-       l = xpmNextWord(data, buf, BUFSIZ);
-       if (l) {
-           *extensions = (l == 6 && !strncmp("XPMEXT", buf, 6));
-           if (*extensions)
-               *hotspot = (xpmNextUI(data, x_hotspot)
-                           && xpmNextUI(data, y_hotspot));
-           else {
-               *hotspot = (xpmatoui(buf, l, x_hotspot)
-                           && xpmNextUI(data, y_hotspot));
-               l = xpmNextWord(data, buf, BUFSIZ);
-               *extensions = (l == 6 && !strncmp("XPMEXT", buf, 6));
-           }
-       }
-    } else {
-
-       /*
-        * XPM 1 file read values: width, height, ncolors, chars_per_pixel
-        */
-       int i;
-       char *ptr;
-       Bool got_one, saw_width = False, saw_height = False;
-       Bool saw_ncolors = False, saw_chars_per_pixel = False;
-
-       for (i = 0; i < 4; i++) {
-           l = xpmNextWord(data, buf, BUFSIZ);
-           if (l != 7 || strncmp("#define", buf, 7))
-               return (XpmFileInvalid);
-           l = xpmNextWord(data, buf, BUFSIZ);
-           if (!l)
-               return (XpmFileInvalid);
-           buf[l] = '\0';
-           ptr = buf;
-           got_one = False;
-           while (!got_one) {
-               ptr = index(ptr, '_');
-               if (!ptr)
-                   return (XpmFileInvalid);
-               switch (l - (ptr - buf)) {
-               case 6:
-                   if (saw_width || strncmp("_width", ptr, 6)
-                       || !xpmNextUI(data, width))
-                       return (XpmFileInvalid);
-                   else
-                       saw_width = True;
-                   got_one = True;
-                   break;
-               case 7:
-                   if (saw_height || strncmp("_height", ptr, 7)
-                       || !xpmNextUI(data, height))
-                       return (XpmFileInvalid);
-                   else
-                       saw_height = True;
-                   got_one = True;
-                   break;
-               case 8:
-                   if (saw_ncolors || strncmp("_ncolors", ptr, 8)
-                       || !xpmNextUI(data, ncolors))
-                       return (XpmFileInvalid);
-                   else
-                       saw_ncolors = True;
-                   got_one = True;
-                   break;
-               case 16:
-                   if (saw_chars_per_pixel
-                       || strncmp("_chars_per_pixel", ptr, 16)
-                       || !xpmNextUI(data, cpp))
-                       return (XpmFileInvalid);
-                   else
-                       saw_chars_per_pixel = True;
-                   got_one = True;
-                   break;
-               default:
-                   ptr++;
-               }
-           }
-           /* skip the end of line */
-           xpmNextString(data);
-       }
-       if (!saw_width || !saw_height || !saw_ncolors || !saw_chars_per_pixel)
-         return (XpmFileInvalid);
-
-       *hotspot = 0;
-       *extensions = 0;
-    }
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmParseColors(
-  xpmData*      data
-, unsigned int  ncolors
-, unsigned int  cpp
-, XpmColor**    colorTablePtr
-, xpmHashTable* hashtable
-)
-#else
-int
-xpmParseColors(data, ncolors, cpp, colorTablePtr, hashtable)
-    xpmData *data;
-    unsigned int ncolors;
-    unsigned int cpp;
-    XpmColor **colorTablePtr;
-    xpmHashTable *hashtable;
-#endif
-{
-    unsigned int key, l, a, b;
-    unsigned int curkey;               /* current color key */
-    unsigned int lastwaskey;           /* key read */
-    char buf[BUFSIZ];
-    char curbuf[BUFSIZ];               /* current buffer */
-    char **sptr, *s;
-    XpmColor *color;
-    XpmColor *colorTable;
-    char **defaults;
-    int ErrorStatus;
-
-    colorTable = (XpmColor *) XpmCalloc(ncolors, sizeof(XpmColor));
-    if (!colorTable)
-       return (XpmNoMemory);
-
-    if (!data->format) {               /* XPM 2 or 3 */
-       for (a = 0, color = colorTable; a < ncolors; a++, color++) {
-           xpmNextString(data);        /* skip the line */
-
-           /*
-            * read pixel value
-            */
-           color->string = (char *) XpmMalloc(cpp + 1);
-           if (!color->string) {
-               xpmFreeColorTable(colorTable, ncolors);
-               return (XpmNoMemory);
-           }
-           for (b = 0, s = color->string; b < cpp; b++, s++)
-               *s = xpmGetC(data);
-           *s = '\0';
-
-           /*
-            * store the string in the hashtable with its color index number
-            */
-           if (USE_HASHTABLE) {
-               ErrorStatus =
-                   xpmHashIntern(hashtable, color->string, HashAtomData(a));
-               if (ErrorStatus != XpmSuccess) {
-                   xpmFreeColorTable(colorTable, ncolors);
-                   return (ErrorStatus);
-               }
-           }
-
-           /*
-            * read color keys and values
-            */
-           defaults = (char **) color;
-           curkey = 0;
-           lastwaskey = 0;
-           *curbuf = '\0';             /* init curbuf */
-           while (l = xpmNextWord(data, buf, BUFSIZ)) {
-               if (!lastwaskey) {
-                   for (key = 0, sptr = xpmColorKeys; key < NKEYS; key++,
-                        sptr++)
-                       if ((strlen(*sptr) == l) && (!strncmp(*sptr, buf, l)))
-                           break;
-               }
-               if (!lastwaskey && key < NKEYS) {       /* open new key */
-                   if (curkey) {       /* flush string */
-                       s = (char *) XpmMalloc(strlen(curbuf) + 1);
-                       if (!s) {
-                           xpmFreeColorTable(colorTable, ncolors);
-                           return (XpmNoMemory);
-                       }
-                       defaults[curkey] = s;
-                       strcpy(s, curbuf);
-                   }
-                   curkey = key + 1;   /* set new key  */
-                   *curbuf = '\0';     /* reset curbuf */
-                   lastwaskey = 1;
-               } else {
-                   if (!curkey) {      /* key without value */
-                       xpmFreeColorTable(colorTable, ncolors);
-                       return (XpmFileInvalid);
-                   }
-                   if (!lastwaskey)
-                       strcat(curbuf, " ");    /* append space */
-                   buf[l] = '\0';
-                   strcat(curbuf, buf);/* append buf */
-                   lastwaskey = 0;
-               }
-           }
-           if (!curkey) {              /* key without value */
-               xpmFreeColorTable(colorTable, ncolors);
-               return (XpmFileInvalid);
-           }
-           s = defaults[curkey] = (char *) XpmMalloc(strlen(curbuf) + 1);
-           if (!s) {
-               xpmFreeColorTable(colorTable, ncolors);
-               return (XpmNoMemory);
-           }
-           strcpy(s, curbuf);
-       }
-    } else {                           /* XPM 1 */
-       /* get to the beginning of the first string */
-       data->Bos = '"';
-       data->Eos = '\0';
-       xpmNextString(data);
-       data->Eos = '"';
-       for (a = 0, color = colorTable; a < ncolors; a++, color++) {
-
-           /*
-            * read pixel value
-            */
-           color->string = (char *) XpmMalloc(cpp + 1);
-           if (!color->string) {
-               xpmFreeColorTable(colorTable, ncolors);
-               return (XpmNoMemory);
-           }
-           for (b = 0, s = color->string; b < cpp; b++, s++)
-               *s = xpmGetC(data);
-           *s = '\0';
-
-           /*
-            * store the string in the hashtable with its color index number
-            */
-           if (USE_HASHTABLE) {
-               ErrorStatus =
-                   xpmHashIntern(hashtable, color->string, HashAtomData(a));
-               if (ErrorStatus != XpmSuccess) {
-                   xpmFreeColorTable(colorTable, ncolors);
-                   return (ErrorStatus);
-               }
-           }
-
-           /*
-            * read color values
-            */
-           xpmNextString(data);        /* get to the next string */
-           *curbuf = '\0';             /* init curbuf */
-           while (l = xpmNextWord(data, buf, BUFSIZ)) {
-               if (*curbuf != '\0')
-                   strcat(curbuf, " ");/* append space */
-               buf[l] = '\0';
-               strcat(curbuf, buf);    /* append buf */
-           }
-           s = (char *) XpmMalloc(strlen(curbuf) + 1);
-           if (!s) {
-               xpmFreeColorTable(colorTable, ncolors);
-               return (XpmNoMemory);
-           }
-           strcpy(s, curbuf);
-           color->c_color = s;
-           *curbuf = '\0';             /* reset curbuf */
-           if (a < ncolors - 1)
-               xpmNextString(data);    /* get to the next string */
-       }
-    }
-    *colorTablePtr = colorTable;
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int
-ParsePixels(
-  xpmData*       data
-, unsigned int   width
-, unsigned int   height
-, unsigned int   ncolors
-, unsigned int   cpp
-, XpmColor*      colorTable
-, xpmHashTable*  hashtable
-, unsigned int** pixels
-)
-#else
-static int
-ParsePixels(data, width, height, ncolors, cpp, colorTable, hashtable, pixels)
-    xpmData *data;
-    unsigned int width;
-    unsigned int height;
-    unsigned int ncolors;
-    unsigned int cpp;
-    XpmColor *colorTable;
-    xpmHashTable *hashtable;
-    unsigned int **pixels;
-#endif
-{
-    unsigned int *iptr, *iptr2;
-    unsigned int a, x, y;
-
-#ifndef FOR_MSW
-    iptr2 = (unsigned int *) XpmMalloc(sizeof(unsigned int) * width * height);
-#else
-
-    /*
-     * special treatment to trick DOS malloc(size_t) where size_t is 16 bit!!
-     * XpmMalloc is defined to longMalloc(long) and checks the 16 bit boundary
-     */
-    iptr2 = (unsigned int *)
-       XpmMalloc((long) sizeof(unsigned int) * (long) width * (long) height);
-#endif
-    if (!iptr2)
-       return (XpmNoMemory);
-
-    iptr = iptr2;
-
-    switch (cpp) {
-
-    case (1):                          /* Optimize for single character
-                                        * colors */
-       {
-           unsigned short colidx[256];
-
-           bzero((char *)colidx, 256 * sizeof(short));
-           for (a = 0; a < ncolors; a++)
-               colidx[(unsigned char)colorTable[a].string[0]] = a + 1;
-
-           for (y = 0; y < height; y++) {
-               xpmNextString(data);
-               for (x = 0; x < width; x++, iptr++) {
-                   int c = xpmGetC(data);
-
-                   if (c > 0 && c < 256 && colidx[c] != 0)
-                       *iptr = colidx[c] - 1;
-                   else {
-                       XpmFree(iptr2);
-                       return (XpmFileInvalid);
-                   }
-               }
-           }
-       }
-       break;
-
-    case (2):                          /* Optimize for double character
-                                        * colors */
-       {
-
-/* free all allocated pointers at all exits */
-#define FREE_CIDX {int f; for (f = 0; f < 256; f++) \
-if (cidx[f]) XpmFree(cidx[f]);}
-
-           /* array of pointers malloced by need */
-           unsigned short *cidx[256];
-           int char1;
-
-           bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */
-           for (a = 0; a < ncolors; a++) {
-               char1 = colorTable[a].string[0];
-               if (cidx[char1] == NULL) { /* get new memory */
-                   cidx[char1] = (unsigned short *)
-                       XpmCalloc(256, sizeof(unsigned short));
-                   if (cidx[char1] == NULL) { /* new block failed */
-                       FREE_CIDX;
-                       XpmFree(iptr2);
-                       return (XpmNoMemory);
-                   }
-               }
-               cidx[char1][(unsigned char)colorTable[a].string[1]] = a + 1;
-           }
-
-           for (y = 0; y < height; y++) {
-               xpmNextString(data);
-               for (x = 0; x < width; x++, iptr++) {
-                   int cc1 = xpmGetC(data);
-                   if (cc1 > 0 && cc1 < 256) {
-                       int cc2 = xpmGetC(data);
-                       if (cc2 > 0 && cc2 < 256 &&
-                           cidx[cc1] && cidx[cc1][cc2] != 0)
-                           *iptr = cidx[cc1][cc2] - 1;
-                       else {
-                           FREE_CIDX;
-                           XpmFree(iptr2);
-                           return (XpmFileInvalid);
-                       }
-                   } else {
-                       FREE_CIDX;
-                       XpmFree(iptr2);
-                       return (XpmFileInvalid);
-                   }
-               }
-           }
-           FREE_CIDX;
-       }
-       break;
-
-    default:                           /* Non-optimized case of long color
-                                        * names */
-       {
-           char *s;
-           char buf[BUFSIZ];
-
-           buf[cpp] = '\0';
-           if (USE_HASHTABLE) {
-               xpmHashAtom *slot;
-
-               for (y = 0; y < height; y++) {
-                   xpmNextString(data);
-                   for (x = 0; x < width; x++, iptr++) {
-                       for (a = 0, s = buf; a < cpp; a++, s++)
-                           *s = xpmGetC(data);
-                       slot = xpmHashSlot(hashtable, buf);
-                       if (!*slot) {   /* no color matches */
-                           XpmFree(iptr2);
-                           return (XpmFileInvalid);
-                       }
-                       *iptr = HashColorIndex(slot);
-                   }
-               }
-           } else {
-               for (y = 0; y < height; y++) {
-                   xpmNextString(data);
-                   for (x = 0; x < width; x++, iptr++) {
-                       for (a = 0, s = buf; a < cpp; a++, s++)
-                           *s = xpmGetC(data);
-                       for (a = 0; a < ncolors; a++)
-                           if (!strcmp(colorTable[a].string, buf))
-                               break;
-                       if (a == ncolors) {     /* no color matches */
-                           XpmFree(iptr2);
-                           return (XpmFileInvalid);
-                       }
-                       *iptr = a;
-                   }
-               }
-           }
-       }
-       break;
-    }
-    *pixels = iptr2;
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmParseExtensions(
-  xpmData*        data
-, XpmExtension** extensions
-, unsigned int*  nextensions
-)
-#else
-int
-xpmParseExtensions(data, extensions, nextensions)
-    xpmData *data;
-    XpmExtension **extensions;
-    unsigned int *nextensions;
-#endif
-{
-    XpmExtension *exts = NULL, *ext;
-    unsigned int num = 0;
-    unsigned int nlines, a, l, notstart, notend = 0;
-    int status;
-    char *string, *s, *s2, **sp;
-
-    xpmNextString(data);
-    exts = (XpmExtension *) XpmMalloc(sizeof(XpmExtension));
-    /* get the whole string */
-    status = xpmGetString(data, &string, &l);
-    if (status != XpmSuccess) {
-       XpmFree(exts);
-       return (status);
-    }
-    /* look for the key word XPMEXT, skip lines before this */
-    while ((notstart = strncmp("XPMEXT", string, 6))
-          && (notend = strncmp("XPMENDEXT", string, 9))) {
-       XpmFree(string);
-       xpmNextString(data);
-       status = xpmGetString(data, &string, &l);
-       if (status != XpmSuccess) {
-           XpmFree(exts);
-           return (status);
-       }
-    }
-    if (!notstart)
-       notend = strncmp("XPMENDEXT", string, 9);
-    while (!notstart && notend) {
-       /* there starts an extension */
-       ext = (XpmExtension *)
-           XpmRealloc(exts, (num + 1) * sizeof(XpmExtension));
-       if (!ext) {
-           XpmFree(string);
-           XpmFreeExtensions(exts, num);
-           return (XpmNoMemory);
-       }
-       exts = ext;
-       ext += num;
-       /* skip whitespace and store its name */
-       s2 = s = string + 6;
-       while (isspace(*s2))
-           s2++;
-       a = s2 - s;
-       ext->name = (char *) XpmMalloc(l - a - 6);
-       if (!ext->name) {
-           XpmFree(string);
-           ext->lines = NULL;
-           ext->nlines = 0;
-           XpmFreeExtensions(exts, num + 1);
-           return (XpmNoMemory);
-       }
-       strncpy(ext->name, s + a, l - a - 6);
-       XpmFree(string);
-       /* now store the related lines */
-       xpmNextString(data);
-       status = xpmGetString(data, &string, &l);
-       if (status != XpmSuccess) {
-           ext->lines = NULL;
-           ext->nlines = 0;
-           XpmFreeExtensions(exts, num + 1);
-           return (status);
-       }
-       ext->lines = (char **) XpmMalloc(sizeof(char *));
-       nlines = 0;
-       while ((notstart = strncmp("XPMEXT", string, 6))
-              && (notend = strncmp("XPMENDEXT", string, 9))) {
-           sp = (char **)
-               XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *));
-           if (!sp) {
-               XpmFree(string);
-               ext->nlines = nlines;
-               XpmFreeExtensions(exts, num + 1);
-               return (XpmNoMemory);
-           }
-           ext->lines = sp;
-           ext->lines[nlines] = string;
-           nlines++;
-           xpmNextString(data);
-           status = xpmGetString(data, &string, &l);
-           if (status != XpmSuccess) {
-               ext->nlines = nlines;
-               XpmFreeExtensions(exts, num + 1);
-               return (status);
-           }
-       }
-       if (!nlines) {
-           XpmFree(ext->lines);
-           ext->lines = NULL;
-       }
-       ext->nlines = nlines;
-       num++;
-    }
-    if (!num) {
-       XpmFree(string);
-       XpmFree(exts);
-       exts = NULL;
-    } else if (!notend)
-       XpmFree(string);
-    *nextensions = num;
-    *extensions = exts;
-    return (XpmSuccess);
-}
-
-
-/* function call in case of error */
-#undef RETURN
-#define RETURN(status) \
-{ \
-      goto error; \
-}
-
-/*
- * This function parses an Xpm file or data and store the found informations
- * in an an XpmImage structure which is returned.
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmParseData(
-  xpmData*  data
-, XpmImage* image
-, XpmInfo*  info
-)
-#else
-int
-xpmParseData(data, image, info)
-    xpmData *data;
-    XpmImage *image;
-    XpmInfo *info;
-#endif
-{
-    /* variables to return */
-    unsigned int width, height, ncolors, cpp;
-    unsigned int x_hotspot, y_hotspot, hotspot = 0, extensions = 0;
-    XpmColor *colorTable = NULL;
-    unsigned int *pixelindex = NULL;
-    char *hints_cmt = NULL;
-    char *colors_cmt = NULL;
-    char *pixels_cmt = NULL;
-
-    unsigned int cmts;
-    int ErrorStatus;
-    xpmHashTable hashtable;
-
-    cmts = info && (info->valuemask & XpmReturnComments);
-
-    /*
-     * parse the header
-     */
-    ErrorStatus = xpmParseHeader(data);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /*
-     * read values
-     */
-    ErrorStatus = xpmParseValues(data, &width, &height, &ncolors, &cpp,
-                                &x_hotspot, &y_hotspot, &hotspot,
-                                &extensions);
-    if (ErrorStatus != XpmSuccess)
-       return (ErrorStatus);
-
-    /*
-     * store the hints comment line
-     */
-    if (cmts)
-       xpmGetCmt(data, &hints_cmt);
-
-    /*
-     * init the hastable
-     */
-    if (USE_HASHTABLE) {
-       ErrorStatus = xpmHashTableInit(&hashtable);
-       if (ErrorStatus != XpmSuccess)
-           return (ErrorStatus);
-    }
-
-    /*
-     * read colors
-     */
-    ErrorStatus = xpmParseColors(data, ncolors, cpp, &colorTable, &hashtable);
-    if (ErrorStatus != XpmSuccess) {
-       if (USE_HASHTABLE)
-           xpmHashTableFree(&hashtable);
-       RETURN(ErrorStatus);
-    }
-
-    /*
-     * store the colors comment line
-     */
-    if (cmts)
-       xpmGetCmt(data, &colors_cmt);
-
-    /*
-     * read pixels and index them on color number
-     */
-    ErrorStatus = ParsePixels(data, width, height, ncolors, cpp, colorTable,
-                             &hashtable, &pixelindex);
-
-    /*
-     * free the hastable
-     */
-    if (USE_HASHTABLE)
-       xpmHashTableFree(&hashtable);
-
-    if (ErrorStatus != XpmSuccess)
-       RETURN(ErrorStatus);
-
-    /*
-     * store the pixels comment line
-     */
-    if (cmts)
-       xpmGetCmt(data, &pixels_cmt);
-
-    /*
-     * parse extensions
-     */
-    if (info && (info->valuemask & XpmReturnExtensions))
-       if (extensions) {
-           ErrorStatus = xpmParseExtensions(data, &info->extensions,
-                                            &info->nextensions);
-           if (ErrorStatus != XpmSuccess)
-               RETURN(ErrorStatus);
-       } else {
-           info->extensions = NULL;
-           info->nextensions = 0;
-       }
-
-    /*
-     * store found informations in the XpmImage structure
-     */
-    image->width = width;
-    image->height = height;
-    image->cpp = cpp;
-    image->ncolors = ncolors;
-    image->colorTable = colorTable;
-    image->data = pixelindex;
-
-    if (info) {
-       if (cmts) {
-           info->hints_cmt = hints_cmt;
-           info->colors_cmt = colors_cmt;
-           info->pixels_cmt = pixels_cmt;
-       }
-       if (hotspot) {
-           info->x_hotspot = x_hotspot;
-           info->y_hotspot = y_hotspot;
-           info->valuemask |= XpmHotspot;
-       }
-    }
-    return (XpmSuccess);
-
-/* exit point in case of error, free only locally allocated variables */
-error:
-    if (colorTable)
-       xpmFreeColorTable(colorTable, ncolors);
-    if (pixelindex)
-       XpmFree(pixelindex);
-    if (hints_cmt)
-       XpmFree(hints_cmt);
-    if (colors_cmt)
-       XpmFree(colors_cmt);
-    if (pixels_cmt)
-       XpmFree(pixels_cmt);
-
-    return(ErrorStatus);
-}
diff --git a/src/xpm/readme.htm b/src/xpm/readme.htm
deleted file mode 100644 (file)
index 6711f23..0000000
+++ /dev/null
@@ -1,303 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html lang="en">
-<HEAD>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<TITLE>XPM README</TITLE>
-</HEAD>
-
-<body>
-<h1 align="center">XPM README</h1>
-
-<h2>Contents</h2>
-
-<ol>
-<li><a href="#sec1">What Is XPM?</a>
-<li><a href="#sec2">Where to get XPM?</a>
-<li><a href="#sec3">Documentation</a>
-<li><a href="#sec4">Installation</a>
-<ol>
-<li><a href="#sec4.1">With imake</a>
-<li><a href="#sec4.2">Without imake</a>
-</ol>
-<li><a href="#sec5">SXPM</a>
-<li><a href="#sec6">CXPM</a>
-<li><a href="#sec7">Other Tools</a>
-<li><a href="#sec8">Discussion</a>
-<li><a href="#copy">Copyright</a>
-</ol>
-
-
-<h2><a name="sec1">1. What Is XPM?</a></h2>
-<p>
-XPM (X PixMap) is a format for storing/retrieving X pixmaps to/from files.
-<p>
-Here is provided a library containing a set of four functions, similar to the
-X bitmap functions as defined in the Xlib: <code>XpmCreatePixmapFromData</code>,
-<code>XpmCreateDataFromPixmap</code>, <code>XpmReadFileToPixmap</code> and <code>XpmWriteFileFromPixmap</code> for
-respectively including, storing, reading and writing this format, plus four
-other: <code>XpmCreateImageFromData</code>, <code>XpmCreateDataFromImage</code>, <code>XpmReadFileToImage</code> and
-<code>XpmWriteFileFromImage</code> for working with images instead of pixmaps.
-<p>
-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.
-<p>
-See the XPM Manual for details.
-
-
-<h2><a name="sec2">2. Where to get XPM?</a></h2>
-<p>
-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 <a
-href="http://www.inria.fr/koala/lehors/xpm.html">http://www.inria.fr/koala/lehors/xpm.html</a>
-<p>The latest "official" XPM release can always be found at:
-<br>Boston, USA: <a
-href="ftp://ftp.x.org/contrib">ftp://ftp.x.org/contrib</a>
-<br>Sophia Antipolis, France: <a
-href="ftp://koala.inria.fr/pub/xpm">ftp://koala.inria.fr/pub/xpm</a>
-
-
-<h2><a name="sec3">3. Documentation</a></h2>
-<p>
-Old users might read the <a href="CHANGES">CHANGES</a> file for a history
-of changes interesting the user.
-<p>
-Read the doc. The documentation is in PostScript format (<a
-href="doc/xpm.PS">doc/xpm.PS</a>) and has been produced with
-FrameMaker. The source files are available on request.
-<p>
-A <a href="FAQ.html">FAQ</a> (Frequently Asked Questions) is also provided,
-so if you experience any problem you should have a look at this file.
-
-
-<h2><a name="sec4">4. Installation</a></h2>
-<p>
-To obtain the XPM library, first uncompress and untar the compressed tar file
-in an appropriate directory.
-<p>
-Then you can either compile XPM via "imake" or in a stand-alone way.
-
-<h3><a name="sec4.1">4.1. With imake</a></h3>
-<p>
-       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.
-<p>
-       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.
-<p>
-       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.
-<p>
-       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.
-<p>
-       Then execute the following command:
-<pre>
-               xmkmf -a
-</pre>
-<p>
-       or if this option is not supported by your version of xmkmf:
-<pre>
-               xmkmf
-               make Makefiles
-               make includes
-               make depend             (optional)
-</pre>
-<p>
-       Then simply execute: 
-<pre>
-               make
-</pre>
-<p>
-       which will build the XPM library and the sxpm application. 
-       Then do:
-<pre>
-               make install
-               make install.man
-</pre>
-<p>
-       which will install the library and the sxpm program and man page.
-<p>
-       If it fails, be sure you have set the DEFINES correctly in the top
-       Imakefile to suit your machine.
-
-<h4>NOTE ON USING IMAKE:</h4>
-<p>
-       Building the XPM distribution with imake requires to have imake
-       <strong>correctly installed and configured</strong> 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!
-
-
-<h3><a name="sec4.2">4.2. Without imake</a></h3>
-<p>
-       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.
-<p>
-       Once this setting is done, you should be able to compile XPM, by
-       executing the following command:
-<pre>
-               make -f Makefile.noX
-</pre>
-<p>
-       Then to install it, do:
-<pre>
-               make -f Makefile.noX install
-</pre>
-
-
-<h2><a name="sec5">5. SXPM</a></h2>
-<p>
-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:
-<pre>
-                     cd sxpm; make
-</pre>
-<p>
-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.
-<p>
-By executing 'sxpm -help' you will get the usage.
-<p>
-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.
-<p>
-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.
-<p>
-Then you should try 'sxpm -plaid -o output' to get an output file using the
-XpmWriteFileFromPixmap function.
-<p>
-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.
-<p>
-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.
-<p>
-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.
-<p>
-To end look at plaid_ext.xpm and try "sxpm -nod plaid_ext.xpm -v" to see how
-extensions are handled.
-<p>
-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.
-<p>
-See the manual page for more detail.
-
-
-<h2><a name="sec6">6. CXPM</a></h2>
-<p>
-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:
-<pre>
-                     cd cxpm; make
-</pre>
-<p>
-The related man page will tell you everything about it but here is a simple
-example of what it does:
-<pre>
-$ ./cxpm bogus_pixmap
-Xpm Error: Invalid XPM file.
-Error found line 3 near character 5
-</pre>
-<p>
-It is pretty limited but at least, unlike sxpm, it gives you some hint on where
-the error occured within the file.
-
-
-<h2><a name="sec7">7. Other Tools</a></h2>
-<p>
-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.
-
-<h2><a name="sec8">8. Discussion</a></h2>
-<p>
-There is a mailing list to discuss about XPM which is <a
-href="mailto:xpm-talk@sophia.inria.fr">xpm-talk@sophia.inria.fr</a>.
-Any request to subscribe should be sent to <a
-href="mailto:xpm-talk-request@sophia.inria.fr">xpm-talk-request@sophia.inria.fr</a>.
-The archive of the xpm-talk list is available through the web at
-<a
-href="http://zenon.inria.fr/koala/xpm-talk-hypermail">http://zenon.inria.fr/koala/xpm-talk-hypermail</a>
-and through ftp at <a
-href="ftp://koala.inria.fr/pub/xpm/xpm-talk-archive">ftp://koala.inria.fr/pub/xpm/xpm-talk-archive</a>
-<p>
-Please mail any bug reports or modifications done, comments, suggestions,
-requests for updates or patches to port on another machine to:
-
-<p>Email: <a href="lehors@sophia.inria.fr">lehors@sophia.inria.fr</a>
-<br>Phone: +33 (0)4 93 65 78 89
-<br>Surface Mail:<br>
-Arnaud Le Hors<br>
-Inria BP.93<br>
-2004, Route des lucioles<br>
-06902 Sophia Antipolis Cedex<br>
-FRANCE
-
-
-<hr>
-<h2><a name="copy">Copyright (C) 1989-95 GROUPE BULL</a></h2>
-<p>
-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:
-<p>
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-<p>
-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.
-<p>
-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.
-</body>
diff --git a/src/xpm/readme.msw b/src/xpm/readme.msw
deleted file mode 100644 (file)
index f631525..0000000
+++ /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/src/xpm/rgb.c b/src/xpm/rgb.c
deleted file mode 100644 (file)
index 7ae36a8..0000000
+++ /dev/null
@@ -1,300 +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.
- */
-
-/*****************************************************************************\
-* rgb.c:                                                                      *
-*                                                                             *
-*  XPM library                                                                *
-*  Rgb file utilities                                                         *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to FOR_MSW has been added by
- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
- */
-
-/*
- * Part of this code has been taken from the ppmtoxpm.c file written by Mark
- * W. Snitily but has been modified for my special need
- */
-
-#include "XpmI.h"
-#include <ctype.h>
-
-#ifndef FOR_MSW                                /* normal part first, MSW part at
-                                        * the end, (huge ifdef!) */
-/*
- * Read a rgb text file.  It stores the rgb values (0->65535)
- * and the rgb mnemonics (malloc'ed) into the "rgbn" array.  Returns the
- * number of entries stored.
- */
-int
-xpmReadRgbNames(rgb_fname, rgbn)
-    char *rgb_fname;
-    xpmRgbName rgbn[];
-
-{
-    FILE *rgbf;
-    int n, items, red, green, blue;
-    char line[512], name[512], *rgbname, *s1, *s2;
-    xpmRgbName *rgb;
-
-    /* Open the rgb text file.  Abort if error. */
-    if ((rgbf = fopen(rgb_fname, "r")) == NULL)
-       return 0;
-
-    /* Loop reading each line in the file. */
-    n = 0;
-    rgb = rgbn;
-    /* Quit if rgb text file has too many entries. */
-    while (fgets(line, sizeof(line), rgbf) && n < MAX_RGBNAMES) {
-
-       /* Skip silently if line is bad. */
-       items = sscanf(line, "%d %d %d %[^\n]\n", &red, &green, &blue, name);
-       if (items != 4)
-           continue;
-
-       /*
-        * Make sure rgb values are within 0->255 range. Skip silently if
-        * bad.
-        */
-       if (red < 0 || red > 0xFF ||
-           green < 0 || green > 0xFF ||
-           blue < 0 || blue > 0xFF)
-           continue;
-
-       /* Allocate memory for ascii name. If error give up here. */
-       if (!(rgbname = (char *) XpmMalloc(strlen(name) + 1)))
-           break;
-
-       /* Copy string to ascii name and lowercase it. */
-       for (s1 = name, s2 = rgbname; *s1; s1++)
-           *s2++ = tolower(*s1);
-       *s2 = '\0';
-
-       /* Save the rgb values and ascii name in the array. */
-       rgb->r = red * 257;             /* 65535/255 = 257 */
-       rgb->g = green * 257;
-       rgb->b = blue * 257;
-       rgb->name = rgbname;
-       rgb++;
-       n++;
-    }
-
-    fclose(rgbf);
-
-    /* Return the number of read rgb names. */
-    return n < 0 ? 0 : n;
-}
-
-/*
- * Return the color name corresponding to the given rgb values
- */
-char *
-xpmGetRgbName(rgbn, rgbn_max, red, green, blue)
-    xpmRgbName rgbn[];                 /* rgb mnemonics from rgb text file */
-    int rgbn_max;                      /* number of rgb mnemonics in table */
-    int red, green, blue;              /* rgb values */
-
-{
-    int i;
-    xpmRgbName *rgb;
-
-    /*
-     * Just perform a dumb linear search over the rgb values of the color
-     * mnemonics.  One could speed things up by sorting the rgb values and
-     * using a binary search, or building a hash table, etc...
-     */
-    for (i = 0, rgb = rgbn; i < rgbn_max; i++, rgb++)
-       if (red == rgb->r && green == rgb->g && blue == rgb->b)
-           return rgb->name;
-
-    /* if not found return NULL */
-    return NULL;
-}
-
-/*
- * Free the strings which have been malloc'ed in xpmReadRgbNames
- */
-void
-xpmFreeRgbNames(rgbn, rgbn_max)
-    xpmRgbName rgbn[];
-    int rgbn_max;
-
-{
-    int i;
-    xpmRgbName *rgb;
-
-    for (i = 0, rgb = rgbn; i < rgbn_max; i++, rgb++)
-       XpmFree(rgb->name);
-}
-
-#else                                  /* here comes the MSW part, the
-                                        * second part of the  huge ifdef */
-
-#include "rgbtab.h"                    /* hard coded rgb.txt table */
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmReadRgbNames(char* rgb_fname, xpmRgbName rgbn[])
-#else
-int
-xpmReadRgbNames(rgb_fname, rgbn)
-    char *rgb_fname;
-    xpmRgbName rgbn[];
-#endif
-{
-    /*
-     * check for consistency???
-     * table has to be sorted for calls on strcasecmp
-     */
-    return (numTheRGBRecords);
-}
-
-/*
- * MSW rgb values are made from 3 BYTEs, this is different from X XColor.red,
- * which has something like #0303 for one color
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-char* xpmGetRgbName(xpmRgbName rgbn[], int rgbn_max, int red, int green, int blue)
-#else
-char *
-xpmGetRgbName(rgbn, rgbn_max, red, green, blue)
-    xpmRgbName rgbn[];                 /* rgb mnemonics from rgb text file
-                                        * not used */
-    int rgbn_max;                      /* not used */
-    int red, green, blue;              /* rgb values */
-#endif
-{
-    int i;
-    unsigned long rgbVal;
-
-    i = 0;
-    while (i < numTheRGBRecords) {
-       rgbVal = theRGBRecords[i].rgb;
-       if (GetRValue(rgbVal) == red &&
-           GetGValue(rgbVal) == green &&
-           GetBValue(rgbVal) == blue)
-           return (theRGBRecords[i].name);
-       i++;
-    }
-    return (NULL);
-}
-
-/* used in XParseColor in simx.c */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int xpmGetRGBfromName(char* inname, int* r, int* g, int* b)
-#else
-int
-xpmGetRGBfromName(inname, r, g, b)
-    char *inname;
-    int *r, *g, *b;
-#endif
-{
-    int left, right, middle;
-    int cmp;
-    unsigned long rgbVal;
-    char *name;
-    char *grey, *p;
-
-    name = xpmstrdup(inname);
-
-    /*
-     * the table in rgbtab.c has no names with spaces, and no grey, but a
-     * lot of gray
-     */
-    /* so first extract ' ' */
-    while (p = strchr(name, ' ')) {
-       while (*(p)) {                  /* till eof of string */
-           *p = *(p + 1);              /* copy to the left */
-           p++;
-       }
-    }
-    /* fold to lower case */
-    p = name;
-    while (*p) {
-       *p = tolower(*p);
-       p++;
-    }
-
-    /*
-     * substitute Grey with Gray, else rgbtab.h would have more than 100
-     * 'duplicate' entries
-     */
-    if (grey = strstr(name, "grey"))
-       grey[2] = 'a';
-
-    /* binary search */
-    left = 0;
-    right = numTheRGBRecords - 1;
-    do {
-       middle = (left + right) / 2;
-       cmp = xpmstrcasecmp(name, theRGBRecords[middle].name);
-       if (cmp == 0) {
-           rgbVal = theRGBRecords[middle].rgb;
-           *r = GetRValue(rgbVal);
-           *g = GetGValue(rgbVal);
-           *b = GetBValue(rgbVal);
-           free(name);
-           return (1);
-       } else if (cmp < 0) {
-           right = middle - 1;
-       } else {                        /* > 0 */
-           left = middle + 1;
-       }
-    } while (left <= right);
-
-    /*
-     * I don't like to run in a ColorInvalid error and to see no pixmap at
-     * all, so simply return a red pixel. Should be wrapped in an #ifdef
-     * HeDu
-     */
-
-    *r = 255;
-    *g = 0;
-    *b = 0;                            /* red error pixel */
-
-    free(name);
-    return (1);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-void xpmFreeRgbNames(xpmRgbName rgbn[], int rgbn_max)
-#else
-void
-xpmFreeRgbNames(rgbn, rgbn_max)
-    xpmRgbName rgbn[];
-    int rgbn_max;
-#endif
-{
-    /* nothing to do */
-}
-
-#endif                                 /* MSW part */
diff --git a/src/xpm/rgbtab.h b/src/xpm/rgbtab.h
deleted file mode 100644 (file)
index 2d95e99..0000000
+++ /dev/null
@@ -1,295 +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.
- */
-
-/*****************************************************************************\
-* rgbtab.h                                                                    *
-*                                                                             *
-* A hard coded rgb.txt. To keep it short I removed all colornames with        *
-* trailing numbers, Blue3 etc, except the GrayXX. Sorry Grey-lovers I prefer  *
-* Gray ;-). But Grey is recognized on lookups, only on save Gray will be      *
-* used, maybe you want to do some substitue there too.                        *
-*                                                                             *
-* To save memory the RGBs are coded in one long value, as done by the RGB     *
-* macro.                                                                      *
-*                                                                             *
-* Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de)                           *
-\*****************************************************************************/
-
-
-typedef struct {
-    char *name;
-    COLORREF rgb;                      /* it's unsigned long */
-}      rgbRecord;
-
-/*
-#define myRGB(r,g,b) \
-       ((unsigned long)r<<16|(unsigned long)g<<8|(unsigned long)b)
-*/
-#ifndef __OS2__
-#define myRGB(r,g,b)   RGB(r,g,b)      /* MSW has this macro */
-#else
-#define myRGB(r,g,b)    OS2RGB(r,g,b)
-#endif
-
-static rgbRecord theRGBRecords[] =
-{
-    {"AliceBlue", myRGB(240, 248, 255)},
-    {"AntiqueWhite", myRGB(250, 235, 215)},
-    {"Aquamarine", myRGB(50, 191, 193)},
-    {"Azure", myRGB(240, 255, 255)},
-    {"Beige", myRGB(245, 245, 220)},
-    {"Bisque", myRGB(255, 228, 196)},
-    {"Black", myRGB(0, 0, 0)},
-    {"BlanchedAlmond", myRGB(255, 235, 205)},
-    {"Blue", myRGB(0, 0, 255)},
-    {"BlueViolet", myRGB(138, 43, 226)},
-    {"Brown", myRGB(165, 42, 42)},
-    {"burlywood", myRGB(222, 184, 135)},
-    {"CadetBlue", myRGB(95, 146, 158)},
-    {"chartreuse", myRGB(127, 255, 0)},
-    {"chocolate", myRGB(210, 105, 30)},
-    {"Coral", myRGB(255, 114, 86)},
-    {"CornflowerBlue", myRGB(34, 34, 152)},
-    {"cornsilk", myRGB(255, 248, 220)},
-    {"Cyan", myRGB(0, 255, 255)},
-    {"DarkGoldenrod", myRGB(184, 134, 11)},
-    {"DarkGreen", myRGB(0, 86, 45)},
-    {"DarkKhaki", myRGB(189, 183, 107)},
-    {"DarkOliveGreen", myRGB(85, 86, 47)},
-    {"DarkOrange", myRGB(255, 140, 0)},
-    {"DarkOrchid", myRGB(139, 32, 139)},
-    {"DarkSalmon", myRGB(233, 150, 122)},
-    {"DarkSeaGreen", myRGB(143, 188, 143)},
-    {"DarkSlateBlue", myRGB(56, 75, 102)},
-    {"DarkSlateGray", myRGB(47, 79, 79)},
-    {"DarkTurquoise", myRGB(0, 166, 166)},
-    {"DarkViolet", myRGB(148, 0, 211)},
-    {"DeepPink", myRGB(255, 20, 147)},
-    {"DeepSkyBlue", myRGB(0, 191, 255)},
-    {"DimGray", myRGB(84, 84, 84)},
-    {"DodgerBlue", myRGB(30, 144, 255)},
-    {"Firebrick", myRGB(142, 35, 35)},
-    {"FloralWhite", myRGB(255, 250, 240)},
-    {"ForestGreen", myRGB(80, 159, 105)},
-    {"gainsboro", myRGB(220, 220, 220)},
-    {"GhostWhite", myRGB(248, 248, 255)},
-    {"Gold", myRGB(218, 170, 0)},
-    {"Goldenrod", myRGB(239, 223, 132)},
-    {"Gray", myRGB(126, 126, 126)},
-    {"Gray0", myRGB(0, 0, 0)},
-    {"Gray1", myRGB(3, 3, 3)},
-    {"Gray10", myRGB(26, 26, 26)},
-    {"Gray100", myRGB(255, 255, 255)},
-    {"Gray11", myRGB(28, 28, 28)},
-    {"Gray12", myRGB(31, 31, 31)},
-    {"Gray13", myRGB(33, 33, 33)},
-    {"Gray14", myRGB(36, 36, 36)},
-    {"Gray15", myRGB(38, 38, 38)},
-    {"Gray16", myRGB(41, 41, 41)},
-    {"Gray17", myRGB(43, 43, 43)},
-    {"Gray18", myRGB(46, 46, 46)},
-    {"Gray19", myRGB(48, 48, 48)},
-    {"Gray2", myRGB(5, 5, 5)},
-    {"Gray20", myRGB(51, 51, 51)},
-    {"Gray21", myRGB(54, 54, 54)},
-    {"Gray22", myRGB(56, 56, 56)},
-    {"Gray23", myRGB(59, 59, 59)},
-    {"Gray24", myRGB(61, 61, 61)},
-    {"Gray25", myRGB(64, 64, 64)},
-    {"Gray26", myRGB(66, 66, 66)},
-    {"Gray27", myRGB(69, 69, 69)},
-    {"Gray28", myRGB(71, 71, 71)},
-    {"Gray29", myRGB(74, 74, 74)},
-    {"Gray3", myRGB(8, 8, 8)},
-    {"Gray30", myRGB(77, 77, 77)},
-    {"Gray31", myRGB(79, 79, 79)},
-    {"Gray32", myRGB(82, 82, 82)},
-    {"Gray33", myRGB(84, 84, 84)},
-    {"Gray34", myRGB(87, 87, 87)},
-    {"Gray35", myRGB(89, 89, 89)},
-    {"Gray36", myRGB(92, 92, 92)},
-    {"Gray37", myRGB(94, 94, 94)},
-    {"Gray38", myRGB(97, 97, 97)},
-    {"Gray39", myRGB(99, 99, 99)},
-    {"Gray4", myRGB(10, 10, 10)},
-    {"Gray40", myRGB(102, 102, 102)},
-    {"Gray41", myRGB(105, 105, 105)},
-    {"Gray42", myRGB(107, 107, 107)},
-    {"Gray43", myRGB(110, 110, 110)},
-    {"Gray44", myRGB(112, 112, 112)},
-    {"Gray45", myRGB(115, 115, 115)},
-    {"Gray46", myRGB(117, 117, 117)},
-    {"Gray47", myRGB(120, 120, 120)},
-    {"Gray48", myRGB(122, 122, 122)},
-    {"Gray49", myRGB(125, 125, 125)},
-    {"Gray5", myRGB(13, 13, 13)},
-    {"Gray50", myRGB(127, 127, 127)},
-    {"Gray51", myRGB(130, 130, 130)},
-    {"Gray52", myRGB(133, 133, 133)},
-    {"Gray53", myRGB(135, 135, 135)},
-    {"Gray54", myRGB(138, 138, 138)},
-    {"Gray55", myRGB(140, 140, 140)},
-    {"Gray56", myRGB(143, 143, 143)},
-    {"Gray57", myRGB(145, 145, 145)},
-    {"Gray58", myRGB(148, 148, 148)},
-    {"Gray59", myRGB(150, 150, 150)},
-    {"Gray6", myRGB(15, 15, 15)},
-    {"Gray60", myRGB(153, 153, 153)},
-    {"Gray61", myRGB(156, 156, 156)},
-    {"Gray62", myRGB(158, 158, 158)},
-    {"Gray63", myRGB(161, 161, 161)},
-    {"Gray64", myRGB(163, 163, 163)},
-    {"Gray65", myRGB(166, 166, 166)},
-    {"Gray66", myRGB(168, 168, 168)},
-    {"Gray67", myRGB(171, 171, 171)},
-    {"Gray68", myRGB(173, 173, 173)},
-    {"Gray69", myRGB(176, 176, 176)},
-    {"Gray7", myRGB(18, 18, 18)},
-    {"Gray70", myRGB(179, 179, 179)},
-    {"Gray71", myRGB(181, 181, 181)},
-    {"Gray72", myRGB(184, 184, 184)},
-    {"Gray73", myRGB(186, 186, 186)},
-    {"Gray74", myRGB(189, 189, 189)},
-    {"Gray75", myRGB(191, 191, 191)},
-    {"Gray76", myRGB(194, 194, 194)},
-    {"Gray77", myRGB(196, 196, 196)},
-    {"Gray78", myRGB(199, 199, 199)},
-    {"Gray79", myRGB(201, 201, 201)},
-    {"Gray8", myRGB(20, 20, 20)},
-    {"Gray80", myRGB(204, 204, 204)},
-    {"Gray81", myRGB(207, 207, 207)},
-    {"Gray82", myRGB(209, 209, 209)},
-    {"Gray83", myRGB(212, 212, 212)},
-    {"Gray84", myRGB(214, 214, 214)},
-    {"Gray85", myRGB(217, 217, 217)},
-    {"Gray86", myRGB(219, 219, 219)},
-    {"Gray87", myRGB(222, 222, 222)},
-    {"Gray88", myRGB(224, 224, 224)},
-    {"Gray89", myRGB(227, 227, 227)},
-    {"Gray9", myRGB(23, 23, 23)},
-    {"Gray90", myRGB(229, 229, 229)},
-    {"Gray91", myRGB(232, 232, 232)},
-    {"Gray92", myRGB(235, 235, 235)},
-    {"Gray93", myRGB(237, 237, 237)},
-    {"Gray94", myRGB(240, 240, 240)},
-    {"Gray95", myRGB(242, 242, 242)},
-    {"Gray96", myRGB(245, 245, 245)},
-    {"Gray97", myRGB(247, 247, 247)},
-    {"Gray98", myRGB(250, 250, 250)},
-    {"Gray99", myRGB(252, 252, 252)},
-    {"Green", myRGB(0, 255, 0)},
-    {"GreenYellow", myRGB(173, 255, 47)},
-    {"honeydew", myRGB(240, 255, 240)},
-    {"HotPink", myRGB(255, 105, 180)},
-    {"IndianRed", myRGB(107, 57, 57)},
-    {"ivory", myRGB(255, 255, 240)},
-    {"Khaki", myRGB(179, 179, 126)},
-    {"lavender", myRGB(230, 230, 250)},
-    {"LavenderBlush", myRGB(255, 240, 245)},
-    {"LawnGreen", myRGB(124, 252, 0)},
-    {"LemonChiffon", myRGB(255, 250, 205)},
-    {"LightBlue", myRGB(176, 226, 255)},
-    {"LightCoral", myRGB(240, 128, 128)},
-    {"LightCyan", myRGB(224, 255, 255)},
-    {"LightGoldenrod", myRGB(238, 221, 130)},
-    {"LightGoldenrodYellow", myRGB(250, 250, 210)},
-    {"LightGray", myRGB(168, 168, 168)},
-    {"LightPink", myRGB(255, 182, 193)},
-    {"LightSalmon", myRGB(255, 160, 122)},
-    {"LightSeaGreen", myRGB(32, 178, 170)},
-    {"LightSkyBlue", myRGB(135, 206, 250)},
-    {"LightSlateBlue", myRGB(132, 112, 255)},
-    {"LightSlateGray", myRGB(119, 136, 153)},
-    {"LightSteelBlue", myRGB(124, 152, 211)},
-    {"LightYellow", myRGB(255, 255, 224)},
-    {"LimeGreen", myRGB(0, 175, 20)},
-    {"linen", myRGB(250, 240, 230)},
-    {"Magenta", myRGB(255, 0, 255)},
-    {"Maroon", myRGB(143, 0, 82)},
-    {"MediumAquamarine", myRGB(0, 147, 143)},
-    {"MediumBlue", myRGB(50, 50, 204)},
-    {"MediumForestGreen", myRGB(50, 129, 75)},
-    {"MediumGoldenrod", myRGB(209, 193, 102)},
-    {"MediumOrchid", myRGB(189, 82, 189)},
-    {"MediumPurple", myRGB(147, 112, 219)},
-    {"MediumSeaGreen", myRGB(52, 119, 102)},
-    {"MediumSlateBlue", myRGB(106, 106, 141)},
-    {"MediumSpringGreen", myRGB(35, 142, 35)},
-    {"MediumTurquoise", myRGB(0, 210, 210)},
-    {"MediumVioletRed", myRGB(213, 32, 121)},
-    {"MidnightBlue", myRGB(47, 47, 100)},
-    {"MintCream", myRGB(245, 255, 250)},
-    {"MistyRose", myRGB(255, 228, 225)},
-    {"moccasin", myRGB(255, 228, 181)},
-    {"NavajoWhite", myRGB(255, 222, 173)},
-    {"Navy", myRGB(35, 35, 117)},
-    {"NavyBlue", myRGB(35, 35, 117)},
-    {"OldLace", myRGB(253, 245, 230)},
-    {"OliveDrab", myRGB(107, 142, 35)},
-    {"Orange", myRGB(255, 135, 0)},
-    {"OrangeRed", myRGB(255, 69, 0)},
-    {"Orchid", myRGB(239, 132, 239)},
-    {"PaleGoldenrod", myRGB(238, 232, 170)},
-    {"PaleGreen", myRGB(115, 222, 120)},
-    {"PaleTurquoise", myRGB(175, 238, 238)},
-    {"PaleVioletRed", myRGB(219, 112, 147)},
-    {"PapayaWhip", myRGB(255, 239, 213)},
-    {"PeachPuff", myRGB(255, 218, 185)},
-    {"peru", myRGB(205, 133, 63)},
-    {"Pink", myRGB(255, 181, 197)},
-    {"Plum", myRGB(197, 72, 155)},
-    {"PowderBlue", myRGB(176, 224, 230)},
-    {"purple", myRGB(160, 32, 240)},
-    {"Red", myRGB(255, 0, 0)},
-    {"RosyBrown", myRGB(188, 143, 143)},
-    {"RoyalBlue", myRGB(65, 105, 225)},
-    {"SaddleBrown", myRGB(139, 69, 19)},
-    {"Salmon", myRGB(233, 150, 122)},
-    {"SandyBrown", myRGB(244, 164, 96)},
-    {"SeaGreen", myRGB(82, 149, 132)},
-    {"seashell", myRGB(255, 245, 238)},
-    {"Sienna", myRGB(150, 82, 45)},
-    {"SkyBlue", myRGB(114, 159, 255)},
-    {"SlateBlue", myRGB(126, 136, 171)},
-    {"SlateGray", myRGB(112, 128, 144)},
-    {"snow", myRGB(255, 250, 250)},
-    {"SpringGreen", myRGB(65, 172, 65)},
-    {"SteelBlue", myRGB(84, 112, 170)},
-    {"Tan", myRGB(222, 184, 135)},
-    {"Thistle", myRGB(216, 191, 216)},
-    {"tomato", myRGB(255, 99, 71)},
-    {"Transparent", myRGB(0, 0, 1)},
-    {"Turquoise", myRGB(25, 204, 223)},
-    {"Violet", myRGB(156, 62, 206)},
-    {"VioletRed", myRGB(243, 62, 150)},
-    {"Wheat", myRGB(245, 222, 179)},
-    {"White", myRGB(255, 255, 255)},
-    {"WhiteSmoke", myRGB(245, 245, 245)},
-    {"Yellow", myRGB(255, 255, 0)},
-    {"YellowGreen", myRGB(50, 216, 56)},
-    NULL
-};
-
-static int numTheRGBRecords = 234;
diff --git a/src/xpm/scan.c b/src/xpm/scan.c
deleted file mode 100644 (file)
index f5e61bb..0000000
+++ /dev/null
@@ -1,1111 +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.
- */
-
-/*****************************************************************************\
-* scan.c:                                                                     *
-*                                                                             *
-*  XPM library                                                                *
-*  Scanning utility for XPM file format                                       *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to FOR_MSW has been added by
- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
- */
-
-/*
- * The code related to AMIGA has been added by
- * Lorens Younes (d93-hyo@nada.kth.se) 4/96
- */
-
-#include "XpmI.h"
-
-#define MAXPRINTABLE 92                        /* number of printable ascii chars
-                                        * minus \ and " for string compat
-                                        * and ? to avoid ANSI trigraphs. */
-
-static char *printable =
-" .XoO+@#$%&*=-;:>,<1234567890qwertyuipasdfghjklzxcvbnmMNBVCZ\
-ASDFGHJKLPIUYTREWQ!~^/()_`'][{}|";
-
-/*
- * printable begin with a space, so in most case, due to my algorithm, when
- * the number of different colors is less than MAXPRINTABLE, it will give a
- * char follow by "nothing" (a space) in the readable xpm file
- */
-
-
-typedef struct {
-    Pixel *pixels;
-    unsigned int *pixelindex;
-    unsigned int size;
-    unsigned int ncolors;
-    unsigned int mask_pixel;           /* whether there is or not */
-}      PixelsMap;
-
-LFUNC(storePixel, int, (Pixel pixel, PixelsMap *pmap,
-                       unsigned int *index_return));
-
-LFUNC(storeMaskPixel, int, (Pixel pixel, PixelsMap *pmap,
-                           unsigned int *index_return));
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-LFUNC(GetImagePixels, int, (XImage *image, unsigned int width,
-                           unsigned int height, PixelsMap *pmap));
-
-LFUNC(GetImagePixels32, int, (XImage *image, unsigned int width,
-                             unsigned int height, PixelsMap *pmap));
-
-LFUNC(GetImagePixels16, int, (XImage *image, unsigned int width,
-                             unsigned int height, PixelsMap *pmap));
-
-LFUNC(GetImagePixels8, int, (XImage *image, unsigned int width,
-                            unsigned int height, PixelsMap *pmap));
-
-LFUNC(GetImagePixels1, int, (XImage *image, unsigned int width,
-                            unsigned int height, PixelsMap *pmap,
-                            int (*storeFunc) ()));
-# else /* AMIGA */
-LFUNC(AGetImagePixels, int, (XImage *image, unsigned int width,
-                            unsigned int height, PixelsMap *pmap,
-                            int (*storeFunc) ()));
-# endif/* AMIGA */
-#else  /* ndef FOR_MSW */
-
-#if defined(__OS2__) && defined(__VISAGECPP30__)
-LFUNC(MSWGetImagePixels, int, (Display* display, XImage* image, unsigned int width,
-                               unsigned int height, PixelsMap* pmap,
-                               int (*storeFunc) (Pixel, PixelsMap*, unsigned int*)));
-#else
-LFUNC(MSWGetImagePixels, int, (Display *d, XImage *image, unsigned int width,
-                   unsigned int height, PixelsMap *pmap,
-                   int (*storeFunc) ()));
-#endif
-
-#endif
-
-LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp,
-                  XpmAttributes *attributes));
-
-LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, int ncolors,
-                 Pixel *pixels, unsigned int mask,
-                 unsigned int cpp, XpmAttributes *attributes));
-
-/*
- * This function stores the given pixel in the given arrays which are grown
- * if not large enough.
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int storePixel(Pixel pixel, PixelsMap* pmap, unsigned int* index_return)
-#else
-static int
-storePixel(pixel, pmap, index_return)
-    Pixel pixel;
-    PixelsMap *pmap;
-    unsigned int *index_return;
-#endif
-{
-    unsigned int i;
-    Pixel *p;
-    unsigned int ncolors;
-
-    if (*index_return) {               /* this is a transparent pixel! */
-       *index_return = 0;
-       return 0;
-    }
-    ncolors = pmap->ncolors;
-    p = pmap->pixels + pmap->mask_pixel;
-    for (i = pmap->mask_pixel; i < ncolors; i++, p++)
-       if (*p == pixel)
-           break;
-    if (i == ncolors) {
-       if (ncolors >= pmap->size) {
-           pmap->size *= 2;
-           p = (Pixel *) XpmRealloc(pmap->pixels, sizeof(Pixel) * pmap->size);
-           if (!p)
-               return (1);
-           pmap->pixels = p;
-
-       }
-       (pmap->pixels)[ncolors] = pixel;
-       pmap->ncolors++;
-    }
-    *index_return = i;
-    return 0;
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int storeMaskPixel(Pixel pixel, PixelsMap* pmap, unsigned int* index_return)
-#else
-static int
-storeMaskPixel(pixel, pmap, index_return)
-    Pixel pixel;
-    PixelsMap *pmap;
-    unsigned int *index_return;
-#endif
-{
-    if (!pixel) {
-       if (!pmap->ncolors) {
-           pmap->ncolors = 1;
-           (pmap->pixels)[0] = 0;
-           pmap->mask_pixel = 1;
-       }
-       *index_return = 1;
-    } else
-       *index_return = 0;
-    return 0;
-}
-
-/* function call in case of error */
-#undef RETURN
-#define RETURN(status) \
-{ \
-      ErrorStatus = status; \
-      goto error; \
-}
-
-/*
- * This function scans the given image and stores the found informations in
- * the given XpmImage structure.
- */
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-int XpmCreateXpmImageFromImage(
-  Display*       display
-, XImage*        image
-, XImage*        shapeimage
-, XpmImage*      xpmimage
-, XpmAttributes* attributes
-)
-#else
-int
-XpmCreateXpmImageFromImage(display, image, shapeimage,
-                          xpmimage, attributes)
-    Display *display;
-    XImage *image;
-    XImage *shapeimage;
-    XpmImage *xpmimage;
-    XpmAttributes *attributes;
-#endif
-{
-    /* variables stored in the XpmAttributes structure */
-    unsigned int cpp;
-
-    /* variables to return */
-    PixelsMap pmap;
-    XpmColor *colorTable = NULL;
-    int ErrorStatus;
-
-    /* calculation variables */
-    unsigned int width = 0;
-    unsigned int height = 0;
-    unsigned int cppm;                 /* minimum chars per pixel */
-    unsigned int c;
-
-    /* initialize pmap */
-    pmap.pixels = NULL;
-    pmap.pixelindex = NULL;
-    pmap.size = 256;                   /* should be enough most of the time */
-    pmap.ncolors = 0;
-    pmap.mask_pixel = 0;
-
-    /*
-     * get geometry
-     */
-    if (image) {
-       width = image->width;
-       height = image->height;
-    } else if (shapeimage) {
-       width = shapeimage->width;
-       height = shapeimage->height;
-    }
-
-    /*
-     * retrieve information from the XpmAttributes
-     */
-    if (attributes && (attributes->valuemask & XpmCharsPerPixel
-/* 3.2 backward compatibility code */
-                      || attributes->valuemask & XpmInfos))
-/* end 3.2 bc */
-       cpp = attributes->cpp;
-    else
-       cpp = 0;
-
-    pmap.pixelindex =
-       (unsigned int *) XpmCalloc(width * height, sizeof(unsigned int));
-    if (!pmap.pixelindex)
-       RETURN(XpmNoMemory);
-
-    pmap.pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * pmap.size);
-    if (!pmap.pixels)
-       RETURN(XpmNoMemory);
-
-    /*
-     * scan shape mask if any
-     */
-    if (shapeimage)
-    {
-#ifndef FOR_MSW
-# ifndef AMIGA
-           ErrorStatus = GetImagePixels1(shapeimage, width, height, &pmap,
-                                     storeMaskPixel);
-# else
-           ErrorStatus = AGetImagePixels(shapeimage, width, height, &pmap,
-                                     storeMaskPixel);
-# endif /* AMIGA */
-#else
-
-           ErrorStatus = MSWGetImagePixels(display, shapeimage, width, height,
-                                       &pmap, storeMaskPixel);
-
-#endif /* ndef for FOR_MSW */
-
-       if (ErrorStatus != XpmSuccess)
-           RETURN(ErrorStatus);
-    }
-
-    /*
-     * scan the image data
-     *
-     * In case depth is 1 or bits_per_pixel is 4, 6, 8, 24 or 32 use optimized
-     * functions, otherwise use slower but sure general one.
-     *
-     */
-
-    if (image)
-    {
-#ifndef FOR_MSW
-# ifndef AMIGA
-           if (((image->bits_per_pixel | image->depth) == 1)  &&
-               (image->byte_order == image->bitmap_bit_order))
-           ErrorStatus = GetImagePixels1(image, width, height, &pmap,
-                                         storePixel);
-           else if (image->format == ZPixmap)
-       {
-               if (image->bits_per_pixel == 8)
-                   ErrorStatus = GetImagePixels8(image, width, height, &pmap);
-               else if (image->bits_per_pixel == 16)
-                       ErrorStatus = GetImagePixels16(image, width, height, &pmap);
-           else if (image->bits_per_pixel == 32)
-                       ErrorStatus = GetImagePixels32(image, width, height, &pmap);
-       }
-           else
-               ErrorStatus = GetImagePixels(image, width, height, &pmap);
-# else
-           ErrorStatus = AGetImagePixels(image, width, height, &pmap,
-                                     storePixel);
-# endif /* AMIGA */
-#else
-
-           ErrorStatus = MSWGetImagePixels(display, image, width, height, &pmap,
-                                       storePixel);
-
-#endif
-
-           if (ErrorStatus != XpmSuccess)
-               RETURN(ErrorStatus);
-    }
-
-    /*
-     * get rgb values and a string of char, and possibly a name for each
-     * color
-     */
-
-    colorTable = (XpmColor *) XpmCalloc(pmap.ncolors, sizeof(XpmColor));
-    if (!colorTable)
-       RETURN(XpmNoMemory);
-
-    /* compute the minimal cpp */
-    for (cppm = 1, c = MAXPRINTABLE; pmap.ncolors > c; cppm++)
-       c *= MAXPRINTABLE;
-    if (cpp < cppm)
-       cpp = cppm;
-
-    if (pmap.mask_pixel) {
-       ErrorStatus = ScanTransparentColor(colorTable, cpp, attributes);
-       if (ErrorStatus != XpmSuccess)
-           RETURN(ErrorStatus);
-    }
-
-    ErrorStatus = ScanOtherColors(display, colorTable, pmap.ncolors,
-                                 pmap.pixels, pmap.mask_pixel, cpp,
-                                 attributes);
-    if (ErrorStatus != XpmSuccess)
-       RETURN(ErrorStatus);
-
-    /*
-     * store found informations in the XpmImage structure
-     */
-    xpmimage->width = width;
-    xpmimage->height = height;
-    xpmimage->cpp = cpp;
-    xpmimage->ncolors = pmap.ncolors;
-    xpmimage->colorTable = colorTable;
-    xpmimage->data = pmap.pixelindex;
-
-    XpmFree(pmap.pixels);
-    return (XpmSuccess);
-
-/* exit point in case of error, free only locally allocated variables */
-error:
-    if (pmap.pixelindex)
-       XpmFree(pmap.pixelindex);
-    if (pmap.pixels)
-       XpmFree(pmap.pixels);
-    if (colorTable)
-       xpmFreeColorTable(colorTable, pmap.ncolors);
-
-    return (ErrorStatus);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int ScanTransparentColor(XpmColor* color, unsigned int cpp, XpmAttributes* attributes)
-#else
-static int
-ScanTransparentColor(color, cpp, attributes)
-    XpmColor *color;
-    unsigned int cpp;
-    XpmAttributes *attributes;
-#endif
-{
-    char *s;
-    unsigned int a, b, c;
-
-    /* first get a character string */
-    a = 0;
-    if (!(s = color->string = (char *) XpmMalloc(cpp + 1)))
-       return (XpmNoMemory);
-    *s++ = printable[c = a % MAXPRINTABLE];
-    for (b = 1; b < cpp; b++, s++)
-       *s = printable[c = ((a - c) / MAXPRINTABLE) % MAXPRINTABLE];
-    *s = '\0';
-
-    /* then retreive related info from the attributes if any */
-    if (attributes && (attributes->valuemask & XpmColorTable
-/* 3.2 backward compatibility code */
-                      || attributes->valuemask & XpmInfos)
-/* end 3.2 bc */
-       && attributes->mask_pixel != XpmUndefPixel) {
-
-       unsigned int key;
-       char **defaults = (char **) color;
-       char **mask_defaults;
-
-/* 3.2 backward compatibility code */
-       if (attributes->valuemask & XpmColorTable)
-/* end 3.2 bc */
-           mask_defaults = (char **) (
-               attributes->colorTable + attributes->mask_pixel);
-/* 3.2 backward compatibility code */
-       else
-           mask_defaults = (char **)
-               ((XpmColor **) attributes->colorTable)[attributes->mask_pixel];
-/* end 3.2 bc */
-       for (key = 1; key <= NKEYS; key++) {
-           if (s = mask_defaults[key]) {
-               defaults[key] = (char *) xpmstrdup(s);
-               if (!defaults[key])
-                   return (XpmNoMemory);
-           }
-       }
-    } else {
-       color->c_color = (char *) xpmstrdup(TRANSPARENT_COLOR);
-       if (!color->c_color)
-           return (XpmNoMemory);
-    }
-    return (XpmSuccess);
-}
-
-#ifdef __OS2__
-/* Visual Age cannot deal with old, non-ansi, code */
-static int ScanOtherColors(
-  Display*       display
-, XpmColor*      colors
-, int            ncolors
-, Pixel*         pixels
-, unsigned int   mask
-, unsigned int   cpp
-, XpmAttributes* attributes
-)
-#else
-static int
-ScanOtherColors(display, colors, ncolors, pixels, mask, cpp, attributes)
-    Display *display;
-    XpmColor *colors;
-    int ncolors;
-    Pixel *pixels;
-    unsigned int mask;
-    unsigned int cpp;
-    XpmAttributes *attributes;
-#endif
-{
-    /* variables stored in the XpmAttributes structure */
-    Colormap colormap;
-    char *rgb_fname;
-
-#ifndef FOR_MSW
-    xpmRgbName rgbn[MAX_RGBNAMES];
-#else
-    xpmRgbName *rgbn = NULL;
-#endif
-    int rgbn_max = 0;
-    unsigned int i, j, c, i2;
-    XpmColor *color;
-    XColor *xcolors = NULL, *xcolor;
-    char *colorname, *s;
-    XpmColor *colorTable, **oldColorTable = NULL;
-    unsigned int ancolors = 0;
-    Pixel *apixels;
-    unsigned int mask_pixel;
-    Bool found;
-
-    /* retrieve information from the XpmAttributes */
-    if (attributes && (attributes->valuemask & XpmColormap))
-       colormap = attributes->colormap;
-    else
-       colormap = XDefaultColormap(display, XDefaultScreen(display));
-    if (attributes && (attributes->valuemask & XpmRgbFilename))
-       rgb_fname = attributes->rgb_fname;
-    else
-       rgb_fname = NULL;
-
-    /* start from the right element */
-    if (mask) {
-       colors++;
-       ncolors--;
-       pixels++;
-    }
-
-    /* first get character strings and rgb values */
-    xcolors = (XColor *) XpmMalloc(sizeof(XColor) * ncolors);
-    if (!xcolors)
-       return (XpmNoMemory);
-
-    for (i = 0, i2 = mask, color = colors, xcolor = xcolors;
-        i < (unsigned)ncolors; i++, i2++, color++, xcolor++, pixels++) {
-
-       if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) {
-           XpmFree(xcolors);
-           return (XpmNoMemory);
-       }
-       *s++ = printable[c = i2 % MAXPRINTABLE];
-       for (j = 1; j < cpp; j++, s++)
-           *s = printable[c = ((i2 - c) / MAXPRINTABLE) % MAXPRINTABLE];
-       *s = '\0';
-
-       xcolor->pixel = *pixels;
-    }
-#ifdef __OS2__
-    XQueryColors(display, &colormap, xcolors, ncolors);
-#else
-    XQueryColors(display, colormap, xcolors, ncolors);
-#endif
-
-#ifndef FOR_MSW
-    /* read the rgb file if any was specified */
-    if (rgb_fname)
-       rgbn_max = xpmReadRgbNames(attributes->rgb_fname, rgbn);
-#else
-    /* FOR_MSW: rgb names and values are hardcoded in rgbtab.h */
-    rgbn_max = xpmReadRgbNames(NULL, NULL);
-#endif
-
-    if (attributes && attributes->valuemask & XpmColorTable) {
-       colorTable = attributes->colorTable;
-       ancolors = attributes->ncolors;
-       apixels = attributes->pixels;
-       mask_pixel = attributes->mask_pixel;
-    }
-/* 3.2 backward compatibility code */
-    else if (attributes && attributes->valuemask & XpmInfos) {
-       oldColorTable = (XpmColor **) attributes->colorTable;
-       ancolors = attributes->ncolors;
-       apixels = attributes->pixels;
-       mask_pixel = attributes->mask_pixel;
-    }
-/* end 3.2 bc */
-
-    for (i = 0, color = colors, xcolor = xcolors; i < (unsigned)ncolors;
-                                                 i++, color++, xcolor++) {
-
-       /* look for related info from the attributes if any */
-       found = False;
-       if (ancolors) {
-           unsigned int offset = 0;
-
-           for (j = 0; j < ancolors; j++) {
-               if (j == mask_pixel) {
-                   offset = 1;
-                   continue;
-               }
-               if (apixels[j - offset] == xcolor->pixel)
-                   break;
-           }
-           if (j != ancolors) {
-               unsigned int key;
-               char **defaults = (char **) color;
-               char **adefaults;
-
-/* 3.2 backward compatibility code */
-               if (oldColorTable)
-                   adefaults = (char **) oldColorTable[j];
-               else
-/* end 3.2 bc */
-                   adefaults = (char **) (colorTable + j);
-
-               found = True;
-               for (key = 1; key <= NKEYS; key++) {
-                   if (s = adefaults[key])
-                       defaults[key] = (char *) xpmstrdup(s);
-               }
-           }
-       }
-       if (!found) {
-           /* if nothing found look for a color name */
-           colorname = NULL;
-           if (rgbn_max)
-               colorname = xpmGetRgbName(rgbn, rgbn_max, xcolor->red,
-                                         xcolor->green, xcolor->blue);
-           if (colorname)
-               color->c_color = (char *) xpmstrdup(colorname);
-           else {
-               /* at last store the rgb value */
-               char buf[BUFSIZ];
-#ifndef FOR_MSW
-               sprintf(buf, "#%04X%04X%04X",
-                       xcolor->red, xcolor->green, xcolor->blue);
-#else
-               sprintf(buf, "#%02x%02x%02x",
-                       xcolor->red, xcolor->green, xcolor->blue);
-#endif
-               color->c_color = (char *) xpmstrdup(buf);
-           }
-           if (!color->c_color) {
-               XpmFree(xcolors);
-               xpmFreeRgbNames(rgbn, rgbn_max);
-               return (XpmNoMemory);
-           }
-       }
-    }
-
-    XpmFree(xcolors);
-    xpmFreeRgbNames(rgbn, rgbn_max);
-    return (XpmSuccess);
-}
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-/*
- * The functions below are written from X11R5 MIT's code (XImUtil.c)
- *
- * The idea is to have faster functions than the standard XGetPixel function
- * to scan the image data. Indeed we can speed up things by suppressing tests
- * performed for each pixel. We do exactly the same tests but at the image
- * level.
- */
-
-static unsigned long Const low_bits_table[] = {
-    0x00000000, 0x00000001, 0x00000003, 0x00000007,
-    0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f,
-    0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff,
-    0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff,
-    0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff,
-    0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff,
-    0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff,
-    0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff,
-    0xffffffff
-};
-
-/*
- * Default method to scan pixels of an image data structure.
- * The algorithm used is:
- *
- *     copy the source bitmap_unit or Zpixel into temp
- *     normalize temp if needed
- *     extract the pixel bits into return value
- *
- */
-
-static int
-GetImagePixels(image, width, height, pmap)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    PixelsMap *pmap;
-{
-    char *src;
-    char *dst;
-    unsigned int *iptr;
-    char *data;
-    int x, y, i;
-    int bits, depth, ibu, ibpp, offset;
-    unsigned long lbt;
-    Pixel pixel, px;
-
-    data = image->data;
-    iptr = pmap->pixelindex;
-    depth = image->depth;
-    lbt = low_bits_table[depth];
-    ibpp = image->bits_per_pixel;
-    offset = image->xoffset;
-
-    if ((image->bits_per_pixel | image->depth) == 1) {
-       ibu = image->bitmap_unit;
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               src = &data[XYINDEX(x, y, image)];
-               dst = (char *) &pixel;
-               pixel = 0;
-               for (i = ibu >> 3; --i >= 0;)
-                   *dst++ = *src++;
-               XYNORMALIZE(&pixel, image);
-               bits = (x + offset) % ibu;
-               pixel = ((((char *) &pixel)[bits >> 3]) >> (bits & 7)) & 1;
-               if (ibpp != depth)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    } else if (image->format == XYPixmap) {
-       int nbytes, bpl, j;
-       long plane = 0;
-       ibu = image->bitmap_unit;
-       nbytes = ibu >> 3;
-       bpl = image->bytes_per_line;
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               pixel = 0;
-               plane = 0;
-               for (i = depth; --i >= 0;) {
-                   src = &data[XYINDEX(x, y, image) + plane];
-                   dst = (char *) &px;
-                   px = 0;
-                   for (j = nbytes; --j >= 0;)
-                       *dst++ = *src++;
-                   XYNORMALIZE(&px, image);
-                   bits = (x + offset) % ibu;
-                   pixel = (pixel << 1) |
-                           (((((char *) &px)[bits >> 3]) >> (bits & 7)) & 1);
-                   plane = plane + (bpl * height);
-               }
-               if (ibpp != depth)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    } else if (image->format == ZPixmap) {
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               src = &data[ZINDEX(x, y, image)];
-               dst = (char *) &px;
-               px = 0;
-               for (i = (ibpp + 7) >> 3; --i >= 0;)
-                   *dst++ = *src++;
-               ZNORMALIZE(&px, image);
-               pixel = 0;
-               for (i = sizeof(unsigned long); --i >= 0;)
-                   pixel = (pixel << 8) | ((unsigned char *) &px)[i];
-               if (ibpp == 4) {
-                   if (x & 1)
-                       pixel >>= 4;
-                   else
-                       pixel &= 0xf;
-               }
-               if (ibpp != depth)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    } else
-       return (XpmColorError); /* actually a bad image */
-    return (XpmSuccess);
-}
-
-/*
- * scan pixels of a 32-bits Z image data structure
- */
-
-#if !defined(WORD64) && !defined(LONG64)
-static unsigned long byteorderpixel = MSBFirst << 24;
-#endif
-
-static int
-GetImagePixels32(image, width, height, pmap)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    PixelsMap *pmap;
-{
-    unsigned char *addr;
-    unsigned char *data;
-    unsigned int *iptr;
-    int x, y;
-    unsigned long lbt;
-    Pixel pixel;
-    int depth;
-
-    data = (unsigned char *) image->data;
-    iptr = pmap->pixelindex;
-    depth = image->depth;
-    lbt = low_bits_table[depth];
-#if !defined(WORD64) && !defined(LONG64)
-    if (*((char *) &byteorderpixel) == image->byte_order) {
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX32(x, y, image)];
-               pixel = *((unsigned long *) addr);
-               if (depth != 32)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    } else
-#endif
-    if (image->byte_order == MSBFirst)
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX32(x, y, image)];
-               pixel = ((unsigned long) addr[0] << 24 |
-                        (unsigned long) addr[1] << 16 |
-                        (unsigned long) addr[2] << 8 |
-                        addr[3]);
-               if (depth != 32)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    else
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX32(x, y, image)];
-               pixel = (addr[0] |
-                        (unsigned long) addr[1] << 8 |
-                        (unsigned long) addr[2] << 16 |
-                        (unsigned long) addr[3] << 24);
-               if (depth != 32)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    return (XpmSuccess);
-}
-
-/*
- * scan pixels of a 16-bits Z image data structure
- */
-
-static int
-GetImagePixels16(image, width, height, pmap)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    PixelsMap *pmap;
-{
-    unsigned char *addr;
-    unsigned char *data;
-    unsigned int *iptr;
-    int x, y;
-    unsigned long lbt;
-    Pixel pixel;
-    int depth;
-
-    data = (unsigned char *) image->data;
-    iptr = pmap->pixelindex;
-    depth = image->depth;
-    lbt = low_bits_table[depth];
-    if (image->byte_order == MSBFirst)
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX16(x, y, image)];
-               pixel = addr[0] << 8 | addr[1];
-               if (depth != 16)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    else
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               addr = &data[ZINDEX16(x, y, image)];
-               pixel = addr[0] | addr[1] << 8;
-               if (depth != 16)
-                   pixel &= lbt;
-               if (storePixel(pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    return (XpmSuccess);
-}
-
-/*
- * scan pixels of a 8-bits Z image data structure
- */
-
-static int
-GetImagePixels8(image, width, height, pmap)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    PixelsMap *pmap;
-{
-    unsigned int *iptr;
-    unsigned char *data;
-    int x, y;
-    unsigned long lbt;
-    Pixel pixel;
-    int depth;
-
-    data = (unsigned char *) image->data;
-    iptr = pmap->pixelindex;
-    depth = image->depth;
-    lbt = low_bits_table[depth];
-    for (y = 0; y < height; y++)
-       for (x = 0; x < width; x++, iptr++) {
-           pixel = data[ZINDEX8(x, y, image)];
-           if (depth != 8)
-               pixel &= lbt;
-           if (storePixel(pixel, pmap, iptr))
-               return (XpmNoMemory);
-       }
-    return (XpmSuccess);
-}
-
-/*
- * scan pixels of a 1-bit depth Z image data structure
- */
-
-static int
-GetImagePixels1(image, width, height, pmap, storeFunc)
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    PixelsMap *pmap;
-    int (*storeFunc) ();
-{
-    unsigned int *iptr;
-    int x, y;
-    char *data;
-    Pixel pixel;
-    int xoff, yoff, offset, bpl;
-
-    data = image->data;
-    iptr = pmap->pixelindex;
-    offset = image->xoffset;
-    bpl = image->bytes_per_line;
-
-    if (image->bitmap_bit_order == MSBFirst)
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               xoff = x + offset;
-               yoff = y * bpl + (xoff >> 3);
-               xoff &= 7;
-               pixel = (data[yoff] & (0x80 >> xoff)) ? 1 : 0;
-               if ((*storeFunc) (pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    else
-       for (y = 0; y < height; y++)
-           for (x = 0; x < width; x++, iptr++) {
-               xoff = x + offset;
-               yoff = y * bpl + (xoff >> 3);
-               xoff &= 7;
-               pixel = (data[yoff] & (1 << xoff)) ? 1 : 0;
-               if ((*storeFunc) (pixel, pmap, iptr))
-                   return (XpmNoMemory);
-           }
-    return (XpmSuccess);
-}
-
-# else /* AMIGA */
-
-#define CLEAN_UP(status) \
-{\
-    if (pixels) XpmFree (pixels);\
-    if (tmp_img) FreeXImage (tmp_img);\
-    return (status);\
-}
-
-static int
-AGetImagePixels (
-    XImage        *image,
-    unsigned int   width,
-    unsigned int   height,
-    PixelsMap     *pmap,
-    int          (*storeFunc) ())
-{
-    unsigned int   *iptr;
-    unsigned int    x, y;
-    unsigned char  *pixels;
-    XImage         *tmp_img;
-
-    pixels = XpmMalloc ((((width+15)>>4)<<4)*sizeof (*pixels));
-    if (pixels == NULL)
-       return XpmNoMemory;
-
-    tmp_img = AllocXImage ((((width+15)>>4)<<4), 1, image->rp->BitMap->Depth);
-    if (tmp_img == NULL)
-       CLEAN_UP (XpmNoMemory)
-
-    iptr = pmap->pixelindex;
-    for (y = 0; y < height; ++y)
-    {
-       ReadPixelLine8 (image->rp, 0, y, width, pixels, tmp_img->rp);
-       for (x = 0; x < width; ++x, ++iptr)
-       {
-           if ((*storeFunc) (pixels[x], pmap, iptr))
-               CLEAN_UP (XpmNoMemory)
-       }
-    }
-
-    CLEAN_UP (XpmSuccess)
-}
-
-#undef CLEAN_UP
-
-# endif/* AMIGA */
-#else  /* ndef FOR_MSW */
-
-#ifdef __OS2__
-
-#ifdef __VISAGECPP30__
-static int MSWGetImagePixels(
-  Display*     display
-, XImage*      image
-, unsigned int width
-, unsigned int height
-, PixelsMap*   pmap
-, int          (*storeFunc) (Pixel, PixelsMap*, unsigned int*)
-)
-#else
-static int MSWGetImagePixels(
-  Display*     display
-, XImage*      image
-, unsigned int width
-, unsigned int height
-, PixelsMap*   pmap
-, int          (*storeFunc) ()
-)
-#endif
-
-#else
-static int
-MSWGetImagePixels(display, image, width, height, pmap, storeFunc)
-    Display *display;
-    XImage *image;
-    unsigned int width;
-    unsigned int height;
-    PixelsMap *pmap;
-    int (*storeFunc) ();
-#endif
-{
-    unsigned int *iptr;
-    unsigned int x, y;
-    Pixel pixel;
-#ifdef __OS2__
-     HAB          hab = WinQueryAnchorBlock(HWND_DESKTOP);
-     HDC          shapedc;
-     DEVOPENSTRUC dop = {NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL};
-     SIZEL        sizl = {0, 0};
-     POINTL       point;
-#endif
-
-    iptr = pmap->pixelindex;
-
-#ifdef __OS2__
-    shapedc = DevOpenDC(hab, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dop, NULLHANDLE);
-    *display = GpiCreatePS(hab, shapedc, &sizl, GPIA_ASSOC | PU_PELS);
-    GpiSetBitmap(*display, image->bitmap);
-#else
-    SelectObject(*display, image->bitmap);
-#endif
-
-    for (y = 0; y < height; y++) {
-       for (x = 0; x < width; x++, iptr++) {
-#ifdef __OS2__
-     point.x = x;
-     point.y = y;
-     pixel = GpiQueryPel(*display, &point);
-#else
-           pixel = GetPixel(*display, x, y);
-#endif
-
-           if ((*storeFunc) (pixel, pmap, iptr))
-               return (XpmNoMemory);
-       }
-    }
-    return (XpmSuccess);
-}
-
-#endif
-
-#ifndef FOR_MSW
-# ifndef AMIGA
-int
-XpmCreateXpmImageFromPixmap(display, pixmap, shapemask,
-                           xpmimage, attributes)
-    Display *display;
-    Pixmap pixmap;
-    Pixmap shapemask;
-    XpmImage *xpmimage;
-    XpmAttributes *attributes;
-{
-    XImage *ximage = NULL;
-    XImage *shapeimage = NULL;
-    unsigned int width = 0;
-    unsigned int height = 0;
-    int ErrorStatus;
-
-    /* get geometry */
-    if (attributes && attributes->valuemask & XpmSize) {
-       width = attributes->width;
-       height = attributes->height;
-    }
-    /* get the ximages */
-    if (pixmap)
-       xpmCreateImageFromPixmap(display, pixmap, &ximage, &width, &height);
-    if (shapemask)
-       xpmCreateImageFromPixmap(display, shapemask, &shapeimage,
-                                &width, &height);
-
-    /* create the related XpmImage */
-    ErrorStatus = XpmCreateXpmImageFromImage(display, ximage, shapeimage,
-                                            xpmimage, attributes);
-
-    /* destroy the ximages */
-    if (ximage)
-       XDestroyImage(ximage);
-    if (shapeimage)
-       XDestroyImage(shapeimage);
-
-    return (ErrorStatus);
-}
-
-# endif/* not AMIGA */
-#endif /* ndef FOR_MSW */
diff --git a/src/xpm/simx.c b/src/xpm/simx.c
deleted file mode 100644 (file)
index 267c419..0000000
+++ /dev/null
@@ -1,331 +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.
- */
-
-/*****************************************************************************\
-* simx.c: 0.1a                                                                *
-*                                                                             *
-* This emulates some Xlib functionality for MSW. It's not a general solution, *
-* it is close related to XPM-lib. It is only intended to satisfy what is need *
-* there. Thus allowing to read XPM files under MS windows.                    *
-*                                                                             *
-* Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de)                           *
-\*****************************************************************************/
-
-/* Moved here so that FOR_MSW gets defined if we are using wxWindows (GRG) */
-#include "xpm.h"
-
-#ifdef FOR_MSW
-
-#include "XpmI.h"           /* for XpmMalloc */
-
-/*
- * On DOS size_t is only 2 bytes, thus malloc(size_t s) can only malloc
- * 64K. BUT an expression data=malloc(width*height) may result in an
- * overflow. So this function takes a long as input, and returns NULL if the
- * request is larger than 64K, is size_t is only 2 bytes.
- *
- * This requires casts like XpmMalloc( (long)width*(long(height)), else it
- * might have no effect at all.
- */
-
-void *
-boundCheckingMalloc(long s)
-{
-    if (sizeof(size_t) == sizeof(long)) {      /* same size, just do it */
-       return (malloc((size_t) s));
-    } else {
-       if (sizeof(size_t) == 2) {
-           if (s > 0xFFFF)
-               return (NULL);          /* to large, size_t with 2 bytes
-                                        * only allows 16 bits */
-           else
-               return (malloc((size_t) s));
-       } else {                        /* it's not a long, not 2 bytes,
-                                        * what is it ??? */
-           return (malloc((size_t) s));
-       }
-    }
-}
-void *
-boundCheckingCalloc(long num, long s)
-{
-    if (sizeof(size_t) == sizeof(long)) {      /* same size, just do it */
-       return (calloc((size_t) num, (size_t) s));
-    } else {
-       if (sizeof(size_t) == 2) {
-           if (s > 0xFFFF || num * s > 0xFFFF)
-               return (NULL);          /* to large, size_t with 2 bytes
-                                        * only allows 16 bits */
-           else
-               return (calloc((size_t) num, (size_t) s));
-       } else {                        /* it's not a long, not 2 bytes,
-                                        * what is it ??? */
-           return (calloc((size_t) num, (size_t) s));
-       }
-    }
-}
-void *
-boundCheckingRealloc(void *p, long s)
-{
-    if (sizeof(size_t) == sizeof(long)) {      /* same size, just do it */
-       return (realloc(p, (size_t) s));
-    } else {
-       if (sizeof(size_t) == 2) {
-           if (s > 0xFFFF)
-               return (NULL);          /* to large, size_t with 2 bytes
-                                        * only allows 16 bits */
-           else
-               return (realloc(p, (size_t) s));
-       } else {                        /* it's not a long, not 2 bytes,
-                                        * what is it ??? */
-           return (realloc(p, (size_t) s));
-       }
-    }
-}
-
-/* static Visual theVisual = { 0 }; */
-Visual *
-XDefaultVisual(Display *display, Screen *screen)
-{
-    return (NULL);                     /* struct could contain info about
-                                        * MONO, GRAY, COLOR */
-}
-
-Screen *
-XDefaultScreen(Display *d)
-{
-    return (NULL);
-}
-
-/* I get only 1 plane but 8 bits per pixel,
-   so I think BITSPIXEL should be depth */
-int
-XDefaultDepth(Display *display, Screen *screen)
-{
-    int d, b;
-#ifdef __OS2__
-    HPS                             hpsScreen;
-    HDC                             hdcScreen;
-    LONG                            lPlanes;
-    LONG                            lBitsPerPixel;
-    LONG                            nDepth;
-
-    hpsScreen = WinGetScreenPS(HWND_DESKTOP);
-    hdcScreen = GpiQueryDevice(hpsScreen);
-    DevQueryCaps(hdcScreen, CAPS_COLOR_PLANES, 1L, &lPlanes);
-    DevQueryCaps(hdcScreen, CAPS_COLOR_BITCOUNT, 1L, &lBitsPerPixel);
-    b = (int)lBitsPerPixel;
-    WinReleasePS(hpsScreen);
-#else
-    b = GetDeviceCaps(*display, BITSPIXEL);
-    d = GetDeviceCaps(*display, PLANES);
-#endif
-    return (b);
-}
-
-Colormap *
-XDefaultColormap(Display *display, Screen *screen)
-{
-    return (NULL);
-}
-
-/* convert hex color names,
-   wrong digits (not a-f,A-F,0-9) are treated as zero */
-static int
-hexCharToInt(char c)
-{
-    int r;
-
-    if (c >= '0' && c <= '9')
-       r = c - '0';
-    else if (c >= 'a' && c <= 'f')
-       r = c - 'a' + 10;
-    else if (c >= 'A' && c <= 'F')
-       r = c - 'A' + 10;
-    else
-       r = 0;
-
-    return (r);
-}
-
-static int
-rgbFromHex(char *hex, int *r, int *g, int *b)
-{
-    int len;
-
-    if (hex == NULL || hex[0] != '#')
-       return (0);
-
-    len = strlen(hex);
-    if (len == 3 + 1) {
-       *r = hexCharToInt(hex[1]);
-       *g = hexCharToInt(hex[2]);
-       *b = hexCharToInt(hex[3]);
-    } else if (len == 6 + 1) {
-       *r = hexCharToInt(hex[1]) * 16 + hexCharToInt(hex[2]);
-       *g = hexCharToInt(hex[3]) * 16 + hexCharToInt(hex[4]);
-       *b = hexCharToInt(hex[5]) * 16 + hexCharToInt(hex[6]);
-    } else if (len == 12 + 1) {
-       /* it's like c #32329999CCCC */
-       /* so for now only take two digits */
-       *r = hexCharToInt(hex[1]) * 16 + hexCharToInt(hex[2]);
-       *g = hexCharToInt(hex[5]) * 16 + hexCharToInt(hex[6]);
-       *b = hexCharToInt(hex[9]) * 16 + hexCharToInt(hex[10]);
-    } else
-       return (0);
-
-    return (1);
-}
-
-/* Color related functions */
-int
-XParseColor(Display *d, Colormap *cmap, char *name, XColor *color)
-{
-    int r, g, b;                       /* only 8 bit values used */
-    int okay;
-
-/* TODO: use colormap via PALETTE */
-    /* parse name either in table or #RRGGBB #RGB */
-    if (name == NULL)
-       return (0);
-
-    if (name[0] == '#') {              /* a hex string */
-       okay = rgbFromHex(name, &r, &g, &b);
-    } else {
-       okay = xpmGetRGBfromName(name, &r, &g, &b);
-    }
-
-    if (okay) {
-#ifdef __OS2__
-       color->pixel = OS2RGB(r, g, b);
-#else
-       color->pixel = RGB(r, g, b);
-#endif
-       color->red = (BYTE) r;
-       color->green = (BYTE) g;
-       color->blue = (BYTE) b;
-       return (1);
-    } else
-       return (0);                     /* --> ColorError */
-}
-
-
-/* GRG: 2nd arg is Colormap*, not Colormap */
-
-int
-XAllocColor(Display *d, Colormap *cmap, XColor *color)
-{
-/* colormap not used yet so color->pixel is the real COLORREF (RBG) and not an
-   index in some colormap as in X */
-    return (1);
-}
-void
-XQueryColors(Display *display, Colormap *colormap,
-            XColor *xcolors, int ncolors)
-{
-/* under X this fills the rgb values to given .pixel */
-/* since there no colormap use FOR_MSW (not yet!!), rgb is plain encoded */
-    XColor *xc = xcolors;
-    int i;
-
-    for (i = 0; i < ncolors; i++, xc++) {
-       xc->red = GetRValue(xc->pixel);
-       xc->green = GetGValue(xc->pixel);
-       xc->blue = GetBValue(xc->pixel);
-    }
-    return;
-}
-int
-XFreeColors(Display *d, Colormap cmap,
-           unsigned long pixels[], int npixels, unsigned long planes)
-{
-    /* no colormap yet */
-    return (0);                                /* correct ??? */
-}
-
-/* XImage functions */
-XImage *
-XCreateImage(Display *d, Visual *v,
-            int depth, int format,
-            int x, int y, int width, int height,
-            int pad, int foo)
-{
-    XImage *img = (XImage *) XpmMalloc(sizeof(XImage));
-#ifdef __OS2__
-    BITMAPINFOHEADER2    bmih;
-
-    memset(&bmih, 0, sizeof(BITMAPINFOHEADER2));
-    bmih.cbFix = sizeof(BITMAPINFOHEADER2);
-    bmih.cx = width;
-    bmih.cy = height;
-    bmih.cPlanes = 1;
-    bmih.cBitCount = depth;
-#endif
-
-    if (img) {
-       /*JW: This is what it should be, but the picture comes out
-             just black!?  It appears to be doing monochrome reduction,
-             but I've got no clue why.  Using CreateBitmap() is supposed
-             to be slower, but otherwise ok
-         if ( depth == GetDeviceCaps(*d, BITSPIXEL) ) {
-           img->bitmap = CreateCompatibleBitmap(*d, width, height);
-        } else*/ {
-#ifdef __OS2__
-        img->bitmap = GpiCreateBitmap(*d, &bmih, 0L, NULL, NULL);
-        WinReleasePS(*d);
-#else
-           img->bitmap = CreateBitmap(width, height, 1 /* plane */ ,
-                                      depth /* bits per pixel */ , NULL);
-#endif
-       }
-       img->width = width;
-       img->height = height;
-       img->depth = depth;
-    }
-    return (img);
-
-}
-
-void
-XImageFree(XImage *img)
-{
-    if (img) {
-       XpmFree(img);
-    }
-}
-void
-XDestroyImage(XImage *img)
-{
-    if (img) {
-#ifdef __OS2__
-     GpiDeleteBitmap(img->bitmap);
-#else
-       DeleteObject(img->bitmap);      /* check return ??? */
-#endif
-       XImageFree(img);
-    }
-}
-
-#endif
diff --git a/src/xpm/simx.h b/src/xpm/simx.h
deleted file mode 100644 (file)
index 9b91618..0000000
+++ /dev/null
@@ -1,170 +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.
- */
-
-/*****************************************************************************\
-* simx.h: 0.1a                                                                *
-*                                                                             *
-* This emulates some Xlib functionality for MSW. It's not a general solution, *
-* it is close related to XPM-lib. It is only intended to satisfy what is need *
-* there. Thus allowing to read XPM files under MS windows.                    *
-*                                                                             *
-* Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de)                           *
-\*****************************************************************************/
-
-
-#ifndef _SIMX_H
-#define _SIMX_H
-
-#ifdef FOR_MSW
-
-#if !defined(__OS2__)
-#include "windows.h"                   /* MS windows GDI types */
-#else
-#define INCL_PM
-#define INCL_GPI
-#define INCL_DEV
-#include<os2.h>
-typedef unsigned long COLORREF;
-/*
-// RGB under OS2 is more like a PALETTEENTRY struct under Windows so we need a real RGB def
-// #define OS2RGB(r,g,b) ((ULONG ((BYTE) (r) | ((UINT) (g) << 8)) | (((ULONG)(BYTE)(b)) << 16)))
-*/
-#ifndef OS2RGB
-#  define OS2RGB(r,g,b) ((unsigned long)r<<16|(unsigned long)g<<8|(unsigned long)b)
-#endif
-
-#ifndef GetBValue
-#  define GetBValue(rgb) ((BYTE)((rgb) >> 16))
-#endif
-#ifndef GetGValue
-#  define GetGValue(rgb) ((BYTE)(((UINT)(rgb)) >> 8))
-#endif
-#ifndef GetRValue
-#  define GetRValue(rgb) ((BYTE)(rgb))
-#endif
-#endif /* else __OS2__ */
-
-
-/*
- * minimal portability layer between ansi and KR C
- */
-/* this comes from xpm.h, and is here again, to avoid complicated
-    includes, since this is included from xpm.h */
-/* these defines get undefed at the end of this file */
-#if __STDC__ || defined(__cplusplus) || defined(c_plusplus)
- /* ANSI || C++ */
-#  define FUNC(f, t, p) extern t f p
-#  define LFUNC(f, t, p) static t f p
-#else /* k&R */
-#  define FUNC(f, t, p) extern t f()
-#  define LFUNC(f, t, p) static t f()
-#endif
-
-
-FUNC(boundCheckingMalloc, void *, (long s));
-FUNC(boundCheckingCalloc, void *, (long num, long s));
-FUNC(boundCheckingRealloc, void *, (void *p, long s));
-
-/* define MSW types for X window types,
-   I don't know much about MSW, but the following defines do the job */
-
-#if !defined(__OS2__)
-typedef HDC Display;                   /* this should be similar */
-#else
-typedef HPS Display;
-#endif
-
-typedef void *Screen;                  /* not used */
-typedef void *Visual;                  /* not used yet, is for GRAY, COLOR,
-                                        * MONO */
-
-typedef void *Colormap;                        /* should be COLORPALETTE, not done
-                                        * yet */
-
-typedef COLORREF Pixel;
-
-#define PIXEL_ALREADY_TYPEDEFED                /* to let xpm.h know about it */
-
-typedef struct {
-    Pixel pixel;
-    BYTE red, green, blue;
-}      XColor;
-
-typedef struct {
-    HBITMAP bitmap;
-    unsigned int width;
-    unsigned int height;
-    unsigned int depth;
-}      XImage;
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-/* some replacements for X... functions */
-
-/* XDefaultXXX */
-    FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen));
-    FUNC(XDefaultScreen, Screen *, (Display *d));
-    FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen));
-    FUNC(XDefaultDepth, int, (Display *d, Screen *s));
-
-/* color related */
-    FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *));
-    FUNC(XAllocColor, int, (Display *, Colormap *, XColor *));
-    FUNC(XQueryColors, void, (Display *display, Colormap *colormap,
-                             XColor *xcolors, int ncolors));
-    FUNC(XFreeColors, int, (Display *d, Colormap cmap,
-                           unsigned long pixels[],
-                           int npixels, unsigned long planes));
-/* XImage */
-    FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format,
-                                 int x, int y, int width, int height,
-                                 int pad, int foo));
-
-/* free and destroy bitmap */
-    FUNC(XDestroyImage, void /* ? */ , (XImage *));
-/* free only, bitmap remains */
-    FUNC(XImageFree, void, (XImage *));
-#if defined(__cplusplus) || defined(c_plusplus)
-} /* end of extern "C" */
-#endif /* cplusplus */
-
-#define ZPixmap 1                      /* not really used */
-#define XYBitmap 1                     /* not really used */
-
-#ifndef True
-#define True 1
-#define False 0
-#endif
-#ifndef Bool
-typedef BOOL Bool;             /* take MSW bool */
-#endif
-/* make these local here, simx.c gets the same from xpm.h */
-#undef LFUNC
-#undef FUNC
-
-#endif /* def FOR_MSW */
-
-#endif /* _SIMX_H */
diff --git a/src/xpm/xpm.h b/src/xpm/xpm.h
deleted file mode 100644 (file)
index 333b09d..0000000
+++ /dev/null
@@ -1,512 +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.
- */
-
-/*****************************************************************************\
-* xpm.h:                                                                      *
-*                                                                             *
-*  XPM library                                                                *
-*  Include file                                                               *
-*                                                                             *
-*  Developed by Arnaud Le Hors                                                *
-\*****************************************************************************/
-
-/*
- * The code related to FOR_MSW has been added by
- * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
- */
-
-/*
- * The code related to AMIGA has been added by
- * Lorens Younes (d93-hyo@nada.kth.se) 4/96
- */
-
-#ifndef XPM_h
-#define XPM_h
-
-#if (defined(_WINDOWS) || defined(__WXMSW__) || defined(WIN32)) && !defined(FOR_MSW)
-#define FOR_MSW
-#endif
-/* Piggyback on MSW for now */
-#if (defined(__OS2__) || defined(__WXPM__) || defined(OS232)) && !defined(FOR_MSW)
-#define FOR_MSW
-#endif
-
-/*
- * first some identification numbers:
- * the version and revision numbers are determined with the following rule:
- * SO Major number = LIB minor version number.
- * SO Minor number = LIB sub-minor version number.
- * e.g: Xpm version 3.2f
- *      we forget the 3 which is the format number, 2 gives 2, and f gives 6.
- *      thus we have XpmVersion = 2 and XpmRevision = 6
- *      which gives  SOXPMLIBREV = 2.6
- *
- * Then the XpmIncludeVersion number is built from these numbers.
- */
-#define XpmFormat 3
-#define XpmVersion 4
-#define XpmRevision 11
-#define XpmIncludeVersion ((XpmFormat * 100 + XpmVersion) * 100 + XpmRevision)
-
-#ifndef XPM_NUMBERS
-
-#ifdef FOR_MSW
-# define SYSV                  /* uses memcpy string.h etc. */
-# include <malloc.h>
-# include "simx.h"             /* defines some X stuff using MSW types */
-#define NEED_STRCASECMP                /* at least for MSVC++ */
-#else /* FOR_MSW */
-# ifdef AMIGA
-#  include "amigax.h"
-# else /* not AMIGA */
-#  include <X11/Xlib.h>
-#  include <X11/Xutil.h>
-# endif /* not AMIGA */
-#endif /* FOR_MSW */
-
-/* let's define Pixel if it is not done yet */
-#if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED)
-typedef unsigned long Pixel;   /* Index into colormap */
-# define PIXEL_ALREADY_TYPEDEFED
-#endif
-
-/* make sure we know whether function prototypes are needed or not */
-#ifndef NeedFunctionPrototypes
-# if defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
-#  define NeedFunctionPrototypes 1
-# else
-#  define NeedFunctionPrototypes 0
-# endif
-#endif
-
-/* DW: bug in makefile seems to not want to define these, but they are needed! */
-/* Guillermo, maybe you can look at it */
-#ifdef FOR_MSW
-#  define FUNC(f, t, p) extern t f p
-#  define LFUNC(f, t, p) static t f p
-#endif
-
-/* Return ErrorStatus codes:
- * null     if full success
- * positive if partial success
- * negative if failure
- */
-
-#define XpmColorError    1
-#define XpmSuccess       0
-#define XpmOpenFailed   -1
-#define XpmFileInvalid  -2
-#define XpmNoMemory     -3
-#define XpmColorFailed  -4
-
-typedef struct {
-    char *name;                        /* Symbolic color name */
-    char *value;               /* Color value */
-    Pixel pixel;               /* Color pixel */
-}      XpmColorSymbol;
-
-typedef struct {
-    char *name;                        /* name of the extension */
-    unsigned int nlines;       /* number of lines in this extension */
-    char **lines;              /* pointer to the extension array of strings */
-}      XpmExtension;
-
-typedef struct {
-    char *string;              /* characters string */
-    char *symbolic;            /* symbolic name */
-    char *m_color;             /* monochrom default */
-    char *g4_color;            /* 4 level grayscale default */
-    char *g_color;             /* other level grayscale default */
-    char *c_color;             /* color default */
-}      XpmColor;
-
-typedef struct {
-    unsigned int width;                /* image width */
-    unsigned int height;       /* image height */
-    unsigned int cpp;          /* number of characters per pixel */
-    unsigned int ncolors;      /* number of colors */
-    XpmColor *colorTable;      /* list of related colors */
-    unsigned int *data;                /* image data */
-}      XpmImage;
-
-typedef struct {
-    unsigned long valuemask;   /* Specifies which attributes are defined */
-    char *hints_cmt;           /* Comment of the hints section */
-    char *colors_cmt;          /* Comment of the colors section */
-    char *pixels_cmt;          /* Comment of the pixels section */
-    unsigned int x_hotspot;    /* Returns the x hotspot's coordinate */
-    unsigned int y_hotspot;    /* Returns the y hotspot's coordinate */
-    unsigned int nextensions;  /* number of extensions */
-    XpmExtension *extensions;  /* pointer to array of extensions */
-}      XpmInfo;
-
-typedef int (*XpmAllocColorFunc)(
-#if NeedFunctionPrototypes
-    Display*                   /* display */,
-    Colormap                   /* colormap */,
-    char*                      /* colorname */,
-    XColor*                    /* xcolor */,
-    void*                      /* closure */
-#endif
-);
-
-typedef int (*XpmFreeColorsFunc)(
-#if NeedFunctionPrototypes
-    Display*                   /* display */,
-    Colormap                   /* colormap */,
-    Pixel*                     /* pixels */,
-    int                                /* npixels */,
-    void*                      /* closure */
-#endif
-);
-
-typedef struct {
-    unsigned long valuemask;           /* Specifies which attributes are
-                                          defined */
-
-    Visual *visual;                    /* Specifies the visual to use */
-    Colormap colormap;                 /* Specifies the colormap to use */
-    unsigned int depth;                        /* Specifies the depth */
-    unsigned int width;                        /* Returns the width of the created
-                                          pixmap */
-    unsigned int height;               /* Returns the height of the created
-                                          pixmap */
-    unsigned int x_hotspot;            /* Returns the x hotspot's
-                                          coordinate */
-    unsigned int y_hotspot;            /* Returns the y hotspot's
-                                          coordinate */
-    unsigned int cpp;                  /* Specifies the number of char per
-                                          pixel */
-    Pixel *pixels;                     /* List of used color pixels */
-    unsigned int npixels;              /* Number of used pixels */
-    XpmColorSymbol *colorsymbols;      /* List of color symbols to override */
-    unsigned int numsymbols;           /* Number of symbols */
-    char *rgb_fname;                   /* RGB text file name */
-    unsigned int nextensions;          /* Number of extensions */
-    XpmExtension *extensions;          /* List of extensions */
-
-    unsigned int ncolors;               /* Number of colors */
-    XpmColor *colorTable;               /* List of colors */
-/* 3.2 backward compatibility code */
-    char *hints_cmt;                    /* Comment of the hints section */
-    char *colors_cmt;                   /* Comment of the colors section */
-    char *pixels_cmt;                   /* Comment of the pixels section */
-/* end 3.2 bc */
-    unsigned int mask_pixel;            /* Color table index of transparent
-                                           color */
-
-    /* Color Allocation Directives */
-    Bool exactColors;                  /* Only use exact colors for visual */
-    unsigned int closeness;            /* Allowable RGB deviation */
-    unsigned int red_closeness;                /* Allowable red deviation */
-    unsigned int green_closeness;      /* Allowable green deviation */
-    unsigned int blue_closeness;       /* Allowable blue deviation */
-    int color_key;                     /* Use colors from this color set */
-
-    Pixel *alloc_pixels;               /* Returns the list of alloc'ed color
-                                          pixels */
-    int nalloc_pixels;                 /* Returns the number of alloc'ed
-                                          color pixels */
-
-    Bool alloc_close_colors;           /* Specify whether close colors should
-                                          be allocated using XAllocColor
-                                          or not */
-    int bitmap_format;                 /* Specify the format of 1bit depth
-                                          images: ZPixmap or XYBitmap */
-
-    /* Color functions */
-    XpmAllocColorFunc alloc_color;     /* Application color allocator */
-    XpmFreeColorsFunc free_colors;     /* Application color de-allocator */
-    void *color_closure;               /* Application private data to pass to
-                                          alloc_color and free_colors */
-
-}      XpmAttributes;
-
-/* XpmAttributes value masks bits */
-#define XpmVisual         (1L<<0)
-#define XpmColormap       (1L<<1)
-#define XpmDepth          (1L<<2)
-#define XpmSize                   (1L<<3)      /* width & height */
-#define XpmHotspot        (1L<<4)      /* x_hotspot & y_hotspot */
-#define XpmCharsPerPixel   (1L<<5)
-#define XpmColorSymbols           (1L<<6)
-#define XpmRgbFilename    (1L<<7)
-/* 3.2 backward compatibility code */
-#define XpmInfos          (1L<<8)
-#define XpmReturnInfos    XpmInfos
-/* end 3.2 bc */
-#define XpmReturnPixels           (1L<<9)
-#define XpmExtensions      (1L<<10)
-#define XpmReturnExtensions XpmExtensions
-
-#define XpmExactColors     (1L<<11)
-#define XpmCloseness      (1L<<12)
-#define XpmRGBCloseness           (1L<<13)
-#define XpmColorKey       (1L<<14)
-
-#define XpmColorTable      (1L<<15)
-#define XpmReturnColorTable XpmColorTable
-
-#define XpmReturnAllocPixels (1L<<16)
-#define XpmAllocCloseColors (1L<<17)
-#define XpmBitmapFormat    (1L<<18)
-
-#define XpmAllocColor      (1L<<19)
-#define XpmFreeColors      (1L<<20)
-#define XpmColorClosure    (1L<<21)
-
-
-/* XpmInfo value masks bits */
-#define XpmComments        XpmInfos
-#define XpmReturnComments  XpmComments
-
-/* XpmAttributes mask_pixel value when there is no mask */
-#ifndef FOR_MSW
-#define XpmUndefPixel 0x80000000
-#else
-/* int is only 16 bit for MSW */
-#define XpmUndefPixel 0x8000
-#endif
-
-/*
- * color keys for visual type, they must fit along with the number key of
- * each related element in xpmColorKeys[] defined in XpmI.h
- */
-#define XPM_MONO       2
-#define XPM_GREY4      3
-#define XPM_GRAY4      3
-#define XPM_GREY       4
-#define XPM_GRAY       4
-#define XPM_COLOR      5
-
-
-/* macros for forward declarations of functions with prototypes */
-#if NeedFunctionPrototypes
-#  define FUNC(f, t, p) extern t f p
-#  define LFUNC(f, t, p) static t f p
-#endif
-
-
-/*
- * functions declarations
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */
-/* Same for Amiga! */
-
-#if !defined(FOR_MSW) && !defined(AMIGA)
-    FUNC(XpmCreatePixmapFromData, int, (Display *display,
-                                       Drawable d,
-                                       char **data,
-                                       Pixmap *pixmap_return,
-                                       Pixmap *shapemask_return,
-                                       XpmAttributes *attributes));
-
-    FUNC(XpmCreateDataFromPixmap, int, (Display *display,
-                                       char ***data_return,
-                                       Pixmap pixmap,
-                                       Pixmap shapemask,
-                                       XpmAttributes *attributes));
-
-    FUNC(XpmReadFileToPixmap, int, (Display *display,
-                                   Drawable d,
-                                   char *filename,
-                                   Pixmap *pixmap_return,
-                                   Pixmap *shapemask_return,
-                                   XpmAttributes *attributes));
-
-    FUNC(XpmWriteFileFromPixmap, int, (Display *display,
-                                      char *filename,
-                                      Pixmap pixmap,
-                                      Pixmap shapemask,
-                                      XpmAttributes *attributes));
-#endif
-
-    FUNC(XpmCreateImageFromData, int, (Display *display,
-                                      char **data,
-                                      XImage **image_return,
-                                      XImage **shapemask_return,
-                                      XpmAttributes *attributes));
-
-    FUNC(XpmCreateDataFromImage, int, (Display *display,
-                                      char ***data_return,
-                                      XImage *image,
-                                      XImage *shapeimage,
-                                      XpmAttributes *attributes));
-
-    FUNC(XpmReadFileToImage, int, (Display *display,
-                                  char *filename,
-                                  XImage **image_return,
-                                  XImage **shapeimage_return,
-                                  XpmAttributes *attributes));
-
-    FUNC(XpmWriteFileFromImage, int, (Display *display,
-                                     char *filename,
-                                     XImage *image,
-                                     XImage *shapeimage,
-                                     XpmAttributes *attributes));
-
-    FUNC(XpmCreateImageFromBuffer, int, (Display *display,
-                                        char *buffer,
-                                        XImage **image_return,
-                                        XImage **shapemask_return,
-                                        XpmAttributes *attributes));
-#if !defined(FOR_MSW) && !defined(AMIGA)
-    FUNC(XpmCreatePixmapFromBuffer, int, (Display *display,
-                                         Drawable d,
-                                         char *buffer,
-                                         Pixmap *pixmap_return,
-                                         Pixmap *shapemask_return,
-                                         XpmAttributes *attributes));
-
-    FUNC(XpmCreateBufferFromImage, int, (Display *display,
-                                        char **buffer_return,
-                                        XImage *image,
-                                        XImage *shapeimage,
-                                        XpmAttributes *attributes));
-
-    FUNC(XpmCreateBufferFromPixmap, int, (Display *display,
-                                         char **buffer_return,
-                                         Pixmap pixmap,
-                                         Pixmap shapemask,
-                                         XpmAttributes *attributes));
-#endif
-    FUNC(XpmReadFileToBuffer, int, (char *filename, char **buffer_return));
-    FUNC(XpmWriteFileFromBuffer, int, (char *filename, char *buffer));
-
-    FUNC(XpmReadFileToData, int, (char *filename, char ***data_return));
-    FUNC(XpmWriteFileFromData, int, (char *filename, char **data));
-
-    FUNC(XpmAttributesSize, int, ());
-    FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes));
-    FUNC(XpmFreeExtensions, void, (XpmExtension *extensions,
-                                  int nextensions));
-
-    FUNC(XpmFreeXpmImage, void, (XpmImage *image));
-    FUNC(XpmFreeXpmInfo, void, (XpmInfo *info));
-    FUNC(XpmGetErrorString, char *, (int errcode));
-    FUNC(XpmLibraryVersion, int, ());
-
-    /* XpmImage functions */
-    FUNC(XpmReadFileToXpmImage, int, (char *filename,
-                                     XpmImage *image,
-                                     XpmInfo *info));
-
-    FUNC(XpmWriteFileFromXpmImage, int, (char *filename,
-                                        XpmImage *image,
-                                        XpmInfo *info));
-#if !defined(FOR_MSW) && !defined(AMIGA)
-    FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display,
-                                           Drawable d,
-                                           XpmImage *image,
-                                           Pixmap *pixmap_return,
-                                           Pixmap *shapemask_return,
-                                           XpmAttributes *attributes));
-#endif
-    FUNC(XpmCreateImageFromXpmImage, int, (Display *display,
-                                          XpmImage *image,
-                                          XImage **image_return,
-                                          XImage **shapeimage_return,
-                                          XpmAttributes *attributes));
-
-    FUNC(XpmCreateXpmImageFromImage, int, (Display *display,
-                                          XImage *image,
-                                          XImage *shapeimage,
-                                          XpmImage *xpmimage,
-                                          XpmAttributes *attributes));
-#if !defined(FOR_MSW) && !defined(AMIGA)
-    FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display,
-                                           Pixmap pixmap,
-                                           Pixmap shapemask,
-                                           XpmImage *xpmimage,
-                                           XpmAttributes *attributes));
-#endif
-    FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return,
-                                         XpmImage *image,
-                                         XpmInfo *info));
-
-    FUNC(XpmCreateXpmImageFromData, int, (char **data,
-                                         XpmImage *image,
-                                         XpmInfo *info));
-
-    FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer,
-                                           XpmImage *image,
-                                           XpmInfo *info));
-
-    FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return,
-                                           XpmImage *image,
-                                           XpmInfo *info));
-
-    FUNC(XpmGetParseError, int, (char *filename,
-                                int *linenum_return,
-                                int *charnum_return));
-
-    FUNC(XpmFree, void, (void *ptr));
-
-#ifdef __cplusplus
-} /* for C++ V2.0 */
-#endif
-
-
-/* backward compatibility */
-
-/* for version 3.0c */
-#define XpmPixmapColorError  XpmColorError
-#define XpmPixmapSuccess     XpmSuccess
-#define XpmPixmapOpenFailed  XpmOpenFailed
-#define XpmPixmapFileInvalid XpmFileInvalid
-#define XpmPixmapNoMemory    XpmNoMemory
-#define XpmPixmapColorFailed XpmColorFailed
-
-#define XpmReadPixmapFile(dpy, d, file, pix, mask, att) \
-    XpmReadFileToPixmap(dpy, d, file, pix, mask, att)
-#define XpmWritePixmapFile(dpy, file, pix, mask, att) \
-    XpmWriteFileFromPixmap(dpy, file, pix, mask, att)
-
-/* for version 3.0b */
-#define PixmapColorError  XpmColorError
-#define PixmapSuccess     XpmSuccess
-#define PixmapOpenFailed  XpmOpenFailed
-#define PixmapFileInvalid XpmFileInvalid
-#define PixmapNoMemory    XpmNoMemory
-#define PixmapColorFailed XpmColorFailed
-
-#define ColorSymbol XpmColorSymbol
-
-#define XReadPixmapFile(dpy, d, file, pix, mask, att) \
-    XpmReadFileToPixmap(dpy, d, file, pix, mask, att)
-#define XWritePixmapFile(dpy, file, pix, mask, att) \
-    XpmWriteFileFromPixmap(dpy, file, pix, mask, att)
-#define XCreatePixmapFromData(dpy, d, data, pix, mask, att) \
-    XpmCreatePixmapFromData(dpy, d, data, pix, mask, att)
-#define XCreateDataFromPixmap(dpy, data, pix, mask, att) \
-    XpmCreateDataFromPixmap(dpy, data, pix, mask, att)
-
-#endif /* XPM_NUMBERS */
-#endif