aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/xpm
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /vendor/x11iraf/xpm
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'vendor/x11iraf/xpm')
-rw-r--r--vendor/x11iraf/xpm/Imakefile147
-rw-r--r--vendor/x11iraf/xpm/README2
-rw-r--r--vendor/x11iraf/xpm/XpmCrBufFrI.c331
-rw-r--r--vendor/x11iraf/xpm/XpmCrBufFrP.c48
-rw-r--r--vendor/x11iraf/xpm/XpmCrDataFrI.c313
-rw-r--r--vendor/x11iraf/xpm/XpmCrDataFrP.c47
-rw-r--r--vendor/x11iraf/xpm/XpmCrIFrBuf.c69
-rw-r--r--vendor/x11iraf/xpm/XpmCrIFrData.c64
-rw-r--r--vendor/x11iraf/xpm/XpmCrPFrBuf.c47
-rw-r--r--vendor/x11iraf/xpm/XpmCrPFrData.c45
-rw-r--r--vendor/x11iraf/xpm/XpmRdFToData.c41
-rw-r--r--vendor/x11iraf/xpm/XpmRdFToI.c64
-rw-r--r--vendor/x11iraf/xpm/XpmRdFToP.c46
-rw-r--r--vendor/x11iraf/xpm/XpmWrFFrData.c36
-rw-r--r--vendor/x11iraf/xpm/XpmWrFFrI.c251
-rw-r--r--vendor/x11iraf/xpm/XpmWrFFrP.c47
-rw-r--r--vendor/x11iraf/xpm/create.c1456
-rw-r--r--vendor/x11iraf/xpm/data.c645
-rw-r--r--vendor/x11iraf/xpm/doc/xpm.ps4750
-rw-r--r--vendor/x11iraf/xpm/hashtable.c208
-rw-r--r--vendor/x11iraf/xpm/icons/NeXT.xpm79
-rw-r--r--vendor/x11iraf/xpm/icons/Plaid.xpm33
-rw-r--r--vendor/x11iraf/xpm/icons/arrdown.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/arrleft.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/arrne.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/arrright.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/arrup.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/bee.xpm50
-rw-r--r--vendor/x11iraf/xpm/icons/block.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/bomb.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/bull.xpm31
-rw-r--r--vendor/x11iraf/xpm/icons/circles.xpm73
-rw-r--r--vendor/x11iraf/xpm/icons/city.xpm74
-rw-r--r--vendor/x11iraf/xpm/icons/crab.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/crab45.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/dos.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/doso.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/doss.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/editor.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/escherknot.xpm61
-rw-r--r--vendor/x11iraf/xpm/icons/eye.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye1.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye10.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye11.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye12.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye13.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye14.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye15.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye16.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye17.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye18.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye19.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/eye2.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye20.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/eye21.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/eye22.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/eye23.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/eye24.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/eye3.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye4.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye5.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye6.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye7.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye8.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/eye9.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/fil.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/fils.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/floppy.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/jolifond.xpm58
-rw-r--r--vendor/x11iraf/xpm/icons/koala.xpm51
-rw-r--r--vendor/x11iraf/xpm/icons/lambda.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/martini.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/mickey.xpm73
-rw-r--r--vendor/x11iraf/xpm/icons/mouse.xpm61
-rw-r--r--vendor/x11iraf/xpm/icons/nobozos.xpm73
-rw-r--r--vendor/x11iraf/xpm/icons/nose.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/noseback.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/nosefront.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/nosmoking.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/porsche.xpm75
-rw-r--r--vendor/x11iraf/xpm/icons/stopsign.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/umbrella.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/wingdogs.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/NeXT.xpm79
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/Plaid.xpm33
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/arrdown.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/arrleft.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/arrne.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/arrright.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/arrup.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/bee.xpm50
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/block.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/bomb.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/bull.xpm31
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/circles.xpm73
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/city.xpm74
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/crab.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/crab45.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/dos.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/doso.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/doss.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/editor.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/escherknot.xpm61
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye1.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye10.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye11.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye12.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye13.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye14.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye15.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye16.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye17.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye18.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye19.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye2.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye20.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye21.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye22.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye23.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye24.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye3.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye4.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye5.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye6.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye7.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye8.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/eye9.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/fil.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/fils.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/floppy.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/jolifond.xpm58
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm51
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm~51
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/lambda.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/martini.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/mickey.xpm73
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/mouse.xpm61
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/nobozos.xpm73
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/nose.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/noseback.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/nosefront.xpm43
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/nosmoking.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/porsche.xpm75
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/stopsign.xpm42
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/umbrella.xpm41
-rw-r--r--vendor/x11iraf/xpm/icons/xpm3icons/wingdogs.xpm41
-rw-r--r--vendor/x11iraf/xpm/misc.c293
-rw-r--r--vendor/x11iraf/xpm/parse.c657
-rw-r--r--vendor/x11iraf/xpm/rgb.c136
-rw-r--r--vendor/x11iraf/xpm/scan.c722
-rw-r--r--vendor/x11iraf/xpm/strdup.c19
-rw-r--r--vendor/x11iraf/xpm/xpm.h378
-rw-r--r--vendor/x11iraf/xpm/xpmP.h251
154 files changed, 16960 insertions, 0 deletions
diff --git a/vendor/x11iraf/xpm/Imakefile b/vendor/x11iraf/xpm/Imakefile
new file mode 100644
index 00000000..9a62403d
--- /dev/null
+++ b/vendor/x11iraf/xpm/Imakefile
@@ -0,0 +1,147 @@
+# Copyright 1990-93 GROUPE BULL -- See licence conditions in file COPYRIGHT
+#
+# XPM Imakefile - Arnaud LE HORS
+#
+
+# SGI requires a specification file for shared library that we don't have
+#ifdef SGIArchitecture
+#define DoSharedLib No
+#else
+############## X11IRAF - we don't want shared libraries.
+# #define DoSharedLib SharedLibX
+#define DoSharedLib NO
+#endif
+
+#ifdef RsArchitecture
+REQUIREDLIBS = -lXext -lXt -lX11
+#endif
+
+# on Dec Alpha we need to define the following to build the shared library
+#ifdef AlphaArchitecture
+SO_REQLIBS=-lX11 -lc
+#endif
+
+## if your system doesn't provide strcasecmp add -DNEED_STRCASECMP
+## if your system doesn't provide strdup add -DNEED_STRDUP
+## if your system doesn't provide pipe remove -DZPIPE
+
+#if defined(UltrixArchitecture) || \
+ (defined(MipsArchitecture) && !defined(SGIArchitecture))
+DEFINES = -DZPIPE -DNEED_STRDUP
+#else
+DEFINES = -DZPIPE
+#endif
+
+
+# Normally the following part should not need to be edited
+#
+
+############## X11IRAF - always build normal library.
+# #define DoNormalLib NormalLibX
+#define DoNormalLib YES
+
+#if (ProjectX < 5)
+ STD_DEFINES = LibraryDefines
+ CDEBUGFLAGS = LibraryCDebugFlags
+#else
+/* R5 needs another .tmpl file to find these #def's. This .tmpl file will */
+/* also set STD_DEFINES and CDEBUGFLAGS properly. */
+X11IRAFDIR = ../
+#include <../X11IRAF.tmpl>
+#endif
+
+#if defined(RsArchitecture)
+X11IRAFDIR = ../
+#include <../X11IRAF.tmpl>
+#endif
+
+ INCLUDES = -I.
+#if !defined (SGIArchitecture)
+ INSTALLFLAGS = $(INSTINCFLAGS)
+#endif
+ LINTLIBS = $(LINTXTOLL) $(LINTXLIB)
+
+#ifdef OsNameDefines
+ OS_NAME_DEFINES = OsNameDefines
+#endif
+
+# get the version numbers from the xpm include file
+#define XPM_NUMBERS
+#include "xpm.h"
+SOXPMLIBREV = XpmVersion./**/XpmRevision
+
+HEADERS = xpm.h xpmP.h
+ SRCS = data.c create.c misc.c rgb.c scan.c parse.c hashtable.c \
+ XpmCrBufFrI.c XpmCrDataFrP.c XpmCrPFrBuf.c XpmRdFToI.c XpmWrFFrI.c \
+ XpmCrBufFrP.c XpmCrIFrBuf.c XpmCrPFrData.c XpmRdFToP.c XpmWrFFrP.c \
+ XpmCrDataFrI.c XpmCrIFrData.c XpmRdFToData.c XpmWrFFrData.c strdup.c
+
+ OBJS = data.o create.o misc.o rgb.o scan.o parse.o hashtable.o \
+ XpmCrBufFrI.o XpmCrDataFrP.o XpmCrPFrBuf.o XpmRdFToI.o XpmWrFFrI.o \
+ XpmCrBufFrP.o XpmCrIFrBuf.o XpmCrPFrData.o XpmRdFToP.o XpmWrFFrP.o \
+ XpmCrDataFrI.o XpmCrIFrData.o XpmRdFToData.o XpmWrFFrData.o strdup.o
+
+#if (ProjectX < 5)
+
+#if DoSharedLib
+ SharedLibraryObjectRule()
+ NormalSharedLibraryTarget(Xpm,$(SOXPMLIBREV),$(OBJS))
+ InstallSharedLibrary(Xpm,$(SOXPMLIBREV),X11irafLibDir)
+#else
+ NormalLibraryObjectRule()
+#endif
+ NormalLibraryTarget(Xpm,$(OBJS))
+#if InstallLibraries
+ InstallLibrary(Xpm,X11irafLibDir)
+#endif
+
+#else
+
+all:: libXpm.a
+
+ LibraryObjectRule()
+
+#if DoSharedLib
+#if DoNormalLib
+ SharedLibraryTarget(Xpm,$(SOXPMLIBREV),$(OBJS),shared,..)
+#else
+ SharedLibraryTarget(Xpm,$(SOXPMLIBREV),$(OBJS),.,.)
+#endif
+ InstallSharedLibrary(Xpm,$(SOXPMLIBREV),X11irafLibDir)
+#endif
+#if DoNormalLib
+ NormalLibraryTarget(Xpm,$(OBJS))
+#if InstallLibraries
+install:: libXpm.a
+ @(set -x; $(RM) X11irafLibDir/libXpm.a)
+ @(set -x; $(CP) -p libXpm.a X11irafLibDir/libXpm.a)
+#endif
+#endif
+
+#endif
+
+LinkFileList(linklibs,libXpm.a,X11irafLibDir,XpmDir)
+
+includes::
+ MakeDir(X11irafIncDir)
+ MakeDir(X11irafIncDir/X11)
+ @(set -x; for i in $(HEADERS); do \
+ $(RM) X11irafIncDir/$$i; \
+ $(CP) -p $$i X11irafIncDir/$$i; \
+ $(RM) X11irafIncDir/X11/$$i; \
+ $(CP) -p $$i X11irafIncDir/X11/$$i; \
+ done)
+
+#if InstallIncludes
+install::
+ @(set -x; for i in $(HEADERS); do \
+ $(RM) X11irafIncDir/$$i; \
+ $(CP) -p $$i X11irafIncDir; \
+ done)
+#endif
+
+LintLibraryTarget(Xpm,$(SRCS))
+InstallLintLibrary(Xpm,$(LINTLIBDIR))
+DependTarget()
+NormalLintTarget($(SRCS))
+
diff --git a/vendor/x11iraf/xpm/README b/vendor/x11iraf/xpm/README
new file mode 100644
index 00000000..0b93eff2
--- /dev/null
+++ b/vendor/x11iraf/xpm/README
@@ -0,0 +1,2 @@
+# XPM -- This directory (and the doc and icons subdirectories) does not
+# contain the full XPM distribution, as X11IRAF uses only the XPM library.
diff --git a/vendor/x11iraf/xpm/XpmCrBufFrI.c b/vendor/x11iraf/xpm/XpmCrBufFrI.c
new file mode 100644
index 00000000..b9665aab
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrBufFrI.c
@@ -0,0 +1,331 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrBufFrI.c: *
+* *
+* XPM library *
+* Scan an image and possibly its mask and create an XPM buffer *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:string.h"
+#else
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#endif
+
+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, (XpmInfos *infos));
+
+int
+XpmCreateBufferFromImage(display, buffer_return, image, shapeimage, attributes)
+ Display *display;
+ char **buffer_return;
+ XImage *image;
+ XImage *shapeimage;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage xpmimage;
+
+ /*
+ * initialize return value
+ */
+ if (buffer_return)
+ *buffer_return = NULL;
+
+ /*
+ * Scan image then create data
+ */
+ ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
+ &xpmimage, attributes);
+
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = XpmCreateBufferFromXpmImage(buffer_return, &xpmimage,
+ attributes, NULL);
+ XpmFreeXpmImage(&xpmimage);
+
+ return (ErrorStatus);
+}
+
+
+#undef RETURN
+#define RETURN(status) \
+{ \
+ if (ptr) \
+ XpmFree(ptr); \
+ return(status); \
+}
+
+int
+XpmCreateBufferFromXpmImage(buffer_return, image, attributes, infos)
+ char **buffer_return;
+ XpmImage *image;
+ XpmAttributes *attributes;
+ XpmInfos *infos;
+{
+ /* calculation variables */
+ int ErrorStatus;
+ char buf[BUFSIZ];
+ unsigned int extensions = 0, ext_size = 0;
+ unsigned int l, cmt_size = 0;
+ char *ptr = NULL, *p;
+ unsigned int ptr_size, used_size;
+
+ *buffer_return = NULL;
+
+ extensions = attributes && (attributes->valuemask & XpmExtensions)
+ && attributes->nextensions;
+
+ /* compute the extensions and comments size */
+ if (extensions)
+ ext_size = ExtensionsSize(attributes->extensions,
+ attributes->nextensions);
+ if (infos)
+ cmt_size = CommentsSize(infos);
+
+ /*
+ * write the header line
+ */
+ sprintf(buf, "/* XPM */\nstatic char * image_name[] = {\n");
+ used_size = strlen(buf);
+ 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 (infos && infos->hints_cmt) {
+ sprintf(ptr + used_size, "/*%s*/\n", infos->hints_cmt);
+ used_size += strlen(infos->hints_cmt) + 5;
+ }
+ sprintf(buf, "\"%d %d %d %d", image->width, image->height,
+ image->ncolors, image->cpp);
+ l = strlen(buf);
+
+ if (attributes && (attributes->valuemask & XpmHotspot)) {
+ sprintf(buf + l, " %d %d",
+ attributes->x_hotspot, attributes->y_hotspot);
+ l = strlen(buf);
+ }
+ if (extensions) {
+ sprintf(buf + l, " XPMEXT");
+ l = strlen(buf);
+ }
+ sprintf(buf + l, "\",\n");
+ l = strlen(buf);
+ 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 (infos && infos->colors_cmt) {
+ sprintf(ptr + used_size, "/*%s*/\n", infos->colors_cmt);
+ used_size += strlen(infos->colors_cmt) + 5;
+ }
+ 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 needed, realloc the data 4 = 1 (for
+ * '"') + 3 (for '",\n') 1 = - 2 is 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 (infos && infos->pixels_cmt) {
+ sprintf(ptr + used_size, "/*%s*/\n", infos->pixels_cmt);
+ used_size += strlen(infos->pixels_cmt) + 5;
+ }
+ 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,
+ attributes->extensions, attributes->nextensions);
+
+ /* close the array */
+ sprintf(ptr + used_size, "};\n");
+
+ *buffer_return = ptr;
+
+ return (XpmSuccess);
+}
+
+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;
+{
+ char buf[BUFSIZ];
+ unsigned int a, key, l;
+ char *s, *s2;
+ xpmColorDefaults defaults;
+
+ *buf = '"';
+ for (a = 0; a < ncolors; a++, colors++) {
+
+ defaults = (xpmColorDefaults) colors;
+ s = buf + 1;
+ strncpy(s, *defaults++, cpp);
+ s += cpp;
+
+ for (key = 1; key <= NKEYS; key++, defaults++) {
+ if (s2 = *defaults) {
+ sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2);
+ s += strlen(s);
+ }
+ }
+ strcpy(s, "\",\n");
+ l = strlen(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);
+}
+
+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;
+{
+ 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;
+}
+
+static int
+ExtensionsSize(ext, num)
+ XpmExtension *ext;
+ unsigned int num;
+{
+ 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;
+}
+
+static void
+WriteExtensions(dataptr, used_size, ext, num)
+ char *dataptr;
+ unsigned int *used_size;
+ XpmExtension *ext;
+ unsigned int num;
+{
+ unsigned int x, y, a;
+ char **line;
+ char *s = dataptr;
+
+ for (x = 0; x < num; x++, ext++) {
+ sprintf(s, ",\n\"XPMEXT %s\"", ext->name);
+ s += strlen(ext->name) + 11;
+ a = ext->nlines;
+ for (y = 0, line = ext->lines; y < a; y++, line++) {
+ sprintf(s, ",\n\"%s\"", *line);
+ s += strlen(*line) + 4;
+ }
+ }
+ strcpy(s, ",\n\"XPMENDEXT\"");
+ *used_size += s - dataptr + 13;
+}
+
+static int
+CommentsSize(infos)
+ XpmInfos *infos;
+{
+ int size = 0;
+
+ /* 5 = 2 (for "/_*") + 3 (for "*_/\n") */
+ if (infos->hints_cmt)
+ size += 5 + strlen(infos->hints_cmt);
+
+ if (infos->colors_cmt)
+ size += 5 + strlen(infos->colors_cmt);
+
+ if (infos->pixels_cmt)
+ size += 5 + strlen(infos->pixels_cmt);
+
+ return size;
+}
diff --git a/vendor/x11iraf/xpm/XpmCrBufFrP.c b/vendor/x11iraf/xpm/XpmCrBufFrP.c
new file mode 100644
index 00000000..192f8b60
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrBufFrP.c
@@ -0,0 +1,48 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrBufFrP.c: *
+* *
+* XPM library *
+* Scan a pixmap and possibly its mask and create an XPM buffer *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:string.h"
+#else
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#endif
+
+int
+XpmCreateBufferFromPixmap(display, buffer_return, pixmap, shapemask,
+ attributes)
+ Display *display;
+ char **buffer_return;
+ Pixmap pixmap;
+ Pixmap shapemask;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage image;
+
+ /*
+ * get the XpmImage
+ */
+ ErrorStatus = XpmCreateXpmImageFromPixmap(display, pixmap, shapemask,
+ &image, attributes);
+ if (ErrorStatus == XpmSuccess) {
+ /*
+ * create the buffer from the XpmImage
+ */
+ ErrorStatus = XpmCreateBufferFromXpmImage(buffer_return, &image,
+ attributes, NULL);
+ XpmFreeXpmImage(&image);
+ }
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmCrDataFrI.c b/vendor/x11iraf/xpm/XpmCrDataFrI.c
new file mode 100644
index 00000000..6fcbba4b
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrDataFrI.c
@@ -0,0 +1,313 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrDataFI.c: *
+* *
+* XPM library *
+* Scan an image and possibly its mask and create an XPM array *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:string.h"
+#else
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#endif
+
+
+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));
+
+int
+XpmCreateDataFromImage(display, data_return, image, shapeimage, attributes)
+ Display *display;
+ char ***data_return;
+ XImage *image;
+ XImage *shapeimage;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage xpmimage;
+
+ /*
+ * initialize return value
+ */
+ if (data_return)
+ *data_return = NULL;
+
+ /*
+ * Scan image then create data
+ */
+ ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
+ &xpmimage, attributes);
+
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = XpmCreateDataFromXpmImage(data_return, &xpmimage,
+ attributes);
+ XpmFreeXpmImage(&xpmimage);
+
+ return (ErrorStatus);
+}
+
+#undef RETURN
+#define RETURN(status) \
+{ \
+ if (header) { \
+ for (l = 0; l < header_nlines; l++) \
+ if (header[l]) \
+ XpmFree(header[l]); \
+ XpmFree(header); \
+ } \
+ return(status); \
+}
+
+int
+XpmCreateDataFromXpmImage(data_return, image, attributes)
+ char ***data_return;
+ XpmImage *image;
+ XpmAttributes *attributes;
+{
+ /* 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 = attributes && (attributes->valuemask & XpmExtensions)
+ && attributes->nextensions;
+
+ /* compute the number of extensions lines and size */
+ if (extensions)
+ CountExtensions(attributes->extensions, attributes->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;
+ sprintf(s, "%d %d %d %d", image->width, image->height,
+ image->ncolors, image->cpp);
+ s += strlen(s);
+
+ if (attributes && (attributes->valuemask & XpmHotspot)) {
+ sprintf(s, " %d %d", attributes->x_hotspot, attributes->y_hotspot);
+ s += strlen(s);
+ }
+ if (extensions)
+ sprintf(s, " XPMEXT");
+
+ l = strlen(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,
+ attributes->extensions, attributes->nextensions,
+ ext_nlines);
+
+ *data_return = data;
+
+ RETURN(XpmSuccess);
+}
+
+static int
+CreateColors(dataptr, data_size, colors, ncolors, cpp)
+ char **dataptr;
+ unsigned int *data_size;
+ XpmColor *colors;
+ unsigned int ncolors;
+ unsigned int cpp;
+{
+ char buf[BUFSIZ];
+ unsigned int a, key, l;
+ char *s, *s2;
+ xpmColorDefaults defaults;
+
+ for (a = 0; a < ncolors; a++, colors++, dataptr++) {
+
+ defaults = (xpmColorDefaults) colors;
+ strncpy(buf, *defaults++, cpp);
+ s = buf + cpp;
+
+ for (key = 1; key <= NKEYS; key++, defaults++) {
+ if (s2 = *defaults) {
+ sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2);
+ s += strlen(s);
+ }
+ }
+ l = strlen(buf) + 1;
+ s = (char *) XpmMalloc(l);
+ if (!s)
+ return (XpmNoMemory);
+ *data_size += l;
+ strcpy(s, buf);
+ *dataptr = s;
+ }
+ return (XpmSuccess);
+}
+
+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;
+{
+ 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';
+}
+
+static void
+CountExtensions(ext, num, ext_size, ext_nlines)
+ XpmExtension *ext;
+ unsigned int num;
+ unsigned int *ext_size;
+ unsigned int *ext_nlines;
+{
+ 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;
+}
+
+static void
+CreateExtensions(dataptr, offset, ext, num, ext_nlines)
+ char **dataptr;
+ unsigned int offset;
+ XpmExtension *ext;
+ unsigned int num;
+ unsigned int ext_nlines;
+{
+ 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/vendor/x11iraf/xpm/XpmCrDataFrP.c b/vendor/x11iraf/xpm/XpmCrDataFrP.c
new file mode 100644
index 00000000..5d6024eb
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrDataFrP.c
@@ -0,0 +1,47 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrDataFP.c: *
+* *
+* XPM library *
+* Scan a pixmap and possibly its mask and create an XPM array *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:string.h"
+#else
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#endif
+
+int
+XpmCreateDataFromPixmap(display, data_return, pixmap, shapemask, attributes)
+ Display *display;
+ char ***data_return;
+ Pixmap pixmap;
+ Pixmap shapemask;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage image;
+
+ /*
+ * get the XpmImage
+ */
+ ErrorStatus = XpmCreateXpmImageFromPixmap(display, pixmap, shapemask,
+ &image, attributes);
+ if (ErrorStatus == XpmSuccess) {
+ /*
+ * create data from the XpmImage
+ */
+ ErrorStatus =
+ XpmCreateDataFromXpmImage(data_return, &image, attributes);
+ XpmFreeXpmImage(&image);
+ }
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmCrIFrBuf.c b/vendor/x11iraf/xpm/XpmCrIFrBuf.c
new file mode 100644
index 00000000..569b2aa4
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrIFrBuf.c
@@ -0,0 +1,69 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrIFrBuf.c: *
+* *
+* XPM library *
+* Parse an Xpm buffer (file in memory) and create the image and possibly its *
+* mask *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+int
+XpmCreateImageFromBuffer(display, buffer, image_return,
+ shapeimage_return, attributes)
+ Display *display;
+ char *buffer;
+ XImage **image_return;
+ XImage **shapeimage_return;
+ XpmAttributes *attributes;
+{
+ XpmImage image;
+ int ErrorStatus;
+
+ /*
+ * create an XpmImage then the related XImages
+ */
+ ErrorStatus =
+ XpmCreateXpmImageFromBuffer(buffer, &image, attributes, NULL);
+
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = XpmCreateImageFromXpmImage(display, &image,
+ image_return,
+ shapeimage_return,
+ attributes);
+ if (ErrorStatus < 0 && attributes)
+ XpmFreeAttributes(attributes);
+
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
+
+int
+XpmCreateXpmImageFromBuffer(buffer, image, attributes, infos)
+ char *buffer;
+ XpmImage *image;
+ XpmAttributes *attributes;
+ XpmInfos *infos;
+{
+ xpmData mdata;
+ int ErrorStatus;
+
+ /*
+ * init returned values
+ */
+ xpmInitAttributes(attributes);
+ xpmInitXpmImage(image);
+ xpmInitXpmInfos(infos);
+
+ xpmOpenBuffer(buffer, &mdata);
+ ErrorStatus = xpmParseData(&mdata, image, attributes, infos);
+ xpmDataClose(&mdata);
+
+ if (ErrorStatus != XpmSuccess)
+ XpmFreeXpmInfos(infos);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmCrIFrData.c b/vendor/x11iraf/xpm/XpmCrIFrData.c
new file mode 100644
index 00000000..49a7598e
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrIFrData.c
@@ -0,0 +1,64 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrIFrData.c: *
+* *
+* XPM library *
+* Parse an Xpm array and create the image and possibly its mask *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+int
+XpmCreateImageFromData(display, data, image_return,
+ shapeimage_return, attributes)
+ Display *display;
+ char **data;
+ XImage **image_return;
+ XImage **shapeimage_return;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage image;
+
+ /*
+ * create an XpmImage then the related XImages
+ */
+ ErrorStatus = XpmCreateXpmImageFromData(data, &image, attributes);
+
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = XpmCreateImageFromXpmImage(display, &image,
+ image_return,
+ shapeimage_return,
+ attributes);
+ if (ErrorStatus < 0 && attributes)
+ XpmFreeAttributes(attributes);
+
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
+
+int
+XpmCreateXpmImageFromData(data, image, attributes)
+ char **data;
+ XpmImage *image;
+ XpmAttributes *attributes;
+{
+ xpmData mdata;
+ int ErrorStatus;
+
+ /*
+ * init returned values
+ */
+ xpmInitAttributes(attributes);
+ xpmInitXpmImage(image);
+
+ xpmOpenArray(data, &mdata);
+ ErrorStatus = xpmParseData(&mdata, image, attributes, NULL);
+ xpmDataClose(&mdata);
+
+ return (ErrorStatus);
+}
+
diff --git a/vendor/x11iraf/xpm/XpmCrPFrBuf.c b/vendor/x11iraf/xpm/XpmCrPFrBuf.c
new file mode 100644
index 00000000..0c765100
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrPFrBuf.c
@@ -0,0 +1,47 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrPFrBuf.c: *
+* *
+* XPM library *
+* Parse an Xpm buffer and create the pixmap and possibly its mask *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+int
+XpmCreatePixmapFromBuffer(display, d, buffer, pixmap_return,
+ shapemask_return, attributes)
+ Display *display;
+ Drawable d;
+ char *buffer;
+ Pixmap *pixmap_return;
+ Pixmap *shapemask_return;
+ XpmAttributes *attributes;
+{
+ XpmImage image;
+ int ErrorStatus;
+
+ /*
+ * create an XpmImage
+ */
+ ErrorStatus =
+ XpmCreateXpmImageFromBuffer(buffer, &image, attributes, NULL);
+
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+
+ /*
+ * then create the pixmaps from it
+ */
+ ErrorStatus = XpmCreatePixmapFromXpmImage(display, d, &image,
+ pixmap_return, shapemask_return,
+ attributes);
+ if (ErrorStatus != XpmSuccess)
+ XpmFreeAttributes(attributes);
+
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmCrPFrData.c b/vendor/x11iraf/xpm/XpmCrPFrData.c
new file mode 100644
index 00000000..7cac72a9
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmCrPFrData.c
@@ -0,0 +1,45 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmCrPFrData.c: *
+* *
+* XPM library *
+* Parse an Xpm array and create the pixmap and possibly its mask *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+int
+XpmCreatePixmapFromData(display, d, data, pixmap_return,
+ shapemask_return, attributes)
+ Display *display;
+ Drawable d;
+ char **data;
+ Pixmap *pixmap_return;
+ Pixmap *shapemask_return;
+ XpmAttributes *attributes;
+{
+ XpmImage image;
+ int ErrorStatus;
+
+ /*
+ * create an XpmImage
+ */
+ ErrorStatus = XpmCreateXpmImageFromData(data, &image, attributes);
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+
+ /*
+ * then create the pixmaps from it
+ */
+ ErrorStatus = XpmCreatePixmapFromXpmImage(display, d, &image,
+ pixmap_return, shapemask_return,
+ attributes);
+ if (ErrorStatus != XpmSuccess)
+ XpmFreeAttributes(attributes);
+
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmRdFToData.c b/vendor/x11iraf/xpm/XpmRdFToData.c
new file mode 100644
index 00000000..d30292b7
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmRdFToData.c
@@ -0,0 +1,41 @@
+/* Copyright 1990,91 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmRdFToData.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 "xpmP.h"
+
+int
+XpmReadFileToData(filename, data_return)
+ char *filename;
+ char ***data_return;
+{
+ XpmAttributes attributes;
+ XpmImage image;
+ int ErrorStatus;
+
+ attributes.valuemask = XpmReturnExtensions;
+
+ /*
+ * initialize return value
+ */
+ if (data_return)
+ *data_return = NULL;
+
+ ErrorStatus = XpmReadFileToXpmImage(filename, &image, &attributes, NULL);
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+
+ ErrorStatus =
+ XpmCreateDataFromXpmImage(data_return, &image, &attributes);
+
+ XpmFreeAttributes(&attributes);
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmRdFToI.c b/vendor/x11iraf/xpm/XpmRdFToI.c
new file mode 100644
index 00000000..850ba434
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmRdFToI.c
@@ -0,0 +1,64 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmRdFToI.c: *
+* *
+* XPM library *
+* Parse an XPM file and create the image and possibly its mask *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+int
+XpmReadFileToImage(display, filename,
+ image_return, shapeimage_return, attributes)
+ Display *display;
+ char *filename;
+ XImage **image_return;
+ XImage **shapeimage_return;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage image;
+
+ ErrorStatus = XpmReadFileToXpmImage(filename, &image, attributes, NULL);
+
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = XpmCreateImageFromXpmImage(display, &image,
+ image_return,
+ shapeimage_return,
+ attributes);
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
+
+int
+XpmReadFileToXpmImage(filename, image, attributes, infos)
+ char *filename;
+ XpmImage *image;
+ XpmAttributes *attributes;
+ XpmInfos *infos;
+{
+ xpmData mdata;
+ int ErrorStatus;
+
+ /*
+ * init returned values
+ */
+ xpmInitAttributes(attributes);
+ xpmInitXpmImage(image);
+ xpmInitXpmInfos(infos);
+
+ if ((ErrorStatus = xpmReadFile(filename, &mdata)) != XpmSuccess)
+ return (ErrorStatus);
+
+ ErrorStatus = xpmParseData(&mdata, image, attributes, infos);
+ xpmDataClose(&mdata);
+
+ if (ErrorStatus != XpmSuccess)
+ XpmFreeXpmInfos(infos);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmRdFToP.c b/vendor/x11iraf/xpm/XpmRdFToP.c
new file mode 100644
index 00000000..296f2dc4
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmRdFToP.c
@@ -0,0 +1,46 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmRdFToP.c: *
+* *
+* XPM library *
+* Parse an XPM file and create the pixmap and possibly its mask *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+int
+XpmReadFileToPixmap(display, d, filename, pixmap_return,
+ shapemask_return, attributes)
+ Display *display;
+ Drawable d;
+ char *filename;
+ Pixmap *pixmap_return;
+ Pixmap *shapemask_return;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage image;
+
+ /*
+ * get the XpmImage
+ */
+ ErrorStatus = XpmReadFileToXpmImage(filename, &image, attributes, NULL);
+
+ if (ErrorStatus < 0)
+ return (ErrorStatus);
+
+ /*
+ * then create the pixmaps from it
+ */
+ ErrorStatus = XpmCreatePixmapFromXpmImage(display, d, &image,
+ pixmap_return, shapemask_return,
+ attributes);
+ if (ErrorStatus != XpmSuccess)
+ XpmFreeAttributes(attributes);
+
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmWrFFrData.c b/vendor/x11iraf/xpm/XpmWrFFrData.c
new file mode 100644
index 00000000..22ed71e9
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmWrFFrData.c
@@ -0,0 +1,36 @@
+/* Copyright 1990,91 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmWrFFrData.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 "xpmP.h"
+
+int
+XpmWriteFileFromData(filename, data)
+ char *filename;
+ char **data;
+{
+ XpmAttributes attributes;
+ XpmImage image;
+ int ErrorStatus;
+
+ attributes.valuemask = XpmReturnExtensions;
+
+ ErrorStatus = XpmCreateXpmImageFromData(data, &image, &attributes);
+
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+
+ ErrorStatus =
+ XpmWriteFileFromXpmImage(filename, &image, &attributes, NULL);
+
+ XpmFreeAttributes(&attributes);
+ XpmFreeXpmImage(&image);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/XpmWrFFrI.c b/vendor/x11iraf/xpm/XpmWrFFrI.c
new file mode 100644
index 00000000..77fe6c7c
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmWrFFrI.c
@@ -0,0 +1,251 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmWrFFrI.c: *
+* *
+* XPM library *
+* Write an image and possibly its mask to an XPM file *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+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));
+
+int
+XpmWriteFileFromImage(display, filename, image, shapeimage, attributes)
+ Display *display;
+ char *filename;
+ XImage *image;
+ XImage *shapeimage;
+ XpmAttributes *attributes;
+{
+ XpmImage xpmimage;
+ int ErrorStatus;
+
+ /*
+ * Scan image
+ */
+ ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
+ &xpmimage, attributes);
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = XpmWriteFileFromXpmImage(filename, &xpmimage,
+ attributes, NULL);
+
+ XpmFreeXpmImage(&xpmimage);
+
+ return (ErrorStatus);
+}
+
+int
+XpmWriteFileFromXpmImage(filename, image, attributes, infos)
+ char *filename;
+ XpmImage *image;
+ XpmAttributes *attributes;
+ XpmInfos *infos;
+{
+ xpmData mdata;
+ char *name, *dot, *s, *new_name = NULL;
+ int ErrorStatus;
+
+ if ((ErrorStatus = xpmWriteFile(filename, &mdata)) != XpmSuccess)
+ return (ErrorStatus);
+
+ if (filename) {
+#ifdef VMS
+ name = filename;
+#else
+ if (!(name = rindex(filename, '/')))
+ name = filename;
+ else
+ name++;
+#endif
+ if (dot = index(name, '.')) {
+ new_name = (char *) strdup(name);
+ if (!new_name) {
+ new_name = NULL;
+ name = "image_name";
+ } else {
+ /* change '.' to '_' to get a valid C syntax name */
+ name = s = new_name;
+ while (dot = index(s, '.')) {
+ *dot = '_';
+ s = dot;
+ }
+ }
+ }
+ } else
+ name = "image_name";
+
+ if (ErrorStatus == XpmSuccess)
+ ErrorStatus = xpmWriteData(&mdata, image, name, attributes, infos);
+
+ xpmDataClose(&mdata);
+ if (new_name)
+ XpmFree(name);
+
+ return (ErrorStatus);
+}
+
+int
+xpmWriteData(mdata, image, name, attributes, infos)
+ xpmData *mdata;
+ XpmImage *image;
+ char *name;
+ XpmAttributes *attributes;
+ XpmInfos *infos;
+{
+ /* calculation variables */
+ unsigned int extensions;
+ FILE *file;
+ int ErrorStatus;
+
+ /* store this to speed up */
+ file = mdata->stream.file;
+
+ extensions = attributes && (attributes->valuemask & XpmExtensions)
+ && attributes->nextensions;
+
+ /*
+ * print the header line
+ */
+ fprintf(file, "/* XPM */\nstatic char * %s[] = {\n", name);
+
+ /*
+ * print the hints line
+ */
+ if (infos && infos->hints_cmt)
+ fprintf(file, "/*%s*/\n", infos->hints_cmt);
+
+ fprintf(file, "\"%d %d %d %d", image->width, image->height,
+ image->ncolors, image->cpp);
+
+ if (attributes && (attributes->valuemask & XpmHotspot))
+ fprintf(file, " %d %d", attributes->x_hotspot, attributes->y_hotspot);
+
+ if (extensions)
+ fprintf(file, " XPMEXT");
+
+ fprintf(file, "\",\n");
+
+ /*
+ * print colors
+ */
+ if (infos && infos->colors_cmt)
+ fprintf(file, "/*%s*/\n", infos->colors_cmt);
+
+ WriteColors(file, image->colorTable, image->ncolors);
+
+ /*
+ * print pixels
+ */
+ if (infos && infos->pixels_cmt)
+ fprintf(file, "/*%s*/\n", infos->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, attributes->extensions, attributes->nextensions);
+
+ /* close the array */
+ fprintf(file, "};\n");
+
+ return (XpmSuccess);
+}
+
+static void
+WriteColors(file, colors, ncolors)
+ FILE *file;
+ XpmColor *colors;
+ unsigned int ncolors;
+{
+ unsigned int a, key;
+ char *s;
+ xpmColorDefaults defaults;
+
+ for (a = 0; a < ncolors; a++, colors++) {
+
+ defaults = (xpmColorDefaults) 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");
+ }
+}
+
+
+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;
+{
+ 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);
+}
+
+static void
+WriteExtensions(file, ext, num)
+ FILE *file;
+ XpmExtension *ext;
+ unsigned int num;
+{
+ 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\"");
+}
diff --git a/vendor/x11iraf/xpm/XpmWrFFrP.c b/vendor/x11iraf/xpm/XpmWrFFrP.c
new file mode 100644
index 00000000..16c6ec49
--- /dev/null
+++ b/vendor/x11iraf/xpm/XpmWrFFrP.c
@@ -0,0 +1,47 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* XpmWrFFrP.c: *
+* *
+* XPM library *
+* Write a pixmap and possibly its mask to an XPM file *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:string.h"
+#else
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#endif
+
+int
+XpmWriteFileFromPixmap(display, filename, pixmap, shapemask, attributes)
+ Display *display;
+ char *filename;
+ Pixmap pixmap;
+ Pixmap shapemask;
+ XpmAttributes *attributes;
+{
+ int ErrorStatus;
+ XpmImage image;
+
+ /*
+ * get the XpmImage
+ */
+ ErrorStatus = XpmCreateXpmImageFromPixmap(display, pixmap, shapemask,
+ &image, attributes);
+ if (ErrorStatus == XpmSuccess) {
+ /*
+ * write it out
+ */
+ ErrorStatus =
+ XpmWriteFileFromXpmImage(filename, &image, attributes, NULL);
+ XpmFreeXpmImage(&image);
+ }
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/create.c b/vendor/x11iraf/xpm/create.c
new file mode 100644
index 00000000..0e792b62
--- /dev/null
+++ b/vendor/x11iraf/xpm/create.c
@@ -0,0 +1,1456 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* create.c: *
+* *
+* XPM library *
+* Create an X image and possibly its related shape mask *
+* from the given xpmInternAttrib. *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:ctype.h"
+#else
+#include <ctype.h>
+#endif
+
+LFUNC(xpmVisualType, int, (Visual *visual));
+
+LFUNC(SetCloseColor, int, (Display *display, Colormap colormap,
+ Visual *visual, XColor *col,
+ Pixel *image_pixel, Pixel *mask_pixel,
+ Pixel **pixels, unsigned int *npixels,
+ XpmAttributes *attributes,
+ XColor *cols, int ncols));
+
+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 **pixels,
+ unsigned int *npixels, XpmAttributes *attributes,
+ XColor *cols, int ncols));
+
+LFUNC(CreateXImage, int, (Display *display, Visual *visual,
+ unsigned int depth, unsigned int width,
+ unsigned int height, XImage **image_return));
+
+LFUNC(CreateColors, int, (Display *display, XpmAttributes *attributes,
+ XpmColor *ct, unsigned int ncolors, Pixel *ip,
+ Pixel *mp, unsigned int *mask_pixel,
+ Pixel **pixels, unsigned int *npixels));
+
+LFUNC(SetImagePixels, void, (XImage *image, unsigned int width,
+ unsigned int height, unsigned int *pixelindex,
+ Pixel *pixels));
+
+LFUNC(SetImagePixels32, void, (XImage *image, unsigned int width,
+ unsigned int height, unsigned int *pixelindex,
+ Pixel *pixels));
+
+LFUNC(SetImagePixels16, void, (XImage *image, unsigned int width,
+ unsigned int height, unsigned int *pixelindex,
+ Pixel *pixels));
+
+LFUNC(SetImagePixels8, void, (XImage *image, unsigned int width,
+ unsigned int height, unsigned int *pixelindex,
+ Pixel *pixels));
+
+LFUNC(SetImagePixels1, void, (XImage *image, unsigned int width,
+ unsigned int height, unsigned int *pixelindex,
+ Pixel *pixels));
+
+#ifdef NEED_STRCASECMP
+LFUNC(strcasecmp, int, (char *s1, char *s2));
+
+/*
+ * in case strcasecmp is not provided by the system here is one
+ * which does the trick
+ */
+static int
+strcasecmp(s1, s2)
+ register char *s1, *s2;
+{
+ register int c1, c2;
+
+ while (*s1 && *s2) {
+ c1 = isupper(*s1) ? tolower(*s1) : *s1;
+ c2 = isupper(*s2) ? tolower(*s2) : *s2;
+ if (c1 != c2)
+ return (1);
+ s1++;
+ s2++;
+ }
+ if (*s1 || *s2)
+ return (1);
+ return (0);
+}
+#endif
+
+/*
+ * return the default color key related to the given visual
+ */
+static int
+xpmVisualType(visual)
+ Visual *visual;
+{
+ 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);
+ }
+}
+
+
+typedef struct {
+ int cols_index;
+ long closeness;
+} CloseColor;
+
+static int
+closeness_cmp(a, b)
+ void *a, *b;
+{
+ CloseColor *x = (CloseColor *) a, *y = (CloseColor *) b;
+
+ return (x->closeness - y->closeness);
+}
+
+/*
+ * 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, pixels, npixels, attributes,
+ cols, ncols)
+ Display *display;
+ Colormap colormap;
+ Visual *visual;
+ XColor *col;
+ Pixel *image_pixel, *mask_pixel;
+ Pixel **pixels;
+ unsigned int *npixels;
+ XpmAttributes *attributes;
+ XColor *cols;
+ int ncols;
+{
+ /*
+ * 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;
+
+ 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;
+ }
+
+
+ /*
+ * 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 (XAllocColor(display, colormap, &cols[c])) {
+ if (n == ITERATIONS)
+ XUngrabServer(display);
+ XpmFree(closenesses);
+ *image_pixel = cols[c].pixel;
+ *mask_pixel = 1;
+ (*pixels)[*npixels] = cols[c].pixel;
+ (*npixels)++;
+ return (0);
+ } else {
+ ++i; if (i == ncols) break;
+ c = closenesses[i].cols_index;
+ }
+ }
+
+ /* 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 (XAllocColor(display, colormap, col)) {
+ *image_pixel = col->pixel;
+ *mask_pixel = 1;
+ (*pixels)[*npixels] = col->pixel;
+ (*npixels)++;
+ 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))
+
+/*
+ * set the color pixel related to the given colorname,
+ * return 0 if success, 1 otherwise.
+ */
+
+static int
+SetColor(display, colormap, visual, colorname, color_index,
+ image_pixel, mask_pixel, mask_pixel_index,
+ pixels, npixels, attributes, cols, ncols)
+ Display *display;
+ Colormap colormap;
+ Visual *visual;
+ char *colorname;
+ unsigned int color_index;
+ Pixel *image_pixel, *mask_pixel;
+ unsigned int *mask_pixel_index;
+ Pixel **pixels;
+ unsigned int *npixels;
+ XpmAttributes *attributes;
+ XColor *cols;
+ int ncols;
+{
+ XColor xcolor;
+
+ if (strcasecmp(colorname, TRANSPARENT_COLOR)) {
+ if (!XParseColor(display, colormap, colorname, &xcolor))
+ return (1);
+ if (!XAllocColor(display, colormap, &xcolor)) {
+ if (USE_CLOSECOLOR)
+ return (SetCloseColor(display, colormap, visual, &xcolor,
+ image_pixel, mask_pixel, pixels, npixels,
+ attributes, cols, ncols));
+ else
+ return (1);
+ }
+ *image_pixel = xcolor.pixel;
+ *mask_pixel = 1;
+ (*pixels)[*npixels] = xcolor.pixel;
+ (*npixels)++;
+ } else {
+ *image_pixel = 0;
+ *mask_pixel = 0;
+ *mask_pixel_index = color_index;/* store the color table index */
+ }
+ return (0);
+}
+
+
+static int
+CreateColors(display, attributes, ct, ncolors,
+ ip, mp, mask_pixel, pixels, npixels)
+ Display *display;
+ XpmAttributes *attributes;
+ XpmColor *ct;
+ unsigned int ncolors;
+ Pixel *ip;
+ Pixel *mp;
+ unsigned int *mask_pixel; /* mask pixel index */
+ Pixel **pixels; /* allocated pixels */
+ unsigned int *npixels; /* number of allocated pixels */
+{
+ /* variables stored in the XpmAttributes structure */
+ Visual *visual;
+ Colormap colormap;
+ XpmColorSymbol *colorsymbols;
+ unsigned int numsymbols;
+
+ char *colorname;
+ unsigned int a, b, l;
+ Boolean pixel_defined;
+ unsigned int key;
+ XpmColorSymbol *symbol;
+ xpmColorDefaults 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 = DefaultVisual(display, DefaultScreen(display));
+
+ if (attributes && attributes->valuemask & XpmColormap)
+ colormap = attributes->colormap;
+ else
+ colormap = DefaultColormap(display, DefaultScreen(display));
+
+ if (attributes && attributes->valuemask & XpmColorKey)
+ key = attributes->color_key;
+ else
+ key = xpmVisualType(visual);
+
+ 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;
+ ncols = visual->map_entries;
+ cols = (XColor *) XpmCalloc(ncols, sizeof(XColor));
+ for (i = 0; i < ncols; ++i)
+ cols[i].pixel = i;
+ XQueryColors(display, colormap, cols, ncols);
+#if 0
+ }
+#endif
+ }
+
+ 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 (a = 0; a < ncolors; a++, ct++, ip++, mp++) {
+ colorname = NULL;
+ pixel_defined = False;
+ defaults = (xpmColorDefaults) ct;
+
+ /*
+ * look for a defined symbol
+ */
+ if (numsymbols && defaults[1]) {
+ s = defaults[1];
+ for (l = 0, symbol = colorsymbols; l < numsymbols; l++, 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 &&
+ !strcasecmp(symbol->value, defaults[def_index]))
+ break;
+ }
+ }
+ if (l != numsymbols) {
+ if (symbol->name && symbol->value)
+ colorname = symbol->value;
+ else
+ pixel_defined = True;
+ }
+ }
+ if (!pixel_defined) { /* pixel not given as symbol value */
+ if (colorname) { /* colorname given as symbol value */
+ if (!SetColor(display, colormap, visual, colorname, a, ip, mp,
+ mask_pixel, pixels, npixels, attributes,
+ cols, ncols))
+ pixel_defined = True;
+ else
+ ErrorStatus = XpmColorError;
+ }
+ b = key;
+ while (!pixel_defined && b > 1) {
+ if (defaults[b]) {
+ if (!SetColor(display, colormap, visual, defaults[b],
+ a, ip, mp, mask_pixel, pixels, npixels,
+ attributes, cols, ncols)) {
+ pixel_defined = True;
+ break;
+ } else
+ ErrorStatus = XpmColorError;
+ }
+ b--;
+ }
+ b = key + 1;
+ while (!pixel_defined && b < NKEYS + 1) {
+ if (defaults[b]) {
+ if (!SetColor(display, colormap, visual, defaults[b],
+ a, ip, mp, mask_pixel, pixels, npixels,
+ attributes, cols, ncols)) {
+ pixel_defined = True;
+ break;
+ } else
+ ErrorStatus = XpmColorError;
+ }
+ b++;
+ }
+ if (!pixel_defined) {
+ if (cols)
+ XpmFree(cols);
+ return (XpmColorFailed);
+ }
+ } else {
+ *ip = colorsymbols[l].pixel;
+ if (symbol->value
+ && !strcasecmp(symbol->value, TRANSPARENT_COLOR)) {
+ *mp = 0;
+ *mask_pixel = 0;
+ } else
+ *mp = 1;
+ }
+ }
+ if (cols)
+ XpmFree(cols);
+ return (ErrorStatus);
+}
+
+/* function call in case of error, frees only locally allocated variables */
+#undef RETURN
+#define RETURN(status) \
+{ \
+ if (ximage) XDestroyImage(ximage); \
+ if (shapeimage) XDestroyImage(shapeimage); \
+ if (ximage_pixels) XpmFree(ximage_pixels); \
+ if (mask_pixels) XpmFree(mask_pixels); \
+ if (npixels) XFreeColors(display, colormap, pixels, npixels, 0); \
+ if (pixels) XpmFree(pixels); \
+ return (status); \
+}
+
+int
+XpmCreateImageFromXpmImage(display, image,
+ image_return, shapeimage_return, attributes)
+ Display *display;
+ XpmImage *image;
+ XImage **image_return;
+ XImage **shapeimage_return;
+ XpmAttributes *attributes;
+{
+ /* variables stored in the XpmAttributes structure */
+ Visual *visual;
+ Colormap colormap;
+ unsigned int depth;
+
+ /* variables to return */
+ XImage *ximage = NULL;
+ XImage *shapeimage = NULL;
+ unsigned int mask_pixel;
+ int ErrorStatus;
+
+ /* calculation variables */
+ Pixel *ximage_pixels = NULL;
+ Pixel *mask_pixels = NULL;
+ Pixel *pixels = NULL; /* allocated pixels */
+ unsigned int npixels = 0; /* number of allocated pixels */
+
+ /*
+ * 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 = DefaultVisual(display, DefaultScreen(display));
+
+ if (attributes && (attributes->valuemask & XpmColormap))
+ colormap = attributes->colormap;
+ else
+ colormap = DefaultColormap(display, DefaultScreen(display));
+
+ if (attributes && (attributes->valuemask & XpmDepth))
+ depth = attributes->depth;
+ else
+ depth = DefaultDepth(display, DefaultScreen(display));
+ ErrorStatus = XpmSuccess;
+
+ /*
+ * malloc pixels index tables
+ */
+
+ ximage_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
+ if (!ximage_pixels)
+ return (XpmNoMemory);
+
+ mask_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
+ if (!mask_pixels)
+ RETURN(ErrorStatus);
+
+ mask_pixel = UNDEF_PIXEL;
+
+ /* maximum of allocated pixels will be the number of colors */
+ pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors);
+ if (!pixels)
+ RETURN(ErrorStatus);
+
+ /*
+ * get pixel colors, store them in index tables
+ */
+
+ ErrorStatus = CreateColors(display, attributes, image->colorTable,
+ image->ncolors, ximage_pixels, mask_pixels,
+ &mask_pixel, &pixels, &npixels);
+
+ if (ErrorStatus != XpmSuccess
+ && (ErrorStatus < 0 || (attributes
+ && (attributes->valuemask & XpmExactColors)
+ && attributes->exactColors)))
+ RETURN(ErrorStatus);
+
+ /*
+ * create the ximage
+ */
+ if (image_return) {
+ ErrorStatus = CreateXImage(display, visual, depth,
+ image->width, image->height, &ximage);
+ if (ErrorStatus != XpmSuccess)
+ RETURN(ErrorStatus);
+
+ /*
+ * set the ximage 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 (ximage->depth == 1)
+ SetImagePixels1(ximage, image->width, image->height,
+ image->data, ximage_pixels);
+ else if (ximage->bits_per_pixel == 8)
+ SetImagePixels8(ximage, image->width, image->height,
+ image->data, ximage_pixels);
+ else if (ximage->bits_per_pixel == 16)
+ SetImagePixels16(ximage, image->width, image->height,
+ image->data, ximage_pixels);
+ else if (ximage->bits_per_pixel == 32)
+ SetImagePixels32(ximage, image->width, image->height,
+ image->data, ximage_pixels);
+ else
+ SetImagePixels(ximage, image->width, image->height,
+ image->data, ximage_pixels);
+ }
+
+ /*
+ * create the shape mask image
+ */
+ if (mask_pixel != UNDEF_PIXEL && shapeimage_return) {
+ ErrorStatus = CreateXImage(display, visual, 1, image->width,
+ image->height, &shapeimage);
+ if (ErrorStatus != XpmSuccess)
+ RETURN(ErrorStatus);
+
+ SetImagePixels1(shapeimage, image->width, image->height,
+ image->data, mask_pixels);
+ }
+ XpmFree(mask_pixels);
+ XpmFree(pixels);
+
+ /*
+ * if requested store alloc'ed pixels in the XpmAttributes structure
+ */
+ if (attributes && attributes->valuemask & XpmReturnPixels) {
+ if (mask_pixel != UNDEF_PIXEL) {
+ Pixel *pixels, *p1, *p2;
+ unsigned int a;
+
+ attributes->npixels = image->ncolors - 1;
+ pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * attributes->npixels);
+ if (pixels) {
+ p1 = ximage_pixels;
+ p2 = pixels;
+ for (a = 0; a < image->ncolors; a++, p1++)
+ if (a != mask_pixel)
+ *p2++ = *p1;
+ attributes->pixels = pixels;
+ } else {
+ /* if error just say we can't return requested data */
+ attributes->valuemask &= ~XpmReturnPixels;
+ attributes->pixels = NULL;
+ attributes->npixels = 0;
+ }
+ XpmFree(ximage_pixels);
+ } else {
+ attributes->pixels = ximage_pixels;
+ attributes->npixels = image->ncolors;
+ }
+ } else
+ XpmFree(ximage_pixels);
+
+ /*
+ * return created images
+ */
+ if (image_return)
+ *image_return = ximage;
+
+ if (shapeimage_return)
+ *shapeimage_return = shapeimage;
+
+ return (ErrorStatus);
+}
+
+
+/*
+ * Create an XImage
+ */
+static int
+CreateXImage(display, visual, depth, width, height, image_return)
+ Display *display;
+ Visual *visual;
+ unsigned int depth;
+ unsigned int width;
+ unsigned int height;
+ XImage **image_return;
+{
+ 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, ZPixmap, 0, 0,
+ width, height, bitmap_pad, 0);
+ if (!*image_return)
+ return (XpmNoMemory);
+
+ /* 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);
+ }
+ return (XpmSuccess);
+}
+
+
+/*
+ * 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
+ };
+
+ static int
+ _XReverse_Bytes(bpt, nb)
+ register unsigned char *bpt;
+ register int nb;
+{
+ do {
+ *bpt = _reverse_byte[*bpt];
+ bpt++;
+ } while (--nb > 0);
+ return 0;
+}
+
+
+void
+xpm_xynormalizeimagebits(bp, img)
+ register unsigned char *bp;
+ register XImage *img;
+{
+ 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);
+}
+
+void
+xpm_znormalizeimagebits(bp, img)
+ register unsigned char *bp;
+ register XImage *img;
+{
+ 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};
+
+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 */
+{
+ 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
+ */
+
+static void
+SetImagePixels(image, width, height, pixelindex, pixels)
+ XImage *image;
+ unsigned int width;
+ unsigned int height;
+ unsigned int *pixelindex;
+ Pixel *pixels;
+{
+ 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
+ */
+
+#ifndef WORD64
+/* 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 /*constant */ RTXpm_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.
+*/
+
+static void
+SetImagePixels32(image, width, height, pixelindex, pixels)
+ XImage *image;
+ unsigned int width;
+ unsigned int height;
+ unsigned int *pixelindex;
+ Pixel *pixels;
+{
+ 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;
+#ifndef WORD64
+ if (*((char *) &RTXpm_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;
+#ifndef WORD64
+ if (*((char *) &RTXpm_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
+ */
+
+static void
+SetImagePixels16(image, width, height, pixelindex, pixels)
+ XImage *image;
+ unsigned int width;
+ unsigned int height;
+ unsigned int *pixelindex;
+ Pixel *pixels;
+{
+ 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
+ */
+
+static void
+SetImagePixels8(image, width, height, pixelindex, pixels)
+ XImage *image;
+ unsigned int width;
+ unsigned int height;
+ unsigned int *pixelindex;
+ Pixel *pixels;
+{
+ 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**
+ */
+
+static void
+SetImagePixels1(image, width, height, pixelindex, pixels)
+ XImage *image;
+ unsigned int width;
+ unsigned int height;
+ unsigned int *pixelindex;
+ Pixel *pixels;
+{
+ if (image->byte_order != image->bitmap_bit_order)
+ SetImagePixels(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 */
+ }
+}
+
+
+int
+XpmCreatePixmapFromXpmImage(display, d, image,
+ pixmap_return, shapemask_return, attributes)
+ Display *display;
+ Drawable d;
+ XpmImage *image;
+ Pixmap *pixmap_return;
+ Pixmap *shapemask_return;
+ XpmAttributes *attributes;
+{
+ XImage *ximage, **ximageptr = NULL;
+ XImage *shapeimage, **shapeimageptr = NULL;
+ int ErrorStatus;
+ XGCValues gcv;
+ GC gc;
+
+ /*
+ * initialize return values
+ */
+ if (pixmap_return) {
+ *pixmap_return = 0;
+ ximageptr = &ximage;
+ }
+ if (shapemask_return) {
+ *shapemask_return = 0;
+ shapeimageptr = &shapeimage;
+ }
+ /*
+ * create the ximages
+ */
+ ErrorStatus = XpmCreateImageFromXpmImage(display, image,
+ ximageptr, shapeimageptr,
+ attributes);
+ if (ErrorStatus < 0)
+ return (ErrorStatus);
+
+ /*
+ * create the pixmaps
+ */
+ if (ximageptr && ximage) {
+ *pixmap_return = XCreatePixmap(display, d, ximage->width,
+ ximage->height, ximage->depth);
+ gcv.function = GXcopy;
+ gc = XCreateGC(display, *pixmap_return, GCFunction, &gcv);
+
+ XPutImage(display, *pixmap_return, gc, ximage, 0, 0, 0, 0,
+ ximage->width, ximage->height);
+
+ XDestroyImage(ximage);
+ XFreeGC(display, gc);
+ }
+ if (shapeimageptr && shapeimage) {
+ *shapemask_return = XCreatePixmap(display, d, shapeimage->width,
+ shapeimage->height,
+ shapeimage->depth);
+ gcv.function = GXcopy;
+ gc = XCreateGC(display, *shapemask_return, GCFunction, &gcv);
+
+ XPutImage(display, *shapemask_return, gc, shapeimage, 0, 0, 0, 0,
+ shapeimage->width, shapeimage->height);
+
+ XDestroyImage(shapeimage);
+ XFreeGC(display, gc);
+ }
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/data.c b/vendor/x11iraf/xpm/data.c
new file mode 100644
index 00000000..2dc71ae8
--- /dev/null
+++ b/vendor/x11iraf/xpm/data.c
@@ -0,0 +1,645 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* data.c: *
+* *
+* XPM library *
+* IO utilities *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+/* Official version number */
+static char *RCS_Version = "$XpmVersion: 3.3 $";
+
+/* Internal version number */
+static char *RCS_Id = "$Id: xpm.shar,v 3.19 1993/12/22 13:27:07 lehors Exp $";
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:stat.h"
+#include "sys$library:ctype.h"
+#else
+#include <sys/stat.h>
+#include <ctype.h>
+#endif
+
+FUNC(atoui, unsigned int, (char *p, unsigned int l, unsigned int *ui_return));
+LFUNC(ParseComment, int, (xpmData * mdata));
+
+unsigned int
+atoui(p, l, ui_return)
+ register char *p;
+ unsigned int l;
+ unsigned int *ui_return;
+{
+ register 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;
+}
+
+static int
+ParseComment(mdata)
+ xpmData *mdata;
+{
+ if (mdata->type == XPMBUFFER) {
+ register char c;
+ register unsigned int n = 0;
+ unsigned int notend;
+ char *s, *s2;
+
+ s = mdata->Comment;
+ *s = mdata->Bcmt[0];
+
+ /* skip the string beginning comment */
+ s2 = mdata->Bcmt;
+ do {
+ c = *mdata->cptr++;
+ *++s = c;
+ n++;
+ s2++;
+ } while (c == *s2 && *s2 != '\0' && c && c != mdata->Bos);
+
+ if (*s2 != '\0') {
+ /* this wasn't the beginning of a comment */
+ mdata->cptr -= n;
+ return 0;
+ }
+ /* store comment */
+ mdata->Comment[0] = *s;
+ s = mdata->Comment;
+ notend = 1;
+ n = 0;
+ while (notend) {
+ s2 = mdata->Ecmt;
+ while (*s != *s2 && c && c != mdata->Bos) {
+ c = *mdata->cptr++;
+ *++s = c;
+ n++;
+ }
+ mdata->CommentLength = n;
+ do {
+ c = *mdata->cptr++;
+ n++;
+ *++s = c;
+ s2++;
+ } while (c == *s2 && *s2 != '\0' && c && c != mdata->Bos);
+ if (*s2 == '\0') {
+ /* this is the end of the comment */
+ notend = 0;
+ mdata->cptr--;
+ }
+ }
+ return 0;
+ } else {
+ FILE *file = mdata->stream.file;
+ register int c;
+ register unsigned int n = 0, a;
+ unsigned int notend;
+ char *s, *s2;
+
+ s = mdata->Comment;
+ *s = mdata->Bcmt[0];
+
+ /* skip the string beginning comment */
+ s2 = mdata->Bcmt;
+ do {
+ c = getc(file);
+ *++s = c;
+ n++;
+ s2++;
+ } while (c == *s2 && *s2 != '\0'
+ && c != EOF && c != mdata->Bos);
+
+ 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(*s, file);
+ return 0;
+ }
+ /* store comment */
+ mdata->Comment[0] = *s;
+ s = mdata->Comment;
+ notend = 1;
+ n = 0;
+ while (notend) {
+ s2 = mdata->Ecmt;
+ while (*s != *s2 && c != EOF && c != mdata->Bos) {
+ c = getc(file);
+ *++s = c;
+ n++;
+ }
+ mdata->CommentLength = n;
+ do {
+ c = getc(file);
+ n++;
+ *++s = c;
+ s2++;
+ } while (c == *s2 && *s2 != '\0'
+ && c != EOF && c != mdata->Bos);
+ if (*s2 == '\0') {
+ /* this is the end of the comment */
+ notend = 0;
+ ungetc(*s, file);
+ }
+ }
+ return 0;
+ }
+}
+
+/*
+ * skip to the end of the current string and the beginning of the next one
+ */
+int
+xpmNextString(mdata)
+ xpmData *mdata;
+{
+ if (!mdata->type)
+ mdata->cptr = (mdata->stream.data)[++mdata->line];
+ else if (mdata->type == XPMBUFFER) {
+ register char c;
+
+ /* get to the end of the current string */
+ if (mdata->Eos)
+ while ((c = *mdata->cptr++) && c != mdata->Eos);
+
+ /*
+ * then get to the beginning of the next string looking for possible
+ * comment
+ */
+ if (mdata->Bos) {
+ while ((c = *mdata->cptr++) && c != mdata->Bos)
+ if (mdata->Bcmt && c == mdata->Bcmt[0])
+ ParseComment(mdata);
+ } else if (mdata->Bcmt) { /* XPM2 natural */
+ while ((c = *mdata->cptr++) == mdata->Bcmt[0])
+ ParseComment(mdata);
+ mdata->cptr--;
+ }
+ } else {
+ register int c;
+ FILE *file = mdata->stream.file;
+
+ /* get to the end of the current string */
+ if (mdata->Eos)
+ while ((c = getc(file)) != mdata->Eos && c != EOF);
+
+ /*
+ * then get to the beginning of the next string looking for possible
+ * comment
+ */
+ if (mdata->Bos) {
+ while ((c = getc(file)) != mdata->Bos && c != EOF)
+ if (mdata->Bcmt && c == mdata->Bcmt[0])
+ ParseComment(mdata);
+
+ } else if (mdata->Bcmt) { /* XPM2 natural */
+ while ((c = getc(file)) == mdata->Bcmt[0])
+ ParseComment(mdata);
+ ungetc(c, file);
+ }
+ }
+ return 0;
+}
+
+
+/*
+ * skip whitespace and compute the following unsigned int,
+ * returns 1 if one is found and 0 if not
+ */
+int
+xpmNextUI(mdata, ui_return)
+ xpmData *mdata;
+ unsigned int *ui_return;
+{
+ char buf[BUFSIZ];
+ int l;
+
+ l = xpmNextWord(mdata, buf, BUFSIZ);
+ return atoui(buf, l, ui_return);
+}
+
+/*
+ * skip whitespace and return the following word
+ */
+unsigned int
+xpmNextWord(mdata, buf, buflen)
+ xpmData *mdata;
+ char *buf;
+ unsigned int buflen;
+{
+ register unsigned int n = 0;
+ int c;
+
+ if (!mdata->type || mdata->type == XPMBUFFER) {
+ while (isspace(c = *mdata->cptr) && c != mdata->Eos)
+ mdata->cptr++;
+ do {
+ c = *mdata->cptr++;
+ *buf++ = c;
+ n++;
+ } while (!isspace(c) && c != mdata->Eos && n < buflen);
+ n--;
+ mdata->cptr--;
+ } else {
+ FILE *file = mdata->stream.file;
+
+ while ((c = getc(file)) != EOF && isspace(c) && c != mdata->Eos);
+ while (!isspace(c) && c != mdata->Eos && c != EOF && n < buflen) {
+ *buf++ = c;
+ n++;
+ c = getc(file);
+ }
+ ungetc(c, file);
+ }
+ return (n);
+}
+
+/*
+ * return end of string - WARNING: malloc!
+ */
+int
+xpmGetString(mdata, sptr, l)
+ xpmData *mdata;
+ char **sptr;
+ unsigned int *l;
+{
+ unsigned int i, n = 0;
+ int c;
+ char *p, *q, buf[BUFSIZ];
+
+ if (!mdata->type || mdata->type == XPMBUFFER) {
+ if (mdata->cptr) {
+ char *start;
+
+ while (isspace(c = *mdata->cptr) && c != mdata->Eos)
+ mdata->cptr++;
+ start = mdata->cptr;
+ while ((c = *mdata->cptr) && c != mdata->Eos)
+ mdata->cptr++;
+ n = mdata->cptr - start + 1;
+ p = (char *) XpmMalloc(n);
+ if (!p)
+ return (XpmNoMemory);
+ strncpy(p, start, n);
+ if (mdata->type) /* XPMBUFFER */
+ p[n - 1] = '\0';
+ }
+ } else {
+ FILE *file = mdata->stream.file;
+
+ while ((c = getc(file)) != EOF && isspace(c) && c != mdata->Eos);
+ if (c == EOF)
+ return (XpmFileInvalid);
+ p = NULL;
+ i = 0;
+ q = buf;
+ p = (char *) XpmMalloc(1);
+ while (c != mdata->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(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(c, file);
+ }
+ *sptr = p;
+ *l = n;
+ return (XpmSuccess);
+}
+
+/*
+ * get the current comment line
+ */
+int
+xpmGetCmt(mdata, cmt)
+ xpmData *mdata;
+ char **cmt;
+{
+ if (!mdata->type)
+ *cmt = NULL;
+ else if (mdata->CommentLength) {
+ *cmt = (char *) XpmMalloc(mdata->CommentLength + 1);
+ strncpy(*cmt, mdata->Comment, mdata->CommentLength);
+ (*cmt)[mdata->CommentLength] = '\0';
+ mdata->CommentLength = 0;
+ } else
+ *cmt = NULL;
+ return 0;
+}
+
+/*
+ * open the given file to be read as an xpmData which is returned.
+ */
+int
+xpmReadFile(filename, mdata)
+ char *filename;
+ xpmData *mdata;
+{
+#ifdef ZPIPE
+ char *compressfile, buf[BUFSIZ];
+ struct stat status;
+
+#endif
+
+ if (!filename) {
+ mdata->stream.file = (stdin);
+ mdata->type = XPMFILE;
+ } else {
+#ifdef ZPIPE
+ if (((int)strlen(filename) > 2) &&
+ !strcmp(".Z", filename + (strlen(filename) - 2))) {
+ mdata->type = XPMPIPE;
+ sprintf(buf, "uncompress -c %s", filename);
+ if (!(mdata->stream.file = popen(buf, "r")))
+ return (XpmOpenFailed);
+
+ } else if (((int)strlen(filename) > 3) &&
+ !strcmp(".gz", filename + (strlen(filename) - 3))) {
+ mdata->type = XPMPIPE;
+ sprintf(buf, "gunzip -qc %s", filename);
+ if (!(mdata->stream.file = popen(buf, "r")))
+ return (XpmOpenFailed);
+
+ } else {
+ if (!(compressfile = (char *) XpmMalloc(strlen(filename) + 4)))
+ return (XpmNoMemory);
+
+ strcpy(compressfile, filename);
+ strcat(compressfile, ".Z");
+ 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 {
+ strcpy(compressfile, filename);
+ strcat(compressfile, ".gz");
+ 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
+ if (!(mdata->stream.file = fopen(filename, "r"))) {
+#ifdef ZPIPE
+ XpmFree(compressfile);
+#endif
+ return (XpmOpenFailed);
+ }
+ mdata->type = XPMFILE;
+#ifdef ZPIPE
+ }
+ }
+ XpmFree(compressfile);
+ }
+#endif
+ }
+ mdata->CommentLength = 0;
+ return (XpmSuccess);
+}
+
+/*
+ * open the given file to be written as an xpmData which is returned
+ */
+int
+xpmWriteFile(filename, mdata)
+ char *filename;
+ xpmData *mdata;
+{
+#ifdef ZPIPE
+ char buf[BUFSIZ];
+
+#endif
+
+ if (!filename) {
+ mdata->stream.file = (stdout);
+ mdata->type = XPMFILE;
+ } else {
+#ifdef ZPIPE
+ if ((int)strlen(filename) > 2
+ && !strcmp(".Z", filename + (strlen(filename) - 2))) {
+ sprintf(buf, "compress > %s", filename);
+ if (!(mdata->stream.file = popen(buf, "w")))
+ return (XpmOpenFailed);
+
+ mdata->type = XPMPIPE;
+ } else if ((int)strlen(filename) > 3
+ && !strcmp(".gz", filename + (strlen(filename) - 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;
+#ifdef ZPIPE
+ }
+#endif
+ }
+ return (XpmSuccess);
+}
+
+/*
+ * open the given array to be read or written as an xpmData which is returned
+ */
+void
+xpmOpenArray(data, mdata)
+ char **data;
+ xpmData *mdata;
+{
+ 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 */
+}
+
+/*
+ * open the given buffer to be read or written as an xpmData which is returned
+ */
+void
+xpmOpenBuffer(buffer, mdata)
+ char *buffer;
+ xpmData *mdata;
+{
+ mdata->type = XPMBUFFER;
+ mdata->cptr = buffer;
+ mdata->CommentLength = 0;
+}
+
+/*
+ * close the file related to the xpmData if any
+ */
+int
+xpmDataClose(mdata)
+ xpmData *mdata;
+{
+ switch (mdata->type) {
+ case XPMARRAY:
+ case XPMBUFFER:
+ break;
+ case XPMFILE:
+ if (mdata->stream.file != (stdout) && mdata->stream.file != (stdin))
+ fclose(mdata->stream.file);
+ break;
+#ifdef ZPIPE
+ case XPMPIPE:
+ pclose(mdata->stream.file);
+ break;
+#endif
+ }
+ 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(mdata)
+ xpmData *mdata;
+{
+ char buf[BUFSIZ];
+ int l, n = 0;
+
+ if (mdata->type) {
+ mdata->Bos = '\0';
+ mdata->Eos = '\n';
+ mdata->Bcmt = mdata->Ecmt = NULL;
+ l = xpmNextWord(mdata, buf, BUFSIZ);
+ if (l == 7 && !strncmp("#define", buf, 7)) {
+ /* this maybe an XPM 1 file */
+ char *ptr;
+
+ l = xpmNextWord(mdata, buf, BUFSIZ);
+ if (!l)
+ return (XpmFileInvalid);
+ ptr = index(buf, '_');
+ if (!ptr || strncmp("_format", ptr, l - (ptr - buf)))
+ return XpmFileInvalid;
+ /* this is definitely an XPM 1 file */
+ mdata->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(mdata, 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(mdata, buf, BUFSIZ);
+
+ /*
+ * get infos about this type
+ */
+ while (xpmDataTypes[n].type
+ && strncmp(xpmDataTypes[n].type, buf, l))
+ n++;
+ }
+ mdata->format = 0;
+ } else
+ /* nope this is not an XPM file */
+ return XpmFileInvalid;
+ }
+ if (xpmDataTypes[n].type) {
+ if (n == 0) { /* natural type */
+ mdata->Bcmt = xpmDataTypes[n].Bcmt;
+ mdata->Ecmt = xpmDataTypes[n].Ecmt;
+ xpmNextString(mdata); /* skip the end of the headerline */
+ mdata->Bos = xpmDataTypes[n].Bos;
+ mdata->Eos = xpmDataTypes[n].Eos;
+ } else {
+ mdata->Bcmt = xpmDataTypes[n].Bcmt;
+ mdata->Ecmt = xpmDataTypes[n].Ecmt;
+ if (!mdata->format) { /* XPM 2 or 3 */
+ mdata->Bos = xpmDataTypes[n].Bos;
+ mdata->Eos = '\0';
+ /* get to the beginning of the first string */
+ xpmNextString(mdata);
+ mdata->Eos = xpmDataTypes[n].Eos;
+ } else /* XPM 1 skip end of line */
+ xpmNextString(mdata);
+ }
+ } else
+ /* we don't know about that type of XPM file... */
+ return XpmFileInvalid;
+ }
+ return XpmSuccess;
+}
diff --git a/vendor/x11iraf/xpm/doc/xpm.ps b/vendor/x11iraf/xpm/doc/xpm.ps
new file mode 100644
index 00000000..23706d63
--- /dev/null
+++ b/vendor/x11iraf/xpm/doc/xpm.ps
@@ -0,0 +1,4750 @@
+%!
+%%BoundingBox: (atend)
+%%Pages: (atend)
+%%DocumentFonts: (atend)
+%%EndComments
+%
+% FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0
+% Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation.
+% All rights reserved.
+%
+% Known Problems:
+% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
+/FMversion (3.0) def
+% Set up Color vs. Black-and-White
+ /FMPrintInColor systemdict /colorimage known
+ systemdict /currentcolortransfer known or def
+% Uncomment this line to force b&w on color printer
+% /FMPrintInColor false def
+/FrameDict 195 dict def
+systemdict /errordict known not {/errordict 10 dict def
+ errordict /rangecheck {stop} put} if
+% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
+FrameDict /tmprangecheck errordict /rangecheck get put
+errordict /rangecheck {FrameDict /bug true put} put
+FrameDict /bug false put
+mark
+% Some PS machines read past the CR, so keep the following 3 lines together!
+currentfile 5 string readline
+00
+0000000000
+cleartomark
+errordict /rangecheck FrameDict /tmprangecheck get put
+FrameDict /bug get {
+ /readline {
+ /gstring exch def
+ /gfile exch def
+ /gindex 0 def
+ {
+ gfile read pop
+ dup 10 eq {exit} if
+ dup 13 eq {exit} if
+ gstring exch gindex exch put
+ /gindex gindex 1 add def
+ } loop
+ pop
+ gstring 0 gindex getinterval true
+ } def
+ } if
+/FMVERSION {
+ FMversion ne {
+ /Times-Roman findfont 18 scalefont setfont
+ 100 100 moveto
+ (FrameMaker version does not match postscript_prolog!)
+ dup =
+ show showpage
+ } if
+ } def
+/FMLOCAL {
+ FrameDict begin
+ 0 def
+ end
+ } def
+ /gstring FMLOCAL
+ /gfile FMLOCAL
+ /gindex FMLOCAL
+ /orgxfer FMLOCAL
+ /orgproc FMLOCAL
+ /organgle FMLOCAL
+ /orgfreq FMLOCAL
+ /yscale FMLOCAL
+ /xscale FMLOCAL
+ /manualfeed FMLOCAL
+ /paperheight FMLOCAL
+ /paperwidth FMLOCAL
+/FMDOCUMENT {
+ array /FMfonts exch def
+ /#copies exch def
+ FrameDict begin
+ 0 ne dup {setmanualfeed} if
+ /manualfeed exch def
+ /paperheight exch def
+ /paperwidth exch def
+ /yscale exch def
+ /xscale exch def
+ currenttransfer cvlit /orgxfer exch def
+ currentscreen cvlit /orgproc exch def
+ /organgle exch def /orgfreq exch def
+ setpapername
+ manualfeed {true} {papersize} ifelse
+ {manualpapersize} {false} ifelse
+ {desperatepapersize} if
+ end
+ } def
+ /pagesave FMLOCAL
+ /orgmatrix FMLOCAL
+ /landscape FMLOCAL
+/FMBEGINPAGE {
+ FrameDict begin
+ /pagesave save def
+ 3.86 setmiterlimit
+ /landscape exch 0 ne def
+ landscape {
+ 90 rotate 0 exch neg translate pop
+ }
+ {pop pop}
+ ifelse
+ xscale yscale scale
+ /orgmatrix matrix def
+ gsave
+ } def
+/FMENDPAGE {
+ grestore
+ pagesave restore
+ end
+ showpage
+ } def
+/FMFONTDEFINE {
+ FrameDict begin
+ findfont
+ ReEncode
+ 1 index exch
+ definefont
+ FMfonts 3 1 roll
+ put
+ end
+ } def
+/FMFILLS {
+ FrameDict begin
+ array /fillvals exch def
+ end
+ } def
+/FMFILL {
+ FrameDict begin
+ fillvals 3 1 roll put
+ end
+ } def
+/FMNORMALIZEGRAPHICS {
+ newpath
+ 0.0 0.0 moveto
+ 1 setlinewidth
+ 0 setlinecap
+ 0 0 0 sethsbcolor
+ 0 setgray
+ } bind def
+ /fx FMLOCAL
+ /fy FMLOCAL
+ /fh FMLOCAL
+ /fw FMLOCAL
+ /llx FMLOCAL
+ /lly FMLOCAL
+ /urx FMLOCAL
+ /ury FMLOCAL
+/FMBEGINEPSF {
+ end
+ /FMEPSF save def
+ /showpage {} def
+ FMNORMALIZEGRAPHICS
+ [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
+ fx fy translate
+ rotate
+ fw urx llx sub div fh ury lly sub div scale
+ llx neg lly neg translate
+ } bind def
+/FMENDEPSF {
+ FMEPSF restore
+ FrameDict begin
+ } bind def
+FrameDict begin
+/setmanualfeed {
+%%BeginFeature *ManualFeed True
+ statusdict /manualfeed true put
+%%EndFeature
+ } def
+/max {2 copy lt {exch} if pop} bind def
+/min {2 copy gt {exch} if pop} bind def
+/inch {72 mul} def
+/pagedimen {
+ paperheight sub abs 16 lt exch
+ paperwidth sub abs 16 lt and
+ {/papername exch def} {pop} ifelse
+ } def
+ /papersizedict FMLOCAL
+/setpapername {
+ /papersizedict 14 dict def
+ papersizedict begin
+ /papername /unknown def
+ /Letter 8.5 inch 11.0 inch pagedimen
+ /LetterSmall 7.68 inch 10.16 inch pagedimen
+ /Tabloid 11.0 inch 17.0 inch pagedimen
+ /Ledger 17.0 inch 11.0 inch pagedimen
+ /Legal 8.5 inch 14.0 inch pagedimen
+ /Statement 5.5 inch 8.5 inch pagedimen
+ /Executive 7.5 inch 10.0 inch pagedimen
+ /A3 11.69 inch 16.5 inch pagedimen
+ /A4 8.26 inch 11.69 inch pagedimen
+ /A4Small 7.47 inch 10.85 inch pagedimen
+ /B4 10.125 inch 14.33 inch pagedimen
+ /B5 7.16 inch 10.125 inch pagedimen
+ end
+ } def
+/papersize {
+ papersizedict begin
+ /Letter {a4tray a4} def
+ /LetterSmall {lettertray lettersmall} def
+ /Tabloid {11x17tray 11x17} def
+ /Ledger {ledgertray ledger} def
+ /Legal {legaltray legal} def
+ /Statement {statementtray statement} def
+ /Executive {executivetray executive} def
+ /A3 {a3tray a3} def
+ /A4 {a4tray a4} def
+ /A4Small {a4tray a4small} def
+ /B4 {b4tray b4} def
+ /B5 {b5tray b5} def
+ /unknown {unknown} def
+ papersizedict dup papername known {papername} {/unknown} ifelse get
+ end
+ /FMdicttop countdictstack 1 add def
+ statusdict begin stopped end
+ countdictstack -1 FMdicttop {pop end} for
+ } def
+/manualpapersize {
+ papersizedict begin
+ /Letter {letter} def
+ /LetterSmall {lettersmall} def
+ /Tabloid {11x17} def
+ /Ledger {ledger} def
+ /Legal {legal} def
+ /Statement {statement} def
+ /Executive {executive} def
+ /A3 {a3} def
+ /A4 {a4} def
+ /A4Small {a4small} def
+ /B4 {b4} def
+ /B5 {b5} def
+ /unknown {unknown} def
+ papersizedict dup papername known {papername} {/unknown} ifelse get
+ end
+ stopped
+ } def
+/desperatepapersize {
+ statusdict /setpageparams known
+ {
+ paperwidth paperheight 0 1
+ statusdict begin
+ {setpageparams} stopped pop
+ end
+ } if
+ } def
+/savematrix {
+ orgmatrix currentmatrix pop
+ } bind def
+/restorematrix {
+ orgmatrix setmatrix
+ } bind def
+/dmatrix matrix def
+/dpi 72 0 dmatrix defaultmatrix dtransform
+ dup mul exch dup mul add sqrt def
+/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
+/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
+/DiacriticEncoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
+/numbersign /dollar /percent /ampersand /quotesingle /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon
+/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
+/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
+/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
+/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
+/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
+/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
+/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
+/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
+/udieresis /dagger /.notdef /cent /sterling /section /bullet
+/paragraph /germandbls /registered /copyright /trademark /acute
+/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
+/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
+/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
+/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
+/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
+/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
+/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
+/periodcentered /quotesinglbase /quotedblbase /perthousand
+/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
+/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
+/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
+/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
+] def
+/ReEncode {
+ dup
+ length
+ dict begin
+ {
+ 1 index /FID ne
+ {def}
+ {pop pop} ifelse
+ } forall
+ 0 eq {/Encoding DiacriticEncoding def} if
+ currentdict
+ end
+ } bind def
+/graymode true def
+ /bwidth FMLOCAL
+ /bpside FMLOCAL
+ /bstring FMLOCAL
+ /onbits FMLOCAL
+ /offbits FMLOCAL
+ /xindex FMLOCAL
+ /yindex FMLOCAL
+ /x FMLOCAL
+ /y FMLOCAL
+/setpattern {
+ /bwidth exch def
+ /bpside exch def
+ /bstring exch def
+ /onbits 0 def /offbits 0 def
+ freq sangle landscape {90 add} if
+ {/y exch def
+ /x exch def
+ /xindex x 1 add 2 div bpside mul cvi def
+ /yindex y 1 add 2 div bpside mul cvi def
+ bstring yindex bwidth mul xindex 8 idiv add get
+ 1 7 xindex 8 mod sub bitshift and 0 ne
+ {/onbits onbits 1 add def 1}
+ {/offbits offbits 1 add def 0}
+ ifelse
+ }
+ setscreen
+ {} settransfer
+ offbits offbits onbits add div FMsetgray
+ /graymode false def
+ } bind def
+/grayness {
+ FMsetgray
+ graymode not {
+ /graymode true def
+ orgxfer cvx settransfer
+ orgfreq organgle orgproc cvx setscreen
+ } if
+ } bind def
+ /HUE FMLOCAL
+ /SAT FMLOCAL
+ /BRIGHT FMLOCAL
+ /Colors FMLOCAL
+FMPrintInColor
+
+ {
+ /HUE 0 def
+ /SAT 0 def
+ /BRIGHT 0 def
+ % array of arrays Hue and Sat values for the separations [HUE BRIGHT]
+ /Colors
+ [[0 0 ] % black
+ [0 0 ] % white
+ [0.00 1.0] % red
+ [0.37 1.0] % green
+ [0.60 1.0] % blue
+ [0.50 1.0] % cyan
+ [0.83 1.0] % magenta
+ [0.16 1.0] % comment / yellow
+ ] def
+
+ /BEGINBITMAPCOLOR {
+ BITMAPCOLOR} def
+ /BEGINBITMAPCOLORc {
+ BITMAPCOLORc} def
+ /BEGINBITMAPTRUECOLOR {
+ BITMAPTRUECOLOR } def
+ /BEGINBITMAPTRUECOLORc {
+ BITMAPTRUECOLORc } def
+ /K {
+ Colors exch get dup
+ 0 get /HUE exch store
+ 1 get /BRIGHT exch store
+ HUE 0 eq BRIGHT 0 eq and
+ {1.0 SAT sub setgray}
+ {HUE SAT BRIGHT sethsbcolor}
+ ifelse
+ } def
+ /FMsetgray {
+ /SAT exch 1.0 exch sub store
+ HUE 0 eq BRIGHT 0 eq and
+ {1.0 SAT sub setgray}
+ {HUE SAT BRIGHT sethsbcolor}
+ ifelse
+ } bind def
+ }
+
+ {
+ /BEGINBITMAPCOLOR {
+ BITMAPGRAY} def
+ /BEGINBITMAPCOLORc {
+ BITMAPGRAYc} def
+ /BEGINBITMAPTRUECOLOR {
+ BITMAPTRUEGRAY } def
+ /BEGINBITMAPTRUECOLORc {
+ BITMAPTRUEGRAYc } def
+ /FMsetgray {setgray} bind def
+ /K {
+ pop
+ } def
+ }
+ifelse
+/normalize {
+ transform round exch round exch itransform
+ } bind def
+/dnormalize {
+ dtransform round exch round exch idtransform
+ } bind def
+/lnormalize {
+ 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
+ } bind def
+/H {
+ lnormalize setlinewidth
+ } bind def
+/Z {
+ setlinecap
+ } bind def
+ /fillvals FMLOCAL
+/X {
+ fillvals exch get
+ dup type /stringtype eq
+ {8 1 setpattern}
+ {grayness}
+ ifelse
+ } bind def
+/V {
+ gsave eofill grestore
+ } bind def
+/N {
+ stroke
+ } bind def
+/M {newpath moveto} bind def
+/E {lineto} bind def
+/D {curveto} bind def
+/O {closepath} bind def
+ /n FMLOCAL
+/L {
+ /n exch def
+ newpath
+ normalize
+ moveto
+ 2 1 n {pop normalize lineto} for
+ } bind def
+/Y {
+ L
+ closepath
+ } bind def
+ /x1 FMLOCAL
+ /x2 FMLOCAL
+ /y1 FMLOCAL
+ /y2 FMLOCAL
+ /rad FMLOCAL
+/R {
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x1 y1
+ x2 y1
+ x2 y2
+ x1 y2
+ 4 Y
+ } bind def
+/RR {
+ /rad exch def
+ normalize
+ /y2 exch def
+ /x2 exch def
+ normalize
+ /y1 exch def
+ /x1 exch def
+ newpath
+ x1 y1 rad add moveto
+ x1 y2 x2 y2 rad arcto
+ x2 y2 x2 y1 rad arcto
+ x2 y1 x1 y1 rad arcto
+ x1 y1 x1 y2 rad arcto
+ closepath
+ 16 {pop} repeat
+ } bind def
+/C {
+ grestore
+ gsave
+ R
+ clip
+ } bind def
+ /FMpointsize FMLOCAL
+/F {
+ FMfonts exch get
+ FMpointsize scalefont
+ setfont
+ } bind def
+/Q {
+ /FMpointsize exch def
+ F
+ } bind def
+/T {
+ moveto show
+ } bind def
+/RF {
+ rotate
+ 0 ne {-1 1 scale} if
+ } bind def
+/TF {
+ gsave
+ moveto
+ RF
+ show
+ grestore
+ } bind def
+/P {
+ moveto
+ 0 32 3 2 roll widthshow
+ } bind def
+/PF {
+ gsave
+ moveto
+ RF
+ 0 32 3 2 roll widthshow
+ grestore
+ } bind def
+/S {
+ moveto
+ 0 exch ashow
+ } bind def
+/SF {
+ gsave
+ moveto
+ RF
+ 0 exch ashow
+ grestore
+ } bind def
+/B {
+ moveto
+ 0 32 4 2 roll 0 exch awidthshow
+ } bind def
+/BF {
+ gsave
+ moveto
+ RF
+ 0 32 4 2 roll 0 exch awidthshow
+ grestore
+ } bind def
+/G {
+ gsave
+ newpath
+ normalize translate 0.0 0.0 moveto
+ dnormalize scale
+ 0.0 0.0 1.0 5 3 roll arc
+ closepath fill
+ grestore
+ } bind def
+/A {
+ gsave
+ savematrix
+ newpath
+ 2 index 2 div add exch 3 index 2 div sub exch
+ normalize 2 index 2 div sub exch 3 index 2 div add exch
+ translate
+ scale
+ 0.0 0.0 1.0 5 3 roll arc
+ restorematrix
+ stroke
+ grestore
+ } bind def
+ /x FMLOCAL
+ /y FMLOCAL
+ /w FMLOCAL
+ /h FMLOCAL
+ /xx FMLOCAL
+ /yy FMLOCAL
+ /ww FMLOCAL
+ /hh FMLOCAL
+ /FMsaveobject FMLOCAL
+ /FMoptop FMLOCAL
+ /FMdicttop FMLOCAL
+/BEGINPRINTCODE {
+ /FMdicttop countdictstack 1 add def
+ /FMoptop count 4 sub def
+ /FMsaveobject save def
+ userdict begin
+ /showpage {} def
+ FMNORMALIZEGRAPHICS
+ 3 index neg 3 index neg translate
+ } bind def
+/ENDPRINTCODE {
+ count -1 FMoptop {pop pop} for
+ countdictstack -1 FMdicttop {pop end} for
+ FMsaveobject restore
+ } bind def
+/gn {
+ 0
+ { 46 mul
+ cf read pop
+ 32 sub
+ dup 46 lt {exit} if
+ 46 sub add
+ } loop
+ add
+ } bind def
+ /str FMLOCAL
+/cfs {
+ /str sl string def
+ 0 1 sl 1 sub {str exch val put} for
+ str def
+ } bind def
+/ic [
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
+ 0
+ {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
+ {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
+ {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
+ {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
+ {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
+ {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
+ {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
+ {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
+ {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
+ ] def
+ /sl FMLOCAL
+ /val FMLOCAL
+ /ws FMLOCAL
+ /im FMLOCAL
+ /bs FMLOCAL
+ /cs FMLOCAL
+ /len FMLOCAL
+ /pos FMLOCAL
+/ms {
+ /sl exch def
+ /val 255 def
+ /ws cfs
+ /im cfs
+ /val 0 def
+ /bs cfs
+ /cs cfs
+ } bind def
+400 ms
+/ip {
+ is
+ 0
+ cf cs readline pop
+ { ic exch get exec
+ add
+ } forall
+ pop
+
+ } bind def
+/wh {
+ /len exch def
+ /pos exch def
+ ws 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/bl {
+ /len exch def
+ /pos exch def
+ bs 0 len getinterval im pos len getinterval copy pop
+ pos len
+ } bind def
+/s1 1 string def
+/fl {
+ /len exch def
+ /pos exch def
+ /val cf s1 readhexstring pop 0 get def
+ pos 1 pos len add 1 sub {im exch val put} for
+ pos len
+ } bind def
+/hx {
+ 3 copy getinterval
+ cf exch readhexstring pop pop
+ } bind def
+ /h FMLOCAL
+ /w FMLOCAL
+ /d FMLOCAL
+ /lb FMLOCAL
+ /bitmapsave FMLOCAL
+ /is FMLOCAL
+ /cf FMLOCAL
+/wbytes {
+ dup
+ 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
+ } bind def
+/BEGINBITMAPBWc {
+ 1 {} COMMONBITMAPc
+ } bind def
+/BEGINBITMAPGRAYc {
+ 8 {} COMMONBITMAPc
+ } bind def
+/BEGINBITMAP2BITc {
+ 2 {} COMMONBITMAPc
+ } bind def
+/COMMONBITMAPc {
+ /r exch def
+ /d exch def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /lb w d wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+ r
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {ip} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BEGINBITMAPBW {
+ 1 {} COMMONBITMAP
+ } bind def
+/BEGINBITMAPGRAY {
+ 8 {} COMMONBITMAP
+ } bind def
+/BEGINBITMAP2BIT {
+ 2 {} COMMONBITMAP
+ } bind def
+/COMMONBITMAP {
+ /r exch def
+ /d exch def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+ r
+ /is w d wbytes string def
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {cf is readhexstring pop} image
+ bitmapsave restore
+ grestore
+ } bind def
+ /proc1 FMLOCAL
+ /proc2 FMLOCAL
+ /newproc FMLOCAL
+/Fmcc {
+ /proc2 exch cvlit def
+ /proc1 exch cvlit def
+ /newproc proc1 length proc2 length add array def
+ newproc 0 proc1 putinterval
+ newproc proc1 length proc2 putinterval
+ newproc cvx
+} bind def
+/ngrayt 256 array def
+/nredt 256 array def
+/nbluet 256 array def
+/ngreent 256 array def
+ /gryt FMLOCAL
+ /blut FMLOCAL
+ /grnt FMLOCAL
+ /redt FMLOCAL
+ /indx FMLOCAL
+ /cynu FMLOCAL
+ /magu FMLOCAL
+ /yelu FMLOCAL
+ /k FMLOCAL
+ /u FMLOCAL
+/colorsetup {
+ currentcolortransfer
+ /gryt exch def
+ /blut exch def
+ /grnt exch def
+ /redt exch def
+ 0 1 255 {
+ /indx exch def
+ /cynu 1 red indx get 255 div sub def
+ /magu 1 green indx get 255 div sub def
+ /yelu 1 blue indx get 255 div sub def
+ /k cynu magu min yelu min def
+ /u k currentundercolorremoval exec def
+ nredt indx 1 0 cynu u sub max sub redt exec put
+ ngreent indx 1 0 magu u sub max sub grnt exec put
+ nbluet indx 1 0 yelu u sub max sub blut exec put
+ ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
+ } for
+ {255 mul cvi nredt exch get}
+ {255 mul cvi ngreent exch get}
+ {255 mul cvi nbluet exch get}
+ {255 mul cvi ngrayt exch get}
+ setcolortransfer
+ {pop 0} setundercolorremoval
+ {} setblackgeneration
+ } bind def
+ /tran FMLOCAL
+/fakecolorsetup {
+ /tran 256 string def
+ 0 1 255 {/indx exch def
+ tran indx
+ red indx get 77 mul
+ green indx get 151 mul
+ blue indx get 28 mul
+ add add 256 idiv put} for
+ currenttransfer
+ {255 mul cvi tran exch get 255.0 div}
+ exch Fmcc settransfer
+} bind def
+/BITMAPCOLOR {
+ /d 8 def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+ colorsetup
+ /is w d wbytes string def
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {cf is readhexstring pop} {is} {is} true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPCOLORc {
+ /d 8 def
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /lb w d wbytes def
+ sl lb lt {lb ms} if
+ /bitmapsave save def
+ colorsetup
+ /is im 0 lb getinterval def
+ ws 0 lb getinterval is copy pop
+ /cf currentfile def
+ w h d [w 0 0 h neg 0 h]
+ {ip} {is} {is} true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPTRUECOLORc {
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+
+ /is w string def
+
+ ws 0 w getinterval is copy pop
+ /cf currentfile def
+ w h 8 [w 0 0 h neg 0 h]
+ {ip} {gip} {bip} true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPTRUECOLOR {
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+ /is w string def
+ /gis w string def
+ /bis w string def
+ /cf currentfile def
+ w h 8 [w 0 0 h neg 0 h]
+ { cf is readhexstring pop }
+ { cf gis readhexstring pop }
+ { cf bis readhexstring pop }
+ true 3 colorimage
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPTRUEGRAYc {
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+
+ /is w string def
+
+ ws 0 w getinterval is copy pop
+ /cf currentfile def
+ w h 8 [w 0 0 h neg 0 h]
+ {ip gip bip w gray} image
+ bitmapsave restore
+ grestore
+ } bind def
+/ww FMLOCAL
+/r FMLOCAL
+/g FMLOCAL
+/b FMLOCAL
+/i FMLOCAL
+/gray {
+ /ww exch def
+ /b exch def
+ /g exch def
+ /r exch def
+ 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
+ b i get .114 mul add add r i 3 -1 roll floor cvi put } for
+ r
+ } bind def
+/BITMAPTRUEGRAY {
+ gsave
+ translate rotate scale /h exch def /w exch def
+ /bitmapsave save def
+ /is w string def
+ /gis w string def
+ /bis w string def
+ /cf currentfile def
+ w h 8 [w 0 0 h neg 0 h]
+ { cf is readhexstring pop
+ cf gis readhexstring pop
+ cf bis readhexstring pop w gray} image
+ bitmapsave restore
+ grestore
+ } bind def
+/BITMAPGRAY {
+ 8 {fakecolorsetup} COMMONBITMAP
+ } bind def
+/BITMAPGRAYc {
+ 8 {fakecolorsetup} COMMONBITMAPc
+ } bind def
+/ENDBITMAP {
+ } bind def
+end
+ /ALDsave FMLOCAL
+ /ALDmatrix matrix def ALDmatrix currentmatrix pop
+/StartALD {
+ /ALDsave save def
+ savematrix
+ ALDmatrix setmatrix
+ } bind def
+/InALD {
+ restorematrix
+ } bind def
+/DoneALD {
+ ALDsave restore
+ } bind def
+%%EndProlog
+%%BeginSetup
+(3.0) FMVERSION
+1 1 612 792 0 1 15 FMDOCUMENT
+0 0 /Times-Bold FMFONTDEFINE
+1 0 /Times-Roman FMFONTDEFINE
+2 0 /Helvetica FMFONTDEFINE
+3 0 /Courier FMFONTDEFINE
+4 0 /Times-Italic FMFONTDEFINE
+32 FMFILLS
+0 0 FMFILL
+1 0.1 FMFILL
+2 0.3 FMFILL
+3 0.5 FMFILL
+4 0.7 FMFILL
+5 0.9 FMFILL
+6 0.97 FMFILL
+7 1 FMFILL
+8 <0f1e3c78f0e1c387> FMFILL
+9 <0f87c3e1f0783c1e> FMFILL
+10 <cccccccccccccccc> FMFILL
+11 <ffff0000ffff0000> FMFILL
+12 <8142241818244281> FMFILL
+13 <03060c183060c081> FMFILL
+14 <8040201008040201> FMFILL
+16 1 FMFILL
+17 0.9 FMFILL
+18 0.7 FMFILL
+19 0.5 FMFILL
+20 0.3 FMFILL
+21 0.1 FMFILL
+22 0.03 FMFILL
+23 0 FMFILL
+24 <f0e1c3870f1e3c78> FMFILL
+25 <f0783c1e0f87c3e1> FMFILL
+26 <3333333333333333> FMFILL
+27 <0000ffff0000ffff> FMFILL
+28 <7ebddbe7e7dbbd7e> FMFILL
+29 <fcf9f3e7cf9f3f7e> FMFILL
+30 <7fbfdfeff7fbfdfe> FMFILL
+%%EndSetup
+%%Page: "1" 1
+%%BeginPaperSize: Letter
+%%EndPaperSize
+612 792 0 FMBEGINPAGE
+0 36 Q
+0 X
+0 K
+(XPM Manual) 200.51 534 T
+1 18 Q
+(The) 223.31 468 T
+0 F
+(X) 255.78 468 T
+(P) 273.27 468 T
+1 F
+(ix) 284.26 468 T
+0 F
+(M) 298.26 468 T
+1 F
+(ap Format) 315.24 468 T
+1 14 Q
+(Version: 3.3) 271.41 375.97 T
+(December 20) 249.66 343.97 T
+1 8 Q
+(th) 324.64 347.97 T
+1 14 Q
+( 1993) 330.86 343.97 T
+2 F
+(Arnaud Le Hors) 257.01 253.27 T
+3 12 Q
+(lehors@sophia.inria.fr) 226.84 238.6 T
+1 10 Q
+(\251 BULL 1990-93) 270 139.23 T
+FMENDPAGE
+%%EndPage: "1" 2
+%%Page: "2" 2
+612 792 0 FMBEGINPAGE
+0 18 Q
+0 X
+0 K
+(Copyright restrictions) 72 681 T
+1 10 Q
+(Copyright 1990-93 GROUPE BULL) 72 652.33 T
+2 F
+0.68 (Permission to use, copy, modify, and distribute this software and its documentation for any purpose and) 72 628.33 P
+0.41 (without fee is hereby granted, provided that the above copyright notice appear in all copies and that both) 72 616.33 P
+0.05 (that copyright notice and this permission notice appear in supporting documentation, and that the name of) 72 604.33 P
+-0.26 (GROUPE BULL not be used in advertising or publicity pertaining to distribution of the software without spe-) 72 592.33 P
+0.54 (cific, written prior permission. GROUPE BULL makes no representations about the suitability of this soft-) 72 580.33 P
+(ware for any purpose. It is provided) 72 568.33 T
+1 F
+(\322) 230.87 568.33 T
+2 F
+(as is) 235.31 568.33 T
+1 F
+(\323) 255.86 568.33 T
+2 F
+(without express or implied warranty.) 262.8 568.33 T
+1 F
+0.26 (GROUPE BULL disclaims all warranties with regard to this software, including all implied warranties of merchant-) 72 544.33 P
+0.28 (ability and fitness, in no event shall GROUPE BULL be liable for any special, indirect or consequential damages or) 72 532.33 P
+-0.58 (any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other) 72 520.33 P
+(tortious action, arising out of or in connection with the use or performance of this software.) 72 508.33 T
+0 18 Q
+(Acknowledgements) 72 479 T
+1 10 Q
+-0.53 (I want to thank my team partner and friend Colas Nahaboo who proposed me this project, and who actively participates) 72 450.33 P
+-0.34 (to its design. I also want to thank all the users who help me to improve the library by giving feed back and sending bug) 72 438.33 P
+(reports.) 72 426.33 T
+1 14 Q
+(Arnaud Le Hors) 449.08 405.67 T
+1 10 Q
+(KOALA Project \320 BULL Research c/o INRIA) 354.03 392.33 T
+(2004 route des Lucioles \320 06565 Valbonne Cedex \320 FRANCE) 290.44 380.33 T
+0 18 Q
+(Support) 72 351 T
+1 10 Q
+1.06 (You can mail any question or suggestion relative to) 72 322.33 P
+0 F
+1.06 (XPM) 290.05 322.33 P
+1 F
+1.06 ( by electronic mail to) 312.81 322.33 P
+3 F
+2.55 (lehors@sophia.inria.fr) 405.57 322.33 P
+1 F
+1.06 (.) 537.5 322.33 P
+-0.05 (There is also a mailing list, please mail requests to) 72 310.33 P
+3 F
+-0.12 (xpm-talk-request@sophia.inria.fr) 275.53 310.33 P
+1 F
+-0.05 ( to subscribe. You) 467.42 310.33 P
+0.2 (can find the latest release by anonymous ftp on avahi.inria.fr \050138.96.24.30\051 or export.lcs.mit.edu \05018.30.0.238\051, and) 72 298.33 P
+(also an archive of the mailing list on avahi.) 72 286.33 T
+FMENDPAGE
+%%EndPage: "2" 3
+%%Page: "3" 3
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+225 639 396 657 R
+7 X
+V
+1 18 Q
+0 X
+(Table of Contents) 246.04 645 T
+540 72 72 72 2 L
+N
+1 12 Q
+(Chapter 1:) 72 568 T
+(Introduction) 135 568 T
+(.........................................................................................................) 197.89 568 T
+(5) 525 568 T
+(Chapter 2:) 72 544 T
+(The XPM Format) 135 544 T
+(................................................................................................) 224.88 544 T
+(6) 525 544 T
+(Chapter 3:) 72 520 T
+(The XPM Library) 135 520 T
+(................................................................................................) 224.88 520 T
+(9) 525 520 T
+(3.1 The Basic Level Interface) 108 498 T
+(.....................................................................................) 257.86 498 T
+(9) 525 498 T
+(3.1.1 The structures) 144 480 T
+(.........................................................................................) 245.87 480 T
+(9) 525 480 T
+(3.1.2 Functions to deal with XPM files) 144 466 T
+(..........................................................) 338.81 466 T
+(11) 519.01 466 T
+(3.1.3 Functions to deal with XPM data) 144 452 T
+(..........................................................) 338.81 452 T
+(14) 519.01 452 T
+(3.1.4 Functions to deal with XPM files and data) 144 438 T
+(............................................) 380.79 438 T
+(16) 519.01 438 T
+(3.1.5 Functions to deal with XPM buffers) 144 424 T
+(......................................................) 350.81 424 T
+(16) 519.01 424 T
+(3.1.6 Functions to deal with XPM files and buffers) 144 410 T
+(.......................................) 395.78 410 T
+(18) 519.01 410 T
+(3.1.7 Miscellaneous functions) 144 396 T
+(........................................................................) 296.84 396 T
+(19) 519.01 396 T
+(3.2 The Advanced Level Interface) 108 374 T
+(..............................................................................) 278.85 374 T
+(20) 519.01 374 T
+(3.2.1 The structures) 144 356 T
+(.........................................................................................) 245.87 356 T
+(21) 519.01 356 T
+(3.2.2 Functions to deal with XPM files) 144 342 T
+(..........................................................) 338.81 342 T
+(22) 519.01 342 T
+(3.2.3 Functions to deal with XPM data) 144 328 T
+(..........................................................) 338.81 328 T
+(23) 519.01 328 T
+(3.2.4 Functions to deal with XPM buffers) 144 314 T
+(......................................................) 350.81 314 T
+(23) 519.01 314 T
+(3.2.5 Functions to deal with X images) 144 300 T
+(............................................................) 332.82 300 T
+(24) 519.01 300 T
+(3.2.6 Functions to deal with X pixmaps) 144 286 T
+(.........................................................) 341.81 286 T
+(25) 519.01 286 T
+(3.2.7 Miscellaneous functions) 144 272 T
+(........................................................................) 296.84 272 T
+(26) 519.01 272 T
+FMENDPAGE
+%%EndPage: "3" 4
+%%Page: "5" 4
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(5) 303.11 54.85 T
+0 18 Q
+(Chapter 1) 267.28 680.84 T
+(Introduction) 257.02 644.84 T
+1 10 Q
+0.52 (First, Why another image format? We \050Koala team at Bull Research, France\051 felt that most images bundled with X) 72 586.18 P
+0.57 (applications will be small "icons", and that since many applications are color-customizable, existing image formats) 72 574.18 P
+-0.18 (such as gif, tiff, iff, etc... were intended for big images with well-defined colors and so weren\325t adapted to the task. So) 72 562.18 P
+0 F
+(XPM) 72 550.18 T
+1 F
+( was designed with these criterions in mind:) 94.76 550.18 T
+(\245) 72 532.18 T
+(be editable by hand \050under emacs, vi...\051. Although this sounds pretty weird today.) 86.4 532.18 T
+(\245) 72 514.18 T
+(be includable in C code. It is unreasonable to load 1000 pixmap files on each start of an application.) 86.4 514.18 T
+(\245) 72 496.18 T
+(be a portable, mailable ascii format.) 86.4 496.18 T
+(\245) 72 478.18 T
+(provide defaults for monochrome/color/grayscale renderings.) 86.4 478.18 T
+(\245) 72 460.18 T
+-0.01 (provide overriding of colors. This way if the user wants your application to be bluish instead of greenish, you can) 86.4 460.18 P
+(use the SAME icon files.) 86.4 448.18 T
+(\245) 72 430.18 T
+(allow comments to be included in the file.) 86.4 430.18 T
+(\245) 72 412.18 T
+(compression must be managed apart of the format.) 86.4 412.18 T
+FMENDPAGE
+%%EndPage: "5" 5
+%%Page: "6" 5
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(6) 303 56.01 T
+0 18 Q
+(Chapter 2) 267.28 681 T
+(The XPM Format) 237.05 645 T
+1 10 Q
+0.02 (The) 72 586.33 P
+0 F
+0.02 (XPM) 90.06 586.33 P
+1 F
+0.02 ( format presents a C syntax, in order to provide the ability to include) 112.81 586.33 P
+0 F
+0.02 (XPM) 389.26 586.33 P
+1 F
+0.02 ( files in C and C++ programs. It) 412.01 586.33 P
+(is in fact an array of strings composed of six different sections as follows:) 72 574.33 T
+(/* XPM */ static char*) 129.6 556.33 T
+3 F
+(<variable_name>) 222.6 556.33 T
+1 F
+([] = {) 312.55 556.33 T
+(<Values>) 129.6 538.33 T
+(<Colors>) 129.6 520.33 T
+(<Pixels>) 129.6 502.33 T
+(<Extensions>) 129.6 484.33 T
+(};) 129.6 466.33 T
+(The words are separated by a white space which can be composed of space and tabulation characters.) 72 442.33 T
+-0.15 (The) 72 418.33 P
+3 F
+-0.36 (<Values>) 89.89 418.33 P
+1 F
+-0.15 ( section is a string containing four or six integers in base 10 that correspond to: the pixmap width and) 137.86 418.33 P
+0.46 (height, the number of colors, the number of characters per pixel \050so there is no limit on the number of colors\051, and,) 72 406.33 P
+(optionally the hotspot coordinates and the) 72 394.33 T
+0 F
+(XPMEXT) 241.9 394.33 T
+1 F
+( tag if there is any extension following the) 285.2 394.33 T
+3 F
+(<Pixels>) 456.48 394.33 T
+1 F
+( section.) 504.45 394.33 T
+3 F
+(<width> <height> <ncolors> <cpp> [<x_hotspot> <y_hotspot>] [XPMEXT]) 72 370.33 T
+1 F
+(The) 72 346.33 T
+3 F
+(Colors) 90.04 346.33 T
+1 F
+( section contains as many strings as there are colors, and each string is as follows:) 126.02 346.33 T
+3 F
+(<chars> {<key> <color>}+) 72 322.33 T
+1 F
+0.07 (Where) 72 298.33 P
+3 F
+0.18 (<chars>) 101.21 298.33 P
+1 F
+0.07 ( is the) 143.18 298.33 P
+3 F
+0.18 (<chars_per_pixel>) 169.78 298.33 P
+1 F
+0.07 ( length string \050not surrounded by anything\051 representing the pixels,) 271.73 298.33 P
+3 F
+-0.43 (<color>) 72 286.33 P
+1 F
+-0.18 ( is the specified color, and) 113.98 286.33 P
+3 F
+-0.43 (<key>) 220.32 286.33 P
+1 F
+-0.18 ( is a keyword describing in which context this color should be used. Cur-) 250.3 286.33 P
+(rently the keys may have the following values:) 72 274.33 T
+( m) 144 256.33 T
+(for mono visual) 216 256.33 T
+( s) 144 240.33 T
+( for symbolic name) 216 240.33 T
+( g4) 144 224.33 T
+( for 4-level grayscale) 216 224.33 T
+( g) 144 208.33 T
+( for grayscale with more than 4 levels) 216 208.33 T
+( c) 144 192.33 T
+( for color visual) 216 192.33 T
+0.14 (Colors can be specified by giving the colorname, a # followed by the RGB code in hexadecimal, or a % followed by) 72 168.33 P
+-0.35 (the HSV code \050not implemented\051. The symbolic name provides the ability of specifying the colors at load time and not) 72 156.33 P
+0.05 (to hard-code them in the file. Also the string) 72 144.33 P
+0 F
+0.05 (None) 252.29 144.33 P
+1 F
+0.05 ( can be given as a colorname to mean \322transparent\323. Transparency) 274.5 144.33 P
+(is handled by providing a masking bitmap in addition to the pixmap.) 72 132.33 T
+1.18 (The) 72 108.33 P
+3 F
+2.82 (<Pixels>) 91.22 108.33 P
+1 F
+1.18 ( section is composed by) 139.19 108.33 P
+3 F
+2.82 (<height>) 243.07 108.33 P
+1 F
+1.18 ( strings of) 291.04 108.33 P
+3 F
+2.82 (<width>) 337.05 108.33 P
+1 F
+1.18 ( *) 379.03 108.33 P
+3 F
+2.82 (<chars_per_pixel>) 391.37 108.33 P
+1 F
+1.18 ( characters,) 493.32 108.33 P
+FMENDPAGE
+%%EndPage: "6" 6
+%%Page: "7" 6
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(7) 303.11 54.85 T
+1 10 Q
+0.2 (where every) 72 686.18 P
+3 F
+0.48 (<chars_per_pixel>) 124.01 686.18 P
+1 F
+0.2 ( length string must be one of the previously defined groups in the) 225.96 686.18 P
+3 F
+0.48 (<Colors>) 492.03 686.18 P
+1 F
+(section.) 72 674.18 T
+0.18 (Then follows the) 72 650.18 P
+3 F
+0.43 (<Extensions>) 142.76 650.18 P
+1 F
+0.18 ( section which must be labeled, if not empty, in the) 214.72 650.18 P
+3 F
+0.43 (<Values>) 423.49 650.18 P
+1 F
+0.18 ( section as previ-) 471.46 650.18 P
+(ously described. This section may be composed by several) 72 638.18 T
+3 F
+(<Extension>) 308.5 638.18 T
+1 F
+( subsections which may be of two types:) 374.46 638.18 T
+(\245) 72 620.18 T
+(one stand alone string composed as follows:) 86.4 620.18 T
+3 F
+(XPMEXT <extension-name> <extension-data>) 86.4 604.18 T
+1 F
+(\245) 72 586.18 T
+(or a block composed by several strings:) 86.4 586.18 T
+3 F
+(XPMEXT <extension-name>) 86.4 570.18 T
+(<related extension-data composed of several strings>) 86.4 554.18 T
+1 F
+(Finally, if not empty, this section must end by the following string:) 72 530.18 T
+3 F
+(XPMENDEXT) 72 506.18 T
+1 F
+-0.28 (To avoid possible conflicts with extension names in shared files, they should be prefixed by the name of the company.) 72 482.18 P
+(This would ensure unicity.) 72 470.18 T
+FMENDPAGE
+%%EndPage: "7" 7
+%%Page: "8" 7
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(8) 303 56.01 T
+1 10 Q
+-0.11 (Below is an example which is the XPM file of a plaid pixmap. This is a 22x22 pixmap, with 4 colors and 2 characters) 72 686.33 P
+-0.12 (per pixel. The hotspot coordinates are \0500, 0\051. There are symbols and default colors for color and monochrome visuals.) 72 674.33 P
+(Finally there are two extensions.) 72 662.33 T
+3 F
+(/* XPM */) 72 620.33 T
+(static char * plaid[] = {) 72 608.33 T
+(/* plaid pixmap) 72 596.33 T
+( * width height ncolors chars_per_pixel */) 72 584.33 T
+("22 22 4 2 0 0 XPMEXT",) 72 572.33 T
+(/* colors */) 72 560.33 T
+(" c red) 72 548.33 T
+( m white s light_color ",) 131.97 548.33 T
+("Y c green) 72 536.33 T
+( m black s lines_in_mix ",) 137.96 536.33 T
+("+ c yellow) 72 524.33 T
+( m white s lines_in_dark ",) 143.96 524.33 T
+("x) 72 512.33 T
+( m black s dark_color ",) 144 512.33 T
+(/* pixels */) 72 500.33 T
+("x x x x x x x x x x x x + x x x x x ",) 72 488.33 T
+(" x x x x x x x x x x x x x x x x ",) 72 476.33 T
+("x x x x x x x x x x x x + x x x x x ",) 72 464.33 T
+(" x x x x x x x x x x x x x x x x ",) 72 452.33 T
+("x x x x x x x x x x x x + x x x x x ",) 72 440.33 T
+("Y Y Y Y Y x Y Y Y Y Y + x + x + x + x + x + ",) 72 428.33 T
+("x x x x x x x x x x x x + x x x x x ",) 72 416.33 T
+(" x x x x x x x x x x x x x x x x ",) 72 404.33 T
+("x x x x x x x x x x x x + x x x x x ",) 72 392.33 T
+(" x x x x x x x x x x x x x x x x ",) 72 380.33 T
+("x x x x x x x x x x x x + x x x x x ",) 72 368.33 T
+(" x x x x Y x x x ",) 72 356.33 T
+(" x x x Y x x ",) 72 344.33 T
+(" x x x x Y x x x ",) 72 332.33 T
+(" x x x Y x x ",) 72 320.33 T
+(" x x x x Y x x x ",) 72 308.33 T
+("x x x x x x x x x x x x x x x x x x x x x x ",) 72 296.33 T
+(" x x x x Y x x x ",) 72 284.33 T
+(" x x x Y x x ",) 72 272.33 T
+(" x x x x Y x x x ",) 72 260.33 T
+(" x x x Y x x ",) 72 248.33 T
+(" x x x x Y x x x ") 72 236.33 T
+("XPMEXT ext1 data1",) 72 224.33 T
+("XPMEXT ext2",) 72 212.33 T
+("data2_1",) 72 200.33 T
+("data2_2",) 72 188.33 T
+("XPMENDEXT") 72 176.33 T
+(};) 72 164.33 T
+FMENDPAGE
+%%EndPage: "8" 8
+%%Page: "9" 8
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(9) 303.11 54.85 T
+0 18 Q
+(Chapter 3) 267.28 680.84 T
+(The XPM Library) 235.54 644.84 T
+1 10 Q
+-0.33 (The XPM library basically provides two sets of Xlib-level functions in the C language. Most people should only know) 72 586.18 P
+0.25 (about the first one since it provides what most likely one need with a simple interface. The second set, which stands) 72 574.18 P
+0.43 (as a lower level called from the first one, is designed to be used from within applications which have more specific) 72 562.18 P
+(needs such as a pixmap editor or applications which needs to cache data such as Xpm files.) 72 550.18 T
+0 14 Q
+(3.1) 72 495.51 T
+(The Basic Level Interface) 100.8 495.51 T
+1 10 Q
+0.06 (The basic level interface allows to deal with XImage, Pixmap, XPM file, data \050included XPM file\051, buffer \050XPM file) 72 470.18 P
+(in memory\051, and in many ways.) 72 458.18 T
+(The following subsections describe these functions and how to use them.) 72 434.18 T
+0 12 Q
+(3.1.1) 72 390.84 T
+(The structures) 108 390.84 T
+1 10 Q
+-0.22 (To provide a simple interface all the functions take, in addition to their main arguments such as a filename, a structure) 72 366.18 P
+-0.43 (called) 72 354.18 P
+0 F
+-0.43 (XpmAttributes) 97.94 354.18 P
+1 F
+-0.43 (. This structure is composed of attributes to pass data such as colormap and visual and attributes) 162.9 354.18 P
+(to retrieve returned data such as pixmap\325s width and height. The) 72 342.18 T
+0 F
+(XpmAttributes) 331.81 342.18 T
+1 F
+( structure is defined as follows:) 396.76 342.18 T
+(typedef struct {) 72 324.18 T
+(unsigned long valuemask;) 144 308.18 T
+(/* Specifies which attributes are defined */) 288 308.18 T
+(Visual *visual;) 144 292.18 T
+(/* Specifies the visual to use */) 288 292.18 T
+(Colormap colormap;) 144 276.18 T
+(/* Specifies the colormap to use */) 288 276.18 T
+(unsigned int depth;) 144 260.18 T
+(/* Specifies the depth */) 288 260.18 T
+(unsigned int width;) 144 244.18 T
+(/* Returns the width of the created pixmap */) 288 244.18 T
+(unsigned int height;) 144 228.18 T
+(/* Returns the height of the created pixmap */) 288 228.18 T
+(unsigned int x_hotspot;) 144 212.18 T
+(/* Returns the x hotspot\325s coordinate */) 288 212.18 T
+(unsigned int y_hotspot;) 144 196.18 T
+(/* Returns the y hotspot\325s coordinate */) 288 196.18 T
+(unsigned int cpp;) 144 180.18 T
+(/* Specifies the number of char per pixel */) 288 180.18 T
+(Pixel *pixels;) 144 164.18 T
+(/* List of used color pixels */) 288 164.18 T
+(unsigned int npixels;) 144 148.18 T
+(/* Number of pixels */) 288 148.18 T
+(XpmColorSymbol *colorsymbols;) 144 132.18 T
+(/* Array of color symbols to override */) 288 132.18 T
+(unsigned int numsymbols;) 144 116.18 T
+(/* Number of symbols */) 288 116.18 T
+FMENDPAGE
+%%EndPage: "9" 9
+%%Page: "10" 9
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(10) 300 56.01 T
+1 10 Q
+(char *rgb_fname;) 144 686.33 T
+(/* RGB text file name */) 288 686.33 T
+(unsigned int nextensions;) 144 670.33 T
+(/* Number of extensions */) 288 670.33 T
+(XpmExtension *extensions;) 144 654.33 T
+(/* Array of extensions */) 288 654.33 T
+( /* Color Allocation Directives */) 72 638.33 T
+(unsigned int exactColors;) 144 622.33 T
+(/* Only use exact colors for visual */) 288 622.33 T
+(unsigned int closeness;) 144 606.33 T
+(/* Allowable RGB deviation */) 288 606.33 T
+(unsigned int red_closeness;) 144 590.33 T
+(/* Allowable red deviation */) 288 590.33 T
+(unsigned int green_closeness;) 144 574.33 T
+(/* Allowable green deviation */) 288 574.33 T
+(unsigned int blue_closeness;) 144 558.33 T
+(/* Allowable blue deviation */) 288 558.33 T
+(int color_key;) 144 542.33 T
+(/* Use colors from this color set */) 288 542.33 T
+(} XpmAttributes;) 72 526.33 T
+0.03 (The valuemask is the bitwise inclusive OR of the valid attribute mask bits. If the valuemask is zero, the attributes are) 72 502.33 P
+-0.41 (ignored and not referenced. And default values are taken for needed attributes which are not specified. This valuemask) 72 490.33 P
+0.01 (had to be part of the structure to let) 72 478.33 P
+0 F
+0.01 (Xpm) 215.06 478.33 P
+1 F
+0.01 ( functions modify its value when returning possible data such as hotspot co-) 236.16 478.33 P
+(ordinates.) 72 466.33 T
+0 F
+0.19 (NOTE) 72 442.33 P
+1 F
+0.19 (: In any case this valuemask must be set to some valid value, at least zero, otherwise unpredictable errors can) 100.32 442.33 P
+(occur.) 72 430.33 T
+(To allow overriding of colors at load time the) 72 398.33 T
+0 F
+(XPM) 256.6 398.33 T
+1 F
+( library defines the) 279.36 398.33 T
+0 F
+(XpmColorSymbol) 357.07 398.33 T
+1 F
+( structure which contains:) 434.81 398.33 T
+(typedef struct {) 72 380.33 T
+( char *name;) 144 364.33 T
+(/* Symbolic color name */) 288 364.33 T
+( char *value;) 144 348.33 T
+(/* Color value */) 288 348.33 T
+( Pixel pixel;) 144 332.33 T
+(/* Color pixel */) 288 332.33 T
+(} XpmColorSymbol;) 72 316.33 T
+0 (So, to override default colors at load time, you just have to pass, via the) 72 292.33 P
+0 F
+0 (XpmAttributes) 360.68 292.33 P
+1 F
+0 ( structure, a list of) 425.64 292.33 P
+0 F
+0 (XpmCol-) 500.58 292.33 P
+-0.11 (orSymbol) 72 280.33 P
+1 F
+-0.11 ( elements containing the desired colors to the) 113.65 280.33 P
+0 F
+-0.11 (XpmReadFileToPixmap) 295.95 280.33 P
+1 F
+-0.11 ( or) 399.78 280.33 P
+0 F
+-0.11 (XpmCreatePixmapFromData) 412.88 280.33 P
+-0.15 (XPM) 72 268.33 P
+1 F
+-0.15 ( functions. These colors can be specified by giving the color name in the value member or directly by giving the) 94.76 268.33 P
+-0.4 (corresponding pixel in the pixel member. In the latter case the value member must be set to) 72 256.33 P
+0 F
+-0.4 (NULL) 432.67 256.33 P
+1 F
+-0.4 ( otherwise the given) 460.43 256.33 P
+(pixel will not be considered.) 72 244.33 T
+-0.28 (In addition, it is possible to set the pixel for a specific color) 72 220.33 P
+0 F
+-0.28 (value) 308.22 220.33 P
+1 F
+-0.28 (at load time by setting the color name to NULL, and) 333.21 220.33 P
+0.32 (setting the value and pixel fields appropriately. For example, by setting the color name to NULL, the value to \322red\323) 72 208.33 P
+0.07 (and the pixel to 51, all symbolic colors that are assigned to \322red\323 will be set to pixel 51. It is even possible to specify) 72 196.33 P
+(the pixel used for the transparent color \322none\323 when no mask is required.) 72 184.33 T
+(To pass and retrieve extension data use the) 72 160.33 T
+0 F
+(XpmExtension) 245.76 160.33 T
+1 F
+( structure which is defined below:) 309.06 160.33 T
+(typedef struct {) 72 142.33 T
+( char *name;) 144 126.33 T
+(/* name of the extension */) 288 126.33 T
+( unsigned int nlines;) 144 110.33 T
+(/* number of lines in this extension */) 288 110.33 T
+FMENDPAGE
+%%EndPage: "10" 10
+%%Page: "11" 10
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(1) 300.45 54.85 T
+(1) 305.78 54.85 T
+1 10 Q
+( char **lines;) 144 686.18 T
+(/* pointer to the extension array of strings */) 288 686.18 T
+(} XpmExtension;) 72 670.18 T
+-0.14 (To retrieve possible extension data stored in an) 72 646.18 P
+0 F
+-0.14 (XPM) 261.85 646.18 P
+1 F
+-0.14 ( file or data, you must set the mask bits) 284.61 646.18 P
+0 F
+-0.14 (XpmReturnExtensions) 442.27 646.18 P
+1 F
+0.18 (to the valuemask of an) 72 634.18 P
+0 F
+0.18 (XpmAttributes) 165.87 634.18 P
+1 F
+0.18 ( structure that you pass to the read function you use. Then the same structure) 230.82 634.18 P
+(may be passed the same way to any write function if you set the mask bits) 72 622.18 T
+0 F
+(XpmExtensions) 370.69 622.18 T
+1 F
+( to the valuemask.) 437.88 622.18 T
+0 12 Q
+(3.1.2) 72 578.84 T
+(Functions to deal with XPM files) 108 578.84 T
+1 10 Q
+(To create an) 72 558.18 T
+0 F
+(XImage) 123.89 558.18 T
+1 F
+( from an) 157.75 558.18 T
+0 F
+(XPM) 194.11 558.18 T
+1 F
+( file, use) 216.87 558.18 T
+0 F
+(XpmReadFileToImage) 253.51 558.18 T
+1 F
+(.) 351.23 558.18 T
+(int XpmReadFileToImage\050) 72 540.18 T
+4 F
+(display, filename, image_return, shapeimage_return, attributes) 180.54 540.18 T
+1 F
+(\051) 434.28 540.18 T
+(Display) 108 528.18 T
+4 F
+(*display;) 141.59 528.18 T
+1 F
+(char) 108 516.18 T
+4 F
+(*filename;) 127.7 516.18 T
+1 F
+(XImage) 108 504.18 T
+4 F
+(**image_return;) 142.69 504.18 T
+1 F
+(XImage) 108 492.18 T
+4 F
+(**shapeimage_return;) 142.69 492.18 T
+1 F
+(XpmAttributes) 108 480.18 T
+4 F
+(*attributes;) 170.47 480.18 T
+(display) 72 464.18 T
+1 F
+(Specifies the connection to the X server.) 171 464.18 T
+4 F
+(filename) 72 448.18 T
+1 F
+(Specifies the file name to use.) 171 448.18 T
+4 F
+(image_return) 72 432.18 T
+1 F
+(Returns the image which is created.) 171 432.18 T
+4 F
+(shapeimage_return) 72 416.18 T
+1 F
+(Returns the shape mask image which is created if the color None is used.) 171 416.18 T
+4 F
+(attributes) 72 400.18 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL\051.) 171 400.18 T
+0.47 (The) 72 376.18 P
+0 F
+0.47 (XpmReadFileToImage) 90.51 376.18 P
+1 F
+0.47 ( function reads in a file in the) 188.22 376.18 P
+0 F
+0.47 (XPM) 311.88 376.18 P
+1 F
+0.47 ( format. If the file cannot be opened it returns) 334.64 376.18 P
+0 F
+0.47 (Xp-) 523.9 376.18 P
+0.17 (mOpenFailed) 72 364.18 P
+1 F
+0.17 (. If the file can be opened but does not contain valid) 130.31 364.18 P
+0 F
+0.17 (XPM) 342.45 364.18 P
+1 F
+0.17 (data, it returns) 367.87 364.18 P
+0 F
+0.17 (XpmFileInvalid) 428.33 364.18 P
+1 F
+0.17 (. If insuffi-) 496.09 364.18 P
+(cient working storage is allocated, it returns) 72 352.18 T
+0 F
+(XpmNoMemory) 249.65 352.18 T
+1 F
+(.) 319.59 352.18 T
+1.21 (If the passed) 72 328.18 P
+0 F
+1.21 (XpmAttributes) 128.63 328.18 P
+1 F
+1.21 ( structure pointer is not) 193.59 328.18 P
+0 F
+1.21 (NULL) 294.84 328.18 P
+1 F
+1.21 (,) 322.61 328.18 P
+0 F
+1.21 (XpmReadFileToImage) 328.81 328.18 P
+1 F
+1.21 ( looks for the following at-) 426.53 328.18 P
+0.11 (tributes:) 72 316.18 P
+0 F
+0.11 (XpmVisual) 107.37 316.18 P
+1 F
+0.11 (,) 155.68 316.18 P
+0 F
+0.11 (XpmColormap) 160.79 316.18 P
+1 F
+0.11 (,) 225.2 316.18 P
+0 F
+0.11 (XpmDepth) 230.3 316.18 P
+1 F
+0.11 (,) 277.5 316.18 P
+0 F
+0.11 (XpmColorSymbols) 282.6 316.18 P
+1 F
+0.11 (,) 364.23 316.18 P
+0 F
+0.11 (XpmExactColors) 369.33 316.18 P
+1 F
+0.11 (,) 443.17 316.18 P
+0 F
+0.11 (XpmCloseness) 448.28 316.18 P
+1 F
+0.11 (,) 510.47 316.18 P
+0 F
+0.11 (Xpm-) 515.57 316.18 P
+0.35 (RGBCloseness, XpmReturnPixels) 72 304.18 P
+1 F
+0.35 (,) 216.71 304.18 P
+0 F
+0.35 (XpmReturnExtensions) 222.07 304.18 P
+1 F
+0.35 (, and sets the) 319.79 304.18 P
+0 F
+0.35 (XpmSize) 375.34 304.18 P
+1 F
+0.35 ( and possibly the) 413.65 304.18 P
+0 F
+0.35 (XpmHotspot) 485.03 304.18 P
+1 F
+-0.25 (attributes when returning. In any case the valuemask of the passed) 72 292.18 P
+0 F
+-0.25 (XpmAttributes) 336.84 292.18 P
+1 F
+-0.25 ( must be set to some valid value, at) 401.79 292.18 P
+(least zero, otherwise unpredictable errors can occur.) 72 280.18 T
+0 F
+0.78 (XpmReadFileToImage) 72 256.18 P
+1 F
+0.78 ( allocates colors, as read from the file or possibly overridden as specified in the) 169.72 256.18 P
+0 F
+0.78 (XpmCol-) 500.58 256.18 P
+0.05 (orSymbols) 72 244.18 P
+1 F
+0.05 ( attributes. The colors are allocated using the color settings for the visual specified by the) 117.54 244.18 P
+0 F
+0.05 (XpmColorKey) 477.26 244.18 P
+1 F
+0.07 (attribute, which has the value) 72 232.18 P
+0 F
+0.07 (XPM_MONO, XPM_GRAY4, XPM_GRAY,) 192.26 232.18 P
+1 F
+0.07 (or) 386.77 232.18 P
+0 F
+0.07 ( XPM_COLOR) 395.1 232.18 P
+1 F
+0.07 (. If the) 462.07 232.18 P
+0 F
+0.07 (XpmColor-) 491.15 232.18 P
+(Key) 72 220.18 T
+1 F
+( attribute is not set it is determined by examining the type of visual.) 89.21 220.18 T
+-0.15 (If no default value exists for the specified visual, it first looks for other defaults nearer to the monochrome visual type) 72 196.18 P
+0.48 (and secondly nearer to the color visual type. If the color which is found is not valid \050cannot be parsed\051, it looks for) 72 184.18 P
+(another default one according to the same algorithm.) 72 172.18 T
+-0.28 (If allocating a color fails, and the) 72 148.18 P
+0 F
+-0.28 (closeness) 204.95 148.18 P
+1 F
+-0.28 ( attribute is set, it tries to find a color already in the colormap that is closest) 243.26 148.18 P
+0.12 (to the desired color, and uses that. If no color can be found that is within) 72 136.18 P
+0 F
+0.12 (closeness) 365.95 136.18 P
+1 F
+0.12 (of the Red, Green and Blue com-) 406.88 136.18 P
+-0.61 (ponents of the desired color, it reverts to trying other default values as explained above. For finer control over the close-) 72 124.18 P
+0.77 (ness requirements of a particular icon, the) 72 112.18 P
+0 F
+0.77 (red_closeness) 247.28 112.18 P
+1 F
+0.77 (,) 305.02 112.18 P
+0 F
+0.77 (green_closeness) 314.06 112.18 P
+1 F
+0.77 (, and) 381.23 112.18 P
+0 F
+0.77 (blue_closeness) 404.7 112.18 P
+1 F
+0.77 ( attributes may be) 466.34 112.18 P
+FMENDPAGE
+%%EndPage: "11" 11
+%%Page: "12" 11
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(12) 300 56.01 T
+1 10 Q
+(used instead of the more general) 72 686.33 T
+0 F
+(closeness) 204.12 686.33 T
+1 F
+( attribute.) 242.43 686.33 T
+0.54 (The RGB components are integers within the range 0 \050black\051 to 65535 \050white\051. A closeness of less than 10000, for) 72 662.33 P
+-0.03 (example, will cause only quite close colors to be matched, while a closeness of more than 50000 will allow quite dis-) 72 650.33 P
+-0.39 (similar colors to match. Specifying a closeness of more than 65535 will allow any color to match, thus forcing the icon) 72 638.33 P
+-0.04 (to be drawn in color no matter how bad the colormap is. The value 40000 seems to be about right for many situations) 72 626.33 P
+-0.03 (requiring reasonable but not perfect matches. With this setting the color must only be within the same general area of) 72 614.33 P
+(the RGB cube as the desired color.) 72 602.33 T
+0.13 (If the) 72 578.33 P
+0 F
+0.13 (exactColors) 96.13 578.33 P
+1 F
+0.13 ( attribute is set it then returns) 146.64 578.33 P
+0 F
+0.13 (XpmColorError) 266.66 578.33 P
+1 F
+0.13 (, otherwise it creates the images and returns) 337.16 578.33 P
+0 F
+0.13 (Xpm-) 515.57 578.33 P
+-0.11 (Success) 72 566.33 P
+1 F
+-0.11 (. If no color is found, and no close color exists or is wanted, and all visuals have been exhausted,) 104.2 566.33 P
+0 F
+-0.11 (XpmColor-) 491.15 566.33 P
+(Failed) 72 554.33 T
+1 F
+( is returned.) 98.65 554.33 T
+0 F
+0.12 (XpmReadFileToImage) 72 530.33 P
+1 F
+0.12 ( returns the created image to image_return if not) 169.72 530.33 P
+0 F
+0.12 (NULL) 366.47 530.33 P
+1 F
+0.12 ( and possibly the created shapemask) 394.23 530.33 P
+-0.05 (to shapeimage_return if not) 72 518.33 P
+0 F
+-0.05 (NULL) 184.51 518.33 P
+1 F
+-0.05 ( and the color) 212.27 518.33 P
+0 F
+-0.05 (None) 269.27 518.33 P
+1 F
+-0.05 ( is used. If required it stores into the) 291.48 518.33 P
+0 F
+-0.05 (XpmAttributes) 437.62 518.33 P
+1 F
+-0.05 ( structure) 502.58 518.33 P
+(the list of the used pixels.) 72 506.33 T
+-0.31 (When finished the caller must free the images using) 72 482.33 P
+0 F
+-0.31 (XDestroyImage) 279.32 482.33 P
+1 F
+-0.31 (, the colors using) 346.48 482.33 P
+0 F
+-0.31 (XFreeColors) 416.02 482.33 P
+1 F
+-0.31 (, and possibly the) 470.97 482.33 P
+(data returned into the) 72 470.33 T
+0 F
+(XpmAttributes) 159.71 470.33 T
+1 F
+( using) 224.67 470.33 T
+0 F
+(XpmFreeAttributes) 251.32 470.33 T
+1 F
+(.) 335.7 470.33 T
+-0.39 (In addition on systems which support such features) 72 446.33 P
+0 F
+-0.39 (XpmReadFileToImage) 275.97 446.33 P
+1 F
+-0.39 (deals with compressed files by forking an) 375.79 446.33 P
+0 F
+0.12 (uncompress) 72 434.33 P
+1 F
+0.12 ( or) 123.08 434.33 P
+0 F
+0.12 (gzip) 136.64 434.33 P
+1 F
+0.12 ( process and reading from the piped result. It assumes that the specified file is compressed if the) 154.41 434.33 P
+0.2 (given file name ends by \325.Z\325 or \325.gz\325. In case the file name does not end so,) 72 422.33 P
+0 F
+0.2 (XpmReadFileToImage) 377.64 422.33 P
+1 F
+0.2 ( first looks for a) 475.36 422.33 P
+-0.31 (file of which the name is the given one followed by \325.Z\325 or \325.gz\325; then if such a file does not exist, it looks for the given) 72 410.33 P
+0.15 (file \050assumed as not compressed\051. And if instead of a file name) 72 398.33 P
+0 F
+0.15 (NULL) 328.37 398.33 P
+1 F
+0.15 ( is passed to) 356.14 398.33 P
+0 F
+0.15 (XpmReadFileToImage) 407.83 398.33 P
+1 F
+0.15 (, it reads) 505.55 398.33 P
+(from the standard input.) 72 386.33 T
+(To create a) 72 354.33 T
+0 F
+(Pixmap) 118.89 354.33 T
+1 F
+( from an) 151.66 354.33 T
+0 F
+(XPM) 188.02 354.33 T
+1 F
+( file, use) 210.77 354.33 T
+0 F
+(XpmReadFileToPixmap) 247.41 354.33 T
+1 F
+(.) 351.25 354.33 T
+(int XpmReadFileToPixmap\050) 72 336.33 T
+4 F
+(display, d, filename, pixmap_return, shapemask_return, attributes) 186.11 336.33 T
+1 F
+(\051) 450.95 336.33 T
+(Display) 108 324.33 T
+4 F
+(*display;) 141.59 324.33 T
+1 F
+(Drawable) 108 312.33 T
+4 F
+(d;) 149.35 312.33 T
+1 F
+(char) 108 300.33 T
+4 F
+(*filename;) 127.7 300.33 T
+1 F
+(Pixmap) 108 288.33 T
+4 F
+(*pixmap_return;) 141.04 288.33 T
+1 F
+(Pixmap) 108 276.33 T
+4 F
+(*shapemask_return;) 141.04 276.33 T
+1 F
+(XpmAttributes) 108 264.33 T
+4 F
+(*attributes;) 170.47 264.33 T
+(display) 72 248.33 T
+1 F
+(Specifies the connection to the X server.) 171 248.33 T
+4 F
+(d) 72 232.33 T
+1 F
+(Specifies which screen the pixmap is created on.) 171 232.33 T
+4 F
+(filename) 72 216.33 T
+1 F
+(Specifies the file name to use.) 171 216.33 T
+4 F
+(pixmap_return) 72 200.33 T
+1 F
+(Returns the pixmap which is created.) 171 200.33 T
+4 F
+(shapemask_return) 72 184.33 T
+1 F
+(Returns the shapemask which is created if the color None is used.) 171 184.33 T
+4 F
+(attributes) 72 168.33 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL\051.) 171 168.33 T
+-0.19 (The) 72 144.33 P
+0 F
+-0.19 (XpmReadFileToPixmap) 89.85 144.33 P
+1 F
+-0.19 ( function creates X images using) 193.68 144.33 P
+0 F
+-0.19 (XpmReadFileToImage) 325.76 144.33 P
+1 F
+-0.19 ( and thus returns the same er-) 423.47 144.33 P
+-0.56 (rors. In addition on success it then creates the related pixmaps, using) 72 132.33 P
+0 F
+-0.56 (XPutImage) 342.37 132.33 P
+1 F
+-0.56 (, which are returned to pixmap_return) 391.23 132.33 P
+(and shapemask_return if not) 72 120.33 T
+0 F
+(NULL) 188.03 120.33 T
+1 F
+(, and finally destroys the created images using) 215.79 120.33 T
+0 F
+(XDestroyImage) 403.16 120.33 T
+1 F
+(.) 470.32 120.33 T
+FMENDPAGE
+%%EndPage: "12" 12
+%%Page: "13" 12
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(13) 300.12 54.85 T
+1 10 Q
+-0.17 (When finished the caller must free the pixmaps using) 72 686.18 P
+0 F
+-0.17 (XFreePixmap) 286.12 686.18 P
+1 F
+-0.17 (, the colors using) 345.51 686.18 P
+0 F
+-0.17 (XFreeColors) 415.61 686.18 P
+1 F
+-0.17 (, and possibly the) 470.56 686.18 P
+(data returned into the) 72 674.18 T
+0 F
+(XpmAttributes) 159.71 674.18 T
+1 F
+( using) 224.67 674.18 T
+0 F
+(XpmFreeAttributes) 251.32 674.18 T
+1 F
+(.) 335.7 674.18 T
+0 F
+(XpmWriteFileFromImage) 74.5 642.18 T
+1 F
+( writes out an) 187.19 642.18 T
+0 F
+(XImage) 243.82 642.18 T
+1 F
+( to an) 277.68 642.18 T
+0 F
+(XPM) 302.38 642.18 T
+1 F
+( file.) 325.14 642.18 T
+(int XpmWriteFileFromImage\050) 72 624.18 T
+4 F
+(display, filename, image, shapeimage, attributes) 193.31 624.18 T
+1 F
+(\051) 387.09 624.18 T
+(Display) 108 612.18 T
+4 F
+(*display;) 141.59 612.18 T
+1 F
+(char) 108 600.18 T
+4 F
+(*filename;) 127.7 600.18 T
+1 F
+(XImage) 108 588.18 T
+4 F
+(*image;) 142.69 588.18 T
+1 F
+(XImage) 108 576.18 T
+4 F
+(*shapeimage;) 142.69 576.18 T
+1 F
+(XpmAttributes) 108 564.18 T
+4 F
+(*attributes;) 170.47 564.18 T
+(display) 72 548.18 T
+1 F
+(Specifies the connection to the X server.) 171 548.18 T
+4 F
+(filename) 72 532.18 T
+1 F
+(Specifies the file name to use.) 171 532.18 T
+4 F
+(image) 72 516.18 T
+1 F
+(Specifies the image.) 171 516.18 T
+4 F
+(shapeimage) 72 500.18 T
+1 F
+(Specifies the shape mask image.) 171 500.18 T
+4 F
+(attributes) 72 484.18 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 484.18 T
+-0.49 (The) 72 460.18 P
+0 F
+-0.49 (XpmWriteFileFromImage) 89.55 460.18 P
+1 F
+-0.49 ( function writes an image and its possible shapeimage out to a file in the) 202.24 460.18 P
+0 F
+-0.49 (XPM) 486.09 460.18 P
+1 F
+-0.49 ( format.) 508.85 460.18 P
+0.1 (If the file cannot be opened, it returns) 72 448.18 P
+0 F
+0.1 (XpmOpenFailed) 225.71 448.18 P
+1 F
+0.1 (. If insufficient working storage is allocated, it returns) 296.8 448.18 P
+0 F
+0.1 (Xpm-) 515.57 448.18 P
+(NoMemory) 72 436.18 T
+1 F
+(. If no error occurs then it returns) 120.84 436.18 T
+0 F
+(XpmSuccess) 256.01 436.18 T
+1 F
+(.) 309.31 436.18 T
+0.14 (If the passed) 72 412.18 P
+0 F
+0.14 (XpmAttributes) 125.43 412.18 P
+1 F
+0.14 ( structure pointer is not) 190.38 412.18 P
+0 F
+0.14 (NULL) 286.29 412.18 P
+1 F
+0.14 (,) 314.05 412.18 P
+0 F
+0.14 (XpmWriteFileFromImage) 319.19 412.18 P
+1 F
+0.14 ( looks for the following at-) 431.88 412.18 P
+(tributes:) 72 400.18 T
+0 F
+(XpmColormap) 107.26 400.18 T
+1 F
+(,) 171.66 400.18 T
+0 F
+(XpmSize) 176.66 400.18 T
+1 F
+(,) 214.97 400.18 T
+0 F
+(XpmHotspot) 219.97 400.18 T
+1 F
+(,) 274.94 400.18 T
+0 F
+(XpmCharsPerPixel) 279.94 400.18 T
+1 F
+(,) 363.21 400.18 T
+0 F
+(XpmRgbFilename) 368.21 400.18 T
+1 F
+(, and) 446.49 400.18 T
+0 F
+(XpmExtensions) 468.42 400.18 T
+1 F
+(.) 535.61 400.18 T
+0.26 (If the) 72 376.18 P
+0 F
+0.26 (XpmSize) 96.39 376.18 P
+1 F
+0.26 ( attributes are not defined) 134.7 376.18 P
+0 F
+0.26 (XpmWriteFileFromImage) 240.64 376.18 P
+1 F
+0.26 (performs an) 356.08 376.18 P
+0 F
+0.26 (XGetGeometry) 407.11 376.18 P
+1 F
+0.26 ( operation. If the) 472.61 376.18 P
+0.26 (filename contains an extension such as \322.xpm\323, in order to get a valid C variable name, the dot character is replaced) 72 364.18 P
+-0.6 (by an underscore \325_\325 when writing out. Also if the) 72 352.18 P
+0 F
+-0.6 (XpmRgbFilename) 268.96 352.18 P
+1 F
+-0.6 (attribute is defined,) 349.15 352.18 P
+0 F
+-0.6 (XpmWriteFileFromImage) 427.31 352.18 P
+1 F
+(searches for color names in this file and if found writes them out instead of the rgb values.) 72 340.18 T
+0.4 (In addition on systems which support such features if the given file name ends by \325.Z\325 or \325.gz\325 it is assumed to be a) 72 316.18 P
+0.47 (compressed file. Then,) 72 304.18 P
+0 F
+0.47 (XpmWriteFileFromImage) 166.95 304.18 P
+1 F
+0.47 (writes to a piped) 282.6 304.18 P
+0 F
+0.47 (compress) 353.32 304.18 P
+1 F
+0.47 ( or) 393.29 304.18 P
+0 F
+0.47 (gzip) 407.55 304.18 P
+1 F
+0.47 ( process. And if instead of a) 425.32 304.18 P
+(file name) 72 292.18 T
+0 F
+(NULL) 111.97 292.18 T
+1 F
+(is passed to) 142.23 292.18 T
+0 F
+(XpmWriteFileFromImage) 190.82 292.18 T
+1 F
+(, it writes to the standard output.) 303.5 292.18 T
+(To write out a) 72 260.18 T
+0 F
+(Pixmap) 130.85 260.18 T
+1 F
+( to an) 163.61 260.18 T
+0 F
+(XPM) 188.32 260.18 T
+1 F
+( file, use) 211.07 260.18 T
+0 F
+(XpmWriteFileFromPixmap) 247.71 260.18 T
+1 F
+(.) 366.52 260.18 T
+(int XpmWriteFileFromPixmap\050) 72 242.18 T
+4 F
+(display, filename, pixmap, shapemask, attributes) 198.88 242.18 T
+1 F
+(\051) 393.76 242.18 T
+(Display) 108 230.18 T
+4 F
+(*display;) 141.59 230.18 T
+1 F
+(char) 108 218.18 T
+4 F
+(*filename;) 127.7 218.18 T
+1 F
+(Pixmap) 108 206.18 T
+4 F
+(pixmap;) 141.04 206.18 T
+1 F
+(Pixmap) 108 194.18 T
+4 F
+(shapemask;) 141.04 194.18 T
+1 F
+(XpmAttributes) 108 182.18 T
+4 F
+(*attributes;) 170.47 182.18 T
+(display) 72 166.18 T
+1 F
+(Specifies the connection to the X server.) 171 166.18 T
+4 F
+(filename) 72 150.18 T
+1 F
+(Specifies the file name to use.) 171 150.18 T
+4 F
+(pixmap) 72 134.18 T
+1 F
+(Specifies the pixmap.) 171 134.18 T
+4 F
+(shapemask) 72 118.18 T
+1 F
+(Specifies the shape mask pixmap.) 171 118.18 T
+FMENDPAGE
+%%EndPage: "13" 13
+%%Page: "14" 13
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(14) 300 56.01 T
+4 10 Q
+(attributes) 72 686.33 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 686.33 T
+1.15 (The) 72 662.33 P
+0 F
+1.15 (XpmWriteFileFromPixmap) 91.19 662.33 P
+1 F
+1.15 ( function uses) 209.99 662.33 P
+0 F
+1.15 (XGetImage) 271.46 662.33 P
+1 F
+1.15 ( to get from the given pixmaps the related X images) 320.86 662.33 P
+0.69 (which are passed to) 72 650.33 P
+0 F
+0.69 (XpmWriteFileFromImage) 155.83 650.33 P
+1 F
+0.69 (. Finally) 268.52 650.33 P
+0 F
+0.69 (XpmWriteFileFromPixmap) 305.73 650.33 P
+1 F
+0.69 ( destroys the created images) 424.53 650.33 P
+1.09 (using) 72 638.33 P
+0 F
+1.09 (XDestroyImage) 97.24 638.33 P
+1 F
+1.09 (. The) 164.4 638.33 P
+0 F
+1.09 (XpmWriteFileFromPixmap) 189.61 638.33 P
+1 F
+1.09 (function returns the same errors as) 312 638.33 P
+0 F
+1.09 (XpmWriteFileFro-) 458.95 638.33 P
+(mImage) 72 626.33 T
+1 F
+(.) 106.97 626.33 T
+0 12 Q
+(3.1.3) 72 583 T
+(Functions to deal with XPM data) 108 583 T
+1 10 Q
+0.18 (An) 72 562.33 P
+0 F
+0.18 (XPM) 86.89 562.33 P
+1 F
+0.18 ( data is an array of character strings which may be obtained by simply including an) 109.65 562.33 P
+0 F
+0.18 (XPM) 447.23 562.33 P
+1 F
+0.18 ( file into a C pro-) 469.99 562.33 P
+(gram.) 72 550.33 T
+(To create an) 72 518.33 T
+0 F
+(XImage) 123.89 518.33 T
+1 F
+( from an) 157.75 518.33 T
+0 F
+(XPM) 194.11 518.33 T
+1 F
+( data, use) 216.87 518.33 T
+0 F
+(XpmCreateImageFromData) 256.84 518.33 T
+1 F
+(.) 377.84 518.33 T
+(int XpmCreateImageFromData\050) 72 500.33 T
+4 F
+(display, data, image_return, shapeimage_return, attributes) 199.96 500.33 T
+1 F
+(\051) 437.05 500.33 T
+(Display) 108 488.33 T
+4 F
+(*display;) 141.59 488.33 T
+1 F
+(char) 108 476.33 T
+4 F
+(**data;) 127.7 476.33 T
+1 F
+(XImage) 108 464.33 T
+4 F
+(**image_return;) 142.69 464.33 T
+1 F
+(XImage) 108 452.33 T
+4 F
+(**shapeimage_return;) 142.69 452.33 T
+1 F
+(XpmAttributes) 108 440.33 T
+4 F
+(*attributes;) 170.47 440.33 T
+(display) 72 424.33 T
+1 F
+(Specifies the connection to the X server.) 171 424.33 T
+4 F
+(data) 72 408.33 T
+1 F
+(Specifies the location of the data.) 171 408.33 T
+4 F
+(image_return) 72 392.33 T
+1 F
+(Returns the image which is created.) 171 392.33 T
+4 F
+(shapeimage_return) 72 376.33 T
+1 F
+(Returns the shape mask image which is created if the color None is used.) 171 376.33 T
+4 F
+(attributes) 72 360.33 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL\051.) 171 360.33 T
+-0.03 (The) 72 336.33 P
+0 F
+-0.03 (XpmCreateImageFromData) 90.01 336.33 P
+1 F
+-0.03 ( function allows you to include in your C program an) 211.01 336.33 P
+0 F
+-0.03 (XPM) 425.78 336.33 P
+1 F
+-0.03 ( file which was written) 448.54 336.33 P
+(out by functions such as) 72 324.33 T
+0 F
+(XpmWriteFileFromImage) 171.11 324.33 T
+1 F
+( or) 283.79 324.33 T
+0 F
+(XpmWriteFileFromPixmap) 297.12 324.33 T
+1 F
+( without reading in the file.) 415.92 324.33 T
+0 F
+0.09 (XpmCreateImageFromData) 72 300.33 P
+1 F
+0.09 ( exactly works as) 193 300.33 P
+0 F
+0.09 (XpmReadFileToImage) 264.96 300.33 P
+1 F
+0.09 ( does and returns the same way. It just reads) 362.68 300.33 P
+-0.29 (data instead of a file. Here again, it is the caller\325s responsibility to free the returned images, the colors and possibly the) 72 288.33 P
+(data returned into the) 72 276.33 T
+0 F
+(XpmAttributes) 159.71 276.33 T
+1 F
+( structure.) 224.67 276.33 T
+(To create a) 72 244.33 T
+0 F
+(Pixmap) 118.89 244.33 T
+1 F
+( from an) 151.66 244.33 T
+0 F
+(XPM) 188.02 244.33 T
+1 F
+( data, use) 210.77 244.33 T
+0 F
+(XpmCreatePixmapFromData.) 250.74 244.33 T
+1 F
+(int XpmCreatePixmapFromData\050) 72 220.33 T
+4 F
+(display, d, data, pixmap_return, shapemask_return, attributes) 205.53 220.33 T
+1 F
+(\051) 453.72 220.33 T
+(Display) 108 202.33 T
+4 F
+(*display;) 141.59 202.33 T
+1 F
+(Drawable) 108 190.33 T
+4 F
+(d;) 149.35 190.33 T
+1 F
+(char) 108 178.33 T
+4 F
+(**data;) 127.7 178.33 T
+1 F
+(Pixmap) 108 166.33 T
+4 F
+(*pixmap_return;) 141.04 166.33 T
+1 F
+(Pixmap) 108 154.33 T
+4 F
+(*shapemask_return;) 141.04 154.33 T
+1 F
+(XpmAttributes) 108 142.33 T
+4 F
+(*attributes;) 170.47 142.33 T
+(display) 72 126.33 T
+1 F
+(Specifies the connection to the X server.) 171 126.33 T
+4 F
+(d) 72 110.33 T
+1 F
+(Specifies which screen the pixmap is created on.) 171 110.33 T
+FMENDPAGE
+%%EndPage: "14" 14
+%%Page: "15" 14
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(15) 300.12 54.85 T
+4 10 Q
+(data) 72 686.18 T
+1 F
+(Specifies the location of the data.) 171 686.18 T
+4 F
+(pixmap_return) 72 670.18 T
+1 F
+(Returns the pixmap which is created.) 171 670.18 T
+4 F
+(shapemask_return) 72 654.18 T
+1 F
+(Returns the shape mask pixmap which is created if the color None is used.) 171 654.18 T
+4 F
+(attributes) 72 638.18 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL\051.) 171 638.18 T
+0.23 (The) 72 614.18 P
+0 F
+0.23 (XpmCreatePixmapFromData) 90.27 614.18 P
+1 F
+0.23 ( function creates X images using) 217.39 614.18 P
+0 F
+0.23 (XpmCreateImageFromData) 351.98 614.18 P
+1 F
+0.23 ( and thus returns) 472.98 614.18 P
+0.36 (the same errors. In addition on success it then creates the related pixmaps, using) 72 602.18 P
+0 F
+0.36 (XPutImage) 399.52 602.18 P
+1 F
+0.36 (, which are returned to) 448.38 602.18 P
+(pixmap_return and shapemask_return if not) 72 590.18 T
+0 F
+(NULL) 249.37 590.18 T
+1 F
+(, and finally destroys the created images using) 277.14 590.18 T
+0 F
+(XDestroyImage) 464.5 590.18 T
+1 F
+(.) 531.67 590.18 T
+-0.43 (Do not forget to free the returned pixmaps, the colors, and possibly the data returned into the) 72 566.18 P
+0 F
+-0.43 (XpmAttributes) 438.01 566.18 P
+1 F
+-0.43 ( structure) 502.96 566.18 P
+(when done.) 72 554.18 T
+(In some cases, one may want to create an) 72 522.18 T
+0 F
+(XPM) 239.64 522.18 T
+1 F
+( data from an) 262.39 522.18 T
+0 F
+(XImage) 317.9 522.18 T
+1 F
+(, to do so use) 351.77 522.18 T
+0 F
+(XpmCreateDataFromImage) 406.74 522.18 T
+1 F
+(.) 527.74 522.18 T
+(int XpmCreateDataFromImage\050) 72 504.18 T
+4 F
+(display, data_return, image, shapeimage, attributes) 199.96 504.18 T
+1 F
+(\051) 407.07 504.18 T
+(Display) 108 492.18 T
+4 F
+(*display;) 141.59 492.18 T
+1 F
+(char) 108 480.18 T
+4 F
+(***data_return;) 127.7 480.18 T
+1 F
+(XImage) 108 468.18 T
+4 F
+(*image;) 142.69 468.18 T
+1 F
+(XImage) 108 456.18 T
+4 F
+(*shapeimage;) 142.69 456.18 T
+1 F
+(XpmAttributes) 108 444.18 T
+4 F
+(*attributes;) 170.47 444.18 T
+(display) 72 428.18 T
+1 F
+(Specifies the connection to the X server.) 171 428.18 T
+4 F
+(data_return) 72 412.18 T
+1 F
+(Returns the data which is created.) 171 412.18 T
+4 F
+(image) 72 396.18 T
+1 F
+(Specifies the image.) 171 396.18 T
+4 F
+(shapeimage) 72 380.18 T
+1 F
+(Specifies the shape mask image.) 171 380.18 T
+4 F
+(attributes) 72 364.18 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 364.18 T
+0.28 (The) 72 340.18 P
+0 F
+0.28 (XpmCreateDataFromImage) 90.32 340.18 P
+1 F
+0.28 ( function exactly works as) 211.32 340.18 P
+0 F
+0.28 (XpmWriteFileFromImage) 320.15 340.18 P
+1 F
+0.28 ( does and returns the same) 432.84 340.18 P
+0.14 (way. It just writes to a single block malloc\325ed data instead of to a file. It is the caller\325s responsibility to free the data,) 72 328.18 P
+(using) 72 316.18 T
+0 F
+(XpmFree) 96.16 316.18 T
+1 F
+( when finished.) 136.67 316.18 T
+0 F
+(XpmCreateDataFromPixmap) 72 284.18 T
+1 F
+( creates an) 199.12 284.18 T
+0 F
+(XPM) 243.8 284.18 T
+1 F
+( data from a) 266.55 284.18 T
+0 F
+(Pixmap) 317.07 284.18 T
+1 F
+(.) 349.83 284.18 T
+(int XpmCreateDataFromPixmap\050) 72 266.18 T
+4 F
+(display, data_return, pixmap, shapemask, attributes) 205.53 266.18 T
+1 F
+(\051) 413.74 266.18 T
+(Display) 108 254.18 T
+4 F
+(*display;) 141.59 254.18 T
+1 F
+(char) 108 242.18 T
+4 F
+(***data_return;) 127.7 242.18 T
+1 F
+(Pixmap) 108 230.18 T
+4 F
+(pixmap;) 141.04 230.18 T
+1 F
+(Pixmap) 108 218.18 T
+4 F
+(shapemask;) 141.04 218.18 T
+1 F
+(XpmAttributes) 108 206.18 T
+4 F
+(*attributes;) 170.47 206.18 T
+(display) 72 190.18 T
+1 F
+(Specifies the connection to the X server.) 171 190.18 T
+4 F
+(data_return) 72 174.18 T
+1 F
+(Returns the data which is created.) 171 174.18 T
+4 F
+(pixmap) 72 158.18 T
+1 F
+(Specifies the pixmap.) 171 158.18 T
+4 F
+(shapemask) 72 142.18 T
+1 F
+(Specifies the shape mask pixmap.) 171 142.18 T
+4 F
+(attributes) 72 126.18 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 126.18 T
+FMENDPAGE
+%%EndPage: "15" 15
+%%Page: "16" 15
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(16) 300 56.01 T
+1 10 Q
+0.56 (The) 72 686.33 P
+0 F
+0.56 (XpmCreateDataFromPixmap) 90.6 686.33 P
+1 F
+0.56 ( function uses) 217.72 686.33 P
+0 F
+0.56 (XGetImage) 277.4 686.33 P
+1 F
+0.56 ( to get from the given pixmaps the related X images) 326.8 686.33 P
+-0.28 (which are passed to) 72 674.33 P
+0 F
+-0.28 (XpmCreateDataFromImage) 151.95 674.33 P
+1 F
+-0.28 (. Then it destroys the created images using) 272.95 674.33 P
+0 F
+-0.28 (XDestroyImage) 443.69 674.33 P
+1 F
+-0.28 (.) 510.85 674.33 P
+0 F
+-0.28 (Xpm-) 515.57 674.33 P
+(CreateDataFromPixmap) 72 662.33 T
+1 F
+( returns the same errors as) 178.02 662.33 T
+0 F
+(XpmCreateDataFromImage) 285.15 662.33 T
+1 F
+(.) 406.16 662.33 T
+0 12 Q
+(3.1.4) 72 619 T
+(Functions to deal with XPM files and data) 108 619 T
+1 10 Q
+0.5 (To directly tranform an) 72 598.33 P
+0 F
+0.5 (XPM) 170.04 598.33 P
+1 F
+0.5 ( file to and from an) 192.8 598.33 P
+0 F
+0.5 (XPM) 275.19 598.33 P
+1 F
+0.5 ( data array, without requiring an open X display, use) 297.94 598.33 P
+0 F
+0.5 (Xpm-) 515.57 598.33 P
+(ReadFileToData) 72 586.33 T
+1 F
+( and) 142.51 586.33 T
+0 F
+(XpmWriteFileFromData) 161.94 586.33 T
+1 F
+(.) 268.52 586.33 T
+0 F
+(XpmReadFileToData) 72 554.33 T
+1 F
+( allocates and fills an) 163.61 554.33 T
+0 F
+(XPM) 250.49 554.33 T
+1 F
+( data array from an) 273.25 554.33 T
+0 F
+(XPM) 351.79 554.33 T
+1 F
+( file.) 374.54 554.33 T
+(int XpmReadFileToData\050) 72 536.33 T
+4 F
+(filename, data_return) 174.43 536.33 T
+1 F
+(\051) 261.61 536.33 T
+(char) 108 524.33 T
+4 F
+(*filename;) 127.7 524.33 T
+1 F
+(char) 108 512.33 T
+4 F
+(***data_return;) 127.7 512.33 T
+(filename) 72 496.33 T
+1 F
+(Specifies the file name to read.) 171 496.33 T
+4 F
+(data_return) 72 480.33 T
+1 F
+(Returns the data array created.) 171 480.33 T
+0 F
+0.58 (XpmReadFileToData) 72 456.33 P
+1 F
+0.58 ( returns) 163.61 456.33 P
+0 F
+0.58 (XpmOpenFailed) 197.51 456.33 P
+1 F
+0.58 ( if it cannot open the file,) 268.6 456.33 P
+0 F
+0.58 (XpmNoMemory) 375.89 456.33 P
+1 F
+0.58 ( if insufficient working) 445.83 456.33 P
+0.19 (storage is allocated,) 72 444.33 P
+0 F
+0.19 (XpmFileInvalid) 154.19 444.33 P
+1 F
+0.19 ( if this is not a valid) 221.94 444.33 P
+0 F
+0.19 (XPM) 305.21 444.33 P
+1 F
+0.19 ( file, and) 327.96 444.33 P
+0 F
+0.19 (XpmSuccess) 366.3 444.33 P
+1 F
+0.19 (otherwise. The allocated data) 422.29 444.33 P
+(returned by) 72 432.33 T
+0 F
+(XpmReadFileToData) 120.29 432.33 T
+1 F
+( should be freed with) 211.9 432.33 T
+0 F
+(XpmFree) 298.79 432.33 T
+1 F
+( when done.) 339.3 432.33 T
+0 F
+(XpmWriteFileFromData) 72 400.33 T
+1 F
+( writes an) 178.58 400.33 T
+0 F
+(XPM) 219.94 400.33 T
+1 F
+( data array to an) 242.7 400.33 T
+0 F
+(XPM) 309.58 400.33 T
+1 F
+( file.) 332.34 400.33 T
+(int XpmWriteFileFromData\050) 72 382.33 T
+4 F
+(filename, data) 187.21 382.33 T
+1 F
+(\051) 244.4 382.33 T
+(char) 108 370.33 T
+4 F
+(*filename;) 127.7 370.33 T
+1 F
+(char) 108 358.33 T
+4 F
+(**data;) 127.7 358.33 T
+(filename) 72 342.33 T
+1 F
+(Specifies the file name to write.) 171 342.33 T
+4 F
+(data) 72 326.33 T
+1 F
+(Specifies the data array to read.) 171 326.33 T
+0 F
+-0.19 (XpmReadFileToData) 72 302.33 P
+1 F
+-0.19 ( returns) 163.61 302.33 P
+0 F
+-0.19 (XpmOpenFailed) 195.97 302.33 P
+1 F
+-0.19 ( if it cannot open the file,) 267.05 302.33 P
+0 F
+-0.19 (XpmFileInvalid) 368.95 302.33 P
+1 F
+-0.19 ( if this is not a valid) 436.7 302.33 P
+0 F
+-0.19 (XPM) 517.24 302.33 P
+1 F
+(data, and) 72 290.33 T
+0 F
+(XpmSuccess) 110.58 290.33 T
+1 F
+( otherwise.) 163.88 290.33 T
+0 12 Q
+(3.1.5) 72 247 T
+(Functions to deal with XPM buffers) 108 247 T
+1 10 Q
+0.52 (An) 72 226.33 P
+0 F
+0.52 (XPM) 87.23 226.33 P
+1 F
+0.52 ( buffer is a character string which may be obtained by simply making the exact copy of an) 109.99 226.33 P
+0 F
+0.52 (XPM) 482.34 226.33 P
+1 F
+0.52 ( file into) 505.1 226.33 P
+(memory.) 72 214.33 T
+(To create an) 72 182.33 T
+0 F
+(XImage) 123.89 182.33 T
+1 F
+( from an) 157.75 182.33 T
+0 F
+(XPM) 194.11 182.33 T
+1 F
+( buffer, use) 216.87 182.33 T
+0 F
+(XpmCreateImageFromBuffer) 264.6 182.33 T
+1 F
+(.) 392.82 182.33 T
+(int XpmCreateImageFromBuffer\050) 72 164.33 T
+4 F
+(display, buffer, image_return, shapeimage_return, attributes) 207.18 164.33 T
+1 F
+(\051) 450.37 164.33 T
+(Display) 108 152.33 T
+4 F
+(*display;) 141.59 152.33 T
+1 F
+(char) 108 140.33 T
+4 F
+(*buffer;) 127.7 140.33 T
+1 F
+(XImage) 108 128.33 T
+4 F
+(**image_return;) 142.69 128.33 T
+1 F
+(XImage) 108 116.33 T
+4 F
+(**shapeimage_return;) 142.69 116.33 T
+1 F
+(XpmAttributes) 108 104.33 T
+4 F
+(*attributes;) 170.47 104.33 T
+FMENDPAGE
+%%EndPage: "16" 16
+%%Page: "17" 16
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(17) 300.12 54.85 T
+4 10 Q
+(display) 72 686.18 T
+1 F
+(Specifies the connection to the X server.) 171 686.18 T
+4 F
+(buffer) 72 670.18 T
+1 F
+(Specifies the location of the buffer.) 171 670.18 T
+4 F
+(image_return) 72 654.18 T
+1 F
+(Returns the image which is created.) 171 654.18 T
+4 F
+(shapeimage_return) 72 638.18 T
+1 F
+(Returns the shape mask image which is created if the color None is used.) 171 638.18 T
+4 F
+(attributes) 72 622.18 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL\051.) 171 622.18 T
+-0.04 (The) 72 598.18 P
+0 F
+-0.04 (XpmCreateImageFromBuffer) 90 598.18 P
+1 F
+-0.04 ( works the same way as) 218.22 598.18 P
+0 F
+-0.04 (XpmReadFileToImage) 315.12 598.18 P
+1 F
+-0.04 (, it just parses the buffer instead) 412.84 598.18 P
+0.23 (of the file. Be aware that the feature provided on some systems by) 72 586.18 P
+0 F
+0.23 (XpmReadFileToImage) 341.99 586.18 P
+1 F
+0.23 (to deal with compressed) 442.44 586.18 P
+(files is not available here.) 72 574.18 T
+(To create a) 72 542.18 T
+0 F
+(Pixmap) 118.89 542.18 T
+1 F
+( from an) 151.66 542.18 T
+0 F
+(XPM) 188.02 542.18 T
+1 F
+( buffer, use) 210.77 542.18 T
+0 F
+(XpmCreatePixmapFromBuffer) 258.51 542.18 T
+1 F
+(.) 392.84 542.18 T
+(int XpmCreatePixmapFromBuffer\050) 72 524.18 T
+4 F
+(display, d, buffer, pixmap_return, shapemask_return, attributes) 212.74 524.18 T
+1 F
+(\051) 467.04 524.18 T
+(Display) 108 512.18 T
+4 F
+(*display;) 141.59 512.18 T
+1 F
+(Drawable) 108 500.18 T
+4 F
+(d;) 149.35 500.18 T
+1 F
+(char) 108 488.18 T
+4 F
+(*buffer;) 127.7 488.18 T
+1 F
+(Pixmap) 108 476.18 T
+4 F
+(*pixmap_return;) 141.04 476.18 T
+1 F
+(Pixmap) 108 464.18 T
+4 F
+(*shapemask_return;) 141.04 464.18 T
+1 F
+(XpmAttributes) 108 452.18 T
+4 F
+(*attributes;) 170.47 452.18 T
+(display) 72 436.18 T
+1 F
+(Specifies the connection to the X server.) 171 436.18 T
+4 F
+(d) 72 420.18 T
+1 F
+(Specifies which screen the pixmap is created on.) 171 420.18 T
+4 F
+(buffer) 72 404.18 T
+1 F
+(Specifies the location of the buffer.) 171 404.18 T
+4 F
+(pixmap_return) 72 388.18 T
+1 F
+(Returns the pixmap which is created if the color None.) 171 388.18 T
+4 F
+(shapemask_return) 72 372.18 T
+1 F
+(Returns the shape mask pixmap which is created if the color None is used.) 171 372.18 T
+4 F
+(attributes) 72 356.18 T
+1 F
+(Specifies the location of a structure to get and store information.) 171 356.18 T
+0.3 (The) 72 332.18 P
+0 F
+0.3 (XpmCreatePixmapFromBuffer) 90.34 332.18 P
+1 F
+0.3 ( function works the same way as) 224.68 332.18 P
+0 F
+0.3 (XpmReadFileToPixmap) 359.73 332.18 P
+1 F
+0.3 (, it just calls) 463.56 332.18 P
+0 F
+0.3 (Xpm-) 515.57 332.18 P
+(CreateImageFromBuffer) 72 320.18 T
+1 F
+( instead of) 179.12 320.18 T
+0 F
+(XpmReadFileToImage) 223.26 320.18 T
+1 F
+(.) 320.97 320.18 T
+(To create an) 72 288.18 T
+0 F
+(XPM) 123.89 288.18 T
+1 F
+( buffer from an) 146.65 288.18 T
+0 F
+(XImage) 209.92 288.18 T
+1 F
+(, use) 243.79 288.18 T
+0 F
+(XpmCreateBufferFromImage) 264.6 288.18 T
+1 F
+(.) 392.82 288.18 T
+(int XpmCreateBufferFromImage\050) 72 270.18 T
+4 F
+(display, buffer_return, image, shapeimage, attributes) 207.18 270.18 T
+1 F
+(\051) 420.39 270.18 T
+(Display) 108 258.18 T
+4 F
+(*display;) 141.59 258.18 T
+1 F
+(char) 108 246.18 T
+4 F
+(**buffer_return;) 127.7 246.18 T
+1 F
+(XImage) 108 234.18 T
+4 F
+(*image;) 142.69 234.18 T
+1 F
+(XImage) 108 222.18 T
+4 F
+(*shapeimage;) 142.69 222.18 T
+1 F
+(XpmAttributes) 108 210.18 T
+4 F
+(*attributes;) 170.47 210.18 T
+(display) 72 194.18 T
+1 F
+(Specifies the connection to the X server.) 171 194.18 T
+4 F
+(buffer_return) 72 178.18 T
+1 F
+(Returns the buffer which is created.) 171 178.18 T
+4 F
+(image) 72 162.18 T
+1 F
+(Specifies the image.) 171 162.18 T
+4 F
+(shapeimage) 72 146.18 T
+1 F
+(Specifies the shape mask image.) 171 146.18 T
+4 F
+(attributes) 72 130.18 T
+1 F
+(Specifies the location of a structure containing information \050or) 171 130.18 T
+(NULL\051.) 423.32 130.18 T
+-0.25 (The) 72 106.18 P
+0 F
+-0.25 (XpmCreateBufferFromImage) 89.79 106.18 P
+1 F
+-0.25 ( works as) 218.01 106.18 P
+0 F
+-0.25 (XpmWriteFileFromImage) 257.5 106.18 P
+1 F
+-0.25 (, it just writes to a malloc\325ed buffer instead) 370.19 106.18 P
+FMENDPAGE
+%%EndPage: "17" 17
+%%Page: "18" 17
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(18) 300 56.01 T
+1 10 Q
+(of to a file. The caller should free the buffer using) 72 686.33 T
+0 F
+(XpmFree) 274.06 686.33 T
+1 F
+( when finished.) 314.58 686.33 T
+0 F
+(XpmCreateBufferFromPixmap) 72 654.33 T
+1 F
+( creates an) 206.34 654.33 T
+0 F
+(XPM) 251.01 654.33 T
+1 F
+( buffer from a) 273.77 654.33 T
+0 F
+(Pixmap) 332.05 654.33 T
+1 F
+(.) 364.81 654.33 T
+(int XpmCreateBufferFromPixmap\050) 72 636.33 T
+4 F
+(display, buffer_return, pixmap, shapemask, attributes) 212.74 636.33 T
+1 F
+(\051) 427.07 636.33 T
+(Display) 108 624.33 T
+4 F
+(*display;) 141.59 624.33 T
+1 F
+(char) 108 612.33 T
+4 F
+(**buffer_return;) 127.7 612.33 T
+1 F
+(Pixmap) 108 600.33 T
+4 F
+(pixmap;) 141.04 600.33 T
+1 F
+(Pixmap) 108 588.33 T
+4 F
+(shapemask;) 141.04 588.33 T
+1 F
+(XpmAttributes) 108 576.33 T
+4 F
+(*attributes;) 170.47 576.33 T
+(display) 72 560.33 T
+1 F
+(Specifies the connection to the X server.) 171 560.33 T
+4 F
+(buffer_return) 72 544.33 T
+1 F
+(Returns the buffer which is created.) 171 544.33 T
+4 F
+(pixmap) 72 528.33 T
+1 F
+(Specifies the pixmap.) 171 528.33 T
+4 F
+(shapemask) 72 512.33 T
+1 F
+(Specifies the shape mask pixmap.) 171 512.33 T
+4 F
+(attributes) 72 496.33 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 496.33 T
+1.85 (The) 72 472.33 P
+0 F
+1.85 (XpmCreateBufferFromPixmap) 91.89 472.33 P
+1 F
+1.85 ( function works as) 226.23 472.33 P
+0 F
+1.85 (XpmWriteFileFromPixmap) 309.69 472.33 P
+1 F
+1.85 (, it just calls) 428.5 472.33 P
+0 F
+1.85 (XpmCreate-) 486.72 472.33 P
+0.07 (BufferFromImage) 72 460.33 P
+1 F
+0.07 ( instead of) 150.27 460.33 P
+0 F
+0.07 (XpmWriteFileFromImage) 194.6 460.33 P
+1 F
+0.07 (. Once again, the caller should free the buffer using) 307.29 460.33 P
+0 F
+0.07 (Xpm-) 515.57 460.33 P
+(Free) 72 448.33 T
+1 F
+( when finished.) 91.42 448.33 T
+0 12 Q
+(3.1.6) 72 405 T
+(Functions to deal with XPM files and buffers) 108 405 T
+1 10 Q
+-0.41 (As a convenience, the) 72 384.33 P
+0 F
+-0.41 (XpmReadFileToBuffer) 160.58 384.33 P
+1 F
+-0.41 ( and) 259.41 384.33 P
+0 F
+-0.41 (XpmWriteFileFromBuffer) 278.03 384.33 P
+1 F
+-0.41 ( are provided to copy a file to a buffer) 391.83 384.33 P
+0.15 (and to write a file from a buffer. Thus for instance one may decide to use) 72 372.33 P
+0 F
+0.15 (XpmReadFileToBuffer) 368.86 372.33 P
+1 F
+0.15 (,) 467.69 372.33 P
+0 F
+0.15 (XpmCreatePix-) 472.84 372.33 P
+0.63 (mapFromBuffer) 72 360.33 P
+1 F
+0.63 (, and) 142.5 360.33 P
+0 F
+0.63 (XpmFree) 165.7 360.33 P
+1 F
+0.63 ( instead of) 206.21 360.33 P
+0 F
+0.63 (XpmReadFileToPixmap) 252.25 360.33 P
+1 F
+0.63 (. On some systems this may lead to a perfor-) 356.08 360.33 P
+(mance improvement, since the parsing will be performed in memory, but it uses more memory.) 72 348.33 T
+0 F
+(XpmReadFileToBuffer) 72 316.33 T
+1 F
+( allocates and fills a buffer from a file.) 170.83 316.33 T
+(int XpmReadFileToBuffer\050) 72 298.33 T
+4 F
+(filename, buffer_return) 181.65 298.33 T
+1 F
+(\051) 274.93 298.33 T
+(char) 108 286.33 T
+4 F
+(*filename;) 127.7 286.33 T
+1 F
+(char) 108 274.33 T
+4 F
+(**buffer_return;) 127.7 274.33 T
+(filename) 72 258.33 T
+1 F
+(Specifies the file name to read.) 171 258.33 T
+4 F
+(buffer_return) 72 242.33 T
+1 F
+(Returns the buffer created.) 171 242.33 T
+0 F
+0.44 (XpmReadFileToBuffer) 72 218.33 P
+1 F
+0.44 ( returns) 170.83 218.33 P
+0 F
+0.44 (XpmOpenFailed) 204.45 218.33 P
+1 F
+0.44 ( if it cannot open the file, returns) 275.53 218.33 P
+0 F
+0.44 (XpmNoMemory) 412.55 218.33 P
+1 F
+0.44 ( if insufficient) 482.49 218.33 P
+0.28 (working storage is allocated, and) 72 206.33 P
+0 F
+0.28 (XpmSuccess) 207.74 206.33 P
+1 F
+0.28 ( otherwise. The allocated buffer returned by) 261.04 206.33 P
+0 F
+0.28 (XpmReadFileToBuffer) 441.17 206.33 P
+1 F
+(should be freed with) 72 194.33 T
+0 F
+(XpmFree) 156.38 194.33 T
+1 F
+( when done.) 196.9 194.33 T
+0 F
+(XpmWriteFileFromBuffer) 72 162.33 T
+1 F
+( writes a buffer to a file.) 185.8 162.33 T
+(int XpmWriteFileFromData\050) 72 144.33 T
+4 F
+(filename, data) 187.21 144.33 T
+1 F
+(\051) 244.4 144.33 T
+(char) 108 132.33 T
+4 F
+(*filename;) 127.7 132.33 T
+1 F
+(char) 108 120.33 T
+4 F
+(*buffer;) 127.7 120.33 T
+(filename) 72 104.33 T
+1 F
+(Specifies the file name to write.) 171 104.33 T
+FMENDPAGE
+%%EndPage: "18" 18
+%%Page: "19" 18
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(19) 300.12 54.85 T
+4 10 Q
+(buffer) 72 686.18 T
+1 F
+(Specifies the buffer to read.) 171 686.18 T
+0 F
+(XpmReadFileTobuffer) 72 662.18 T
+1 F
+( returns) 169.72 662.18 T
+0 F
+(XpmOpenFailed) 202.47 662.18 T
+1 F
+( if it cannot open the file, and) 273.55 662.18 T
+0 F
+(XpmSuccess) 393.74 662.18 T
+1 F
+( otherwise.) 447.04 662.18 T
+0 12 Q
+(3.1.7) 72 618.84 T
+(Miscellaneous functions) 108 618.84 T
+1 10 Q
+(To free possible data stored into an) 72 598.18 T
+0 F
+(XpmAttributes) 214.95 598.18 T
+1 F
+( structure use) 279.91 598.18 T
+0 F
+(XpmFreeAttributes) 335.7 598.18 T
+1 F
+(.) 420.07 598.18 T
+(int XpmFreeAttributes\050) 72 580.18 T
+4 F
+(attributes) 166.11 580.18 T
+1 F
+(\051) 204.43 580.18 T
+(XpmAttributes) 108 568.18 T
+4 F
+(*attributes;) 170.47 568.18 T
+(attributes) 72 552.18 T
+1 F
+( Specifies the structure to free.) 110.32 552.18 T
+(The) 72 528.18 T
+0 F
+(XpmFreeAttributes) 90.04 528.18 T
+1 F
+( frees the structure members which have been malloc\325ed: the pixels list.) 174.41 528.18 T
+(To dynamically allocate an) 72 496.18 T
+0 F
+(XpmAttributes) 183.03 496.18 T
+1 F
+( structure use the) 247.98 496.18 T
+0 F
+(XpmAttributesSize) 320.98 496.18 T
+1 F
+( function.) 403.15 496.18 T
+(int XpmAttributesSize\050\051) 72 478.18 T
+0.43 (The) 72 454.18 P
+0 F
+0.43 (XpmAttributesSize) 90.47 454.18 P
+1 F
+0.43 ( function provides application using dynamic libraries with a safe way to allocate and then) 172.63 454.18 P
+-0.41 (refer to an) 72 442.18 P
+0 F
+-0.41 (XpmAttributes) 114.35 442.18 P
+1 F
+-0.41 (structure, disregarding whether the) 181.4 442.18 P
+0 F
+-0.41 (XpmAttributes) 321.61 442.18 P
+1 F
+-0.41 ( structure size has changed or not since) 386.57 442.18 P
+(compiled.) 72 430.18 T
+(To free data possibly stored into an array of) 72 398.18 T
+0 F
+(XpmExtension) 249.36 398.18 T
+1 F
+( use) 312.67 398.18 T
+0 F
+(XpmFreeExtensions) 330.99 398.18 T
+1 F
+(.) 417.6 398.18 T
+(int XpmFreeExtensions\050) 72 380.18 T
+4 F
+(extensions, nextensions) 170 380.18 T
+1 F
+(\051) 263.27 380.18 T
+(XpmExtension) 108 368.18 T
+4 F
+(*extensions;) 170.47 368.18 T
+1 F
+(int) 108 356.18 T
+4 F
+(nextensions;) 121.05 356.18 T
+(extensions) 72 340.18 T
+1 F
+(Specifies the array to free.) 171 340.18 T
+4 F
+(nextensions) 72 324.18 T
+1 F
+(Specifies the number of extensions.) 171 324.18 T
+-0.29 (This function frees all data stored in every extension and the array itself. Note that) 72 300.18 P
+0 F
+-0.29 (XpmFreeAttributes) 399.04 300.18 P
+1 F
+-0.29 ( call this func-) 483.42 300.18 P
+(tion and thus most of the time it should not need to be explicitly called.) 72 288.18 T
+(To free any data allocated by an) 72 256.18 T
+0 F
+(Xpm) 202.72 256.18 T
+1 F
+( function use the) 223.82 256.18 T
+0 F
+(XpmFree) 292.66 256.18 T
+1 F
+( function.) 333.18 256.18 T
+(int XpmFree\050) 72 238.18 T
+4 F
+(ptr) 126.13 238.18 T
+1 F
+(\051) 137.79 238.18 T
+(char) 108 226.18 T
+4 F
+(*ptr;) 127.7 226.18 T
+(ptr) 72 210.18 T
+1 F
+( Specifies the data to free.) 83.66 210.18 T
+-0.25 (The current distribution of the Xpm library uses the standard memory allocation functions and thus) 72 186.18 P
+0 F
+-0.25 (XpmFree) 467.21 186.18 P
+1 F
+-0.25 ( is noth-) 507.73 186.18 P
+0.14 (ing else than a define to the standard) 72 174.18 P
+0 F
+0.14 (free) 221.9 174.18 P
+1 F
+0.14 (. However since these functions may be redefined in specific environments) 238.55 174.18 P
+(it is wise to use) 72 162.18 T
+0 F
+(XpmFree) 136.13 162.18 T
+1 F
+(.) 176.65 162.18 T
+(To get data when building an error message, one can use) 72 130.18 T
+0 F
+(XpmGetErrorString) 301.26 130.18 T
+1 F
+(char *XpmGetErrorString\050) 72 112.18 T
+4 F
+(errorcode) 179.97 112.18 T
+1 F
+(\051) 219.94 112.18 T
+FMENDPAGE
+%%EndPage: "19" 19
+%%Page: "20" 19
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(20) 300 56.01 T
+1 10 Q
+(int) 108 686.33 T
+4 F
+(errorcode) 121.05 686.33 T
+1 F
+(;) 161.02 686.33 T
+4 F
+(errorcode) 72 670.33 T
+1 F
+( Specifies the Xpm error.) 111.97 670.33 T
+(XpmGetErrorString returns a string related to the given) 72 646.33 T
+0 F
+(Xpm) 296.29 646.33 T
+1 F
+( error code.) 317.39 646.33 T
+0 14 Q
+(3.2) 72 199.67 T
+(The Advanced Level Interface) 100.8 199.67 T
+1 10 Q
+-0.22 (The advanced level interface is a set of functions that applications, such as icon editors, which needs to retreive all the) 72 174.33 P
+(information stored in an XPM file and applications which perform data caching can use.) 72 162.33 T
+(The following subsections describe these functions and how to use them.) 72 138.33 T
+FMENDPAGE
+%%EndPage: "20" 20
+%%Page: "21" 20
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(21) 300.12 54.85 T
+(3.2.1) 72 684.84 T
+(The structures) 108 684.84 T
+1 10 Q
+(The purpose of the structures defined in this section is to be able to store XPM images in memory to avoid any) 72 664.18 T
+(additional parsing without losing information such as color defaults, symbolic color names, and comments.) 72 652.18 T
+-0.31 (Indeed, considering the) 72 636.18 P
+0 F
+-0.31 (XPM) 167.1 636.18 P
+1 F
+-0.31 (format one can see that there is a lot more information related to a color than just an rgb) 192.04 636.18 P
+-0.13 (value or a colormap index, the) 72 624.18 P
+0 F
+-0.13 (XpmColor) 195.29 624.18 P
+1 F
+-0.13 ( structure allows to store the different color defaults, the symbolic name of) 240.81 624.18 P
+(a color, and the characters string which represents it.) 72 612.18 T
+(typedef struct {) 72 596.18 T
+(char *string;) 144 578.18 T
+(/* characters string */) 288 578.18 T
+(char *symbolic;) 144 560.18 T
+(/* symbolic name */) 288 560.18 T
+(char *m_color;) 144 542.18 T
+(/* monochrom default */) 288 542.18 T
+(char *g4_color;) 144 524.18 T
+(/* 4 level grayscale default */) 288 524.18 T
+(char *g_color;) 144 506.18 T
+(/* other level grayscale default */) 288 506.18 T
+(char *c_color;) 144 488.18 T
+(/* color default */) 288 488.18 T
+(} XpmColor;) 72 470.18 T
+-0.2 (The) 72 452.18 P
+0 F
+-0.2 (XpmImage) 89.83 452.18 P
+1 F
+-0.2 ( structure is defined to store the image data definition with its size, the length of the characters strings) 137.58 452.18 P
+(representing each color, and the related color table.) 72 440.18 T
+(typedef struct {) 72 422.18 T
+(unsigned int width;) 144 404.18 T
+(/* image width */) 288 404.18 T
+(unsigned int height;) 144 386.18 T
+(/* image height */) 288 386.18 T
+(unsigned int cpp;) 144 368.18 T
+(/* number of characters per pixel */) 288 368.18 T
+(unsigned int ncolors;) 144 350.18 T
+(/* number of colors */) 288 350.18 T
+(XpmColor *colorTable;) 144 332.18 T
+(/* list of related colors */) 288 332.18 T
+(unsigned int *data;) 144 314.18 T
+(/* image data */) 288 314.18 T
+(} XpmImage) 72 296.18 T
+0.29 (The) 72 278.18 P
+0 F
+0.29 (XpmImage) 90.33 278.18 P
+1 F
+0.29 ( data is an array of width*height color indexes, each color index referencing the related color in the) 138.08 278.18 P
+(color table.) 72 266.18 T
+-0.37 (In addition, to get possible comments back while writing out to a file an) 72 242.18 P
+0 F
+-0.37 (XpmInfo) 356.91 242.18 P
+1 F
+-0.37 (s structure can be passed to the read-) 395.78 242.18 P
+-0.31 (ing function, and then given back to the writing function. Comments are limited to a single string by) 72 230.18 P
+0 F
+-0.31 (XPM) 470.12 230.18 P
+1 F
+-0.31 ( format sec-) 492.88 230.18 P
+(tion. If more exist in the read file, then only the last comment of each section will be stored.) 72 218.18 T
+(typedef struct {) 72 194.18 T
+(char *hints_cmt;) 144 176.18 T
+(/* comment of the hints section */) 288 176.18 T
+(char *colors_cmt;) 144 160.18 T
+(/* comment of the colors section */) 288 160.18 T
+(char *pixels_cmt;) 144 144.18 T
+(/* comment of the pixels section */) 288 144.18 T
+(} XpmInfos;) 72 120.18 T
+FMENDPAGE
+%%EndPage: "21" 21
+%%Page: "22" 21
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(22) 300 56.01 T
+(3.2.2) 72 685 T
+(Functions to deal with XPM files) 108 685 T
+1 10 Q
+(To create an) 72 660.33 T
+0 F
+(XpmImage) 123.89 660.33 T
+1 F
+( from an XPM file, use) 171.63 660.33 T
+0 F
+(XpmReadFileToXpmImage) 266.29 660.33 T
+1 F
+(.) 385.11 660.33 T
+(int XpmReadFileToXpmImage\050) 72 642.33 T
+4 F
+(filename, image, attributes) 200.53 642.33 T
+1 F
+(, infos\051) 307.69 642.33 T
+(char) 108 630.33 T
+4 F
+(*filename;) 127.7 630.33 T
+1 F
+(XpmImage) 108 618.33 T
+4 F
+(*image;) 155.46 618.33 T
+1 F
+(XpmAttributes) 108 606.33 T
+4 F
+(*attributes;) 170.47 606.33 T
+1 F
+(XpmInfos *infos;) 108 594.33 T
+4 F
+(filename) 72 578.33 T
+1 F
+(Specifies the file name to read from.) 171 578.33 T
+4 F
+(image) 72 562.33 T
+1 F
+(Specifies the image structure location.) 171 562.33 T
+4 F
+(attributes) 72 546.33 T
+1 F
+(Specifies the location of a structure to store possible extensions \050or NULL\051.) 171 546.33 T
+(infos) 72 530.33 T
+(Specifies the location of a structure to store possible information \050or NULL\051.) 171 530.33 T
+0.35 (The) 72 506.33 P
+0 F
+0.35 (XpmReadFileToXpmImage) 90.39 506.33 P
+1 F
+0.35 ( function reads in a file in the) 209.21 506.33 P
+0 F
+0.35 (XPM) 331.96 506.33 P
+1 F
+0.35 ( format. If the file cannot be opened it returns) 354.72 506.33 P
+0 F
+-0.2 (XpmOpenFailed) 72 494.33 P
+1 F
+-0.2 (. If the file can be opened but does not contain valid) 143.08 494.33 P
+0 F
+-0.2 (XPM) 350.78 494.33 P
+1 F
+-0.2 (data, it returns) 375.83 494.33 P
+0 F
+-0.2 (XpmFileInvalid) 435.18 494.33 P
+1 F
+-0.2 (. If insuf-) 502.93 494.33 P
+0.07 (ficient working storage is allocated, it returns) 72 482.33 P
+0 F
+0.07 (XpmNoMemory) 256.24 482.33 P
+1 F
+0.07 (. On success it fills in the given) 326.18 482.33 P
+0 F
+0.07 (XpmImage) 454.72 482.33 P
+1 F
+0.07 ( structure) 502.46 482.33 P
+-0.17 (and returns) 72 470.33 P
+0 F
+-0.17 (XpmSuccess) 118.85 470.33 P
+1 F
+-0.17 (. Also it stores possible extensions in the) 172.15 470.33 P
+0 F
+-0.17 (XpmAttributes) 336.02 470.33 P
+1 F
+-0.17 ( structure if one is given and possi-) 400.97 470.33 P
+(ble information in the) 72 458.33 T
+0 F
+(XpmInfos) 161.39 458.33 T
+1 F
+( struture if one is given) 204.15 458.33 T
+-0.4 (In addition on systems which support such features) 72 434.33 P
+0 F
+-0.4 (XpmReadFileToXpmImage) 275.9 434.33 P
+1 F
+-0.4 (deals with compressed files by fork-) 396.82 434.33 P
+-0.09 (ing an) 72 422.33 P
+0 F
+-0.09 (uncompress) 99.03 422.33 P
+1 F
+-0.09 ( or) 150.11 422.33 P
+0 F
+-0.09 (gzip) 163.26 422.33 P
+1 F
+-0.09 ( process and reading from the piped result. It assumes that the specified file is compressed) 181.03 422.33 P
+0.25 (if the given file name ends by \325.Z\325 or \325.gz\325. In case the file name does not end so,) 72 410.33 P
+0 F
+0.25 (XpmReadFileToXpmImage) 402.33 410.33 P
+1 F
+0.25 ( first) 521.15 410.33 P
+0.01 (looks for a file of which the name is the given one followed by \325.Z\325 or \325.gz\325; then if such a file does not exist, it looks) 72 398.33 P
+-0.32 (for the given file \050assumed as not compressed\051. And if instead of a file name) 72 386.33 P
+0 F
+-0.32 (NULL) 375.27 386.33 P
+1 F
+-0.32 ( is passed to) 403.03 386.33 P
+0 F
+-0.32 (XpmReadFileToXp-) 452.83 386.33 P
+(mImage) 72 374.33 T
+1 F
+(, it reads from the standard input.) 106.97 374.33 T
+(To write out an) 72 342.33 T
+0 F
+(XpmImage) 135.85 342.33 T
+1 F
+( to an) 183.59 342.33 T
+0 F
+(XPM) 208.29 342.33 T
+1 F
+( file, use) 231.05 342.33 T
+0 F
+(XpmWriteFileFromXpmImage) 267.69 342.33 T
+1 F
+(int XpmWriteFileFromXpmImage\050) 72 324.33 T
+4 F
+(filename, image, shapeimage, attributes, infos) 213.3 324.33 T
+1 F
+(\051) 397.64 324.33 T
+(char) 108 312.33 T
+4 F
+(*filename;) 127.7 312.33 T
+1 F
+(XImage) 108 300.33 T
+4 F
+(*image;) 142.69 300.33 T
+1 F
+(XpmAttributes) 108 288.33 T
+4 F
+(*attributes;) 170.47 288.33 T
+1 F
+(XpmInfos *infos;) 108 276.33 T
+4 F
+(filename) 72 260.33 T
+1 F
+(Specifies the file name to use.) 171 260.33 T
+4 F
+(image) 72 244.33 T
+1 F
+(Specifies the image.) 171 244.33 T
+4 F
+(attributes) 72 228.33 T
+1 F
+(Specifies the location of a structure containing extensions \050or NULL\051.) 171 228.33 T
+4 F
+(infos) 72 212.33 T
+1 F
+(Specifies the location of a structure to get information from \050or NULL\051.) 171 212.33 T
+0.2 (The) 72 188.33 P
+0 F
+0.2 (XpmWriteFileFromXpmImage) 90.24 188.33 P
+1 F
+0.2 ( function writes an image out to a file in the) 224.03 188.33 P
+0 F
+0.2 (XPM) 403.63 188.33 P
+1 F
+0.2 ( format. If the file cannot be) 426.38 188.33 P
+-0.61 (opened, it returns) 72 176.33 P
+0 F
+-0.61 (XpmOpenFailed) 142.34 176.33 P
+1 F
+-0.61 (. If insufficient working storage is allocated, it returns) 213.42 176.33 P
+0 F
+-0.61 (XpmNoMemory) 425.83 176.33 P
+1 F
+-0.61 (. If no error) 495.77 176.33 P
+0.19 (occurs then it returns) 72 164.33 P
+0 F
+0.19 (XpmSuccess) 159.36 164.33 P
+1 F
+0.19 (. In addition if it is given an) 212.66 164.33 P
+0 F
+0.19 (XpmAttributes) 327.72 164.33 P
+1 F
+0.19 ( structure containing extensions and/) 392.67 164.33 P
+(or an) 72 152.33 T
+0 F
+(XpmInfos) 94.76 152.33 T
+1 F
+( struture containing information it will write them out too.) 137.51 152.33 T
+0.4 (In addition on systems which support such features if the given file name ends by \325.Z\325 or \325.gz\325 it is assumed to be a) 72 128.33 P
+0.3 (compressed file. Then,) 72 116.33 P
+0 F
+0.3 (XpmWriteFileFromXpmImage) 166.43 116.33 P
+1 F
+0.3 (writes to a piped) 303.02 116.33 P
+0 F
+0.3 (compress) 373.05 116.33 P
+1 F
+0.3 ( or) 413.02 116.33 P
+0 F
+0.3 (gzip) 426.94 116.33 P
+1 F
+0.3 ( process. And if instead) 444.71 116.33 P
+(of a file name) 72 104.33 T
+0 F
+(NULL) 129.73 104.33 T
+1 F
+(is passed to) 159.99 104.33 T
+0 F
+(XpmWriteFileFromXpmImage) 208.57 104.33 T
+1 F
+(, it writes to the standard output.) 342.36 104.33 T
+FMENDPAGE
+%%EndPage: "22" 22
+%%Page: "23" 22
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(23) 300.12 54.85 T
+(3.2.3) 72 684.84 T
+(Functions to deal with XPM data) 108 684.84 T
+1 10 Q
+(To create an) 72 660.18 T
+0 F
+(XpmImage) 123.89 660.18 T
+1 F
+( from an) 171.63 660.18 T
+0 F
+(XPM) 207.99 660.18 T
+1 F
+( data, use) 230.75 660.18 T
+0 F
+(XpmCreateXpmImageFromData) 270.72 660.18 T
+1 F
+(.) 412.82 660.18 T
+(int XpmCreateXpmImageFromData\050) 72 642.18 T
+4 F
+(data, image, attributes) 219.95 642.18 T
+1 F
+(\051) 310.46 642.18 T
+(char) 108 630.18 T
+4 F
+(**data;) 127.7 630.18 T
+1 F
+(XpmImage) 108 618.18 T
+4 F
+(*image;) 155.46 618.18 T
+1 F
+(XpmAttributes) 108 606.18 T
+4 F
+(*attributes;) 170.47 606.18 T
+(data) 72 590.18 T
+1 F
+(Specifies the location of the data.) 171 590.18 T
+4 F
+(image) 72 574.18 T
+1 F
+(Specifies the image structure location.) 171 574.18 T
+4 F
+(attributes) 72 558.18 T
+1 F
+-0.34 (Specifies the location of an) 171 558.18 P
+0 F
+-0.34 (XpmAttributes) 280.63 558.18 P
+1 F
+-0.34 ( structure to get and store information, or) 345.59 558.18 P
+0 F
+-0.34 (NULL) 509.74 558.18 P
+1 F
+-0.34 (.) 537.5 558.18 P
+0 F
+-0.08 (XpmCreateXpmImageFromData) 72 534.18 P
+1 F
+-0.08 ( works as) 214.1 534.18 P
+0 F
+-0.08 (XpmCreateXpmImageFromFile) 254.11 534.18 P
+1 F
+-0.08 ( does, excepts it reads from the given) 391.78 534.18 P
+-0.25 (data instead of a file, and it does not take any) 72 522.18 P
+0 F
+-0.25 (XpmInfos) 252.44 522.18 P
+1 F
+-0.25 ( structure in argument since a data cannot store any comment.) 295.2 522.18 P
+0 F
+(XpmCreateDataFromXpmImage) 72 498.18 T
+1 F
+( creates an) 214.1 498.18 T
+0 F
+(XPM) 258.78 498.18 T
+1 F
+( data from an) 281.54 498.18 T
+0 F
+(XmImage) 337.04 498.18 T
+1 F
+(.) 379.23 498.18 T
+(int XpmCreateDataFromXpmImage\050) 72 480.18 T
+4 F
+(data_return, image, attributes) 219.95 480.18 T
+1 F
+(\051) 340.44 480.18 T
+(char) 108 468.18 T
+4 F
+(***data_return;) 127.7 468.18 T
+1 F
+(XxpmImage) 108 456.18 T
+4 F
+(*image;) 160.46 456.18 T
+1 F
+(XpmAttributes) 108 444.18 T
+4 F
+(*attributes;) 170.47 444.18 T
+(data_return) 72 428.18 T
+1 F
+(Returns the data which is created.) 171 428.18 T
+4 F
+(image) 72 412.18 T
+1 F
+(Specifies the image.) 171 412.18 T
+4 F
+(attributes) 72 396.18 T
+1 F
+(Specifies the location of a structure to get information.) 171 396.18 T
+-0.15 (The) 72 372.18 P
+0 F
+-0.15 (XpmCreateDataFromXpmImage) 89.89 372.18 P
+1 F
+-0.15 ( function exactly works as) 231.99 372.18 P
+0 F
+-0.15 (XpmWriteFileFromXpmImage) 338.66 372.18 P
+1 F
+-0.15 ( does and returns) 472.45 372.18 P
+0.08 (the same way. It just writes to a single block malloc\325ed data instead of to a file. It is the caller\325s responsibility to free) 72 360.18 P
+0.34 (the data, using) 72 348.18 P
+0 F
+0.34 (XpmFree) 133.54 348.18 P
+1 F
+0.34 ( when finished. Of course this function does not take any) 174.06 348.18 P
+0 F
+0.34 (XpmInfos) 408.22 348.18 P
+1 F
+0.34 ( structure in argument) 450.98 348.18 P
+(since a data cannot store any comment.) 72 336.18 T
+0 12 Q
+(3.2.4) 72 292.85 T
+(Functions to deal with XPM buffers) 108 292.85 T
+1 10 Q
+(To create an) 72 268.18 T
+0 F
+(XpmImage) 123.89 268.18 T
+1 F
+( from an) 171.63 268.18 T
+0 F
+(XPM) 207.99 268.18 T
+1 F
+( buffer, use) 230.75 268.18 T
+0 F
+(XpmCreateXpmImageFromBuffer) 278.49 268.18 T
+1 F
+(.) 427.8 268.18 T
+(int XpmCreateXpmImageFromBuffer\050) 72 250.18 T
+4 F
+(buffer, image, attributes, infos) 227.16 250.18 T
+1 F
+(\051) 348.22 250.18 T
+(char) 108 238.18 T
+4 F
+(*buffer;) 127.7 238.18 T
+1 F
+(XpmImage) 108 226.18 T
+4 F
+(*image;) 155.46 226.18 T
+1 F
+(XpmAttributes) 108 214.18 T
+4 F
+(*attributes;) 170.47 214.18 T
+1 F
+(XpmInfos) 108 202.18 T
+4 F
+(*infos;) 151.03 202.18 T
+(buffer) 72 186.18 T
+1 F
+(Specifies the location of the buffer.) 171 186.18 T
+4 F
+(image) 72 170.18 T
+1 F
+(Specifies the image structure location.) 171 170.18 T
+4 F
+(attributes) 72 154.18 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL) 171 154.18 T
+0 F
+(\051) 469.12 154.18 T
+1 F
+(.) 472.44 154.18 T
+4 F
+(infos) 72 138.18 T
+1 F
+(Specifies the location of a structure to store possible information \050or NULL) 171 138.18 T
+0 F
+(\051) 472.73 138.18 T
+1 F
+(.) 476.06 138.18 T
+-0.3 (The) 72 114.18 P
+0 F
+-0.3 (XpmCreateXpmImageFromBuffer) 89.74 114.18 P
+1 F
+-0.3 ( works the same way as) 239.06 114.18 P
+0 F
+-0.3 (XpmReadFileToXpmImage) 334.41 114.18 P
+1 F
+-0.3 (, it just reads the buff-) 453.23 114.18 P
+FMENDPAGE
+%%EndPage: "23" 23
+%%Page: "24" 23
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(24) 300 56.01 T
+1 10 Q
+-0.48 (er instead of the file. Be aware that the feature provided on some systems by) 72 686.33 P
+0 F
+-0.48 (XpmReadFileToXpmImage) 372.93 686.33 P
+1 F
+-0.48 (to deal with) 493.76 686.33 P
+(compressed files is not available here.) 72 674.33 T
+(To create an) 72 642.33 T
+0 F
+(XPM) 123.89 642.33 T
+1 F
+( buffer from an) 146.65 642.33 T
+0 F
+(XpmImage) 209.92 642.33 T
+1 F
+(, use) 257.67 642.33 T
+0 F
+(XpmCreateBufferFromXpmImage) 278.49 642.33 T
+1 F
+(.) 427.8 642.33 T
+(int XpmCreateBufferFromXpmImage\050) 72 624.33 T
+4 F
+(buffer_return, image, attributes) 227.16 624.33 T
+1 F
+(\051) 353.77 624.33 T
+(char) 108 612.33 T
+4 F
+(**buffer_return;) 127.7 612.33 T
+1 F
+(XpmImage) 108 600.33 T
+4 F
+(*image;) 155.46 600.33 T
+1 F
+(XpmInfos) 108 588.33 T
+4 F
+(*infos;) 151.03 588.33 T
+(buffer_return) 72 572.33 T
+1 F
+(Returns the buffer which is created.) 171 572.33 T
+4 F
+(image) 72 556.33 T
+1 F
+(Specifies the image.) 171 556.33 T
+4 F
+(attributes) 72 540.33 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 540.33 T
+4 F
+(infos) 72 524.33 T
+1 F
+(Specifies the location of a structure to get possible information \050or NULL) 171 524.33 T
+0 F
+(\051) 465.52 524.33 T
+1 F
+(.) 468.85 524.33 T
+1.25 (The) 72 500.33 P
+0 F
+1.25 (XpmCreateBufferFromXpmImage) 91.29 500.33 P
+1 F
+1.25 ( works as) 240.61 500.33 P
+0 F
+1.25 (XpmWriteFileFromXpmImage) 284.61 500.33 P
+1 F
+1.25 (, it just writes to a malloc\325ed) 418.4 500.33 P
+(buffer instead of to a file. The caller should free the buffer using) 72 488.33 T
+0 F
+(XpmFree) 331.79 488.33 T
+1 F
+( when finished.) 372.3 488.33 T
+0 12 Q
+(3.2.5) 72 445 T
+(Functions to deal with X images) 108 445 T
+1 10 Q
+(To create an) 72 420.33 T
+0 F
+(XImage) 123.89 420.33 T
+1 F
+( from an) 157.75 420.33 T
+0 F
+(XpmImage) 194.11 420.33 T
+1 F
+(, use) 241.86 420.33 T
+0 F
+(XpmCreateImageFromXpmImage) 262.67 420.33 T
+1 F
+(.) 410.88 420.33 T
+(int XpmCreateImageFromXpmImage\050) 72 402.33 T
+4 F
+(display, image, image_return, shapeimage_return, attributes) 226.05 402.33 T
+1 F
+(\051) 469.8 402.33 T
+(Display) 108 390.33 T
+4 F
+(*display;) 141.59 390.33 T
+1 F
+(XpmImage) 108 378.33 T
+4 F
+(*image;) 155.46 378.33 T
+1 F
+(XImage) 108 366.33 T
+4 F
+(*image_return;) 142.69 366.33 T
+1 F
+(XImage) 108 354.33 T
+4 F
+(*shapeimage_return;) 142.69 354.33 T
+1 F
+(XpmAttributes) 108 342.33 T
+4 F
+(*attributes;) 170.47 342.33 T
+(display) 72 326.33 T
+1 F
+(Specifies the connection to the X server.) 171 326.33 T
+4 F
+(image) 72 310.33 T
+1 F
+(Specifies the) 171 310.33 T
+0 F
+(XpmImage) 224.85 310.33 T
+1 F
+(.) 272.59 310.33 T
+4 F
+(image_return) 72 294.33 T
+1 F
+(Returns the image which is created.) 171 294.33 T
+4 F
+(shapeimage_return) 72 278.33 T
+1 F
+(Returns the shape mask image which is created if any.) 171 278.33 T
+4 F
+(attributes) 72 262.33 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 262.33 T
+0.05 (From the given) 72 238.33 P
+0 F
+0.05 (XpmImage) 135.73 238.33 P
+1 F
+0.05 ( and) 183.47 238.33 P
+0 F
+0.05 (XpmAttributes) 203 238.33 P
+1 F
+0.05 ( if not) 267.95 238.33 P
+0 F
+0.05 (NULL) 294.48 238.33 P
+1 F
+0.05 (,) 322.25 238.33 P
+0 F
+0.05 (XpmCreateImageFromXpmImage) 327.3 238.33 P
+1 F
+0.05 ( allocates colors) 475.5 238.33 P
+(and creates X images following the same mechanism as) 72 226.33 T
+0 F
+(XpmReadFileToImage) 297.67 226.33 T
+1 F
+(.) 395.38 226.33 T
+(To create an) 72 194.33 T
+0 F
+(XpmImage) 123.89 194.33 T
+1 F
+( from an) 171.63 194.33 T
+0 F
+(XImage) 207.99 194.33 T
+1 F
+(, use) 241.86 194.33 T
+0 F
+(XpmCreateXpmImageFromImage) 262.67 194.33 T
+1 F
+(.) 410.88 194.33 T
+(int XpmCreateXpmImageFromImage\050) 72 176.33 T
+4 F
+(display, image, shapeimage, xpmimage, attributes) 226.05 176.33 T
+1 F
+(\051) 426.48 176.33 T
+(Display) 108 164.33 T
+4 F
+(*display;) 141.59 164.33 T
+1 F
+(XImage) 108 152.33 T
+4 F
+(*image;) 142.69 152.33 T
+1 F
+(XImage) 108 140.33 T
+4 F
+(*shapeimage;) 142.69 140.33 T
+1 F
+(XpmImage) 108 128.33 T
+4 F
+(*xpmimage) 155.46 128.33 T
+1 F
+(XpmAttributes) 108 116.33 T
+4 F
+(*attributes;) 170.47 116.33 T
+FMENDPAGE
+%%EndPage: "24" 24
+%%Page: "25" 24
+612 792 0 FMBEGINPAGE
+540.11 719.92 72.11 719.92 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261.11 728.92 369.11 737.92 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 288.05 731.25 T
+540.11 70.84 72.11 70.84 2 L
+N
+0 12 Q
+(25) 300.12 54.85 T
+4 10 Q
+(display) 72 686.18 T
+1 F
+(Specifies the connection to the X server.) 171 686.18 T
+4 F
+(image) 72 670.18 T
+1 F
+(Specifies the image which is created.) 171 670.18 T
+4 F
+(shapeimage) 72 654.18 T
+1 F
+(Specifies the shape mask image which is created if any.) 171 654.18 T
+4 F
+(xpmimage) 72 638.18 T
+1 F
+(Specifies the location of an) 171 638.18 T
+0 F
+(XpmImage) 282.31 638.18 T
+1 F
+(structure.) 332.55 638.18 T
+4 F
+(attributes) 72 622.18 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 622.18 T
+-0.51 (From the given X images and) 72 598.18 P
+0 F
+-0.51 (XpmAttributes) 189.96 598.18 P
+1 F
+-0.51 ( if not) 254.92 598.18 P
+0 F
+-0.51 (NULL) 279.76 598.18 P
+1 F
+-0.51 (,) 307.52 598.18 P
+0 F
+-0.51 (XpmCreateXpmImageFromImage) 312.01 598.18 P
+1 F
+-0.51 ( creates an) 460.22 598.18 P
+0 F
+-0.51 (XpmIm-) 503.36 598.18 P
+(age) 72 586.18 T
+1 F
+( following the same mechanism as) 86.43 586.18 T
+0 F
+(XpmWriteFileFromImage) 226.9 586.18 T
+1 F
+(.) 339.58 586.18 T
+0 12 Q
+(3.2.6) 72 542.84 T
+(Functions to deal with X pixmaps) 108 542.84 T
+1 10 Q
+-0.25 (To create a) 72 518.18 P
+0 F
+-0.25 (Pixmap) 118.13 518.18 P
+1 F
+-0.25 (with its possible related shapemask from an) 153.13 518.18 P
+0 F
+-0.25 (XpmImage) 328.73 518.18 P
+1 F
+-0.25 (, use) 376.47 518.18 P
+0 F
+-0.25 (XpmCreatePixmapFromXpmIm-) 396.78 518.18 P
+(age) 72 506.18 T
+1 F
+(.) 86.43 506.18 T
+(int XpmCreatePixmapFromXpmImage\050) 72 488.18 T
+4 F
+(display, d, image, pixmap_return, shapemask_return, attributes) 231.62 488.18 T
+1 F
+(\051) 486.47 488.18 T
+(Display) 108 476.18 T
+4 F
+(*display;) 141.59 476.18 T
+1 F
+(Drawable d;) 108 464.18 T
+(XpmImage) 108 452.18 T
+4 F
+(*image;) 155.46 452.18 T
+1 F
+(Pixmap) 108 440.18 T
+4 F
+(*pixmap_return;) 141.04 440.18 T
+1 F
+(Pixmap) 108 428.18 T
+4 F
+(*shapemask_return;) 141.04 428.18 T
+1 F
+(XpmAttributes) 108 416.18 T
+4 F
+(*attributes;) 170.47 416.18 T
+(display) 72 400.18 T
+1 F
+(Specifies the connection to the X server.) 171 400.18 T
+4 F
+(d) 72 384.18 T
+1 F
+(Specifies which screen the pixmap is created on.) 171 384.18 T
+4 F
+(image) 72 368.18 T
+1 F
+(Specifies the) 171 368.18 T
+0 F
+(XpmImage) 224.85 368.18 T
+1 F
+(.) 272.59 368.18 T
+4 F
+(pixmap_return) 72 352.18 T
+1 F
+(Returns the pixmap which is created.) 171 352.18 T
+4 F
+(shapemask_return) 72 336.18 T
+1 F
+(Returns the shape mask which is created if any.) 171 336.18 T
+4 F
+(attributes) 72 320.18 T
+1 F
+(Specifies the location of a structure to get and store information \050or NULL\051.) 171 320.18 T
+0 F
+0.35 (XpmCreatePixmapFromXpmImage) 72 296.18 P
+1 F
+0.35 ( creates X images calling) 226.32 296.18 P
+0 F
+0.35 (XpmCreateImageFromXpmImage) 331.05 296.18 P
+1 F
+0.35 ( with the given) 479.26 296.18 P
+0 F
+-0.07 (XpmImage) 72 284.18 P
+1 F
+-0.07 ( and) 119.74 284.18 P
+0 F
+-0.07 (XpmAttributes) 139.03 284.18 P
+1 F
+-0.07 (, then it creates the related pixmaps which are returned to) 203.98 284.18 P
+4 F
+-0.07 (pixmap_return) 434.66 284.18 P
+1 F
+-0.07 ( and) 494.07 284.18 P
+4 F
+-0.07 (shape-) 513.35 284.18 P
+(mask_return) 72 272.18 T
+1 F
+( using) 122.52 272.18 T
+0 F
+(XPutImage) 149.18 272.18 T
+1 F
+(. Finally it destroys the X images with) 198.03 272.18 T
+0 F
+(XDestroyImage) 353.23 272.18 T
+1 F
+(.) 420.39 272.18 T
+(To create an) 72 240.18 T
+0 F
+(XpmImage) 123.89 240.18 T
+1 F
+( from a) 171.63 240.18 T
+0 F
+(Pixmp) 203 240.18 T
+1 F
+(, use) 230.76 240.18 T
+0 F
+(XpmCreateXpmImageFromPixmap) 251.58 240.18 T
+1 F
+(.) 405.91 240.18 T
+(int XpmCreateXpmImageFromPixmap\050) 72 222.18 T
+4 F
+(display, pixmap, shapemask, xpmimage, attributes) 231.62 222.18 T
+1 F
+(\051) 433.16 222.18 T
+(Display) 108 210.18 T
+4 F
+(*display;) 141.59 210.18 T
+1 F
+(Pixmap) 108 198.18 T
+4 F
+(*pixmap;) 141.04 198.18 T
+1 F
+(Pixmap) 108 186.18 T
+4 F
+(*shapemask;) 141.04 186.18 T
+1 F
+(XpmImage) 108 174.18 T
+4 F
+(*xpmimage) 155.46 174.18 T
+1 F
+(XpmAttributes) 108 162.18 T
+4 F
+(*attributes;) 170.47 162.18 T
+(display) 72 146.18 T
+1 F
+(Specifies the connection to the X server.) 171 146.18 T
+4 F
+(pixmap) 72 130.18 T
+1 F
+(Specifies the pixmap.) 171 130.18 T
+4 F
+(shapemask) 72 114.18 T
+1 F
+(Specifies the shape mask pixmap.) 171 114.18 T
+FMENDPAGE
+%%EndPage: "25" 25
+%%Page: "26" 25
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+540 72 72 72 2 L
+N
+0 12 Q
+(26) 300 56.01 T
+4 10 Q
+(xpmimage) 72 686.33 T
+1 F
+(Specifies the location of an) 171 686.33 T
+0 F
+(XpmImage) 282.31 686.33 T
+1 F
+(structure.) 332.55 686.33 T
+4 F
+(attributes) 72 670.33 T
+1 F
+(Specifies the location of a structure containing information \050or NULL\051.) 171 670.33 T
+0 (From the given pixmaps and) 72 646.33 P
+0 F
+0 (XpmAttributes) 188.87 646.33 P
+1 F
+0 ( if not) 253.82 646.33 P
+0 F
+0 (NULL) 280.2 646.33 P
+1 F
+0 (,) 307.96 646.33 P
+0 F
+0 (XpmCreateXpmImageFromPixmap) 312.96 646.33 P
+1 F
+0 (gets the related X) 469.78 646.33 P
+0.73 (images by calling) 72 634.33 P
+0 F
+0.73 (XGetImage) 147.19 634.33 P
+1 F
+0.73 (, then it gives them to) 196.59 634.33 P
+0 F
+0.73 (XpmCreateXpmImageFromImage) 290.08 634.33 P
+1 F
+0.73 ( to create an) 438.29 634.33 P
+0 F
+0.73 (XpmImage) 492.26 634.33 P
+1 F
+(which is returned to) 72 622.33 T
+4 F
+(xpmimage) 154.16 622.33 T
+1 F
+(. Finally it destroys the created X images using) 195.24 622.33 T
+0 F
+(XDestroyImage) 385.68 622.33 T
+1 F
+(.) 452.84 622.33 T
+0 12 Q
+(3.2.7) 72 579 T
+(Miscellaneous functions) 108 579 T
+1 10 Q
+(To free possible data stored into an) 72 554.33 T
+0 F
+(XpmImage) 214.95 554.33 T
+1 F
+(structure use) 265.19 554.33 T
+0 F
+(XpmFreeXpmImage) 318.48 554.33 T
+1 F
+(.) 406.75 554.33 T
+(int XpmFreeXpmImage\050) 72 536.33 T
+4 F
+(image) 171.1 536.33 T
+1 F
+(\051) 195.52 536.33 T
+(XpmImage) 108 524.33 T
+4 F
+(*image;) 155.46 524.33 T
+(image) 72 508.33 T
+1 F
+(Specifies the structure to free.) 98.93 508.33 T
+(The) 72 484.33 T
+0 F
+(XpmFreeXpmImage) 90.04 484.33 T
+1 F
+(frees the structure members which are not NULL, but not the structure itself.) 180.8 484.33 T
+(To free possible data stored into an) 72 452.33 T
+0 F
+(XpmInfos) 214.95 452.33 T
+1 F
+(structure use) 260.21 452.33 T
+0 F
+(XpmFreeXpmInfos) 313.5 452.33 T
+1 F
+(.) 396.77 452.33 T
+(int XpmFreeXpmInfos\050) 72 434.33 T
+4 F
+(infos) 166.66 434.33 T
+1 F
+(\051) 186.1 434.33 T
+(XpmInfos) 108 422.33 T
+4 F
+(*infos;) 148.53 422.33 T
+(iinfos) 72 406.33 T
+1 F
+(Specifies the structure to free.) 96.72 406.33 T
+(The) 72 382.33 T
+0 F
+(XpmFreeXpmInfos) 90.04 382.33 T
+1 F
+(frees the structure members which are not NULL, but not the structure itself.) 175.81 382.33 T
+FMENDPAGE
+%%EndPage: "26" 26
+%%Page: "25" 26
+612 792 0 FMBEGINPAGE
+540 720 72 720 2 L
+0.25 H
+2 Z
+0 X
+0 K
+N
+261 729 369 738 R
+7 X
+V
+4 10 Q
+0 X
+(XPM Manual) 287.93 731.33 T
+225 639 396 657 R
+7 X
+V
+1 18 Q
+0 X
+(Index of Functions) 242.54 645 T
+540 72 72 72 2 L
+N
+1 12 Q
+(XpmAttributesSize 19) 72 568 T
+(XpmCreateBufferFromImage 17) 72 549 T
+(XpmCreateBufferFromPixmap 18) 72 530 T
+(XpmCreateBufferFromXpmImage 24) 72 511 T
+(XpmCreateDataFromImage 15) 72 492 T
+(XpmCreateDataFromPixmap 15) 72 473 T
+(XpmCreateDataFromXpmImage 23) 72 454 T
+(XpmCreateImageFromBuffer 16) 72 435 T
+(XpmCreateImageFromData 14) 72 416 T
+(XpmCreateImageFromXpmImage 24) 72 397 T
+(XpmCreatePixmapFromBuffer 17) 72 378 T
+(XpmCreatePixmapFromData 14) 72 359 T
+(XpmCreatePixmapFromXpmImage 25) 72 340 T
+(XpmCreateXpmImageFromBuffer 23) 72 321 T
+(XpmCreateXpmImageFromData 23) 72 302 T
+(XpmCreateXpmImageFromImage 24) 72 283 T
+(XpmCreateXpmImageFromPixmap 25) 72 264 T
+(XpmFree 19) 72 245 T
+(XpmFreeAttributes 19) 72 226 T
+(XpmFreeExtensions 19) 72 207 T
+(XpmFreeXpmImage 26) 72 188 T
+(XpmFreeXpmInfos 26) 72 169 T
+(XpmGetErrorString 19) 72 150 T
+(XpmReadFileToBuffer 18) 72 131 T
+(XpmReadFileToData 16) 72 112 T
+(XpmReadFileToImage 11) 315 568 T
+(XpmReadFileToPixmap 12) 315 549 T
+(XpmReadFileToXpmImage 22) 315 530 T
+(XpmWriteFileFromBuffer 18) 315 511 T
+(XpmWriteFileFromData 16) 315 492 T
+(XpmWriteFileFromImage 13) 315 473 T
+(XpmWriteFileFromPixmap 13) 315 454 T
+(XpmWriteFileFromXpmImage 22) 315 435 T
+FMENDPAGE
+%%EndPage: "25" 27
+%%Trailer
+%%BoundingBox: 0 0 612 792
+%%Pages: 26 1
+%%DocumentFonts: Times-Bold
+%%+ Times-Roman
+%%+ Helvetica
+%%+ Courier
+%%+ Times-Italic
diff --git a/vendor/x11iraf/xpm/hashtable.c b/vendor/x11iraf/xpm/hashtable.c
new file mode 100644
index 00000000..56452955
--- /dev/null
+++ b/vendor/x11iraf/xpm/hashtable.c
@@ -0,0 +1,208 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* hashtable.c: *
+* *
+* XPM library *
+* *
+* Developed by Arnaud Le Hors *
+* this originaly comes from Colas Nahaboo as a part of Wool *
+* *
+\*****************************************************************************/
+
+#include "xpmP.h"
+
+LFUNC(AtomMake, xpmHashAtom, (char *name, void *data));
+LFUNC(HashTableGrows, int, (xpmHashTable * table));
+
+static xpmHashAtom
+AtomMake(name, data) /* makes an atom */
+ char *name; /* WARNING: is just pointed to */
+ void *data;
+{
+ 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)
+ *
+ */
+
+xpmHashAtom *
+xpmHashSlot(table, s)
+ xpmHashTable *table;
+ char *s;
+{
+ 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;
+}
+
+static int
+HashTableGrows(table)
+ xpmHashTable *table;
+{
+ 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.
+ */
+
+int
+xpmHashIntern(table, tag, data)
+ xpmHashTable *table;
+ char *tag;
+ void *data;
+{
+ 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
+ */
+
+int
+xpmHashTableInit(table)
+ xpmHashTable *table;
+{
+ 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
+ */
+
+void
+xpmHashTableFree(table)
+ xpmHashTable *table;
+{
+ xpmHashAtom *p;
+ xpmHashAtom *atomTable = table->atomTable;
+
+ for (p = atomTable + table->size; p > atomTable;)
+ if (*--p)
+ XpmFree(*p);
+ XpmFree(atomTable);
+ table->atomTable = NULL;
+}
diff --git a/vendor/x11iraf/xpm/icons/NeXT.xpm b/vendor/x11iraf/xpm/icons/NeXT.xpm
new file mode 100644
index 00000000..02737d9c
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/NeXT.xpm
@@ -0,0 +1,79 @@
+/* XPM2 C */
+static char * next[] = {
+/* next pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 8 1 ",
+"0 c DimGrey m white s s_DimGrey ",
+"+ c black m black s s_black ",
+"- c black m black s s_black ",
+". c black m black s s_black ",
+"y c yellow m white s s_yellow ",
+"g c green m white s s_green ",
+"r c red m white s s_red ",
+"o c orange m white s s_orange ",
+/* pixels */
+"00000000000000000000000000000000000000000++000000000000000000000",
+"000000000000000000000000000000000000000++++000000000000000000000",
+"0000000000000000000000000000000000000+++++++00000000000000000000",
+"00000000000000000000000000000000000+++++++++00000000000000000000",
+"000000000000000000000000000000000++++++++++++0000000000000000000",
+"0000000000000000000000000000000++++yyyyyy++++0000000000000000000",
+"00000000000000000000000000000++++yyyyyyyyyy+++000000000000000000",
+"000000000000000000000000000+++++yyyy++++yyyy++000000000000000000",
+"0000000000000000000000000+++++++yy++++++++yy+++00000000000000000",
+"00000000000000000000000++++++++yyy+++++++yyyy++00000000000000000",
+"000000000000000000000+++ooo++++yy++++++yyyy+++++0000000000000000",
+"0000000000000000000+++++ooo++++yy++++yyyy+++++++0000000000000000",
+"00000000000000000++++++++ooo+++yy++yyyy++++yy++++000000000000000",
+"000000000000000++++++++++ooo+++yyyyyy++++++yy++++000000000000000",
+"0000000000000+++++++++++++ooo++yyyy+++++++yyy+++++00000000000000",
+"00000000000+++++++++++++++ooo+++yy++++++++yy++++++00000000000000",
+"00000000000++oo++++++++++++ooo++yyyy++++yyyy+++++++0000000000000",
+"000000000000+oooooo++++++++ooo+++yyyyyyyyyy++++++++0000000000000",
+"0000000000-0++ooooooooo+++++ooo++++yyyyyy++++++rr+++000000000000",
+"0000000000-00+ooooooooooooo+ooo++++++++++++++rrrrr++000000000000",
+"0000000000--0++ooo+ooooooooooooo+++++++++++rrrrrrr+++00000000000",
+"000000000---00+ooo+++++ooooooooo+++++++++rrrrrrr+++++00000000000",
+"000000000----0++ooo++++++++oooooo++++++rrrrrrr++++++++0000000000",
+"000000000----00+ooo++++++++++++oo++++rrrrrrrrr++++++++0000000000",
+"00000000------0++ooo+++++++++++++++++rrrrr+rrr+++++++++000000000",
+"00000000------00+ooo++++++++++++++++++rr+++rrrr++++++++000000000",
+"00000000-------0++ooo+++++++++++gg++++++++++rrr+++++++++00000000",
+"0000000--------00+ooo+++++++++++ggg++++++++++rrr++++++++00000000",
+"0000000---------0++ooo+++++++++ggg+++++++++++rrr+++++++++0000000",
+"0000000---------00+ooo+++++++++ggg++++++++++++rrr++++++++0000000",
+"000000-----------0+++++++++++++ggg++++++++++++rrr+++++++++000000",
+"000000-----------00+++g+++++++ggg++++++++++++++rrr++++++++000000",
+"0000000-----------0++ggggg++++ggg++++++++++++++rrr++++++00000000",
+"0000000-----------00+gggggggg+ggg+++++++++++++++rrr+++000.000000",
+"00000000-----------0+++ggggggggg++++++++++++++++r+++000...000000",
+"00000000-----------00+++++ggggggggg+++++++++++++++000.....000000",
+"000000000-----------0++++++++ggggggggg++++++++++000......0000000",
+"000000000-----------00++++++ggg+gggggggg++++++000........0000000",
+"0000000000-----------0++++++ggg++++ggggg++++000..........0000000",
+"0000000000-----------00+++++ggg+++++++g+++000...........00000000",
+"00000000000-----------0++++ggg++++++++++000.............00000000",
+"00000000000-----------00+++ggg++++++++000...............00000000",
+"000000000000-----------0+++ggg++++++000................000000000",
+"000000000000-----------00+ggg+++++000..................000000000",
+"0000000000000-----------0++gg+++000....................000000000",
+"0000000000000-----------00++++000.....................0000000000",
+"00000000000000-----------0++000.......................0000000000",
+"00000000000000-----------0000.........................0000000000",
+"000000000000000-----------0..........................00000000000",
+"000000000000000-----------0........................0000000000000",
+"0000000000000000---------00......................000000000000000",
+"0000000000000000---------0.....................00000000000000000",
+"00000000000000000--------0...................0000000000000000000",
+"00000000000000000-------00.................000000000000000000000",
+"000000000000000000------0................00000000000000000000000",
+"000000000000000000------0..............0000000000000000000000000",
+"0000000000000000000----00............000000000000000000000000000",
+"0000000000000000000----0...........00000000000000000000000000000",
+"00000000000000000000---0.........0000000000000000000000000000000",
+"00000000000000000000--00.......000000000000000000000000000000000",
+"000000000000000000000-0......00000000000000000000000000000000000",
+"000000000000000000000-0....0000000000000000000000000000000000000",
+"00000000000000000000000..000000000000000000000000000000000000000",
+"0000000000000000000000000000000000000000000000000000000000000000"
+} ;
diff --git a/vendor/x11iraf/xpm/icons/Plaid.xpm b/vendor/x11iraf/xpm/icons/Plaid.xpm
new file mode 100644
index 00000000..1ce89cf0
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/Plaid.xpm
@@ -0,0 +1,33 @@
+/* XPM2 C */
+static char * plaid[] = {
+/* plaid pixmap
+ * width height ncolors chars_per_pixel */
+"22 22 4 2 ",
+" c red m white s s_red ",
+"Y c yellow m black s s_yellow ",
+"+ c yellow m white s s_yellow ",
+"x c black m black s s_black ",
+/* pixels */
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+"Y Y Y Y Y x Y Y Y Y Y + x + x + x + x + x + ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x ",
+"x x x x x x x x x x x x x x x x x x x x x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/arrdown.xpm b/vendor/x11iraf/xpm/icons/arrdown.xpm
new file mode 100644
index 00000000..04a96a57
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/arrdown.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * arrdown[] = {
+/* arrdown pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . ",
+" . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/arrleft.xpm b/vendor/x11iraf/xpm/icons/arrleft.xpm
new file mode 100644
index 00000000..fb8a575b
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/arrleft.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * arrleft[] = {
+/* arrleft pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+". . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/arrne.xpm b/vendor/x11iraf/xpm/icons/arrne.xpm
new file mode 100644
index 00000000..83a77a9c
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/arrne.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * arrne[] = {
+/* arrne pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . ",
+" . . . . . . . ",
+" . . . . . . ",
+" . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . ",
+" . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/arrright.xpm b/vendor/x11iraf/xpm/icons/arrright.xpm
new file mode 100644
index 00000000..ed372986
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/arrright.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * arrright[] = {
+/* arrright pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . . ",
+" . . ",
+" . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/arrup.xpm b/vendor/x11iraf/xpm/icons/arrup.xpm
new file mode 100644
index 00000000..62ad1268
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/arrup.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * arrup[] = {
+/* arrup pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/bee.xpm b/vendor/x11iraf/xpm/icons/bee.xpm
new file mode 100644
index 00000000..4aee9132
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/bee.xpm
@@ -0,0 +1,50 @@
+/* XPM2 C */
+static char * bee[] = {
+/* bee pixmap
+ * width height ncolors chars_per_pixel */
+"44 39 4 2 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000 s s_#000 ",
+"X c #A8A8A8 s s_#A8A8A8 ",
+"o c #545454 s s_#545454 ",
+/* pixels */
+" . . . . . . ",
+" . . . X . . . . X X . . . ",
+" . . X X X . . X X X X X X X . . ",
+" . . . X X X X X . . X X X X X X X X . . ",
+" . . X X . X X . . X X X X X X X X X X . . ",
+" . . X X . X X X . X X X X X X X X . X X X . . ",
+" . . X X . X X . X X X X X X X . . X X X X . ",
+" . . X X X . X . . X X X X X X . X X X X X X . ",
+" . X X . X X . X X X X X X . X X X X X X X . . ",
+" . . X X . X . . X X X X X X . X X X X X X X . ",
+" . . X X . X X . X X X X X . . X X X X X X X . . ",
+" . . . . X X . X . X X X X X . X X X X X X X X X . . ",
+" . . X . X X . X X X . . X X X X X X X X X X . ",
+". . . . . . X . X o X X X . X X X X X X X X X X X . ",
+" . . . . . X X X o X . . X X X X X X X X X X . . . ",
+" . . . . . . X X o o X X X X X X X X X X . . . ",
+" . . . . . . X X o X X X X X X X . . . . . . ",
+" . . . o . . . . . . . . o . ",
+" . o . . . . . . o o o . . o . . o . ",
+" . . o . . o o . . o o . . . . . ",
+" . . X . . . . o . . o o o . . . . ",
+" . . X . . o . o o . . o o o . . o . . . ",
+" . . . o . o o o . . o o . . o o o . . . ",
+". . . o . o o o . . . o . . o o o . . . ",
+". . . o . o o o . o . o . . o o o . . . ",
+" . . . o . o o o . o . o . . o o o . . . . ",
+" . . . . . . . o . o o o . o . o . . o o o . . . . . ",
+" . . . o . o o o o . o . o . . o o o . . . . ",
+" . . . . . . . o . . o o o . o . o . . o o o . . . ",
+" . . o . o o o o o . . . o . . o o o . . . ",
+" . o o o o o o o o . . o o . . o o o . o ",
+" . o o o o o o . . o o o . . o o . . . ",
+" . o o o o . . . . o o o o . . . o . o o ",
+" . . . . . . . . . o . . . . . o o ",
+" . o o o . . . o o o . ",
+" . . . . . ",
+" . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/block.xpm b/vendor/x11iraf/xpm/icons/block.xpm
new file mode 100644
index 00000000..e08332b3
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/block.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * block[] = {
+/* block pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . ",
+" . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/bomb.xpm b/vendor/x11iraf/xpm/icons/bomb.xpm
new file mode 100644
index 00000000..68999d09
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/bomb.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * bomb[] = {
+/* bomb pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 1 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"* c #F00 s s_#F00 ",
+/* pixels */
+" * * * ",
+" ",
+" * * * ",
+" * * ",
+" * ** * ",
+" * * ",
+" * * ",
+" * ",
+" * ** ",
+" .... ",
+" .... ",
+" .... ",
+" ...... ",
+" .......... ",
+" ....... ... ",
+" .......... .. ",
+" ............ .. ",
+" .............. .. ",
+" ............... . ",
+" ................. .. ",
+" ................. .. ",
+" .................... ",
+" .................... ",
+" .................... ",
+" .................... ",
+" ... .............. ",
+" .................. ",
+" .... ........... ",
+" .............. ",
+" ............ ",
+" .......... ",
+" ...... "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/bull.xpm b/vendor/x11iraf/xpm/icons/bull.xpm
new file mode 100644
index 00000000..6d6e784d
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/bull.xpm
@@ -0,0 +1,31 @@
+/* XPM2 C */
+static char * bull[] = {
+/* bull pixmap
+ * width height ncolors chars_per_pixel */
+"60 20 4 1 ",
+" c white s s_white ",
+"+ c DarkSlateBlue s s_DarkSlateBlue ",
+"& c green s s_green ",
+"= c black s s_black ",
+/* pixels */
+"++++++++++++++++++++++++++++++++++++++++++++++&+&+++++++++++",
+"+ +++++++++++++ + +++++++++++++++&+&+&++++++++++",
+"+ ++++++++++++ + ++++++++++++++&+&+&+&&++++++++",
+"++ ++ ++++++++++++++ +++ ++++++++++ +++++",
+"++ +++ ++++++++++++++ +++ ++++++++++ ++&+&+&+&+&++ +++++",
+"++ +++ ++++++++++++++ +++ ++++++++++ +&+&+&+&+&+&+ +++++",
+"++ +++ ++++++++++++++ +++ ++++++++++ &+&+&+&+&+&+& +++++",
+"++ ++ +++ +++ +++ +++++++++& +&+&+&+&+&+&+ &++++",
+"++ +++ +++ +++ +++ ++++++++&+ &+&+&+&+&+&+& +&+++",
+"++ +++ ++++ +++ +++ +++ +++++++++& +&+&+&&&+&+&+ &&+++",
+"++ ++++ +++ +++ +++ +++ ++++++++++ &+&+&+&&+&&+& +&+++",
+"++ ++++ +++ +++ +++ +++ ++++++++++ +&++&&&&&&+&+ &++++",
+"++ ++++ +++ +++ +++ +++ ++++++++++ ++++++&&++&++ +++++",
+"++ +++ +++ ++ +++ +++ ++++++++++ ++++++&&+++++ +++++",
+"+ +++ +++ +++ ++++++++++ ++++&&&&&&+++ +++++",
+"+ +++++ + + +++++++++ +++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"============================================================",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"
+} ;
diff --git a/vendor/x11iraf/xpm/icons/circles.xpm b/vendor/x11iraf/xpm/icons/circles.xpm
new file mode 100644
index 00000000..a9eaac60
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/circles.xpm
@@ -0,0 +1,73 @@
+/* XPM2 C */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 2 1 ",
+" c #000000 s s_#000000 ",
+". c #FF0000 s s_#FF0000 ",
+/* pixels */
+" ",
+" . .. .. .. .. ",
+" . . ... ... . ",
+" . . .. .. . ",
+" . .. . . .. ",
+" . . .. ........... .. . ",
+" . . . .... .... . ",
+" . . .. .. . ",
+" . . ... ... . ",
+" . . . . . ",
+" . . .. ......... .. . ",
+" . . . .... .... . . ",
+" . . . .. . . . ",
+" . . .. .. . . ",
+" . . .. .. . . ",
+" . . . . . . ",
+" . . . ......... . . . ",
+" . . ... ... . . . ",
+" . . .. .. . . . ",
+" . . .. .. . . ",
+" . . . . . . ",
+" . . . . . . ",
+" . . . ....... . . . ",
+" . . . ... ... . . . ",
+" . . . .. .. . . . ",
+" . . . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . ",
+" . . . ....... . . . . ",
+" . . . .. .. . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . ..... . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" .. . . . . . . . . . ",
+" . . .. . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . ..... . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . .. .. . . . . ",
+" . . . . ....... . . . . ",
+" . . . . . . . . ",
+" . . . .. .. . . . . ",
+" . . . ... ... . . . . ",
+" . . . . ....... . . . . ",
+" . . . .. .. . . . ",
+" . . . .. .. . . . ",
+" . . . ... ... . . . ",
+" . . . .. ......... .. . . ",
+" . . . .. .. . . ",
+" . . . .. .. . . ",
+" . . . .... .... . . ",
+" . . . .. ......... .. . ",
+" . . . . . . ",
+" . . . ... ... . ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/city.xpm b/vendor/x11iraf/xpm/icons/city.xpm
new file mode 100644
index 00000000..ad50ee5f
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/city.xpm
@@ -0,0 +1,74 @@
+/* XPM2 C */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 3 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+"j c #e0e000 s s_#e0e000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . ",
+" . ",
+" ..... ... ",
+" .j... ... ",
+" ...j. ..... ",
+" ..... ..... ",
+" .j... .......... ",
+" ...j. . . . . ",
+" ..... . . . . .. ",
+" ..j.. .......... .. ",
+" ..... . .... . .. ",
+" .j... . .... . .. ",
+" ..... .... .......... ........... .. ",
+" ...j. . . ..... .... .... . .j. . .. .. ",
+" ..... .... .j. . .... .... ........... .. ",
+" ..... . . .j. . .......... . ..j.. . .. ",
+" . . .... ..... . ....... ........... .. ",
+" ..... . . .j... . ....... . .j. .j. ....",
+" ...j. .... .j... .... . . ........... . .",
+" ..... .... ...j. .... . . . .j. . . ....",
+" ..j.. .... ...j. .......... ........... . .",
+" .......... . . ..... .......... .. .j.. . ....",
+" ..... ... .... ..... .......... ........... ....",
+" ....... . .... ...j. .......... .. .j. . ....",
+" .j........ . . ...j. . .... . ........... . .",
+" ..... ... ....... ..... . .... . . . . .. ....",
+" ..j....... . . ...j.............. ........... .j..",
+" ....... . ....... ...j........ . . . .j.. .j. ....",
+" ...j. ... ......... ......j..... . . ........... ..j.",
+" .......... . . .j. .j............ . .j..j. .. ....",
+".. ...j... . ......... .j. ..... ....... .............. .",
+".. ..... ... ......... ......j.. ..........j... .j. .....",
+". ....... . .................j........................j.. .",
+".. ...j...... . .....j.......... ...... .... ..j.....",
+".. .j...................j...j.......... ................... .",
+" . ....... .... .......j................j. ..j. .......",
+".. ..... ....j...............j..j........ ..............j. ..",
+"..... ....................j.....j......... ....j... .j..j....",
+"..j...... ....................j...........................j. ..",
+".....j..... .... .j.....j..j........ ...j.. ......j....",
+" ..j..........j..........j...j...j......... ..........j..... .",
+".....j... ...... .....j.................. .......j.....",
+"..j........ .....................j.. ...................j.. .",
+" ..... .......j.... ...j.....j... .........j..... ..j.....",
+"...j.....................j................................j.. .",
+"................................................................",
+"................................................................",
+"................................................................"
+} ;
diff --git a/vendor/x11iraf/xpm/icons/crab.xpm b/vendor/x11iraf/xpm/icons/crab.xpm
new file mode 100644
index 00000000..814f5803
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/crab.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * crab[] = {
+/* crab pixmap
+ * width height ncolors chars_per_pixel */
+"28 28 6 2 ",
+". c SkyBlue m white s s_SkyBlue ",
+"x c orange m black s s_orange ",
+"* c #ff72c2 m black s s_#ff72c2 ",
+"+ c SteelBlue m white s s_SteelBlue ",
+"G c black m black s s_black ",
+"a c LightGrey m white s s_LightGrey ",
+/* pixels */
+". . . . . . * * * * . . . . . . . . . * * * * . . . . . ",
+". . . . + * x x * . . . . . . . . . . + * x x * . . . . ",
+". . . + * x x * . . . . . . . . . . . . + * x x * . . . ",
+". . + * x * . . . * . . . . . . . . . * . . + * x * . . ",
+". . + * x * . . + * . . . . . . . . + * . . + * x * . . ",
+". . + * x * . + * * . . . . . . . . + * * . + * x * . . ",
+". . + * x * + * * . . . . . . . . . . + * * + * x * . . ",
+". . + * x * * * . . . . . . . . . . . . + * * x x * . . ",
+". . . + * x * . . + * . . . . . . + * . . + * x * . . . ",
+". . . + * x . . + * . + * * . * * . + * . . + x * . . . ",
+". . . . + x . . + * . + * * . * * . + * . . + x . . . . ",
+". . . . + x . . . + * + * * * * * + * . . . + x . . . . ",
+". . . . + * x . . + * * * * * * * * * . . + x * . . . . ",
+". . . . . + * x * * * * x x x x x * * * * x * . . . . . ",
+". . . . + + + * * x x x x x x x x x x x x * . . . . . . ",
+". . + + * x x x x x x x x x x x x x x x x x x * x . . . ",
+". + * x x a + * * x x x x x x x x x x x * * a G * x * . ",
+"+ * x . . . + * * x x x x x x x x x x x * * G . . . x * ",
+". . . . . . + * * x x x x x x x x x x x * * . . . . . . ",
+". . . . . + * * x x x x x x x x x x x x x * * . . . . . ",
+". . . + * x x x * x x x x x x x x x x x * x x x * . . . ",
+". . + * x a a + * * x x x x x x x x x * * a a a x * . . ",
+". + * x G G G + * * x x x x x x x x x * * a G G G x * . ",
+". + * G . . . + * x * x x x x x x x * x * a G . . . * . ",
+". . . . . . + * x a * * * x x x * * * a x * G . . . . . ",
+". . . . . + * x a G a a * * * * * a a G a x * G . . . . ",
+". . . . . + x a G . G G a a a a a G G . G G x a G . . . ",
+". . . . . + x a G . . . G G G G G . . . . . x a G . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/crab45.xpm b/vendor/x11iraf/xpm/icons/crab45.xpm
new file mode 100644
index 00000000..59b2fb69
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/crab45.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * crab45[] = {
+/* crab45 pixmap
+ * width height ncolors chars_per_pixel */
+"28 28 6 2 ",
+". c SkyBlue s s_SkyBlue ",
+"x c orange s s_orange ",
+"* c #ff72c2 s s_#ff72c2 ",
+"+ c SteelBlue s s_SteelBlue ",
+"G c black s s_black ",
+"a c LightGrey s s_LightGrey ",
+/* pixels */
+". . . . . . . . . . * * * * * * * . . . . . . . . . . . ",
+". . . . . . . . * x x x x x x x * . . . . . . . . . . . ",
+". . . . . . . * * * * * * * x x * . . . . . . . . . . . ",
+". . . . . . . . . . . . . * x x x * . . . . . . . . . . ",
+". . . . . . . . . . * x x x x * x x . . . . . . . . . . ",
+". . . . . . . . + + * * * * * * * x x . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . * x x . . . . . * . . ",
+". . * . . . . . . . . . . . . . . . * x . . * * x x . . ",
+". * * . . + . . . . . . + + x x + * * x * * x x x + . . ",
+". x * . . + . . . . . . . . + x + * x x x x x + + . . . ",
+"* x * . * * . . . . . . + . + x * * x x x * * . . . . . ",
+"* x * . x * . . . . . + x + + x x x x x x * * . . * * * ",
+"* x * . x * . . + . + x x x x x x x x x x * * * * x x x ",
+"* x * * x * . . + . . + x x x x x x x x x * * x x x G G ",
+"* x x x x * . . x + + + x x x x x x x x x x x * * G G . ",
+"* x x x * * . . x x x x x x x x x x x x x x x * * G G . ",
+"* * * x . * . . + + * x x x x x x x x x x x x * * G G . ",
+". . . * . x * . * * * x x x x x x x x x x x x x * * * * ",
+". . . . . x x * * x x x x x x x x x x x x x x * x x x x ",
+". . . . . . x x x x x x x x x x x x x x x x * * G G G x ",
+". . . . . . . . * x x x x x x x x x x x x x * * G G + . ",
+". . . . . . . . * x * * * * x x x x x x x * * * G G . . ",
+". . . . . . . * x x * * * * x x x x x * * * * * * G G . ",
+". . . . . . . * x + . . * x * * * x * * * * * G G G G . ",
+". . . . . . . x x + . . * x * * * * x G G G * G G G . . ",
+". . . . . . * x + . . * x x G G G * x G G G G G . . . . ",
+". . . . . . . . . . . * x G G G G * x G + . G G . . . . ",
+". . . . . . . . . . . * x G . . . * x x . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/dos.xpm b/vendor/x11iraf/xpm/icons/dos.xpm
new file mode 100644
index 00000000..ab578579
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/dos.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * dos[] = {
+/* dos pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/doso.xpm b/vendor/x11iraf/xpm/icons/doso.xpm
new file mode 100644
index 00000000..ebacf6ec
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/doso.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * doso[] = {
+/* doso pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . ",
+". . . ",
+". . . ",
+". . . ",
+". . . ",
+". . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/doss.xpm b/vendor/x11iraf/xpm/icons/doss.xpm
new file mode 100644
index 00000000..aaa87aa4
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/doss.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * doss[] = {
+/* doss pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" . ",
+" . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+" . . . ",
+" . . . . ",
+" . . . ",
+" . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/editor.xpm b/vendor/x11iraf/xpm/icons/editor.xpm
new file mode 100644
index 00000000..21967ac5
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/editor.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * editor[] = {
+/* editor pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . . . . . ",
+" . . . ",
+" . . . . . . . ",
+". . . . . . . ",
+". . ",
+". . . . . . ",
+". . ",
+". . ",
+". . . . . . . . . . ",
+". . ",
+". . . . . . . . . . ",
+". . ",
+". . . . . . . . . . ",
+". . ",
+". . . . . . . . . . . . . ",
+". . . . . ",
+". . . . . . . . . . . ",
+". . . . . ",
+". . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . ",
+". . . . . ",
+". . . . . . . . ",
+". . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . ",
+" . . . . ",
+" . . . ",
+" . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/escherknot.xpm b/vendor/x11iraf/xpm/icons/escherknot.xpm
new file mode 100644
index 00000000..7e4c1068
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/escherknot.xpm
@@ -0,0 +1,61 @@
+/* XPM2 C */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 52 2 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+/* pixels */
+" ",
+" . . . ",
+" . . . . ... ",
+" . . . . . ",
+" . . .. ",
+" . . . . . . . .. ",
+" . . .. . . . . . .. ",
+" . . . . .. . .. . . . . . . .. ",
+" . . . . . . . ... .... . . .. . ",
+" . . . . .. . . . .. .. . ... .. ... ",
+" . . . . . .. .. . . . ........ . . .. ",
+" . . . . .... .... . .. . . . ...... . . . ",
+" . . . . . ... ..... .. . ..... . . . .... ",
+" . . ........... . .. . .. . .. . . . ",
+" . . ... .................. . ... .. . . .. .. ",
+" . .. .................. .. . . . .. . ... ",
+" . .. .. ..................... .... .. . ..... ",
+" . .. ........ . ....... . .. . .. . . . . . ",
+" .. .. .. .. . . . ......... . .. .. . ..... ",
+" . . ....... . ... .......... .. . . . . ",
+" . ... . . .. . ... . ... .. . .. . . . ..... ",
+" . . ....... . ..... .... ... . .. .. ",
+" . ... . ... .. .. ... ..... . . ... .. ",
+" . . ..... . . .. .... .... . . . .... ",
+" . ... . .. . . .. .. .. . . .. .... ",
+" .... ... . . . ..... . . . ..... ",
+" . . .. . .. . . .. .. . . ... .. ",
+" ...... . . . . . . . ... . .. .. .... ",
+" . .. .. . . . . .. ... . . . . . .. ...... ",
+" ...... ... . . . .. . .. . . . . ....... ",
+" . .. . . . . . . . . . .. . .. . .... ..... ",
+" ....... . . . . . ... ... . . . ... ..... ... ",
+" .... .... .. . . . . . . ..... .......... ",
+" ..... . .. .. . .. . . . .. . ....... ...... ",
+" ........ . . . . .. . .............. .. ... ",
+" ..... ..... . . . . . . ....... . ...... ",
+" ....... .. . .. . . . ....... . . ..... ",
+" ............ . ... . . ... . .. ... ",
+" ....... . ... . . . . ....... ",
+" ....... . . . . .. . . . . ... ",
+" . .. .. .. .. . . ...... ",
+" .. ..... . .. . . .. ... ",
+" ... . .. . . . . . . ...... ",
+" . ... ...... . .. ... .... ",
+" ....... . . ... ... ..... ",
+" ... ....... ... ....... ",
+" ..... ............... ",
+" ....... ........... ",
+" ................ ",
+" ............ ",
+" . ..... ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye.xpm b/vendor/x11iraf/xpm/icons/eye.xpm
new file mode 100644
index 00000000..f72a3553
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye[] = {
+/* eye pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X X X X . . . ",
+" . X X X X . . . . ",
+" . X X . X X . ",
+" . X X . X X . ",
+" . X X . . . . . . . ",
+" . X . X X X X X . . X . . ",
+" . X X X X X X X X X X . X X . ",
+" . . . . . . . . . . . . . X . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye1.xpm b/vendor/x11iraf/xpm/icons/eye1.xpm
new file mode 100644
index 00000000..240973c6
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye1.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye1[] = {
+/* eye1 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X X X X . . . ",
+" . X X X X . . . . ",
+" . X X . X X . . . . ",
+" . X X . X X . . . X X X . ",
+" . X X X . X X X X X X X . ",
+" . X X X . X . . . X . . . ",
+" . X X X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye10.xpm b/vendor/x11iraf/xpm/icons/eye10.xpm
new file mode 100644
index 00000000..f995c5e2
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye10.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye10[] = {
+/* eye10 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X . ",
+" . . . . . . . X X X X . ",
+" . X X X X X X . ",
+" . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye11.xpm b/vendor/x11iraf/xpm/icons/eye11.xpm
new file mode 100644
index 00000000..44edfc2b
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye11.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye11[] = {
+/* eye11 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X . . . . X . . X X . ",
+" . . X X X X . . . X X X X . ",
+" . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye12.xpm b/vendor/x11iraf/xpm/icons/eye12.xpm
new file mode 100644
index 00000000..94a8b215
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye12.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye12[] = {
+/* eye12 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X X X . ",
+" . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye13.xpm b/vendor/x11iraf/xpm/icons/eye13.xpm
new file mode 100644
index 00000000..07ebe105
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye13.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye13[] = {
+/* eye13 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X X X X X X X X . ",
+" . . . . X X X X . ",
+" . . . . X X . X X . ",
+" . X X X . . . X X . X X . ",
+" . X X X X X X X . X X X . ",
+" . . . X . . . X . X X X . ",
+" . X X X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye14.xpm b/vendor/x11iraf/xpm/icons/eye14.xpm
new file mode 100644
index 00000000..28102ada
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye14.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye14[] = {
+/* eye14 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X X X X X X X X . ",
+" . . . . X X X X . ",
+" . X X . X X . ",
+" . . . X X . . X X . . ",
+" . X X . . . X X . . X X X . ",
+" . X X X X X . . . . X X X . ",
+" . . X X X . . X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye15.xpm b/vendor/x11iraf/xpm/icons/eye15.xpm
new file mode 100644
index 00000000..6c8a21ee
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye15.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye15[] = {
+/* eye15 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X X X X . X X X . ",
+" . . . . . . X X . ",
+" . X X . . X X . ",
+" X . . . X X X . ",
+" . X X X X X X X . ",
+" . . X . . . . . . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye16.xpm b/vendor/x11iraf/xpm/icons/eye16.xpm
new file mode 100644
index 00000000..3252cee5
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye16.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye16[] = {
+/* eye16 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X . X X X X X X . ",
+" . . . X X X . . . ",
+" . X X . X X . ",
+" . . . X X X . X X . ",
+" . X X X X X X X . X . ",
+" . . . . . . . . . X . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye17.xpm b/vendor/x11iraf/xpm/icons/eye17.xpm
new file mode 100644
index 00000000..0208cf66
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye17.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye17[] = {
+/* eye17 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . o o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . o o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . o o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X . X X X X X X . ",
+" . . . X X X . . . ",
+" . . X X . X X . ",
+" . X . . . X X . . X X . ",
+" . X X X . . X X . X . X X . ",
+" . X X X X X . X . . . X . ",
+" . . X X . X X X X X X X . ",
+" . . . X . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye18.xpm b/vendor/x11iraf/xpm/icons/eye18.xpm
new file mode 100644
index 00000000..07786277
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye18.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye18[] = {
+/* eye18 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X . X X X X X X . ",
+" . . . X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . . X X . ",
+" . . . . X X . X X X X . ",
+" . X X X X X X X . . . . . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye19.xpm b/vendor/x11iraf/xpm/icons/eye19.xpm
new file mode 100644
index 00000000..0a3e5840
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye19.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * eye19[] = {
+/* eye19 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X X X . ",
+" . X X X X . . X X X X X X . ",
+" . X X X X X X . . . . . . . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye2.xpm b/vendor/x11iraf/xpm/icons/eye2.xpm
new file mode 100644
index 00000000..f49c6c86
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye2.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye2[] = {
+/* eye2 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o o . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X X X X . . . ",
+" . X X X X . . . . ",
+" . X X . X X . ",
+" . . X X . . X X . . . ",
+" . X X X . . X X . . . X X . ",
+" . X X X . . . . X X X X X . ",
+" . X X X X X . . X X X . . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye20.xpm b/vendor/x11iraf/xpm/icons/eye20.xpm
new file mode 100644
index 00000000..63e9a3ee
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye20.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * eye20[] = {
+/* eye20 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . . X X . . ",
+" . X X . . X . X X . X . ",
+" . X X X X . X . . X X . . ",
+" . X X X X X X . . . . . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye21.xpm b/vendor/x11iraf/xpm/icons/eye21.xpm
new file mode 100644
index 00000000..672764f6
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye21.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * eye21[] = {
+/* eye21 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X . ",
+" . . . . . . . X X X X . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye22.xpm b/vendor/x11iraf/xpm/icons/eye22.xpm
new file mode 100644
index 00000000..1657d694
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye22.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * eye22[] = {
+/* eye22 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X . ",
+" . . . . . . . X X X X . ",
+" . X X X X X X . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye23.xpm b/vendor/x11iraf/xpm/icons/eye23.xpm
new file mode 100644
index 00000000..f0263edb
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye23.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * eye23[] = {
+/* eye23 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . . X X . . . X X . ",
+" . X . X X . X . . X X . ",
+" . . X X . . . X X X X . ",
+" . . . . . X X X X X X . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye24.xpm b/vendor/x11iraf/xpm/icons/eye24.xpm
new file mode 100644
index 00000000..8db23d4e
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye24.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * eye24[] = {
+/* eye24 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X . . X . ",
+" . X X X X . . X . X X . X . ",
+" . . . . . . . . . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye3.xpm b/vendor/x11iraf/xpm/icons/eye3.xpm
new file mode 100644
index 00000000..729fbaf7
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye3.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye3[] = {
+/* eye3 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X . X X X X X . . . ",
+" . X X . . . . . . ",
+" . X X . . X X . ",
+" . X X X . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye4.xpm b/vendor/x11iraf/xpm/icons/eye4.xpm
new file mode 100644
index 00000000..b2d7ed53
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye4.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye4[] = {
+/* eye4 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X . X X . . . ",
+" . . . X X X . . . ",
+" . X X . X X . ",
+" . X X . X X X . . . ",
+" . X . X X X X X X X . ",
+" . X . . . . . . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye5.xpm b/vendor/x11iraf/xpm/icons/eye5.xpm
new file mode 100644
index 00000000..ea70295a
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye5.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye5[] = {
+/* eye5 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X . X X . . . ",
+" . . . X X X . . . ",
+" . X X . X X . . ",
+" . X X . . X X . . . X . ",
+" . X X . X . X X . . X X X . ",
+" . X . . . X . X X X X X . ",
+" . X X X X X X X . X X . . ",
+" . . . . . . . X . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye6.xpm b/vendor/x11iraf/xpm/icons/eye6.xpm
new file mode 100644
index 00000000..7572b8e3
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye6.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye6[] = {
+/* eye6 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X . X X . . . ",
+" . . . X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . . X X . ",
+" . X X X X . X X . . . . ",
+" . . . . . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye7.xpm b/vendor/x11iraf/xpm/icons/eye7.xpm
new file mode 100644
index 00000000..52287988
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye7.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye7[] = {
+/* eye7 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X X X . ",
+" . X X X X . . X X X X X X . ",
+" . X X X X X X . . . . . . . ",
+" . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye8.xpm b/vendor/x11iraf/xpm/icons/eye8.xpm
new file mode 100644
index 00000000..9a09f0a7
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye8.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye8[] = {
+/* eye8 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X X X . ",
+" . X X . . X . . . . X . ",
+" . X X X X . . . X X X X . . ",
+" . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/eye9.xpm b/vendor/x11iraf/xpm/icons/eye9.xpm
new file mode 100644
index 00000000..70416603
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/eye9.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * eye9[] = {
+/* eye9 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X X X . ",
+" . . . . . . . X X X X X X . ",
+" . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/fil.xpm b/vendor/x11iraf/xpm/icons/fil.xpm
new file mode 100644
index 00000000..dde88ed6
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/fil.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * fil[] = {
+/* fil pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/fils.xpm b/vendor/x11iraf/xpm/icons/fils.xpm
new file mode 100644
index 00000000..e36b6558
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/fils.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * fils[] = {
+/* fils pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . ",
+" . . . . . ",
+" . . . . . ",
+" . . . . . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/floppy.xpm b/vendor/x11iraf/xpm/icons/floppy.xpm
new file mode 100644
index 00000000..a647e176
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/floppy.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * floppy[] = {
+/* floppy pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . ",
+". . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . . . . . . . . . . . . . . . . . . . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . . . . . . . . . . . . . . . . . . ",
+". . . . ",
+". . . . . . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . . . ",
+" . . . . . . . . ",
+" . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/jolifond.xpm b/vendor/x11iraf/xpm/icons/jolifond.xpm
new file mode 100644
index 00000000..3dbad663
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/jolifond.xpm
@@ -0,0 +1,58 @@
+/* XPM2 C */
+static char * jolifond[] = {
+/* jolifond pixmap
+ * width height ncolors chars_per_pixel */
+"47 47 4 2 ",
+" c #A800A800A800 s s_#A800A800A800 ",
+". c #000 s s_#000 ",
+"X c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+"o c #540054005400 s s_#540054005400 ",
+/* pixels */
+" . . X X X . . ",
+" . . X . . ",
+" . o o o o X o . . . . . o o o o X o . ",
+" . o o o o X o . . . o o o o X o . ",
+" . o o o o o o o o o . . . X . . . o o o o o o o o o . ",
+" . o o o o o o o o o . . X X . X X . . o o o o o o o o o . ",
+" o o X o o o o o o o X o o . . . X . X . . . o o X o o o o o o o X o o ",
+" o o o o o X o o o o o X o o o o o . X . X . o o o o o X o o o o o X o o o o o ",
+" o o o o X o o o X o o o o . . X . . o o o o X o o o X o o o o ",
+" o o o o o o o X o o o o o o o o . . X . . o o o o o o o o X o o o o o o o ",
+" o o . . X . . o o ",
+" o o o o o o o o o o . . . o o o o o o o o o o ",
+" o o o o X o o o o o . . . X o o o o o X o o o o ",
+" o o o o o X o o o o o o . . . . . . . X X o o o o o o X o o o o o ",
+" o o X o o o o o o . . . . . . . X X o o o o o o X o o ",
+" . o o o o . . . . . . X . o o o o . ",
+" . o o o o . . . . . o o o o . ",
+" . o . . . . X . o o o X . o o o X . . . . o . . ",
+" . o . o o o o o X o o o o o o . . ",
+" . . . o o o X o o o o o X o o o . . . ",
+". . . . . . o o X X X o o o X X X o o . . . . . . ",
+". . X . . . . . . o o o X o o o o o X o o o . . . . . . X . . ",
+"X . . X X X . . . . . o o o o o X o o o o o . . . . . X X X . . ",
+"X X . . X . . . X X X . . . . . . . X o o o X . X o o o X . . . . . . . X X X . . . X . . ",
+"X . . X X X . . . . . o o o o o X o o o o o . . . . . X X X . . ",
+". . X . . . . . . o o o X o o o o o X o o o . . . . . . X . . ",
+". . . . . . o o X X X o o o X X X o o . . . . . . ",
+" . . . o o o X o o o o o X o o o . . . ",
+" . o . o o o o o X o o o o o o . . ",
+" . o . . . . X . o o o X . o o o X . . . . o . . ",
+" . o o o o . . . . . o o o o . ",
+" . o o o o . . . . . . . o o o o . ",
+" o o X o o o o o o . . . . . . . o o o o o o X o o ",
+" o o o o o X o o o o o o . . . . . . . o o o o o o X o o o o o ",
+" o o o o X o o o o o . . . o o o o o X o o o o ",
+" o o o o o o o o o o . . . o o o o o o o o o o ",
+" o o . . X . . o o ",
+" o o o o o o o X o o o o o o o o . . X . . o o o o o o o o X o o o o o o o ",
+" o o o o X o o o X o o o o . . X . . o o o o X o o o o o o o o ",
+" o o o o o X o o o o o X o o o o o . X . X . o o o o o X o o o o o X o o o o o ",
+" o o X o o o o o o o X o o . . . X . X . . . o o X o o o o o o o X o o ",
+" . o o o o o o o o o . . X X . X X . . o o o o o o o o o . ",
+" . o o o o o o o o o . . . X . . . o o o o o o o o o . ",
+" . o o o o X . . . . o o o o o . ",
+" . o o o o X . . . . . . o o o o o . ",
+" . . . . ",
+" . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/koala.xpm b/vendor/x11iraf/xpm/icons/koala.xpm
new file mode 100644
index 00000000..176f46af
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/koala.xpm
@@ -0,0 +1,51 @@
+/* XPM2 C */
+static char * [] = {
+/* pixmap
+ * width height ncolors chars_per_pixel */
+"38 38 6 2 ",
+" c LightGrey s s_LightGrey ",
+"* c black s s_black ",
+"o c DarkSlateGrey s s_DarkSlateGrey ",
+"X c brown s s_brown ",
+". c tan s s_tan ",
+"x c wheat s s_wheat ",
+/* pixels */
+" ",
+" * * * * ",
+" * * ",
+" * * * * * * * * * * * * * * * * * * ",
+" * * * * * * * * * * * * * * * * * * * * * * * * ",
+" * * * * . . . . . . . * * * * * * . . . . . . . * * * * ",
+" * * * . . . x x x x x . . * * * * . . x x x x x . . . * * * ",
+" * * . . x x x x x x x x . * * * * * * * * . x x x x x x x x . . * * ",
+" * * . x x x x x x x x x . . * * * * * * . . x x x x x x x x x . * * ",
+" * * . x x x x x x x x . . . . . . . . . . . . x x x x x x x x . * * ",
+" * * . x x x x x x x . . . . . . . . . . . . . . x x x x x x x . * * ",
+" * * . x x x x x x . . . . . . . . . . . . . . . . x x x x x x . * * ",
+" * * . x x x x x . . . . . . . . . . . . . . . . . . x x x x x . * * ",
+" * * . . x x x . . . . . . . . . . . . . . . . . . . . x x x . . * * ",
+" * * * . . . x . . . o o o . . . X X . . . o o o . . . x . . . * * * ",
+" * * * * . . . . o o o o o . X X X X . o o o o o . . . . * * * * ",
+" * * * * . . o o o o o . X X X X . o o o o o . . * * * * ",
+" * * * * . . o o o . . X X X X . . o o o . . * * * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . . X X . . . . . . . . * * ",
+" * * * . . . . . . . . . . . . . . . . * * * ",
+" * * * * . . . . . . . . . . . . * * * * ",
+" * * * * * * * * * * * * * * * * * * ",
+" * * * * * * * * * * * * * * ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" * * ",
+" * * * * ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/lambda.xpm b/vendor/x11iraf/xpm/icons/lambda.xpm
new file mode 100644
index 00000000..4c335031
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/lambda.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * lambda[] = {
+/* lambda pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #FFFF00000000 s s_#FFFF00000000 ",
+"X c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . X . . . . . . . . ",
+". . . . X X X X X X X X . . . . . X X X . . . . ",
+". . . X X X X X X X . . . . . X X X X . . . ",
+". . . X . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . X . . . . . . . . ",
+". . . X X X . . . . . X X X X X X X X X . . . ",
+". . . . X X X . . . . . X X X X X X X X X X . . . . ",
+" . . . X . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/martini.xpm b/vendor/x11iraf/xpm/icons/martini.xpm
new file mode 100644
index 00000000..0515bbb6
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/martini.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * martini[] = {
+/* martini pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #7F7FFFFFFFFF s s_#7F7FFFFFFFFF ",
+"o c #FFFF00000000 s s_#FFFF00000000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . ",
+" . ",
+" . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . X X X X X X X X X . X X X X . ",
+" . X X X X X X o o o X X X . ",
+" . X X X X o o o o o X . ",
+" . X X X o o o o o . ",
+" . X X o o o o . ",
+" . X X o o . ",
+" . X X . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . ",
+" . . . . ",
+" . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/mickey.xpm b/vendor/x11iraf/xpm/icons/mickey.xpm
new file mode 100644
index 00000000..e481f07b
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/mickey.xpm
@@ -0,0 +1,73 @@
+/* XPM2 C */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 2 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+/* pixels */
+" ....... ",
+" ............. ",
+" ............... ",
+" ................ ",
+" ................... ",
+" ................... ",
+" ..................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ..................... ",
+" .................... ",
+" .................... ",
+" .................. ",
+" ................. ",
+" ............... ",
+" ................. ",
+" .................... ",
+" ....... .................... .... ",
+" ........... .................... ...... ",
+" .............. ...................... ....... ",
+" ............... ........ ....... ... ........ ",
+" .................. ....... .... ... ........ ",
+" .................. ...... .. .. ........ ",
+" ......................... ... .. .. ........ ",
+" ......................... .. . .. .. ........ ",
+" ......................... . .... ........... ",
+" ......................... . ...... . ...... ",
+" ........................ . .... ....... .... ",
+" ........................ . ...... . .... . ",
+" ........................ ....... . . . ",
+" ........................ ...... . . . . ",
+" ......................... . ... . . . . ",
+" ........................ . . .. . ",
+" ........................ . . .. . ",
+" ......................... . . . . . ",
+" ............... ......... . . . . ",
+" ............. .......... .... . . ",
+" .......... ............ . . ",
+" ....... .............. .. . ",
+" ................ .. ",
+" ........... . ",
+" ......... ... .. ",
+" ........ .. .. ",
+" ....... .... .. ",
+" ...... . ... .... ",
+" .... . ............. . ",
+" .... . ........... . ",
+" .. .......... . ",
+" .. ......... . ",
+" . ....... .. ",
+" ... ..... .. ",
+" ..... . .. ",
+" ..... . .. ",
+" ......... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/mouse.xpm b/vendor/x11iraf/xpm/icons/mouse.xpm
new file mode 100644
index 00000000..6e5006c1
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/mouse.xpm
@@ -0,0 +1,61 @@
+/* XPM2 C */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 52 2 1 ",
+" c #000000 s s_#000000 ",
+". c #00FF00 s s_#00FF00 ",
+/* pixels */
+" ",
+" ",
+" ",
+" .... ... ",
+" . .. . ",
+" . .. . ",
+" .......... . . ",
+" . ...... ...... . ",
+" . ... .... . ..... ",
+" .... ... .... ",
+" ... .......... ... ... ",
+" ...... ...... .. ... .... ",
+" .............. .......... ... ... ... ",
+" ....... ........ ... ... ........ . .... ",
+" .. ... .. ... . ... ",
+" ..... .. .. ... ",
+" .... . .. ....... ",
+" ..... . .. . . .. .... . . ",
+" .... .. . .. .... .. . ",
+" . .. ........ . . . ",
+" .. .. . . .... ",
+" ..... ... ... .. .. ",
+" ..... ......... .. . .. . ",
+" ..... ... .... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .... ... ",
+" . .. . ",
+" . .. . ",
+" .......... . . ",
+" . ...... ...... . ",
+" . ... .... . ..... ",
+" .... ... .... ",
+" ... .......... ... ... ",
+" ...... ...... .. ... .... ",
+" .............. .......... ... ... ... ",
+" ....... ........ ... ... ........ . .... ",
+" .. ... .. ... . ... ",
+" ..... .. .. ... ",
+" .... . .. ....... ",
+" ..... . .. . . .. .... . . ",
+" .... .. . .. .... .. . ",
+" . .. ........ . . . ",
+" .. .. . . .... ",
+" ..... ... ... .. .. ",
+" ..... ......... .. . .. . ",
+" ..... ... .... ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/nobozos.xpm b/vendor/x11iraf/xpm/icons/nobozos.xpm
new file mode 100644
index 00000000..df335406
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/nobozos.xpm
@@ -0,0 +1,73 @@
+/* XPM2 C */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 2 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+/* pixels */
+" ",
+" ........... ",
+" ................... ",
+" ......................... ",
+" ............................. ",
+" ................................. ",
+" ................................... ",
+" ....................................... ",
+" ......................................... ",
+" ................. ................. ",
+" .............. .............. ",
+" ............. ............. ",
+" ............ ............ ",
+" .............. ............ ",
+" ............... .......... ",
+" ................. .......... ",
+" .......... ...... ......... ",
+" ...... . ...... . . ..... ",
+" ....... . .. ... .. . ...... ",
+" ..... .... . . . ... . . . .... .... ",
+" ..... .. . .... .. .... .. .... . .. .... ",
+" ..... . . .. . ... . .... . ... . .. . . .... ",
+" ... .. .. .. ..... .... ..... .. .. .. .. ",
+" .... .. ... . ..... .. .. .. ..... . ... .. ... ",
+" .... . ... ... . ... .. ..... . ... . ... ... . ... ",
+" ... ... ........ ...... .. .. . ..... ........ ... .. ",
+" ... .. ....... ..... . ... .. . . ..... ....... .. .. ",
+" .... . . ... ... ... .... ..... ... ... ... . . ...",
+" ..... .. .... ... ..... . .... ... .... .. ....",
+" ..... .. ....... ..... . .. ..... ....... .. ....",
+" ..... . . ... ... . .. .... .... ... . ... ... . . ....",
+" ...... ... ........ . .. .. .. .. .. ........ ... .....",
+" ...... .. ..... . ..... . . . . ...... . ..... .. .....",
+" ...... . . .... ... . .. . . .. . .. . .... . . .....",
+" ....... .. . . ... . .. ... .. . .. . . . .. ......",
+" ........ . . . . ..... . . . . ........",
+" ........ . ............. . ........",
+" ........ . ....... . . .........",
+" ........ . ....... . .. ........ ",
+" ........ . ..... . ... ........ ",
+" ........ . .. ... .. . .... ........ ",
+" ......... . .... .... . ..... ......... ",
+" ........ . .. .. .. .. . ....... ........ ",
+" ......... . .. ..... .. . ........ ......... ",
+" ......... . .. .. . ......... ......... ",
+" ......... . ......... . ................... ",
+" .......... .. .. .................... ",
+" ......... .. .. ................... ",
+" .......... .. .. .................... ",
+" .......... ..... ................. ",
+" .......... ............... ",
+" ............ .............. ",
+" ............ ............ ",
+" ............. ............. ",
+" .............. .............. ",
+" ................. ................. ",
+" ......................................... ",
+" ....................................... ",
+" ................................... ",
+" ................................. ",
+" ............................. ",
+" ......................... ",
+" ................... ",
+" ........... "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/nose.xpm b/vendor/x11iraf/xpm/icons/nose.xpm
new file mode 100644
index 00000000..60340ced
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/nose.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * nose[] = {
+/* nose pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . ",
+" . X X X X X . ",
+" . X X X X X X X . ",
+" . X X X X X X X X . ",
+" . X X X X X X . . . . . . ",
+" . X X X X X . . . ",
+" . X X X X . . o o o o o . . ",
+" . X X X X . o o o X . ",
+" . X X X X . o o o X X . ",
+" . X X X X X . o X X X X . ",
+" . X X X X X X . . . X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X X . . X X X X X X X X X X X X X . ",
+" . X . X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X . . . X X X X X X X X X . ",
+" . . . . X . . . X X X X X . . ",
+" . X X . X X . . . . . ",
+" . X X . X X . ",
+" . X X . X X . ",
+" . X X X . . . . . . . ",
+" . X X X . X X X X X . . X . . ",
+" . X X X X X X X X X X X X . X X . ",
+" . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/noseback.xpm b/vendor/x11iraf/xpm/icons/noseback.xpm
new file mode 100644
index 00000000..9c481602
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/noseback.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * noseback[] = {
+/* noseback pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . ",
+" . X X X X X X . ",
+" . X X X X X X X X . ",
+" . X X X X X X X X . ",
+" . . X X X X X X X X . . ",
+" . o . X X X X X X X X . o . ",
+" . o . X X X X X X X X X X . o . ",
+" . o . X X X X X X X X X X . o . ",
+" . . X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . . . . . . X X . . . . X X . . . . . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . . . . X X . . X X . . . . ",
+" . . X X . X X X X . . X X X X . X X . . ",
+" . X X X X X X X X X X . . X X X X X X X X X X . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/nosefront.xpm b/vendor/x11iraf/xpm/icons/nosefront.xpm
new file mode 100644
index 00000000..9b8088de
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/nosefront.xpm
@@ -0,0 +1,43 @@
+/* XPM2 C */
+static char * nosefront[] = {
+/* nosefront pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . ",
+" . X X X X X X . ",
+" . X X X X X X X X . ",
+" . X X X X X X X X . ",
+" . . . X X X X X X . . . ",
+" . . X X X X . . ",
+" . . . . . . . X X . . . . . . . ",
+" . o o . X X . o o . ",
+" . o o . X X . o o . ",
+" . . X X X X . . ",
+" . X . . . X X X X X X . . . . ",
+" . X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X . X X X X X X X X X X X X . X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X . X X X X X X X X X X X X X X . X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X X X X X X X X X X X X X X X X . X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X . X X X X X X X X X X X X . X X X X . ",
+" . . . . . . X X X X X X X X . . . . . . ",
+" . X . . . . . . . . X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . . . . X X . . X X . . . . ",
+" . . X X X X . X X . . X X . X X X X . . ",
+" . X X X X X X X X X X . . X X X X X X X X X X . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/nosmoking.xpm b/vendor/x11iraf/xpm/icons/nosmoking.xpm
new file mode 100644
index 00000000..b9646537
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/nosmoking.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * nosmoking[] = {
+/* nosmoking pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #FFFF00000000 s s_#FFFF00000000 ",
+"X c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . X . . . . ",
+" . . . . X X . . . . . . ",
+" . . . . X . . . . . . . . ",
+" . . . X . . . . . . . . ",
+" . . . . X X . . . . . . . . . ",
+" . . . X X X . . . . . . . . ",
+" . . . X X . . . . . . . . ",
+". . . . X X . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . X X X X X X X X X X X X X X X X X X . . . ",
+". . . X X X . . . . . X . . . ",
+". . . X X X . . . . . X . . . ",
+". . . X X X . . . . . X . . . ",
+". . . X X X X X X X X X X X X X X X X X X . . . ",
+". . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/porsche.xpm b/vendor/x11iraf/xpm/icons/porsche.xpm
new file mode 100644
index 00000000..7804ea4d
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/porsche.xpm
@@ -0,0 +1,75 @@
+/* XPM2 C */
+static char * porsche[] = {
+/* porsche pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 4 1 ",
+" c slateblue s s_slateblue ",
+". c yellow s s_yellow ",
+"r c red s s_red ",
+"b c black s s_black ",
+/* pixels */
+" ",
+" ",
+" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb............................................bb ",
+" bb..bbbb..bbbb..bbbb..bbbb..bbbb..b..b..bbbb..bb ",
+" bb..b..b..b..b..b..b..b..b..b..b..b..b..b.....bb ",
+" bb..b..b..b..b..b..b..b.....b.....b..b..b.....bb ",
+" bb..bbbb..b..b..bbb...bbbb..b.....bbbb..bbbb..bb ",
+" bb..b.....b..b..b..b.....b..b.....b..b..b.....bb ",
+" bb..b.....b..b..b..b..b..b..b..b..b..b..b.....bb ",
+" bb..b.....bbbb..b..b..bbbb..bbbb..b..b..bbbb..bb ",
+" bb............................................bb ",
+" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb.....................bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb......b...b...bb.....bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb.....b...b...b....b..bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb....bb..bb.bbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb...bbbbbbbb......bb..bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb..bbbb...............bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb.bbb.................bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb..........b..b.......bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb.....b...b..b........bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb....b...b..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb....b.bbbbbbbbb..............bbbbbbbbbbbbbbbbb ",
+" bb...bbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb..bbb.........b..............bbbbbbbbbbbbbbbbb ",
+" bb.bbb..........b...bbb........bbbbbbbbbbbbbbbbb ",
+" bb.........b..b.b..bbbbb.......bbbbbbbbbbbbbbbbb ",
+" bb.....b..b..b..b..b.bbb.....b.brrrrrrrrrrrrrrbb ",
+" bb....b..b..b..bb....bbb....bb.brrrrrrrrrrrrrrbb ",
+" bb...bb.bbbbbbb.b....bbb....bb.brrrrrrrrrrrrrrbb ",
+" bb..bbbbb......bb...bbbbb...b..brrrrrrrrrrrrrrbb ",
+" bb.bbb..........b.bbbbbbbbbbb..brrrrrrrrrrrrrrbb ",
+" bb..............b.b.bbbbbbbbb..brrrrrrrrrrrrrrbb ",
+" bbbbbbbbbbbbbbbbb.b.b....bbbb..bbbbbbbbbbbbbbbbb ",
+" bbbbbbbbbbbbbbbbb...b.....b.b..b..............bb ",
+" bbbbbbbbbbbbbbbbb........bb.bb.b...b..b.......bb ",
+" bbbbbbbbbbbbbbbb........b..b..b..b..b...b...bb ",
+" bbbbbbbbbbbbbbbb.......b..b...b.b..b...b....bb ",
+" bbbbbbbbbbbbbbbbb............b.bbbbbbbbbb...bb ",
+" bbrrrrrrrrrrrrrrb..........bbbb........bb.bb ",
+" bbrrrrrrrrrrrrrrrb........bbbb............bb ",
+" bbrrrrrrrrrrrrrrrbbbbbbbb.......b..b....bb ",
+" bbrrrrrrrrrrrrrrrrrrbb.....b...b..b..b..bb ",
+" bbrrrrrrrrrrrrrrrrrbb....b...b..b..b..bb ",
+" bbrrrrrrrrrrrrrrrrrbb...bb.bbbbbbbb...bb ",
+" bbbbbbbbbbbbbbbbbbbb...bbbb......bb.bb ",
+" bbbbbbbbbbbbbbbbbbb..bbb...........b ",
+" bbbbbbbbbbbbbbbbbbb.bbb...........bb ",
+" bbbbbbbbbbbbbbbbbb..............bb ",
+" bbbbbbbbbbbbbbbbb...b.b.b.....bb ",
+" bbbbbbbbbbbbbbbb..b.b.b..b..bb ",
+" bbrrrrrrrrrrrbb..bbbbbbb..bb ",
+" bbrrrrrrrrrrbb.bbb....b.bb ",
+" bbrrrrrrrrrbb.bb......bb ",
+" bbbrrrrrrrbb.......bbb ",
+" bbbbrrrrrbb.....bbbb ",
+" bbbbrrrbb...bbbb ",
+" bbbbrbb.bbbb ",
+" bbbbbbbb ",
+" bbbb ",
+" bb ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/stopsign.xpm b/vendor/x11iraf/xpm/icons/stopsign.xpm
new file mode 100644
index 00000000..1f390401
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/stopsign.xpm
@@ -0,0 +1,42 @@
+/* XPM2 C */
+static char * stopsign[] = {
+/* stopsign pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 1 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FF0000 s s_#FF0000 ",
+/* pixels */
+" ............ ",
+" . . ",
+" . XXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXXXXXX . ",
+". XXX XX XX XX XXXX .",
+". XX XXX XXX XXX XXX X XXX XXX .",
+". XX XXXXXXX XXX XXX X XXX XXX .",
+". XX XXXXXXX XXX XXX X XXX XXX .",
+". XXX XXXXXX XXX XXX X XXX XXX .",
+". XXXX XXXXX XXX XXX X XXXX .",
+". XXXXX XXXX XXX XXX X XXXXXXX .",
+". XXXXXX XXX XXX XXX X XXXXXXX .",
+". XXXXXX XXX XXX XXX X XXXXXXX .",
+". XXXXXX XXX XXX XXX X XXXXXXX .",
+". XX XXX XXX XXX XXX X XXXXXXX .",
+". XXX XXXX XXXX XX XXXXXXX .",
+" . XXXXXXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXX . ",
+" . . ",
+" ............ "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/umbrella.xpm b/vendor/x11iraf/xpm/icons/umbrella.xpm
new file mode 100644
index 00000000..a04fc4b9
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/umbrella.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * umbrella[] = {
+/* umbrella pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . ",
+" . ",
+" . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . . . ",
+" . . . . ",
+" . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . ",
+" . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/wingdogs.xpm b/vendor/x11iraf/xpm/icons/wingdogs.xpm
new file mode 100644
index 00000000..d6e2aa53
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/wingdogs.xpm
@@ -0,0 +1,41 @@
+/* XPM2 C */
+static char * wingdogs[] = {
+/* wingdogs pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . ",
+" . . ",
+" . . . ",
+" . . . . . ",
+" . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . ",
+". . . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . . . . . . ",
+". . . . . . . . . ",
+". . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/NeXT.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/NeXT.xpm
new file mode 100644
index 00000000..3ea740bc
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/NeXT.xpm
@@ -0,0 +1,79 @@
+/* XPM */
+static char * next[] = {
+/* next pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 8 1 ",
+"0 c DimGrey m white s s_DimGrey ",
+"+ c black m black s s_black ",
+"- c black m black s s_black ",
+". c black m black s s_black ",
+"y c yellow m white s s_yellow ",
+"g c green m white s s_green ",
+"r c red m white s s_red ",
+"o c orange m white s s_orange ",
+/* pixels */
+"00000000000000000000000000000000000000000++000000000000000000000",
+"000000000000000000000000000000000000000++++000000000000000000000",
+"0000000000000000000000000000000000000+++++++00000000000000000000",
+"00000000000000000000000000000000000+++++++++00000000000000000000",
+"000000000000000000000000000000000++++++++++++0000000000000000000",
+"0000000000000000000000000000000++++yyyyyy++++0000000000000000000",
+"00000000000000000000000000000++++yyyyyyyyyy+++000000000000000000",
+"000000000000000000000000000+++++yyyy++++yyyy++000000000000000000",
+"0000000000000000000000000+++++++yy++++++++yy+++00000000000000000",
+"00000000000000000000000++++++++yyy+++++++yyyy++00000000000000000",
+"000000000000000000000+++ooo++++yy++++++yyyy+++++0000000000000000",
+"0000000000000000000+++++ooo++++yy++++yyyy+++++++0000000000000000",
+"00000000000000000++++++++ooo+++yy++yyyy++++yy++++000000000000000",
+"000000000000000++++++++++ooo+++yyyyyy++++++yy++++000000000000000",
+"0000000000000+++++++++++++ooo++yyyy+++++++yyy+++++00000000000000",
+"00000000000+++++++++++++++ooo+++yy++++++++yy++++++00000000000000",
+"00000000000++oo++++++++++++ooo++yyyy++++yyyy+++++++0000000000000",
+"000000000000+oooooo++++++++ooo+++yyyyyyyyyy++++++++0000000000000",
+"0000000000-0++ooooooooo+++++ooo++++yyyyyy++++++rr+++000000000000",
+"0000000000-00+ooooooooooooo+ooo++++++++++++++rrrrr++000000000000",
+"0000000000--0++ooo+ooooooooooooo+++++++++++rrrrrrr+++00000000000",
+"000000000---00+ooo+++++ooooooooo+++++++++rrrrrrr+++++00000000000",
+"000000000----0++ooo++++++++oooooo++++++rrrrrrr++++++++0000000000",
+"000000000----00+ooo++++++++++++oo++++rrrrrrrrr++++++++0000000000",
+"00000000------0++ooo+++++++++++++++++rrrrr+rrr+++++++++000000000",
+"00000000------00+ooo++++++++++++++++++rr+++rrrr++++++++000000000",
+"00000000-------0++ooo+++++++++++gg++++++++++rrr+++++++++00000000",
+"0000000--------00+ooo+++++++++++ggg++++++++++rrr++++++++00000000",
+"0000000---------0++ooo+++++++++ggg+++++++++++rrr+++++++++0000000",
+"0000000---------00+ooo+++++++++ggg++++++++++++rrr++++++++0000000",
+"000000-----------0+++++++++++++ggg++++++++++++rrr+++++++++000000",
+"000000-----------00+++g+++++++ggg++++++++++++++rrr++++++++000000",
+"0000000-----------0++ggggg++++ggg++++++++++++++rrr++++++00000000",
+"0000000-----------00+gggggggg+ggg+++++++++++++++rrr+++000.000000",
+"00000000-----------0+++ggggggggg++++++++++++++++r+++000...000000",
+"00000000-----------00+++++ggggggggg+++++++++++++++000.....000000",
+"000000000-----------0++++++++ggggggggg++++++++++000......0000000",
+"000000000-----------00++++++ggg+gggggggg++++++000........0000000",
+"0000000000-----------0++++++ggg++++ggggg++++000..........0000000",
+"0000000000-----------00+++++ggg+++++++g+++000...........00000000",
+"00000000000-----------0++++ggg++++++++++000.............00000000",
+"00000000000-----------00+++ggg++++++++000...............00000000",
+"000000000000-----------0+++ggg++++++000................000000000",
+"000000000000-----------00+ggg+++++000..................000000000",
+"0000000000000-----------0++gg+++000....................000000000",
+"0000000000000-----------00++++000.....................0000000000",
+"00000000000000-----------0++000.......................0000000000",
+"00000000000000-----------0000.........................0000000000",
+"000000000000000-----------0..........................00000000000",
+"000000000000000-----------0........................0000000000000",
+"0000000000000000---------00......................000000000000000",
+"0000000000000000---------0.....................00000000000000000",
+"00000000000000000--------0...................0000000000000000000",
+"00000000000000000-------00.................000000000000000000000",
+"000000000000000000------0................00000000000000000000000",
+"000000000000000000------0..............0000000000000000000000000",
+"0000000000000000000----00............000000000000000000000000000",
+"0000000000000000000----0...........00000000000000000000000000000",
+"00000000000000000000---0.........0000000000000000000000000000000",
+"00000000000000000000--00.......000000000000000000000000000000000",
+"000000000000000000000-0......00000000000000000000000000000000000",
+"000000000000000000000-0....0000000000000000000000000000000000000",
+"00000000000000000000000..000000000000000000000000000000000000000",
+"0000000000000000000000000000000000000000000000000000000000000000"
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/Plaid.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/Plaid.xpm
new file mode 100644
index 00000000..eb88b5ca
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/Plaid.xpm
@@ -0,0 +1,33 @@
+/* XPM */
+static char * plaid[] = {
+/* plaid pixmap
+ * width height ncolors chars_per_pixel */
+"22 22 4 2 ",
+" c red m white s s_red ",
+"Y c yellow m black s s_yellow ",
+"+ c yellow m white s s_yellow ",
+"x c black m black s s_black ",
+/* pixels */
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+"Y Y Y Y Y x Y Y Y Y Y + x + x + x + x + x + ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x x x x x x x x x x x x x ",
+"x x x x x x x x x x x x + x x x x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x ",
+"x x x x x x x x x x x x x x x x x x x x x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x ",
+" x x x Y x x ",
+" x x x x Y x x x "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/arrdown.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/arrdown.xpm
new file mode 100644
index 00000000..764dc72e
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/arrdown.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * arrdown[] = {
+/* arrdown pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . ",
+" . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/arrleft.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/arrleft.xpm
new file mode 100644
index 00000000..b3f40742
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/arrleft.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * arrleft[] = {
+/* arrleft pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+". . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/arrne.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/arrne.xpm
new file mode 100644
index 00000000..ee4b5dce
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/arrne.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * arrne[] = {
+/* arrne pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . ",
+" . . . . . . . ",
+" . . . . . . ",
+" . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . ",
+" . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/arrright.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/arrright.xpm
new file mode 100644
index 00000000..701c83e0
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/arrright.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * arrright[] = {
+/* arrright pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . . ",
+" . . ",
+" . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . ",
+" . ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/arrup.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/arrup.xpm
new file mode 100644
index 00000000..e657dee1
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/arrup.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * arrup[] = {
+/* arrup pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/bee.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/bee.xpm
new file mode 100644
index 00000000..dd1f8771
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/bee.xpm
@@ -0,0 +1,50 @@
+/* XPM */
+static char * bee[] = {
+/* bee pixmap
+ * width height ncolors chars_per_pixel */
+"44 39 4 2 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000 s s_#000 ",
+"X c #A8A8A8 s s_#A8A8A8 ",
+"o c #545454 s s_#545454 ",
+/* pixels */
+" . . . . . . ",
+" . . . X . . . . X X . . . ",
+" . . X X X . . X X X X X X X . . ",
+" . . . X X X X X . . X X X X X X X X . . ",
+" . . X X . X X . . X X X X X X X X X X . . ",
+" . . X X . X X X . X X X X X X X X . X X X . . ",
+" . . X X . X X . X X X X X X X . . X X X X . ",
+" . . X X X . X . . X X X X X X . X X X X X X . ",
+" . X X . X X . X X X X X X . X X X X X X X . . ",
+" . . X X . X . . X X X X X X . X X X X X X X . ",
+" . . X X . X X . X X X X X . . X X X X X X X . . ",
+" . . . . X X . X . X X X X X . X X X X X X X X X . . ",
+" . . X . X X . X X X . . X X X X X X X X X X . ",
+". . . . . . X . X o X X X . X X X X X X X X X X X . ",
+" . . . . . X X X o X . . X X X X X X X X X X . . . ",
+" . . . . . . X X o o X X X X X X X X X X . . . ",
+" . . . . . . X X o X X X X X X X . . . . . . ",
+" . . . o . . . . . . . . o . ",
+" . o . . . . . . o o o . . o . . o . ",
+" . . o . . o o . . o o . . . . . ",
+" . . X . . . . o . . o o o . . . . ",
+" . . X . . o . o o . . o o o . . o . . . ",
+" . . . o . o o o . . o o . . o o o . . . ",
+". . . o . o o o . . . o . . o o o . . . ",
+". . . o . o o o . o . o . . o o o . . . ",
+" . . . o . o o o . o . o . . o o o . . . . ",
+" . . . . . . . o . o o o . o . o . . o o o . . . . . ",
+" . . . o . o o o o . o . o . . o o o . . . . ",
+" . . . . . . . o . . o o o . o . o . . o o o . . . ",
+" . . o . o o o o o . . . o . . o o o . . . ",
+" . o o o o o o o o . . o o . . o o o . o ",
+" . o o o o o o . . o o o . . o o . . . ",
+" . o o o o . . . . o o o o . . . o . o o ",
+" . . . . . . . . . o . . . . . o o ",
+" . o o o . . . o o o . ",
+" . . . . . ",
+" . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/block.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/block.xpm
new file mode 100644
index 00000000..e350d740
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/block.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * block[] = {
+/* block pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . ",
+" . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/bomb.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/bomb.xpm
new file mode 100644
index 00000000..82497cad
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/bomb.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * bomb[] = {
+/* bomb pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 1 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"* c #F00 s s_#F00 ",
+/* pixels */
+" * * * ",
+" ",
+" * * * ",
+" * * ",
+" * ** * ",
+" * * ",
+" * * ",
+" * ",
+" * ** ",
+" .... ",
+" .... ",
+" .... ",
+" ...... ",
+" .......... ",
+" ....... ... ",
+" .......... .. ",
+" ............ .. ",
+" .............. .. ",
+" ............... . ",
+" ................. .. ",
+" ................. .. ",
+" .................... ",
+" .................... ",
+" .................... ",
+" .................... ",
+" ... .............. ",
+" .................. ",
+" .... ........... ",
+" .............. ",
+" ............ ",
+" .......... ",
+" ...... "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/bull.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/bull.xpm
new file mode 100644
index 00000000..ffcd4dc5
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/bull.xpm
@@ -0,0 +1,31 @@
+/* XPM */
+static char * bull[] = {
+/* bull pixmap
+ * width height ncolors chars_per_pixel */
+"60 20 4 1 ",
+" c white s s_white ",
+"+ c DarkSlateBlue s s_DarkSlateBlue ",
+"& c green s s_green ",
+"= c black s s_black ",
+/* pixels */
+"++++++++++++++++++++++++++++++++++++++++++++++&+&+++++++++++",
+"+ +++++++++++++ + +++++++++++++++&+&+&++++++++++",
+"+ ++++++++++++ + ++++++++++++++&+&+&+&&++++++++",
+"++ ++ ++++++++++++++ +++ ++++++++++ +++++",
+"++ +++ ++++++++++++++ +++ ++++++++++ ++&+&+&+&+&++ +++++",
+"++ +++ ++++++++++++++ +++ ++++++++++ +&+&+&+&+&+&+ +++++",
+"++ +++ ++++++++++++++ +++ ++++++++++ &+&+&+&+&+&+& +++++",
+"++ ++ +++ +++ +++ +++++++++& +&+&+&+&+&+&+ &++++",
+"++ +++ +++ +++ +++ ++++++++&+ &+&+&+&+&+&+& +&+++",
+"++ +++ ++++ +++ +++ +++ +++++++++& +&+&+&&&+&+&+ &&+++",
+"++ ++++ +++ +++ +++ +++ ++++++++++ &+&+&+&&+&&+& +&+++",
+"++ ++++ +++ +++ +++ +++ ++++++++++ +&++&&&&&&+&+ &++++",
+"++ ++++ +++ +++ +++ +++ ++++++++++ ++++++&&++&++ +++++",
+"++ +++ +++ ++ +++ +++ ++++++++++ ++++++&&+++++ +++++",
+"+ +++ +++ +++ ++++++++++ ++++&&&&&&+++ +++++",
+"+ +++++ + + +++++++++ +++++",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
+"============================================================",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&",
+"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/circles.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/circles.xpm
new file mode 100644
index 00000000..a665b702
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/circles.xpm
@@ -0,0 +1,73 @@
+/* XPM */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 2 1 ",
+" c #000000 s s_#000000 ",
+". c #FF0000 s s_#FF0000 ",
+/* pixels */
+" ",
+" . .. .. .. .. ",
+" . . ... ... . ",
+" . . .. .. . ",
+" . .. . . .. ",
+" . . .. ........... .. . ",
+" . . . .... .... . ",
+" . . .. .. . ",
+" . . ... ... . ",
+" . . . . . ",
+" . . .. ......... .. . ",
+" . . . .... .... . . ",
+" . . . .. . . . ",
+" . . .. .. . . ",
+" . . .. .. . . ",
+" . . . . . . ",
+" . . . ......... . . . ",
+" . . ... ... . . . ",
+" . . .. .. . . . ",
+" . . .. .. . . ",
+" . . . . . . ",
+" . . . . . . ",
+" . . . ....... . . . ",
+" . . . ... ... . . . ",
+" . . . .. .. . . . ",
+" . . . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . ",
+" . . . ....... . . . . ",
+" . . . .. .. . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . ..... . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" .. . . . . . . . . . ",
+" . . .. . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . ..... . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . .. .. . . . . ",
+" . . . . ....... . . . . ",
+" . . . . . . . . ",
+" . . . .. .. . . . . ",
+" . . . ... ... . . . . ",
+" . . . . ....... . . . . ",
+" . . . .. .. . . . ",
+" . . . .. .. . . . ",
+" . . . ... ... . . . ",
+" . . . .. ......... .. . . ",
+" . . . .. .. . . ",
+" . . . .. .. . . ",
+" . . . .... .... . . ",
+" . . . .. ......... .. . ",
+" . . . . . . ",
+" . . . ... ... . ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/city.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/city.xpm
new file mode 100644
index 00000000..c1b01b0f
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/city.xpm
@@ -0,0 +1,74 @@
+/* XPM */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 3 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+"j c #e0e000 s s_#e0e000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . ",
+" . ",
+" ..... ... ",
+" .j... ... ",
+" ...j. ..... ",
+" ..... ..... ",
+" .j... .......... ",
+" ...j. . . . . ",
+" ..... . . . . .. ",
+" ..j.. .......... .. ",
+" ..... . .... . .. ",
+" .j... . .... . .. ",
+" ..... .... .......... ........... .. ",
+" ...j. . . ..... .... .... . .j. . .. .. ",
+" ..... .... .j. . .... .... ........... .. ",
+" ..... . . .j. . .......... . ..j.. . .. ",
+" . . .... ..... . ....... ........... .. ",
+" ..... . . .j... . ....... . .j. .j. ....",
+" ...j. .... .j... .... . . ........... . .",
+" ..... .... ...j. .... . . . .j. . . ....",
+" ..j.. .... ...j. .......... ........... . .",
+" .......... . . ..... .......... .. .j.. . ....",
+" ..... ... .... ..... .......... ........... ....",
+" ....... . .... ...j. .......... .. .j. . ....",
+" .j........ . . ...j. . .... . ........... . .",
+" ..... ... ....... ..... . .... . . . . .. ....",
+" ..j....... . . ...j.............. ........... .j..",
+" ....... . ....... ...j........ . . . .j.. .j. ....",
+" ...j. ... ......... ......j..... . . ........... ..j.",
+" .......... . . .j. .j............ . .j..j. .. ....",
+".. ...j... . ......... .j. ..... ....... .............. .",
+".. ..... ... ......... ......j.. ..........j... .j. .....",
+". ....... . .................j........................j.. .",
+".. ...j...... . .....j.......... ...... .... ..j.....",
+".. .j...................j...j.......... ................... .",
+" . ....... .... .......j................j. ..j. .......",
+".. ..... ....j...............j..j........ ..............j. ..",
+"..... ....................j.....j......... ....j... .j..j....",
+"..j...... ....................j...........................j. ..",
+".....j..... .... .j.....j..j........ ...j.. ......j....",
+" ..j..........j..........j...j...j......... ..........j..... .",
+".....j... ...... .....j.................. .......j.....",
+"..j........ .....................j.. ...................j.. .",
+" ..... .......j.... ...j.....j... .........j..... ..j.....",
+"...j.....................j................................j.. .",
+"................................................................",
+"................................................................",
+"................................................................"
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/crab.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/crab.xpm
new file mode 100644
index 00000000..ec28b0b6
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/crab.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * crab[] = {
+/* crab pixmap
+ * width height ncolors chars_per_pixel */
+"28 28 6 2 ",
+". c SkyBlue m white s s_SkyBlue ",
+"x c orange m black s s_orange ",
+"* c #ff72c2 m black s s_#ff72c2 ",
+"+ c SteelBlue m white s s_SteelBlue ",
+"G c black m black s s_black ",
+"a c LightGrey m white s s_LightGrey ",
+/* pixels */
+". . . . . . * * * * . . . . . . . . . * * * * . . . . . ",
+". . . . + * x x * . . . . . . . . . . + * x x * . . . . ",
+". . . + * x x * . . . . . . . . . . . . + * x x * . . . ",
+". . + * x * . . . * . . . . . . . . . * . . + * x * . . ",
+". . + * x * . . + * . . . . . . . . + * . . + * x * . . ",
+". . + * x * . + * * . . . . . . . . + * * . + * x * . . ",
+". . + * x * + * * . . . . . . . . . . + * * + * x * . . ",
+". . + * x * * * . . . . . . . . . . . . + * * x x * . . ",
+". . . + * x * . . + * . . . . . . + * . . + * x * . . . ",
+". . . + * x . . + * . + * * . * * . + * . . + x * . . . ",
+". . . . + x . . + * . + * * . * * . + * . . + x . . . . ",
+". . . . + x . . . + * + * * * * * + * . . . + x . . . . ",
+". . . . + * x . . + * * * * * * * * * . . + x * . . . . ",
+". . . . . + * x * * * * x x x x x * * * * x * . . . . . ",
+". . . . + + + * * x x x x x x x x x x x x * . . . . . . ",
+". . + + * x x x x x x x x x x x x x x x x x x * x . . . ",
+". + * x x a + * * x x x x x x x x x x x * * a G * x * . ",
+"+ * x . . . + * * x x x x x x x x x x x * * G . . . x * ",
+". . . . . . + * * x x x x x x x x x x x * * . . . . . . ",
+". . . . . + * * x x x x x x x x x x x x x * * . . . . . ",
+". . . + * x x x * x x x x x x x x x x x * x x x * . . . ",
+". . + * x a a + * * x x x x x x x x x * * a a a x * . . ",
+". + * x G G G + * * x x x x x x x x x * * a G G G x * . ",
+". + * G . . . + * x * x x x x x x x * x * a G . . . * . ",
+". . . . . . + * x a * * * x x x * * * a x * G . . . . . ",
+". . . . . + * x a G a a * * * * * a a G a x * G . . . . ",
+". . . . . + x a G . G G a a a a a G G . G G x a G . . . ",
+". . . . . + x a G . . . G G G G G . . . . . x a G . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/crab45.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/crab45.xpm
new file mode 100644
index 00000000..022099e5
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/crab45.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * crab45[] = {
+/* crab45 pixmap
+ * width height ncolors chars_per_pixel */
+"28 28 6 2 ",
+". c SkyBlue s s_SkyBlue ",
+"x c orange s s_orange ",
+"* c #ff72c2 s s_#ff72c2 ",
+"+ c SteelBlue s s_SteelBlue ",
+"G c black s s_black ",
+"a c LightGrey s s_LightGrey ",
+/* pixels */
+". . . . . . . . . . * * * * * * * . . . . . . . . . . . ",
+". . . . . . . . * x x x x x x x * . . . . . . . . . . . ",
+". . . . . . . * * * * * * * x x * . . . . . . . . . . . ",
+". . . . . . . . . . . . . * x x x * . . . . . . . . . . ",
+". . . . . . . . . . * x x x x * x x . . . . . . . . . . ",
+". . . . . . . . + + * * * * * * * x x . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . * x x . . . . . * . . ",
+". . * . . . . . . . . . . . . . . . * x . . * * x x . . ",
+". * * . . + . . . . . . + + x x + * * x * * x x x + . . ",
+". x * . . + . . . . . . . . + x + * x x x x x + + . . . ",
+"* x * . * * . . . . . . + . + x * * x x x * * . . . . . ",
+"* x * . x * . . . . . + x + + x x x x x x * * . . * * * ",
+"* x * . x * . . + . + x x x x x x x x x x * * * * x x x ",
+"* x * * x * . . + . . + x x x x x x x x x * * x x x G G ",
+"* x x x x * . . x + + + x x x x x x x x x x x * * G G . ",
+"* x x x * * . . x x x x x x x x x x x x x x x * * G G . ",
+"* * * x . * . . + + * x x x x x x x x x x x x * * G G . ",
+". . . * . x * . * * * x x x x x x x x x x x x x * * * * ",
+". . . . . x x * * x x x x x x x x x x x x x x * x x x x ",
+". . . . . . x x x x x x x x x x x x x x x x * * G G G x ",
+". . . . . . . . * x x x x x x x x x x x x x * * G G + . ",
+". . . . . . . . * x * * * * x x x x x x x * * * G G . . ",
+". . . . . . . * x x * * * * x x x x x * * * * * * G G . ",
+". . . . . . . * x + . . * x * * * x * * * * * G G G G . ",
+". . . . . . . x x + . . * x * * * * x G G G * G G G . . ",
+". . . . . . * x + . . * x x G G G * x G G G G G . . . . ",
+". . . . . . . . . . . * x G G G G * x G + . G G . . . . ",
+". . . . . . . . . . . * x G . . . * x x . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/dos.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/dos.xpm
new file mode 100644
index 00000000..a43d3321
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/dos.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * dos[] = {
+/* dos pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/doso.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/doso.xpm
new file mode 100644
index 00000000..f0f763ce
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/doso.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * doso[] = {
+/* doso pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . ",
+". . . ",
+". . . ",
+". . . ",
+". . . ",
+". . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/doss.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/doss.xpm
new file mode 100644
index 00000000..bfc89484
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/doss.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * doss[] = {
+/* doss pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" ",
+" ",
+" . ",
+" . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+" . . . ",
+" . . . . ",
+" . . . ",
+" . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/editor.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/editor.xpm
new file mode 100644
index 00000000..742424f4
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/editor.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * editor[] = {
+/* editor pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . . . . . ",
+" . . . ",
+" . . . . . . . ",
+". . . . . . . ",
+". . ",
+". . . . . . ",
+". . ",
+". . ",
+". . . . . . . . . . ",
+". . ",
+". . . . . . . . . . ",
+". . ",
+". . . . . . . . . . ",
+". . ",
+". . . . . . . . . . . . . ",
+". . . . . ",
+". . . . . . . . . . . ",
+". . . . . ",
+". . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . ",
+". . . . . ",
+". . . . . . . . ",
+". . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . ",
+" . . . . ",
+" . . . ",
+" . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/escherknot.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/escherknot.xpm
new file mode 100644
index 00000000..d5a194c9
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/escherknot.xpm
@@ -0,0 +1,61 @@
+/* XPM */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 52 2 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+/* pixels */
+" ",
+" . . . ",
+" . . . . ... ",
+" . . . . . ",
+" . . .. ",
+" . . . . . . . .. ",
+" . . .. . . . . . .. ",
+" . . . . .. . .. . . . . . . .. ",
+" . . . . . . . ... .... . . .. . ",
+" . . . . .. . . . .. .. . ... .. ... ",
+" . . . . . .. .. . . . ........ . . .. ",
+" . . . . .... .... . .. . . . ...... . . . ",
+" . . . . . ... ..... .. . ..... . . . .... ",
+" . . ........... . .. . .. . .. . . . ",
+" . . ... .................. . ... .. . . .. .. ",
+" . .. .................. .. . . . .. . ... ",
+" . .. .. ..................... .... .. . ..... ",
+" . .. ........ . ....... . .. . .. . . . . . ",
+" .. .. .. .. . . . ......... . .. .. . ..... ",
+" . . ....... . ... .......... .. . . . . ",
+" . ... . . .. . ... . ... .. . .. . . . ..... ",
+" . . ....... . ..... .... ... . .. .. ",
+" . ... . ... .. .. ... ..... . . ... .. ",
+" . . ..... . . .. .... .... . . . .... ",
+" . ... . .. . . .. .. .. . . .. .... ",
+" .... ... . . . ..... . . . ..... ",
+" . . .. . .. . . .. .. . . ... .. ",
+" ...... . . . . . . . ... . .. .. .... ",
+" . .. .. . . . . .. ... . . . . . .. ...... ",
+" ...... ... . . . .. . .. . . . . ....... ",
+" . .. . . . . . . . . . .. . .. . .... ..... ",
+" ....... . . . . . ... ... . . . ... ..... ... ",
+" .... .... .. . . . . . . ..... .......... ",
+" ..... . .. .. . .. . . . .. . ....... ...... ",
+" ........ . . . . .. . .............. .. ... ",
+" ..... ..... . . . . . . ....... . ...... ",
+" ....... .. . .. . . . ....... . . ..... ",
+" ............ . ... . . ... . .. ... ",
+" ....... . ... . . . . ....... ",
+" ....... . . . . .. . . . . ... ",
+" . .. .. .. .. . . ...... ",
+" .. ..... . .. . . .. ... ",
+" ... . .. . . . . . . ...... ",
+" . ... ...... . .. ... .... ",
+" ....... . . ... ... ..... ",
+" ... ....... ... ....... ",
+" ..... ............... ",
+" ....... ........... ",
+" ................ ",
+" ............ ",
+" . ..... ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye.xpm
new file mode 100644
index 00000000..46e3903d
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye[] = {
+/* eye pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X X X X . . . ",
+" . X X X X . . . . ",
+" . X X . X X . ",
+" . X X . X X . ",
+" . X X . . . . . . . ",
+" . X . X X X X X . . X . . ",
+" . X X X X X X X X X X . X X . ",
+" . . . . . . . . . . . . . X . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye1.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye1.xpm
new file mode 100644
index 00000000..da792df5
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye1.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye1[] = {
+/* eye1 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X X X X . . . ",
+" . X X X X . . . . ",
+" . X X . X X . . . . ",
+" . X X . X X . . . X X X . ",
+" . X X X . X X X X X X X . ",
+" . X X X . X . . . X . . . ",
+" . X X X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye10.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye10.xpm
new file mode 100644
index 00000000..9a8f37ef
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye10.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye10[] = {
+/* eye10 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X . ",
+" . . . . . . . X X X X . ",
+" . X X X X X X . ",
+" . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye11.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye11.xpm
new file mode 100644
index 00000000..8bcd2551
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye11.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye11[] = {
+/* eye11 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X . . . . X . . X X . ",
+" . . X X X X . . . X X X X . ",
+" . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye12.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye12.xpm
new file mode 100644
index 00000000..8865da53
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye12.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye12[] = {
+/* eye12 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X X X . ",
+" . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye13.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye13.xpm
new file mode 100644
index 00000000..93c38240
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye13.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye13[] = {
+/* eye13 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X X X X X X X X . ",
+" . . . . X X X X . ",
+" . . . . X X . X X . ",
+" . X X X . . . X X . X X . ",
+" . X X X X X X X . X X X . ",
+" . . . X . . . X . X X X . ",
+" . X X X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye14.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye14.xpm
new file mode 100644
index 00000000..7dd406a9
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye14.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye14[] = {
+/* eye14 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X X X X X X X X . ",
+" . . . . X X X X . ",
+" . X X . X X . ",
+" . . . X X . . X X . . ",
+" . X X . . . X X . . X X X . ",
+" . X X X X X . . . . X X X . ",
+" . . X X X . . X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye15.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye15.xpm
new file mode 100644
index 00000000..092cc68b
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye15.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye15[] = {
+/* eye15 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X X X X . X X X . ",
+" . . . . . . X X . ",
+" . X X . . X X . ",
+" X . . . X X X . ",
+" . X X X X X X X . ",
+" . . X . . . . . . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye16.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye16.xpm
new file mode 100644
index 00000000..2c67a791
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye16.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye16[] = {
+/* eye16 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X . X X X X X X . ",
+" . . . X X X . . . ",
+" . X X . X X . ",
+" . . . X X X . X X . ",
+" . X X X X X X X . X . ",
+" . . . . . . . . . X . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye17.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye17.xpm
new file mode 100644
index 00000000..acf6c03f
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye17.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye17[] = {
+/* eye17 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . o o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . o o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . o o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X . X X X X X X . ",
+" . . . X X X . . . ",
+" . . X X . X X . ",
+" . X . . . X X . . X X . ",
+" . X X X . . X X . X . X X . ",
+" . X X X X X . X . . . X . ",
+" . . X X . X X X X X X X . ",
+" . . . X . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye18.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye18.xpm
new file mode 100644
index 00000000..b669b419
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye18.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye18[] = {
+/* eye18 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X . X . X X X X X X X X X X X X X X X X . ",
+" . X . . . . X X X X X X X X X X X X X X X . ",
+" . X . o o . . X X X X X X X X X X X X X X X . ",
+" . . o o o o o . . X X X X X X X . X X X X X X . ",
+" . o o o o o o . . X X X X . X X . X X X X X . ",
+" . . o o o o o o o . X X X X X X . X X . X X X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o o o o . X X X X X X X X . X X . X X . ",
+" . o o o o o o o . . X X X X X X . X X . X X X . ",
+" . . o o o o o . . X X X X . . . X X . X X X X . ",
+" . . o o . . X X X X . X X X X . X X X X . ",
+" . X . . . . X X X X . X X X X . X X X X X . ",
+" . X . X . X . X X X X X . X X X . . X X X X . ",
+" . X X X X X X X X X X X . X X X X . X X . ",
+" . X X X X X X X X X X X . X X . X X . ",
+" . . X X X X X X X X X X . . X . . ",
+" . . . X X . X X X X X X . ",
+" . . . X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . . X X . ",
+" . . . . X X . X X X X . ",
+" . X X X X X X X . . . . . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye19.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye19.xpm
new file mode 100644
index 00000000..8e12e502
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye19.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * eye19[] = {
+/* eye19 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X X X . ",
+" . X X X X . . X X X X X X . ",
+" . X X X X X X . . . . . . . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye2.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye2.xpm
new file mode 100644
index 00000000..dd4611c2
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye2.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye2[] = {
+/* eye2 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o o . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X X X X . . . ",
+" . X X X X . . . . ",
+" . X X . X X . ",
+" . . X X . . X X . . . ",
+" . X X X . . X X . . . X X . ",
+" . X X X . . . . X X X X X . ",
+" . X X X X X . . X X X . . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye20.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye20.xpm
new file mode 100644
index 00000000..f690ed9c
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye20.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * eye20[] = {
+/* eye20 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . . X X . . ",
+" . X X . . X . X X . X . ",
+" . X X X X . X . . X X . . ",
+" . X X X X X X . . . . . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye21.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye21.xpm
new file mode 100644
index 00000000..625c3184
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye21.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * eye21[] = {
+/* eye21 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X . ",
+" . . . . . . . X X X X . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye22.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye22.xpm
new file mode 100644
index 00000000..484211e5
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye22.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * eye22[] = {
+/* eye22 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X . ",
+" . . . . . . . X X X X . ",
+" . X X X X X X . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye23.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye23.xpm
new file mode 100644
index 00000000..fadd0d48
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye23.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * eye23[] = {
+/* eye23 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . . X X . . . X X . ",
+" . X . X X . X . . X X . ",
+" . . X X . . . X X X X . ",
+" . . . . . X X X X X X . ",
+" . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye24.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye24.xpm
new file mode 100644
index 00000000..1525a858
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye24.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * eye24[] = {
+/* eye24 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+/* pixels */
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . X X X X X X X X X X X X X X X X X X X X X X X . . ",
+" . X . X X X X X X X X X X X X X X X X X X X X X . X . ",
+" . X X . X X X X X X X X X X X X X X X X X X X . X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . X X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X . . X . ",
+" . X X X X . . X . X X . X . ",
+" . . . . . . . . . . . . . . ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye3.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye3.xpm
new file mode 100644
index 00000000..b0ce7aaa
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye3.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye3[] = {
+/* eye3 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X . X X X X X . . . ",
+" . X X . . . . . . ",
+" . X X . . X X . ",
+" . X X X . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye4.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye4.xpm
new file mode 100644
index 00000000..49fa55ff
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye4.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye4[] = {
+/* eye4 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X . X X . . . ",
+" . . . X X X . . . ",
+" . X X . X X . ",
+" . X X . X X X . . . ",
+" . X . X X X X X X X . ",
+" . X . . . . . . . . . ",
+" . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye5.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye5.xpm
new file mode 100644
index 00000000..89dceab2
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye5.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye5[] = {
+/* eye5 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X . X X . . . ",
+" . . . X X X . . . ",
+" . X X . X X . . ",
+" . X X . . X X . . . X . ",
+" . X X . X . X X . . X X X . ",
+" . X . . . X . X X X X X . ",
+" . X X X X X X X . X X . . ",
+" . . . . . . . X . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye6.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye6.xpm
new file mode 100644
index 00000000..e7b32499
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye6.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye6[] = {
+/* eye6 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . X . X . X X . ",
+" . X X X X X X X X X X X X X X X . . . . X . ",
+" . X X X X X X X X X X X X X X X . . o . . X . ",
+" . X X X X X X . X X X X X X X . . o o o o o . . ",
+" . X X X X X . X X . X X X X . . o o o o o o . ",
+" . X X X X . X X . X X X X X X . o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X . X X . X X X X X X X X . o o o o o o o o . . ",
+" . X X X . X X . X X X X X X . . o o o o o o o . ",
+" . X X X X . X X . . . X X X X . . o o o o o . . ",
+" . X X X X . X X X X . X X X X . . o . . . ",
+" . X X X X X . X X X X . X X X X . . . . X . ",
+" . X X X X . . X X X . X X X X X . X . X . X . ",
+" . X X . X X X X . X X X X X X X X X X X . ",
+" . X X . X X . X X X X X X X X X X X . ",
+" . . X . . X X X X X X X X X X . . ",
+" . X X X X X X . X X . . . ",
+" . . . X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . . X X . ",
+" . X X X X . X X . . . . ",
+" . . . . . X X X X X X X . ",
+" . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye7.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye7.xpm
new file mode 100644
index 00000000..82c85d66
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye7.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye7[] = {
+/* eye7 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X X X . ",
+" . X X X X . . X X X X X X . ",
+" . X X X X X X . . . . . . . ",
+" . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye8.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye8.xpm
new file mode 100644
index 00000000..17ef0b45
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye8.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye8[] = {
+/* eye8 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X X X . ",
+" . X X . . X . . . . X . ",
+" . X X X X . . . X X X X . . ",
+" . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/eye9.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/eye9.xpm
new file mode 100644
index 00000000..c72b9cf7
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/eye9.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * eye9[] = {
+/* eye9 pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . . ",
+" . . . X X X X X X X . . . ",
+" . . X X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X . X . X . X . X X X X X X X X . ",
+" . X X X X X X X . . . . . X X X X X X X . ",
+" . X X X X X X X . . o o . . X X X X X X X . ",
+" . X X X X X X X . . o o o o o . . X X X X X X X . ",
+" . X X X X X X . . o o o o o o . . X X X X X X . ",
+" . X X X . X X X X . o o o o o o o o . X X X X . X X X . ",
+" . X X . X X X X . . o o o o o o o . . X X X X . X X . ",
+" . X X . X X X X X . o o o o o o o o o . X X X X X . X X . ",
+" . X X . X X X . . o o o o o o o . . X X X . X X . ",
+" . X X . X X X . . o o o o o . . X X X . X X . ",
+" . X X . X X X X . . o o . . X X X X . X X . ",
+" . X X . X X X X . . . . . X X X X . X X . ",
+" . X X X X . X X X X . X . X . X . X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . X X X X . X X X X X X X X X X X X X X X . X X X X . ",
+" . . . . X X X X X X X X X X X X X X X X X . . . . ",
+" . . . . X X X . . . X X X X . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X X X . . X X . ",
+" . X X X X X X . . X X X X . ",
+" . . . . . . . X X X X X X . ",
+" . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/fil.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/fil.xpm
new file mode 100644
index 00000000..3f288616
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/fil.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * fil[] = {
+/* fil pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/fils.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/fils.xpm
new file mode 100644
index 00000000..38a1cdf2
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/fils.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * fils[] = {
+/* fils pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . ",
+" . . . . . ",
+" . . . . . ",
+" . . . . . . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/floppy.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/floppy.xpm
new file mode 100644
index 00000000..2a1bc1c9
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/floppy.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * floppy[] = {
+/* floppy pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . ",
+". . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . ",
+". . . . . . . . . . . . . . . . . . . . . . ",
+". . ",
+". . ",
+". . ",
+". . ",
+". . . . . . . . . . . . . . . . . . . ",
+". . . . ",
+". . . . . . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . . . ",
+". . . . . . ",
+" . . . . . . . . ",
+" . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/jolifond.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/jolifond.xpm
new file mode 100644
index 00000000..50013713
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/jolifond.xpm
@@ -0,0 +1,58 @@
+/* XPM */
+static char * jolifond[] = {
+/* jolifond pixmap
+ * width height ncolors chars_per_pixel */
+"47 47 4 2 ",
+" c #A800A800A800 s s_#A800A800A800 ",
+". c #000 s s_#000 ",
+"X c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+"o c #540054005400 s s_#540054005400 ",
+/* pixels */
+" . . X X X . . ",
+" . . X . . ",
+" . o o o o X o . . . . . o o o o X o . ",
+" . o o o o X o . . . o o o o X o . ",
+" . o o o o o o o o o . . . X . . . o o o o o o o o o . ",
+" . o o o o o o o o o . . X X . X X . . o o o o o o o o o . ",
+" o o X o o o o o o o X o o . . . X . X . . . o o X o o o o o o o X o o ",
+" o o o o o X o o o o o X o o o o o . X . X . o o o o o X o o o o o X o o o o o ",
+" o o o o X o o o X o o o o . . X . . o o o o X o o o X o o o o ",
+" o o o o o o o X o o o o o o o o . . X . . o o o o o o o o X o o o o o o o ",
+" o o . . X . . o o ",
+" o o o o o o o o o o . . . o o o o o o o o o o ",
+" o o o o X o o o o o . . . X o o o o o X o o o o ",
+" o o o o o X o o o o o o . . . . . . . X X o o o o o o X o o o o o ",
+" o o X o o o o o o . . . . . . . X X o o o o o o X o o ",
+" . o o o o . . . . . . X . o o o o . ",
+" . o o o o . . . . . o o o o . ",
+" . o . . . . X . o o o X . o o o X . . . . o . . ",
+" . o . o o o o o X o o o o o o . . ",
+" . . . o o o X o o o o o X o o o . . . ",
+". . . . . . o o X X X o o o X X X o o . . . . . . ",
+". . X . . . . . . o o o X o o o o o X o o o . . . . . . X . . ",
+"X . . X X X . . . . . o o o o o X o o o o o . . . . . X X X . . ",
+"X X . . X . . . X X X . . . . . . . X o o o X . X o o o X . . . . . . . X X X . . . X . . ",
+"X . . X X X . . . . . o o o o o X o o o o o . . . . . X X X . . ",
+". . X . . . . . . o o o X o o o o o X o o o . . . . . . X . . ",
+". . . . . . o o X X X o o o X X X o o . . . . . . ",
+" . . . o o o X o o o o o X o o o . . . ",
+" . o . o o o o o X o o o o o o . . ",
+" . o . . . . X . o o o X . o o o X . . . . o . . ",
+" . o o o o . . . . . o o o o . ",
+" . o o o o . . . . . . . o o o o . ",
+" o o X o o o o o o . . . . . . . o o o o o o X o o ",
+" o o o o o X o o o o o o . . . . . . . o o o o o o X o o o o o ",
+" o o o o X o o o o o . . . o o o o o X o o o o ",
+" o o o o o o o o o o . . . o o o o o o o o o o ",
+" o o . . X . . o o ",
+" o o o o o o o X o o o o o o o o . . X . . o o o o o o o o X o o o o o o o ",
+" o o o o X o o o X o o o o . . X . . o o o o X o o o o o o o o ",
+" o o o o o X o o o o o X o o o o o . X . X . o o o o o X o o o o o X o o o o o ",
+" o o X o o o o o o o X o o . . . X . X . . . o o X o o o o o o o X o o ",
+" . o o o o o o o o o . . X X . X X . . o o o o o o o o o . ",
+" . o o o o o o o o o . . . X . . . o o o o o o o o o . ",
+" . o o o o X . . . . o o o o o . ",
+" . o o o o X . . . . . . o o o o o . ",
+" . . . . ",
+" . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm
new file mode 100644
index 00000000..315f0c71
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm
@@ -0,0 +1,51 @@
+/* XPM */
+static char * koala [] = {
+/* pixmap
+ * width height ncolors chars_per_pixel */
+"38 38 6 2 ",
+" c LightGrey s s_LightGrey ",
+"* c black s s_black ",
+"o c DarkSlateGrey s s_DarkSlateGrey ",
+"X c brown s s_brown ",
+". c tan s s_tan ",
+"x c wheat s s_wheat ",
+/* pixels */
+" ",
+" * * * * ",
+" * * ",
+" * * * * * * * * * * * * * * * * * * ",
+" * * * * * * * * * * * * * * * * * * * * * * * * ",
+" * * * * . . . . . . . * * * * * * . . . . . . . * * * * ",
+" * * * . . . x x x x x . . * * * * . . x x x x x . . . * * * ",
+" * * . . x x x x x x x x . * * * * * * * * . x x x x x x x x . . * * ",
+" * * . x x x x x x x x x . . * * * * * * . . x x x x x x x x x . * * ",
+" * * . x x x x x x x x . . . . . . . . . . . . x x x x x x x x . * * ",
+" * * . x x x x x x x . . . . . . . . . . . . . . x x x x x x x . * * ",
+" * * . x x x x x x . . . . . . . . . . . . . . . . x x x x x x . * * ",
+" * * . x x x x x . . . . . . . . . . . . . . . . . . x x x x x . * * ",
+" * * . . x x x . . . . . . . . . . . . . . . . . . . . x x x . . * * ",
+" * * * . . . x . . . o o o . . . X X . . . o o o . . . x . . . * * * ",
+" * * * * . . . . o o o o o . X X X X . o o o o o . . . . * * * * ",
+" * * * * . . o o o o o . X X X X . o o o o o . . * * * * ",
+" * * * * . . o o o . . X X X X . . o o o . . * * * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . . X X . . . . . . . . * * ",
+" * * * . . . . . . . . . . . . . . . . * * * ",
+" * * * * . . . . . . . . . . . . * * * * ",
+" * * * * * * * * * * * * * * * * * * ",
+" * * * * * * * * * * * * * * ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" * * ",
+" * * * * ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm~ b/vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm~
new file mode 100644
index 00000000..184639de
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/koala.xpm~
@@ -0,0 +1,51 @@
+/* XPM */
+static char * [] = {
+/* pixmap
+ * width height ncolors chars_per_pixel */
+"38 38 6 2 ",
+" c LightGrey s s_LightGrey ",
+"* c black s s_black ",
+"o c DarkSlateGrey s s_DarkSlateGrey ",
+"X c brown s s_brown ",
+". c tan s s_tan ",
+"x c wheat s s_wheat ",
+/* pixels */
+" ",
+" * * * * ",
+" * * ",
+" * * * * * * * * * * * * * * * * * * ",
+" * * * * * * * * * * * * * * * * * * * * * * * * ",
+" * * * * . . . . . . . * * * * * * . . . . . . . * * * * ",
+" * * * . . . x x x x x . . * * * * . . x x x x x . . . * * * ",
+" * * . . x x x x x x x x . * * * * * * * * . x x x x x x x x . . * * ",
+" * * . x x x x x x x x x . . * * * * * * . . x x x x x x x x x . * * ",
+" * * . x x x x x x x x . . . . . . . . . . . . x x x x x x x x . * * ",
+" * * . x x x x x x x . . . . . . . . . . . . . . x x x x x x x . * * ",
+" * * . x x x x x x . . . . . . . . . . . . . . . . x x x x x x . * * ",
+" * * . x x x x x . . . . . . . . . . . . . . . . . . x x x x x . * * ",
+" * * . . x x x . . . . . . . . . . . . . . . . . . . . x x x . . * * ",
+" * * * . . . x . . . o o o . . . X X . . . o o o . . . x . . . * * * ",
+" * * * * . . . . o o o o o . X X X X . o o o o o . . . . * * * * ",
+" * * * * . . o o o o o . X X X X . o o o o o . . * * * * ",
+" * * * * . . o o o . . X X X X . . o o o . . * * * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . X X X X . . . . . . . * * ",
+" * * . . . . . . . . X X . . . . . . . . * * ",
+" * * * . . . . . . . . . . . . . . . . * * * ",
+" * * * * . . . . . . . . . . . . * * * * ",
+" * * * * * * * * * * * * * * * * * * ",
+" * * * * * * * * * * * * * * ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" * * ",
+" * * * * ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/lambda.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/lambda.xpm
new file mode 100644
index 00000000..98cd6d7f
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/lambda.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * lambda[] = {
+/* lambda pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #FFFF00000000 s s_#FFFF00000000 ",
+"X c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . X . . . . . . . . ",
+". . . . X X X X X X X X . . . . . X X X . . . . ",
+". . . X X X X X X X . . . . . X X X X . . . ",
+". . . X . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . X . . . . . . . . ",
+". . . X X X . . . . . X X X X X X X X X . . . ",
+". . . . X X X . . . . . X X X X X X X X X X . . . . ",
+" . . . X . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/martini.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/martini.xpm
new file mode 100644
index 00000000..c739de36
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/martini.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * martini[] = {
+/* martini pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #7F7FFFFFFFFF s s_#7F7FFFFFFFFF ",
+"o c #FFFF00000000 s s_#FFFF00000000 ",
+/* pixels */
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" . ",
+" . ",
+" . ",
+" . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . ",
+" . . . ",
+" . X X X X X X X X X . X X X X . ",
+" . X X X X X X o o o X X X . ",
+" . X X X X o o o o o X . ",
+" . X X X o o o o o . ",
+" . X X o o o o . ",
+" . X X o o . ",
+" . X X . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . . . ",
+" . . . . ",
+" . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/mickey.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/mickey.xpm
new file mode 100644
index 00000000..286a7b79
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/mickey.xpm
@@ -0,0 +1,73 @@
+/* XPM */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 2 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+/* pixels */
+" ....... ",
+" ............. ",
+" ............... ",
+" ................ ",
+" ................... ",
+" ................... ",
+" ..................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ...................... ",
+" ..................... ",
+" .................... ",
+" .................... ",
+" .................. ",
+" ................. ",
+" ............... ",
+" ................. ",
+" .................... ",
+" ....... .................... .... ",
+" ........... .................... ...... ",
+" .............. ...................... ....... ",
+" ............... ........ ....... ... ........ ",
+" .................. ....... .... ... ........ ",
+" .................. ...... .. .. ........ ",
+" ......................... ... .. .. ........ ",
+" ......................... .. . .. .. ........ ",
+" ......................... . .... ........... ",
+" ......................... . ...... . ...... ",
+" ........................ . .... ....... .... ",
+" ........................ . ...... . .... . ",
+" ........................ ....... . . . ",
+" ........................ ...... . . . . ",
+" ......................... . ... . . . . ",
+" ........................ . . .. . ",
+" ........................ . . .. . ",
+" ......................... . . . . . ",
+" ............... ......... . . . . ",
+" ............. .......... .... . . ",
+" .......... ............ . . ",
+" ....... .............. .. . ",
+" ................ .. ",
+" ........... . ",
+" ......... ... .. ",
+" ........ .. .. ",
+" ....... .... .. ",
+" ...... . ... .... ",
+" .... . ............. . ",
+" .... . ........... . ",
+" .. .......... . ",
+" .. ......... . ",
+" . ....... .. ",
+" ... ..... .. ",
+" ..... . .. ",
+" ..... . .. ",
+" ......... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/mouse.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/mouse.xpm
new file mode 100644
index 00000000..75661942
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/mouse.xpm
@@ -0,0 +1,61 @@
+/* XPM */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 52 2 1 ",
+" c #000000 s s_#000000 ",
+". c #00FF00 s s_#00FF00 ",
+/* pixels */
+" ",
+" ",
+" ",
+" .... ... ",
+" . .. . ",
+" . .. . ",
+" .......... . . ",
+" . ...... ...... . ",
+" . ... .... . ..... ",
+" .... ... .... ",
+" ... .......... ... ... ",
+" ...... ...... .. ... .... ",
+" .............. .......... ... ... ... ",
+" ....... ........ ... ... ........ . .... ",
+" .. ... .. ... . ... ",
+" ..... .. .. ... ",
+" .... . .. ....... ",
+" ..... . .. . . .. .... . . ",
+" .... .. . .. .... .. . ",
+" . .. ........ . . . ",
+" .. .. . . .... ",
+" ..... ... ... .. .. ",
+" ..... ......... .. . .. . ",
+" ..... ... .... ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" .... ... ",
+" . .. . ",
+" . .. . ",
+" .......... . . ",
+" . ...... ...... . ",
+" . ... .... . ..... ",
+" .... ... .... ",
+" ... .......... ... ... ",
+" ...... ...... .. ... .... ",
+" .............. .......... ... ... ... ",
+" ....... ........ ... ... ........ . .... ",
+" .. ... .. ... . ... ",
+" ..... .. .. ... ",
+" .... . .. ....... ",
+" ..... . .. . . .. .... . . ",
+" .... .. . .. .... .. . ",
+" . .. ........ . . . ",
+" .. .. . . .... ",
+" ..... ... ... .. .. ",
+" ..... ......... .. . .. . ",
+" ..... ... .... ",
+" ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/nobozos.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/nobozos.xpm
new file mode 100644
index 00000000..4963c06d
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/nobozos.xpm
@@ -0,0 +1,73 @@
+/* XPM */
+static char * ppm[] = {
+/* ppm pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 2 1 ",
+" c #FFFFFF s s_#FFFFFF ",
+". c #000000 s s_#000000 ",
+/* pixels */
+" ",
+" ........... ",
+" ................... ",
+" ......................... ",
+" ............................. ",
+" ................................. ",
+" ................................... ",
+" ....................................... ",
+" ......................................... ",
+" ................. ................. ",
+" .............. .............. ",
+" ............. ............. ",
+" ............ ............ ",
+" .............. ............ ",
+" ............... .......... ",
+" ................. .......... ",
+" .......... ...... ......... ",
+" ...... . ...... . . ..... ",
+" ....... . .. ... .. . ...... ",
+" ..... .... . . . ... . . . .... .... ",
+" ..... .. . .... .. .... .. .... . .. .... ",
+" ..... . . .. . ... . .... . ... . .. . . .... ",
+" ... .. .. .. ..... .... ..... .. .. .. .. ",
+" .... .. ... . ..... .. .. .. ..... . ... .. ... ",
+" .... . ... ... . ... .. ..... . ... . ... ... . ... ",
+" ... ... ........ ...... .. .. . ..... ........ ... .. ",
+" ... .. ....... ..... . ... .. . . ..... ....... .. .. ",
+" .... . . ... ... ... .... ..... ... ... ... . . ...",
+" ..... .. .... ... ..... . .... ... .... .. ....",
+" ..... .. ....... ..... . .. ..... ....... .. ....",
+" ..... . . ... ... . .. .... .... ... . ... ... . . ....",
+" ...... ... ........ . .. .. .. .. .. ........ ... .....",
+" ...... .. ..... . ..... . . . . ...... . ..... .. .....",
+" ...... . . .... ... . .. . . .. . .. . .... . . .....",
+" ....... .. . . ... . .. ... .. . .. . . . .. ......",
+" ........ . . . . ..... . . . . ........",
+" ........ . ............. . ........",
+" ........ . ....... . . .........",
+" ........ . ....... . .. ........ ",
+" ........ . ..... . ... ........ ",
+" ........ . .. ... .. . .... ........ ",
+" ......... . .... .... . ..... ......... ",
+" ........ . .. .. .. .. . ....... ........ ",
+" ......... . .. ..... .. . ........ ......... ",
+" ......... . .. .. . ......... ......... ",
+" ......... . ......... . ................... ",
+" .......... .. .. .................... ",
+" ......... .. .. ................... ",
+" .......... .. .. .................... ",
+" .......... ..... ................. ",
+" .......... ............... ",
+" ............ .............. ",
+" ............ ............ ",
+" ............. ............. ",
+" .............. .............. ",
+" ................. ................. ",
+" ......................................... ",
+" ....................................... ",
+" ................................... ",
+" ................................. ",
+" ............................. ",
+" ......................... ",
+" ................... ",
+" ........... "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/nose.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/nose.xpm
new file mode 100644
index 00000000..9d807a49
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/nose.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * nose[] = {
+/* nose pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . ",
+" . X X X X X . ",
+" . X X X X X X X . ",
+" . X X X X X X X X . ",
+" . X X X X X X . . . . . . ",
+" . X X X X X . . . ",
+" . X X X X . . o o o o o . . ",
+" . X X X X . o o o X . ",
+" . X X X X . o o o X X . ",
+" . X X X X X . o X X X X . ",
+" . X X X X X X . . . X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X X . . X X X X X X X X X X X X X . ",
+" . X . X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X . ",
+" . X X X . . . X X X X X X X X X . ",
+" . . . . X . . . X X X X X . . ",
+" . X X . X X . . . . . ",
+" . X X . X X . ",
+" . X X . X X . ",
+" . X X X . . . . . . . ",
+" . X X X . X X X X X . . X . . ",
+" . X X X X X X X X X X X X . X X . ",
+" . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/noseback.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/noseback.xpm
new file mode 100644
index 00000000..2d3e021a
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/noseback.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * noseback[] = {
+/* noseback pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . ",
+" . X X X X X X . ",
+" . X X X X X X X X . ",
+" . X X X X X X X X . ",
+" . . X X X X X X X X . . ",
+" . o . X X X X X X X X . o . ",
+" . o . X X X X X X X X X X . o . ",
+" . o . X X X X X X X X X X . o . ",
+" . . X X X X X X X X X X X X . . ",
+" . X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . . . . . . . X X . . . . X X . . . . . . . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . . . . X X . . X X . . . . ",
+" . . X X . X X X X . . X X X X . X X . . ",
+" . X X X X X X X X X X . . X X X X X X X X X X . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/nosefront.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/nosefront.xpm
new file mode 100644
index 00000000..8182e774
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/nosefront.xpm
@@ -0,0 +1,43 @@
+/* XPM */
+static char * nosefront[] = {
+/* nosefront pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 4 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FFFFB0B0B0B0 s s_#FFFFB0B0B0B0 ",
+"o c #32329999CCCC s s_#32329999CCCC ",
+/* pixels */
+" ",
+" ",
+" . . . . . . ",
+" . X X X X X X . ",
+" . X X X X X X X X . ",
+" . X X X X X X X X . ",
+" . . . X X X X X X . . . ",
+" . . X X X X . . ",
+" . . . . . . . X X . . . . . . . ",
+" . o o . X X . o o . ",
+" . o o . X X . o o . ",
+" . . X X X X . . ",
+" . X . . . X X X X X X . . . . ",
+" . X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X . ",
+" . X . X X X X X X X X X X X X . X . ",
+" . X X X X X X X X X X X X X X X X X X . ",
+" . X . X X X X X X X X X X X X X X . X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X X X X X X X X X X X X X X X X X X . ",
+" . X X . X X X X X X X X X X X X X X X X . X X . ",
+" . X X X X X X X X X X X X X X X X X X X X X X . ",
+" . X X X . X X X X X X X X X X X X X X X X X X . ",
+" . X X X X . X X X X X X X X X X X X . X X X X . ",
+" . . . . . . X X X X X X X X . . . . . . ",
+" . X . . . . . . . . X . ",
+" . X X . . X X . ",
+" . X X . . X X . ",
+" . . . . X X . . X X . . . . ",
+" . . X X X X . X X . . X X . X X X X . . ",
+" . X X X X X X X X X X . . X X X X X X X X X X . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/nosmoking.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/nosmoking.xpm
new file mode 100644
index 00000000..1c645168
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/nosmoking.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * nosmoking[] = {
+/* nosmoking pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #FFFF00000000 s s_#FFFF00000000 ",
+"X c #000 s s_#000 ",
+/* pixels */
+" . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . X . . . . ",
+" . . . . X X . . . . . . ",
+" . . . . X . . . . . . . . ",
+" . . . X . . . . . . . . ",
+" . . . . X X . . . . . . . . . ",
+" . . . X X X . . . . . . . . ",
+" . . . X X . . . . . . . . ",
+". . . . X X . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . X X X X X X X X X X X X X X X X X X . . . ",
+". . . X X X . . . . . X . . . ",
+". . . X X X . . . . . X . . . ",
+". . . X X X . . . . . X . . . ",
+". . . X X X X X X X X X X X X X X X X X X . . . ",
+". . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . ",
+" . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/porsche.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/porsche.xpm
new file mode 100644
index 00000000..f776e6cd
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/porsche.xpm
@@ -0,0 +1,75 @@
+/* XPM */
+static char * porsche[] = {
+/* porsche pixmap
+ * width height ncolors chars_per_pixel */
+"64 64 4 1 ",
+" c slateblue s s_slateblue ",
+". c yellow s s_yellow ",
+"r c red s s_red ",
+"b c black s s_black ",
+/* pixels */
+" ",
+" ",
+" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb............................................bb ",
+" bb..bbbb..bbbb..bbbb..bbbb..bbbb..b..b..bbbb..bb ",
+" bb..b..b..b..b..b..b..b..b..b..b..b..b..b.....bb ",
+" bb..b..b..b..b..b..b..b.....b.....b..b..b.....bb ",
+" bb..bbbb..b..b..bbb...bbbb..b.....bbbb..bbbb..bb ",
+" bb..b.....b..b..b..b.....b..b.....b..b..b.....bb ",
+" bb..b.....b..b..b..b..b..b..b..b..b..b..b.....bb ",
+" bb..b.....bbbb..b..b..bbbb..bbbb..b..b..bbbb..bb ",
+" bb............................................bb ",
+" bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb.....................bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb......b...b...bb.....bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb.....b...b...b....b..bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb....bb..bb.bbbbbbb...bbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb...bbbbbbbb......bb..bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb..bbbb...............bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb.bbb.................bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb..........b..b.......bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb.....b...b..b........bbrrrrrrrrrrrrrrrrrrrrrbb ",
+" bb....b...b..b..bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb....b.bbbbbbbbb..............bbbbbbbbbbbbbbbbb ",
+" bb...bbbb.......bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ",
+" bb..bbb.........b..............bbbbbbbbbbbbbbbbb ",
+" bb.bbb..........b...bbb........bbbbbbbbbbbbbbbbb ",
+" bb.........b..b.b..bbbbb.......bbbbbbbbbbbbbbbbb ",
+" bb.....b..b..b..b..b.bbb.....b.brrrrrrrrrrrrrrbb ",
+" bb....b..b..b..bb....bbb....bb.brrrrrrrrrrrrrrbb ",
+" bb...bb.bbbbbbb.b....bbb....bb.brrrrrrrrrrrrrrbb ",
+" bb..bbbbb......bb...bbbbb...b..brrrrrrrrrrrrrrbb ",
+" bb.bbb..........b.bbbbbbbbbbb..brrrrrrrrrrrrrrbb ",
+" bb..............b.b.bbbbbbbbb..brrrrrrrrrrrrrrbb ",
+" bbbbbbbbbbbbbbbbb.b.b....bbbb..bbbbbbbbbbbbbbbbb ",
+" bbbbbbbbbbbbbbbbb...b.....b.b..b..............bb ",
+" bbbbbbbbbbbbbbbbb........bb.bb.b...b..b.......bb ",
+" bbbbbbbbbbbbbbbb........b..b..b..b..b...b...bb ",
+" bbbbbbbbbbbbbbbb.......b..b...b.b..b...b....bb ",
+" bbbbbbbbbbbbbbbbb............b.bbbbbbbbbb...bb ",
+" bbrrrrrrrrrrrrrrb..........bbbb........bb.bb ",
+" bbrrrrrrrrrrrrrrrb........bbbb............bb ",
+" bbrrrrrrrrrrrrrrrbbbbbbbb.......b..b....bb ",
+" bbrrrrrrrrrrrrrrrrrrbb.....b...b..b..b..bb ",
+" bbrrrrrrrrrrrrrrrrrbb....b...b..b..b..bb ",
+" bbrrrrrrrrrrrrrrrrrbb...bb.bbbbbbbb...bb ",
+" bbbbbbbbbbbbbbbbbbbb...bbbb......bb.bb ",
+" bbbbbbbbbbbbbbbbbbb..bbb...........b ",
+" bbbbbbbbbbbbbbbbbbb.bbb...........bb ",
+" bbbbbbbbbbbbbbbbbb..............bb ",
+" bbbbbbbbbbbbbbbbb...b.b.b.....bb ",
+" bbbbbbbbbbbbbbbb..b.b.b..b..bb ",
+" bbrrrrrrrrrrrbb..bbbbbbb..bb ",
+" bbrrrrrrrrrrbb.bbb....b.bb ",
+" bbrrrrrrrrrbb.bb......bb ",
+" bbbrrrrrrrbb.......bbb ",
+" bbbbrrrrrbb.....bbbb ",
+" bbbbrrrbb...bbbb ",
+" bbbbrbb.bbbb ",
+" bbbbbbbb ",
+" bbbb ",
+" bb ",
+" "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/stopsign.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/stopsign.xpm
new file mode 100644
index 00000000..c4bd8e57
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/stopsign.xpm
@@ -0,0 +1,42 @@
+/* XPM */
+static char * stopsign[] = {
+/* stopsign pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 3 1 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+"X c #FF0000 s s_#FF0000 ",
+/* pixels */
+" ............ ",
+" . . ",
+" . XXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXXXXXX . ",
+". XXX XX XX XX XXXX .",
+". XX XXX XXX XXX XXX X XXX XXX .",
+". XX XXXXXXX XXX XXX X XXX XXX .",
+". XX XXXXXXX XXX XXX X XXX XXX .",
+". XXX XXXXXX XXX XXX X XXX XXX .",
+". XXXX XXXXX XXX XXX X XXXX .",
+". XXXXX XXXX XXX XXX X XXXXXXX .",
+". XXXXXX XXX XXX XXX X XXXXXXX .",
+". XXXXXX XXX XXX XXX X XXXXXXX .",
+". XXXXXX XXX XXX XXX X XXXXXXX .",
+". XX XXX XXX XXX XXX X XXXXXXX .",
+". XXX XXXX XXXX XX XXXXXXX .",
+" . XXXXXXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXXXX . ",
+" . XXXXXXXXXXXX . ",
+" . . ",
+" ............ "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/umbrella.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/umbrella.xpm
new file mode 100644
index 00000000..449182e0
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/umbrella.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * umbrella[] = {
+/* umbrella pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . ",
+" . ",
+" . . . . . . . . . ",
+" . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+" . . . . . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . ",
+" . . . ",
+" . . . . ",
+" . . . . . . ",
+" . . . . . . . ",
+" . . . . . . . ",
+" . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/icons/xpm3icons/wingdogs.xpm b/vendor/x11iraf/xpm/icons/xpm3icons/wingdogs.xpm
new file mode 100644
index 00000000..babee86f
--- /dev/null
+++ b/vendor/x11iraf/xpm/icons/xpm3icons/wingdogs.xpm
@@ -0,0 +1,41 @@
+/* XPM */
+static char * wingdogs[] = {
+/* wingdogs pixmap
+ * width height ncolors chars_per_pixel */
+"32 32 2 2 ",
+" c #FFFFFFFFFFFF s s_#FFFFFFFFFFFF ",
+". c #000 s s_#000 ",
+/* pixels */
+" . . ",
+" . . ",
+" . . . ",
+" . . . . . ",
+" . . . . . . ",
+" . . . . . . . . . . ",
+" . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . . . . ",
+" . . . . . . . . . . . . . . . . ",
+". . . . . . . . . . . . . . ",
+". . . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . . . . . . . . ",
+". . . . . . . . . ",
+". . . . . . . . . ",
+". . . . . . . . . . "
+} ;
diff --git a/vendor/x11iraf/xpm/misc.c b/vendor/x11iraf/xpm/misc.c
new file mode 100644
index 00000000..071b655c
--- /dev/null
+++ b/vendor/x11iraf/xpm/misc.c
@@ -0,0 +1,293 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* misc.c: *
+* *
+* XPM library *
+* Miscellaneous utilities *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:stat.h"
+#include "sys$library:fcntl.h"
+#else
+#include <sys/stat.h>
+#include <fcntl.h>
+#endif
+
+/*
+ * Free the computed color table
+ */
+void
+xpmFreeColorTable(colorTable, ncolors)
+ XpmColor *colorTable;
+ int ncolors;
+{
+ int a, b;
+ XpmColor *color;
+ xpmColorDefaults defaults;
+ char **sptr;
+
+ if (colorTable) {
+ for (a = 0, color = colorTable; a < ncolors; a++, color++) {
+ defaults = (xpmColorDefaults) color;
+ for (b = 0, sptr = (char **) defaults; b <= NKEYS; b++, sptr++)
+ if (*sptr)
+ XpmFree(*sptr);
+ }
+ XpmFree(colorTable);
+ }
+}
+
+
+/*
+ * Free array of extensions
+ */
+void
+XpmFreeExtensions(extensions, nextensions)
+ XpmExtension *extensions;
+ int nextensions;
+{
+ unsigned int i, j, nlines;
+ XpmExtension *ext;
+ char **sptr;
+
+ if (extensions) {
+ for (i = 0, ext = extensions; i < 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
+ */
+void
+xpmInitAttributes(attributes)
+ XpmAttributes *attributes;
+{
+ if (attributes) {
+ attributes->pixels = NULL;
+ attributes->npixels = 0;
+ attributes->extensions = NULL;
+ attributes->nextensions = 0;
+ }
+}
+
+/*
+ * Free the XpmAttributes structure members
+ * but the structure itself
+ */
+void
+XpmFreeAttributes(attributes)
+ XpmAttributes *attributes;
+{
+ if (attributes) {
+ if (attributes->valuemask & XpmReturnPixels && attributes->npixels) {
+ XpmFree(attributes->pixels);
+ attributes->pixels = NULL;
+ attributes->npixels = 0;
+ }
+ if (attributes->valuemask & XpmReturnExtensions
+ && attributes->nextensions) {
+ XpmFreeExtensions(attributes->extensions, attributes->nextensions);
+ attributes->extensions = NULL;
+ attributes->nextensions = 0;
+ }
+ attributes->valuemask = 0;
+ }
+}
+
+/*
+ * 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);
+ XpmFree(image->data);
+ image->data = NULL;
+}
+
+/*
+ * Init returned data to free safely later on
+ */
+void
+xpmInitXpmInfos(infos)
+ XpmInfos *infos;
+{
+ if (infos) {
+ infos->hints_cmt = NULL;
+ infos->colors_cmt = NULL;
+ infos->pixels_cmt = NULL;
+ }
+}
+
+/*
+ * Free the XpmInfos data which have been allocated
+ */
+void
+XpmFreeXpmInfos(infos)
+ XpmInfos *infos;
+{
+ if (infos) {
+ if (infos->hints_cmt) {
+ XpmFree(infos->hints_cmt);
+ infos->hints_cmt = NULL;
+ }
+ if (infos->colors_cmt) {
+ XpmFree(infos->colors_cmt);
+ infos->colors_cmt = NULL;
+ }
+ if (infos->pixels_cmt) {
+ XpmFree(infos->pixels_cmt);
+ infos->pixels_cmt = NULL;
+ }
+ }
+}
+
+
+#ifdef NEED_STRDUP
+/*
+ * in case strdup is not provided by the system here is one
+ * which does the trick
+ */
+char *
+strdup(s1)
+ char *s1;
+{
+ char *s2;
+ int l = strlen(s1) + 1;
+
+ if (s2 = (char *) XpmMalloc(l))
+ strncpy(s2, s1, l);
+ return s2;
+}
+
+#endif
+
+/*
+ * File / Buffer utilities
+ */
+int
+XpmReadFileToBuffer(filename, buffer_return)
+ char *filename;
+ char **buffer_return;
+{
+ int fd, fcheck, len;
+ char *ptr;
+ struct stat stats;
+ FILE *fp;
+
+ *buffer_return = NULL;
+
+ fd = open(filename, O_RDONLY);
+ if (fd < 0)
+ return XpmOpenFailed;
+
+ if (fstat(fd, &stats)) {
+ close(fd);
+ return XpmOpenFailed;
+ }
+ fp = fdopen(fd, "r");
+ if (!fp) {
+ close(fd);
+ return XpmOpenFailed;
+ }
+ len = (int) stats.st_size;
+ ptr = (char *) XpmMalloc(len + 1);
+ if (!ptr) {
+ fclose(fp);
+ return XpmNoMemory;
+ }
+ fcheck = fread(ptr, len, 1, fp);
+ fclose(fp);
+ if (fcheck != 1) {
+ XpmFree(ptr);
+ return XpmOpenFailed;
+ }
+ ptr[len] = '\0';
+ *buffer_return = ptr;
+ return XpmSuccess;
+}
+
+int
+XpmWriteFileFromBuffer(filename, buffer)
+ char *filename;
+ char *buffer;
+{
+ int fcheck, len;
+ FILE *fp = fopen(filename, "w");
+
+ if (!fp)
+ return XpmOpenFailed;
+
+ len = strlen(buffer);
+ fcheck = fwrite(buffer, len, 1, fp);
+ fclose(fp);
+ if (fcheck != 1)
+ return XpmOpenFailed;
+
+ return XpmSuccess;
+}
+
+
+/*
+ * Small utility function
+ */
+char *
+XpmGetErrorString(errcode)
+ int errcode;
+{
+ 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");
+ }
+}
diff --git a/vendor/x11iraf/xpm/parse.c b/vendor/x11iraf/xpm/parse.c
new file mode 100644
index 00000000..e178c252
--- /dev/null
+++ b/vendor/x11iraf/xpm/parse.c
@@ -0,0 +1,657 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* 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 *
+\*****************************************************************************/
+
+
+#include "xpmP.h"
+#ifdef VMS
+#include "sys$library:ctype.h"
+#else
+#include <ctype.h>
+#endif
+
+LFUNC(ParseValues, 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));
+
+LFUNC(ParseColors, int, (xpmData *data, unsigned int ncolors, unsigned int cpp,
+ XpmColor **colorTablePtr, xpmHashTable *hashtable));
+
+LFUNC(ParsePixels, int, (xpmData *data, unsigned int width,
+ unsigned int height, unsigned int ncolors,
+ unsigned int cpp, XpmColor *colorTable,
+ xpmHashTable *hashtable, unsigned int **pixels));
+
+LFUNC(ParseExtensions, int, (xpmData *data, XpmExtension **extensions,
+ unsigned int *nextensions));
+
+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 */
+};
+
+
+/* function call in case of error, frees only locally allocated variables */
+#undef RETURN
+#define RETURN(status) \
+{ \
+ 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(status); \
+}
+
+/*
+ * This function parses an Xpm file or data and store the found informations
+ * in an an xpmInternAttrib structure which is returned.
+ */
+int
+xpmParseData(data, image_return, attributes, infos)
+ xpmData *data;
+ XpmImage *image_return;
+ XpmAttributes *attributes;
+ XpmInfos *infos;
+{
+ /* 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;
+
+ int ErrorStatus;
+ xpmHashTable hashtable;
+
+ /*
+ * parse the header
+ */
+ ErrorStatus = xpmParseHeader(data);
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+
+ /*
+ * read values
+ */
+ ErrorStatus = ParseValues(data, &width, &height, &ncolors, &cpp,
+ &x_hotspot, &y_hotspot, &hotspot, &extensions);
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+
+ /*
+ * store the hints comment line
+ */
+ if (infos)
+ xpmGetCmt(data, &hints_cmt);
+
+ /*
+ * init the hastable
+ */
+ if (USE_HASHTABLE) {
+ ErrorStatus = xpmHashTableInit(&hashtable);
+ if (ErrorStatus != XpmSuccess)
+ return (ErrorStatus);
+ }
+
+ /*
+ * read colors
+ */
+ ErrorStatus = ParseColors(data, ncolors, cpp, &colorTable, &hashtable);
+ if (ErrorStatus != XpmSuccess)
+ RETURN(ErrorStatus);
+
+ /*
+ * store the colors comment line
+ */
+ if (infos)
+ 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 (infos)
+ xpmGetCmt(data, &pixels_cmt);
+
+ /*
+ * parse extensions
+ */
+ if (attributes && (attributes->valuemask & XpmReturnExtensions))
+ if (extensions) {
+ ErrorStatus = ParseExtensions(data, &attributes->extensions,
+ &attributes->nextensions);
+ if (ErrorStatus != XpmSuccess)
+ RETURN(ErrorStatus);
+ } else {
+ attributes->extensions = NULL;
+ attributes->nextensions = 0;
+ }
+
+ /*
+ * store found informations in the XpmImage structure
+ */
+ image_return->width = width;
+ image_return->height = height;
+ image_return->cpp = cpp;
+ image_return->ncolors = ncolors;
+ image_return->colorTable = colorTable;
+ image_return->data = pixelindex;
+
+ if (attributes) {
+ if (hotspot) {
+ attributes->x_hotspot = x_hotspot;
+ attributes->y_hotspot = y_hotspot;
+ attributes->valuemask |= XpmHotspot;
+ }
+ attributes->width = width;
+ attributes->height = height;
+ }
+ if (infos) {
+ infos->hints_cmt = hints_cmt;
+ infos->colors_cmt = colors_cmt;
+ infos->pixels_cmt = pixels_cmt;
+ }
+ return (XpmSuccess);
+}
+
+static int
+ParseValues(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;
+{
+ 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 = (atoui(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;
+
+ 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);
+ ptr = index(buf, '_');
+ if (!ptr)
+ return (XpmFileInvalid);
+ switch (l - (ptr - buf)) {
+ case 6:
+ if (!strncmp("_width", ptr, 6) && !xpmNextUI(data, width))
+ return (XpmFileInvalid);
+ break;
+ case 7:
+ if (!strncmp("_height", ptr, 7) && !xpmNextUI(data, height))
+ return (XpmFileInvalid);
+ break;
+ case 8:
+ if (!strncmp("_ncolors", ptr, 8) && !xpmNextUI(data, ncolors))
+ return (XpmFileInvalid);
+ break;
+ case 16:
+ if (!strncmp("_chars_per_pixel", ptr, 16)
+ && !xpmNextUI(data, cpp))
+ return (XpmFileInvalid);
+ break;
+ default:
+ return (XpmFileInvalid);
+ }
+ /* skip the end of line */
+ xpmNextString(data);
+ }
+ *hotspot = 0;
+ *extensions = 0;
+ }
+ return (XpmSuccess);
+}
+
+static int
+ParseColors(data, ncolors, cpp, colorTablePtr, hashtable)
+ xpmData *data;
+ unsigned int ncolors;
+ unsigned int cpp;
+ XpmColor **colorTablePtr;
+ xpmHashTable *hashtable;
+{
+ 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;
+ xpmColorDefaults 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 = (xpmColorDefaults) 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);
+}
+
+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;
+{
+ unsigned int *iptr, *iptr2;
+ unsigned int a, x, y;
+
+ iptr2 = (unsigned int *) XpmMalloc(sizeof(unsigned int) * width * height);
+ if (!iptr2)
+ return (XpmNoMemory);
+
+ iptr = iptr2;
+
+ switch (cpp) {
+
+ case (1): /* Optimize for single character
+ * colors */
+ {
+ unsigned short colidx[256];
+
+ memset(colidx, 0, 256 * sizeof(short));
+ for (a = 0; a < ncolors; a++)
+ colidx[colorTable[a].string[0]] = a + 1;
+
+ for (y = 0; y < height; y++) {
+ xpmNextString(data);
+ for (x = 0; x < width; x++, iptr++) {
+ int idx = colidx[xpmGetC(data)];
+
+ if (idx != 0)
+ *iptr = idx - 1;
+ else {
+ XpmFree(iptr2);
+ return (XpmFileInvalid);
+ }
+ }
+ }
+ }
+ break;
+
+ case (2): /* Optimize for double character
+ * colors */
+ {
+ unsigned short cidx[256][256];
+
+ memset(cidx, 0, 256 * 256 * sizeof(short));
+ for (a = 0; a < ncolors; a++)
+ cidx[colorTable[a].string[0]][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);
+ int idx = cidx[cc1][xpmGetC(data)];
+
+ if (idx != 0)
+ *iptr = idx - 1;
+ else {
+ XpmFree(iptr2);
+ return (XpmFileInvalid);
+ }
+ }
+ }
+ }
+ 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);
+}
+
+static int
+ParseExtensions(data, extensions, nextensions)
+ xpmData *data;
+ XpmExtension **extensions;
+ unsigned int *nextensions;
+{
+ 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);
+}
diff --git a/vendor/x11iraf/xpm/rgb.c b/vendor/x11iraf/xpm/rgb.c
new file mode 100644
index 00000000..dd9d1b94
--- /dev/null
+++ b/vendor/x11iraf/xpm/rgb.c
@@ -0,0 +1,136 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* rgb.c: *
+* *
+* XPM library *
+* Rgb file utilities *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+/*
+ * 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 "xpmP.h"
+#ifdef VMS
+#include "sys$library:ctype.h"
+#include "sys$library:string.h"
+#else
+#include <ctype.h>
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#endif
+
+/*
+ * 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 i, items, red, green, blue;
+ char line[512], name[512], *rgbname, *n, *m;
+ 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. */
+ for (i = 0, rgb = rgbn; fgets(line, sizeof(line), rgbf); i++, rgb++) {
+
+ /* Quit if rgb text file is too large. */
+ if (i == MAX_RGBNAMES) {
+ /* Too many entries in rgb text file, give up here */
+ break;
+ }
+ /* Read the line. Skip silently if bad. */
+ items = sscanf(line, "%d %d %d %[^\n]\n", &red, &green, &blue, name);
+ if (items != 4) {
+ i--;
+ 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) {
+ i--;
+ 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 (n = name, m = rgbname; *n; n++)
+ *m++ = isupper(*n) ? tolower(*n) : *n;
+ *m = '\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;
+ }
+
+ fclose(rgbf);
+
+ /* Return the number of read rgb names. */
+ return i < 0 ? 0 : i;
+}
+
+/*
+ * 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);
+}
diff --git a/vendor/x11iraf/xpm/scan.c b/vendor/x11iraf/xpm/scan.c
new file mode 100644
index 00000000..53927c78
--- /dev/null
+++ b/vendor/x11iraf/xpm/scan.c
@@ -0,0 +1,722 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* scan.c: *
+* *
+* XPM library *
+* Scanning utility for XPM file format *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#include "xpmP.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));
+
+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) ()));
+
+LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp));
+
+LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, int ncolors,
+ Pixel *pixels, unsigned int cpp,
+ XpmAttributes *attributes));
+
+/*
+ * This function stores the given pixel in the given arrays which are grown
+ * if not large enough.
+ */
+static int
+storePixel(pixel, pmap, index_return)
+ Pixel pixel;
+ PixelsMap *pmap;
+ unsigned int *index_return;
+{
+ unsigned int a;
+ 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 (a = pmap->mask_pixel; a < ncolors; a++, p++)
+ if (*p == pixel)
+ break;
+ if (a == 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 = a;
+ return 0;
+}
+
+static int
+storeMaskPixel(pixel, pmap, index_return)
+ Pixel pixel;
+ PixelsMap *pmap;
+ unsigned int *index_return;
+{
+ 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, frees only locally allocated variables */
+#undef RETURN
+#define RETURN(status) \
+{ \
+ if (pmap.pixelindex) XpmFree(pmap.pixelindex); \
+ if (pmap.pixels) XpmFree(pmap.pixels); \
+ if (colorTable) xpmFreeColorTable(colorTable, pmap.ncolors); \
+ return(status); \
+}
+
+/*
+ * This function scans the given image and stores the found informations in
+ * the given XpmImage structure.
+ */
+int
+XpmCreateXpmImageFromImage(display, image, shapeimage,
+ xpmimage, attributes)
+ Display *display;
+ XImage *image;
+ XImage *shapeimage;
+ XpmImage *xpmimage;
+ XpmAttributes *attributes;
+{
+ /* 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;
+ unsigned int offset;
+
+ /* 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))
+ 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) {
+ ErrorStatus = GetImagePixels1(shapeimage, width, height, &pmap,
+ storeMaskPixel);
+ 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) {
+ if (image->depth == 1)
+ ErrorStatus = GetImagePixels1(image, width, height, &pmap,
+ storePixel);
+ else 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);
+
+ 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);
+ if (ErrorStatus != XpmSuccess)
+ RETURN(ErrorStatus);
+ offset = 1;
+ } else
+ offset = 0;
+
+ ErrorStatus = ScanOtherColors(display, colorTable + offset,
+ pmap.ncolors - offset,
+ pmap.pixels, 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);
+}
+
+static int
+ScanTransparentColor(color, cpp)
+ XpmColor *color;
+ unsigned int cpp;
+{
+ 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';
+
+ color->c_color = (char*)strdup(TRANSPARENT_COLOR);
+ if (!color->c_color)
+ return (XpmNoMemory);
+
+ return (XpmSuccess);
+}
+
+static int
+ScanOtherColors(display, colors, ncolors, pixels, cpp, attributes)
+ Display *display;
+ XpmColor *colors;
+ int ncolors;
+ Pixel *pixels;
+ unsigned int cpp;
+ XpmAttributes *attributes;
+{
+ /* variables stored in the XpmAttributes structure */
+ Colormap colormap;
+ char *rgb_fname;
+
+ xpmRgbName rgbn[MAX_RGBNAMES];
+ int rgbn_max = 0;
+ unsigned int a, b, c;
+ XpmColor *color;
+ XColor *xcolors = NULL, *xcolor;
+ char *colorname, *s;
+
+ /* retrieve information from the XpmAttributes */
+ if (attributes && (attributes->valuemask & XpmColormap))
+ colormap = attributes->colormap;
+ else
+ colormap = DefaultColormap(display, DefaultScreen(display));
+ if (attributes && (attributes->valuemask & XpmRgbFilename))
+ rgb_fname = attributes->rgb_fname;
+ else
+ rgb_fname = NULL;
+
+ /* first get character strings and rgb values */
+ xcolors = (XColor *) XpmMalloc(sizeof(XColor) * ncolors);
+ if (!xcolors)
+ return (XpmNoMemory);
+
+ for (a = 0, color = colors, xcolor = xcolors; a < ncolors;
+ a++, color++, xcolor++, pixels++) {
+
+ if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) {
+ XpmFree(xcolors);
+ return (XpmNoMemory);
+ }
+ *s++ = printable[c = a % MAXPRINTABLE];
+ for (b = 1; b < cpp; b++, s++)
+ *s = printable[c = ((a - c) / MAXPRINTABLE) % MAXPRINTABLE];
+ *s = '\0';
+
+ xcolor->pixel = *pixels;
+ }
+ XQueryColors(display, colormap, xcolors, ncolors);
+
+ /* read the rgb file if any was specified */
+ if (rgb_fname)
+ rgbn_max = xpmReadRgbNames(attributes->rgb_fname, rgbn);
+
+ for (a = 0, color = colors, xcolor = xcolors; a < ncolors
+ ; a++, color++, xcolor++) {
+
+ /* 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*)strdup(colorname);
+ else {
+ /* at last store the rgb value */
+ char buf[BUFSIZ];
+
+ sprintf(buf, "#%04X%04X%04X",
+ xcolor->red, xcolor->green, xcolor->blue);
+ color->c_color = (char*)strdup(buf);
+ }
+ if (!color->c_color) {
+ XpmFree(xcolors);
+ xpmFreeRgbNames(rgbn, rgbn_max);
+ return (XpmNoMemory);
+ }
+ }
+
+ XpmFree(xcolors);
+ xpmFreeRgbNames(rgbn, rgbn_max);
+ return (XpmSuccess);
+}
+
+
+/*
+ * 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. Assuming that we use only ZPixmap images.
+ */
+
+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 a Z 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;
+ 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;
+ if (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 % ibu;
+ pixel = ((((char *) &pixel)[bits >> 3]) >> (bits & 7)) & 1;
+ if (ibpp != depth)
+ pixel &= lbt;
+ if (storePixel(pixel, pmap, iptr))
+ return (XpmNoMemory);
+ }
+ } else {
+ 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);
+ }
+ }
+ return (XpmSuccess);
+}
+
+/*
+ * scan pixels of a 32-bits Z image data structure
+ */
+
+#ifndef WORD64
+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];
+#ifndef WORD64
+ 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[4]);
+ 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;
+
+ if (image->byte_order != image->bitmap_bit_order)
+ return (GetImagePixels(image, width, height, pmap));
+ else {
+ data = image->data;
+ iptr = pmap->pixelindex;
+ if (image->bitmap_bit_order == MSBFirst)
+ for (y = 0; y < height; y++)
+ for (x = 0; x < width; x++, iptr++) {
+ pixel = (data[ZINDEX1(x, y, image)] & (0x80 >> (x & 7)))
+ ? 1 : 0;
+ if ((*storeFunc) (pixel, pmap, iptr))
+ return (XpmNoMemory);
+ }
+ else
+ for (y = 0; y < height; y++)
+ for (x = 0; x < width; x++, iptr++) {
+ pixel = (data[ZINDEX1(x, y, image)] & (1 << (x & 7)))
+ ? 1 : 0;
+ if ((*storeFunc) (pixel, pmap, iptr))
+ return (XpmNoMemory);
+ }
+ }
+ return (XpmSuccess);
+}
+
+
+int
+XpmCreateXpmImageFromPixmap(display, pixmap, shapemask,
+ xpmimage, attributes)
+ Display *display;
+ Pixmap pixmap;
+ Pixmap shapemask;
+ XpmImage *xpmimage;
+ XpmAttributes *attributes;
+{
+ XImage *image = NULL;
+ XImage *shapeimage = NULL;
+ unsigned int width = 0;
+ unsigned int height = 0;
+ int ErrorStatus;
+ unsigned int dum;
+ int dummy;
+ Window win;
+
+ /*
+ * get geometry
+ */
+ if (attributes && attributes->valuemask & XpmSize) {
+ width = attributes->width;
+ height = attributes->height;
+ } else {
+ if (pixmap)
+ XGetGeometry(display, pixmap, &win, &dummy, &dummy,
+ &width, &height, &dum, &dum);
+ else if (shapemask)
+ XGetGeometry(display, shapemask, &win, &dummy, &dummy,
+ &width, &height, &dum, &dum);
+ }
+
+ /*
+ * get the images
+ */
+ if (pixmap)
+ image = XGetImage(display, pixmap, 0, 0, width, height,
+ AllPlanes, ZPixmap);
+ if (shapemask)
+ shapeimage = XGetImage(display, shapemask, 0, 0, width, height,
+ AllPlanes, ZPixmap);
+
+ ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage,
+ xpmimage, attributes);
+ if (image)
+ XDestroyImage(image);
+ if (shapeimage)
+ XDestroyImage(shapeimage);
+
+ return (ErrorStatus);
+}
diff --git a/vendor/x11iraf/xpm/strdup.c b/vendor/x11iraf/xpm/strdup.c
new file mode 100644
index 00000000..2611949c
--- /dev/null
+++ b/vendor/x11iraf/xpm/strdup.c
@@ -0,0 +1,19 @@
+#include <stdio.h>
+
+/*
+ * STRDUP -- Return a pointer to a copy of the input string.
+ */
+char *
+strdup (s)
+char *s;
+{
+ char *str;
+ int nchars;
+ char *malloc();
+
+ nchars = strlen(s) + 1;
+ if ((str = malloc (nchars)) == NULL)
+ return (NULL);
+ memmove (str, s, nchars);
+ return (str);
+}
diff --git a/vendor/x11iraf/xpm/xpm.h b/vendor/x11iraf/xpm/xpm.h
new file mode 100644
index 00000000..ed734d48
--- /dev/null
+++ b/vendor/x11iraf/xpm/xpm.h
@@ -0,0 +1,378 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* xpm.h: *
+* *
+* XPM library *
+* Include file *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#ifndef XPM_h
+#define XPM_h
+
+/*
+ * first some identification numbers:
+ * the following revision numbers is 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
+ */
+#define XpmFormat 3
+#define XpmVersion 3
+#define XpmRevision 0
+
+#ifndef XPM_NUMBERS
+
+#ifdef VMS
+#include "decw$include:Xlib.h"
+#include "decw$include:Xutil.h"
+#else
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#endif
+
+/* 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
+
+/* 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
+
+/* the following should help people wanting to use their own functions */
+#define XpmFree(ptr) free(ptr)
+
+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 {
+ 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 pixels */
+ XpmColorSymbol *colorsymbols; /* Array 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; /* pointer to array of extensions */
+
+ /* Color Allocation Directives */
+ unsigned int 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 */
+
+} XpmAttributes;
+
+/* Xpm attribute 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)
+/************************************ there was
+#define XpmInfos (1L<<8) all infos members
+*/
+#define XpmExtensions (1L<<10)
+
+#define XpmReturnPixels (1L<<9)
+/************************************ there was
+#define XpmReturnInfos XpmInfos
+*/
+#define XpmReturnExtensions XpmExtensions
+
+#define XpmExactColors (1L<<11)
+#define XpmCloseness (1L<<12)
+#define XpmRGBCloseness (1L<<13)
+#define XpmColorKey (1L<<14)
+
+/*
+ * color keys for visual type, they must fit along with the number key of
+ * each related element in xpmColorKeys[] defined in xpmP.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
+
+
+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 {
+ char *hints_cmt; /* Comment of the hints section */
+ char *colors_cmt; /* Comment of the colors section */
+ char *pixels_cmt; /* Comment of the pixels section */
+} XpmInfos;
+
+
+/*
+ * minimal portability layer between ansi and KR C
+ */
+
+/* forward declaration of functions with prototypes */
+
+#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 /* end of K&R */
+
+
+/*
+ * functions declarations
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ 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));
+
+ 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));
+
+ 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));
+
+ 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(XpmFreeXpmInfos, void, (XpmInfos *infos));
+ FUNC(XpmGetErrorString, char *, (int errcode));
+
+ /* XpmImage functions */
+ FUNC(XpmReadFileToXpmImage, int, (char *filename,
+ XpmImage *image,
+ XpmAttributes *attributes,
+ XpmInfos *infos));
+
+ FUNC(XpmWriteFileFromXpmImage, int, (char *filename,
+ XpmImage *image,
+ XpmAttributes *attributes,
+ XpmInfos *infos));
+
+ FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display,
+ Drawable d,
+ XpmImage *image,
+ Pixmap *pixmap_return,
+ Pixmap *shapemask_return,
+ XpmAttributes *attributes));
+
+ 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));
+
+ FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display,
+ Pixmap pixmap,
+ Pixmap shapemask,
+ XpmImage *xpmimage,
+ XpmAttributes *attributes));
+
+ FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return,
+ XpmImage *image,
+ XpmAttributes *attributes));
+
+ FUNC(XpmCreateXpmImageFromData, int, (char **data,
+ XpmImage *image,
+ XpmAttributes *attributes));
+
+ FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer,
+ XpmImage *image,
+ XpmAttributes *attributes,
+ XpmInfos *infos));
+
+ FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return,
+ XpmImage *image,
+ XpmAttributes *attributes,
+ XpmInfos *infos));
+
+#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
diff --git a/vendor/x11iraf/xpm/xpmP.h b/vendor/x11iraf/xpm/xpmP.h
new file mode 100644
index 00000000..78d1283f
--- /dev/null
+++ b/vendor/x11iraf/xpm/xpmP.h
@@ -0,0 +1,251 @@
+/* Copyright 1990-93 GROUPE BULL -- See license conditions in file COPYRIGHT */
+/*****************************************************************************\
+* xpmP.h: *
+* *
+* XPM library *
+* Private Include file *
+* *
+* Developed by Arnaud Le Hors *
+\*****************************************************************************/
+
+#ifndef XPMP_h
+#define XPMP_h
+
+/*
+ * lets try to solve include files
+ */
+#ifdef VMS
+
+#include "sys$library:stdio.h"
+#include "sys$library:string.h"
+
+#else /* VMS */
+
+#include <stdio.h>
+/* stdio.h doesn't declare popen on a Sequent DYNIX OS */
+#ifdef sequent
+extern FILE *popen();
+#endif
+
+#if defined(SYSV) || defined(SVR4)
+#include <string.h>
+
+#ifndef index
+#define index strchr
+#endif
+
+#ifndef rindex
+#define rindex strrchr
+#endif
+
+#else /* defined(SYSV) || defined(SVR4) */
+#include <strings.h>
+#endif
+
+#endif /* VMS */
+
+#include "xpm.h"
+
+#if defined(SYSV) || defined(SVR4) || defined(VMS)
+#define bcopy(source, dest, count) memcpy(dest, source, count)
+#define bzero(b, len) memset(b, 0, len)
+#endif
+
+
+/* the following should help people wanting to use their own functions */
+#define XpmMalloc(size) malloc((size))
+#define XpmRealloc(ptr, size) realloc((ptr), (size))
+#define XpmCalloc(nelem, elsize) calloc((nelem), (elsize))
+
+
+typedef struct {
+ unsigned int type;
+ union {
+ FILE *file;
+ char **data;
+ } stream;
+ char *cptr;
+ unsigned int line;
+ int CommentLength;
+ char Comment[BUFSIZ];
+ char *Bcmt, *Ecmt, Bos, Eos;
+ int format; /* 1 if XPM1, 0 otherwise */
+} xpmData;
+
+#define XPMARRAY 0
+#define XPMFILE 1
+#define XPMPIPE 2
+#define XPMBUFFER 3
+
+typedef unsigned char byte;
+typedef int Boolean;
+
+#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
+
+/* define some type to access the XpmColor struct as an array */
+typedef char **xpmColorDefaults;
+
+#define UNDEF_PIXEL 0x80000000
+
+/* XPM private routines */
+
+FUNC(xpmWriteData, int, (xpmData *mdata, XpmImage *image, char *name,
+ XpmAttributes *attributes, XpmInfos *infos));
+
+FUNC(xpmParseData, int, (xpmData *data, XpmImage *image,
+ XpmAttributes *attributes, XpmInfos *infos));
+
+FUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
+
+FUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
+
+FUNC(xpmInitXpmImage, void, (XpmImage *image));
+
+FUNC(xpmInitXpmInfos, void, (XpmInfos *infos));
+
+/* 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(xpmReadFile, int, (char *filename, xpmData *mdata));
+FUNC(xpmWriteFile, int, (char *filename, xpmData *mdata));
+FUNC(xpmOpenArray, void, (char **data, xpmData *mdata));
+FUNC(xpmDataClose, int, (xpmData *mdata));
+FUNC(xpmParseHeader, int, (xpmData *mdata));
+FUNC(xpmOpenBuffer, void, (char *buffer, xpmData *mdata));
+
+/* 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));
+
+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)
+
+#if __STDC__
+#define Const const
+#else
+#define Const /**/
+#endif
+
+/*
+ * there are 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)
+
+#ifdef NEED_STRDUP
+FUNC(strdup, char *, (char *s1));
+#endif
+
+#endif