|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Digital Equipment Corporation.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Hewlett-Packard Company.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 International Business Machines Corp.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Sun Microsystems, Inc.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Novell, Inc.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 FUJITSU LIMITED.
|
|
Packit |
b099d7 |
* (c) Copyright 1996 Hitachi.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* $TOG: XpmI.h /main/10 1999/09/01 17:16:10 mgreess $
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef _XpmI_h
|
|
Packit |
b099d7 |
#define _XpmI_h
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __cplusplus
|
|
Packit |
b099d7 |
extern "C" {
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Xpm internal symbols are prefixed with _Xm */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define xpmParseData _XmxpmParseData
|
|
Packit |
b099d7 |
#define xpmParseDataAndCreate _XmxpmParseDataAndCreate
|
|
Packit |
b099d7 |
#define xpmFreeColorTable _XmxpmFreeColorTable
|
|
Packit |
b099d7 |
#define xpmInitAttributes _XmxpmInitAttributes
|
|
Packit |
b099d7 |
#define xpmInitXpmImage _XmxpmInitXpmImage
|
|
Packit |
b099d7 |
#define xpmInitXpmInfo _XmxpmInitXpmInfo
|
|
Packit |
b099d7 |
#define xpmSetInfoMask _XmxpmSetInfoMask
|
|
Packit |
b099d7 |
#define xpmSetInfo _XmxpmSetInfo
|
|
Packit |
b099d7 |
#define xpmSetAttributes _XmxpmSetAttributes
|
|
Packit |
b099d7 |
#define xpmCreatePixmapFromImage _XmxpmCreatePixmapFromImage
|
|
Packit |
b099d7 |
#define xpmCreateImageFromPixmap _XmxpmCreateImageFromPixmap
|
|
Packit |
b099d7 |
#define xpmHashTableInit _XmxpmHashTableInit
|
|
Packit |
b099d7 |
#define xpmHashTableFree _XmxpmHashTableFree
|
|
Packit |
b099d7 |
#define xpmHashSlot _XmxpmHashSlot
|
|
Packit |
b099d7 |
#define xpmHashIntern _XmxpmHashIntern
|
|
Packit |
b099d7 |
#define xpmNextString _XmxpmNextString
|
|
Packit |
b099d7 |
#define xpmNextUI _XmxpmNextUI
|
|
Packit |
b099d7 |
#define xpmGetString _XmxpmGetString
|
|
Packit |
b099d7 |
#define xpmNextWord _XmxpmNextWord
|
|
Packit |
b099d7 |
#define xpmGetCmt _XmxpmGetCmt
|
|
Packit |
b099d7 |
#define xpmParseHeader _XmxpmParseHeader
|
|
Packit |
b099d7 |
#define xpmParseValues _XmxpmParseValues
|
|
Packit |
b099d7 |
#define xpmParseColors _XmxpmParseColors
|
|
Packit |
b099d7 |
#define xpmParseExtensions _XmxpmParseExtensions
|
|
Packit |
b099d7 |
#define xpmReadRgbNames _XmxpmReadRgbNames
|
|
Packit |
b099d7 |
#define xpmGetRgbName _XmxpmGetRgbName
|
|
Packit |
b099d7 |
#define xpmFreeRgbNames _XmxpmFreeRgbNames
|
|
Packit |
b099d7 |
#define xpmGetRGBfromName _XmxpmGetRGBfromName
|
|
Packit |
b099d7 |
#define xpm_xynormalizeimagebits _Xmxpm_xynormalizeimagebits
|
|
Packit |
b099d7 |
#define xpm_znormalizeimagebits _Xmxpm_znormalizeimagebits
|
|
Packit |
b099d7 |
#define xpmstrdup _Xmxpmstrdup
|
|
Packit |
b099d7 |
#define xpmstrcasecmp _Xmxpmstrcasecmp
|
|
Packit |
b099d7 |
#define xpmatoui _Xmxpmatoui
|
|
Packit |
b099d7 |
#define xpmDataTypes _XmxpmDataTypes
|
|
Packit |
b099d7 |
#define xpmColorKeys _XmxpmColorKeys
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* The following is the original XpmI.h header file,
|
|
Packit |
b099d7 |
except that it includes XpmP.h instead of xpm.h */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Copyright (C) 1989-95 GROUPE BULL
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
Packit |
b099d7 |
* of this software and associated documentation files (the "Software"), to
|
|
Packit |
b099d7 |
* deal in the Software without restriction, including without limitation the
|
|
Packit |
b099d7 |
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
Packit |
b099d7 |
* sell copies of the Software, and to permit persons to whom the Software is
|
|
Packit |
b099d7 |
* furnished to do so, subject to the following conditions:
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* The above copyright notice and this permission notice shall be included in
|
|
Packit |
b099d7 |
* all copies or substantial portions of the Software.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
Packit |
b099d7 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
Packit |
b099d7 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
Packit |
b099d7 |
* GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
Packit |
b099d7 |
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
Packit |
b099d7 |
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Except as contained in this notice, the name of GROUPE BULL shall not be
|
|
Packit |
b099d7 |
* used in advertising or otherwise to promote the sale, use or other dealings
|
|
Packit |
b099d7 |
* in this Software without prior written authorization from GROUPE BULL.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*****************************************************************************\
|
|
Packit |
b099d7 |
* XpmI.h: *
|
|
Packit |
b099d7 |
* *
|
|
Packit |
b099d7 |
* XPM library *
|
|
Packit |
b099d7 |
* Internal Include file *
|
|
Packit |
b099d7 |
* *
|
|
Packit |
b099d7 |
* ** Everything defined here is subject to changes any time. ** *
|
|
Packit |
b099d7 |
* *
|
|
Packit |
b099d7 |
* Developed by Arnaud Le Hors *
|
|
Packit |
b099d7 |
\*****************************************************************************/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* The code related to FOR_MSW has been added by
|
|
Packit |
b099d7 |
* HeDu (hedu@cul-ipn.uni-kiel.de) 4/94
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef XPMI_h
|
|
Packit |
b099d7 |
#define XPMI_h
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include "XpmP.h"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* lets try to solve include files
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <sys/types.h>
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#include <stdlib.h>
|
|
Packit |
b099d7 |
#include <limits.h>
|
|
Packit |
b099d7 |
#include <X11/Xmd.h>
|
|
Packit |
b099d7 |
/* stdio.h doesn't declare popen on a Sequent DYNIX OS */
|
|
Packit |
b099d7 |
#ifdef sequent
|
|
Packit |
b099d7 |
extern FILE *popen();
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) || defined (_SVID_SOURCE)
|
|
Packit |
b099d7 |
#include <string.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef index
|
|
Packit |
b099d7 |
#define index strchr
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef rindex
|
|
Packit |
b099d7 |
#define rindex strrchr
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#else /* defined(SYSV) || defined(SVR4) || defined(VMS) */
|
|
Packit |
b099d7 |
#include <strings.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32)
|
|
Packit |
b099d7 |
#ifndef bcopy
|
|
Packit |
b099d7 |
#define bcopy(source, dest, count) memcpy(dest, source, count)
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#ifndef bzero
|
|
Packit |
b099d7 |
#define bzero(b, len) memset(b, 0, len)
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* the following is defined in X11R6 but not in previous versions */
|
|
Packit |
b099d7 |
#ifdef __alpha
|
|
Packit |
b099d7 |
#ifndef LONG64
|
|
Packit |
b099d7 |
#define LONG64
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef VMS
|
|
Packit |
b099d7 |
#include <unixio.h>
|
|
Packit |
b099d7 |
#include <file.h>
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* The following should help people wanting to use their own memory allocation
|
|
Packit |
b099d7 |
* functions. To avoid the overhead of a function call when the standard
|
|
Packit |
b099d7 |
* functions are used these are all macros, even the XpmFree function which
|
|
Packit |
b099d7 |
* needs to be a real function for the outside world though.
|
|
Packit |
b099d7 |
* So if change these be sure to change the XpmFree function in misc.c
|
|
Packit |
b099d7 |
* accordingly.
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
#ifndef NO_XPMFREE_MACRO
|
|
Packit |
b099d7 |
#ifdef XpmFree
|
|
Packit |
b099d7 |
#undef XpmFree
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
#define XpmFree(ptr) free(ptr)
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef FOR_MSW
|
|
Packit |
b099d7 |
#define XpmMalloc(size) malloc((size))
|
|
Packit |
b099d7 |
#define XpmRealloc(ptr, size) realloc((ptr), (size))
|
|
Packit |
b099d7 |
#define XpmCalloc(nelem, elsize) calloc((nelem), (elsize))
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
/* checks for mallocs bigger than 64K */
|
|
Packit |
b099d7 |
#define XpmMalloc(size) boundCheckingMalloc((long)(size))/* in simx.[ch] */
|
|
Packit |
b099d7 |
#define XpmRealloc(ptr, size) boundCheckingRealloc((ptr),(long)(size))
|
|
Packit |
b099d7 |
#define XpmCalloc(nelem, elsize) \
|
|
Packit |
b099d7 |
boundCheckingCalloc((long)(nelem),(long) (elsize))
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XPMMAXCMTLEN BUFSIZ
|
|
Packit |
b099d7 |
typedef struct {
|
|
Packit |
b099d7 |
unsigned int type;
|
|
Packit |
b099d7 |
union {
|
|
Packit |
b099d7 |
FILE *file;
|
|
Packit |
b099d7 |
char **data;
|
|
Packit |
b099d7 |
} stream;
|
|
Packit |
b099d7 |
char *cptr;
|
|
Packit |
b099d7 |
unsigned int line;
|
|
Packit |
b099d7 |
int CommentLength;
|
|
Packit |
b099d7 |
char Comment[XPMMAXCMTLEN];
|
|
Packit |
b099d7 |
char *Bcmt, *Ecmt, Bos, Eos;
|
|
Packit |
b099d7 |
int format; /* 1 if XPM1, 0 otherwise */
|
|
Packit |
b099d7 |
} xpmData;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XPMARRAY 0
|
|
Packit |
b099d7 |
#define XPMFILE 1
|
|
Packit |
b099d7 |
#define XPMPIPE 2
|
|
Packit |
b099d7 |
#define XPMBUFFER 3
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define EOL '\n'
|
|
Packit |
b099d7 |
#define TAB '\t'
|
|
Packit |
b099d7 |
#define SPC ' '
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct {
|
|
Packit |
b099d7 |
char *type; /* key word */
|
|
Packit |
b099d7 |
char *Bcmt; /* string beginning comments */
|
|
Packit |
b099d7 |
char *Ecmt; /* string ending comments */
|
|
Packit |
b099d7 |
char Bos; /* character beginning strings */
|
|
Packit |
b099d7 |
char Eos; /* character ending strings */
|
|
Packit |
b099d7 |
char *Strs; /* strings separator */
|
|
Packit |
b099d7 |
char *Dec; /* data declaration string */
|
|
Packit |
b099d7 |
char *Boa; /* string beginning assignment */
|
|
Packit |
b099d7 |
char *Eoa; /* string ending assignment */
|
|
Packit |
b099d7 |
} xpmDataType;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern xpmDataType xpmDataTypes[];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* rgb values and ascii names (from rgb text file) rgb values,
|
|
Packit |
b099d7 |
* range of 0 -> 65535 color mnemonic of rgb value
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
typedef struct {
|
|
Packit |
b099d7 |
int r, g, b;
|
|
Packit |
b099d7 |
char *name;
|
|
Packit |
b099d7 |
} xpmRgbName;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Maximum number of rgb mnemonics allowed in rgb text file. */
|
|
Packit |
b099d7 |
#define MAX_RGBNAMES 1024
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
extern char *xpmColorKeys[];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define TRANSPARENT_COLOR "None" /* this must be a string! */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* number of xpmColorKeys */
|
|
Packit |
b099d7 |
#define NKEYS 5
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* XPM internal routines */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info));
|
|
Packit |
b099d7 |
FUNC(xpmParseDataAndCreate, int, (Display *display, xpmData *data,
|
|
Packit |
b099d7 |
XImage **image_return,
|
|
Packit |
b099d7 |
XImage **shapeimage_return,
|
|
Packit |
b099d7 |
XpmImage *image, XpmInfo *info,
|
|
Packit |
b099d7 |
XpmAttributes *attributes));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmInitAttributes, void, (XpmAttributes *attributes));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmInitXpmImage, void, (XpmImage *image));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmInitXpmInfo, void, (XpmInfo *info));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes));
|
|
Packit |
b099d7 |
FUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes));
|
|
Packit |
b099d7 |
FUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image,
|
|
Packit |
b099d7 |
XpmInfo *info));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifndef FOR_MSW
|
|
Packit |
b099d7 |
FUNC(xpmCreatePixmapFromImage, void, (Display *display, Drawable d,
|
|
Packit |
b099d7 |
XImage *ximage, Pixmap *pixmap_return));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap,
|
|
Packit |
b099d7 |
XImage **ximage_return,
|
|
Packit |
b099d7 |
unsigned int *width,
|
|
Packit |
b099d7 |
unsigned int *height));
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* structures and functions related to hastable code */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct _xpmHashAtom {
|
|
Packit |
b099d7 |
char *name;
|
|
Packit |
b099d7 |
void *data;
|
|
Packit |
b099d7 |
} *xpmHashAtom;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
typedef struct {
|
|
Packit |
b099d7 |
unsigned int size;
|
|
Packit |
b099d7 |
unsigned int limit;
|
|
Packit |
b099d7 |
unsigned int used;
|
|
Packit |
b099d7 |
xpmHashAtom *atomTable;
|
|
Packit |
b099d7 |
} xpmHashTable;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmHashTableInit, int, (xpmHashTable *table));
|
|
Packit |
b099d7 |
FUNC(xpmHashTableFree, void, (xpmHashTable *table));
|
|
Packit |
b099d7 |
FUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s));
|
|
Packit |
b099d7 |
FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define HashAtomData(i) ((void *)i)
|
|
Packit |
b099d7 |
#define HashColorIndex(slot) ((unsigned int)((*slot)->data))
|
|
Packit |
b099d7 |
#define USE_HASHTABLE (cpp > 2 && ncolors > 4)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* I/O utility */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmNextString, int, (xpmData *mdata));
|
|
Packit |
b099d7 |
FUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return));
|
|
Packit |
b099d7 |
FUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define xpmGetC(mdata) \
|
|
Packit |
b099d7 |
((!mdata->type || mdata->type == XPMBUFFER) ? \
|
|
Packit |
b099d7 |
(*mdata->cptr++) : (getc(mdata->stream.file)))
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmNextWord, unsigned int,
|
|
Packit |
b099d7 |
(xpmData *mdata, char *buf, unsigned int buflen));
|
|
Packit |
b099d7 |
FUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt));
|
|
Packit |
b099d7 |
FUNC(xpmParseHeader, int, (xpmData *mdata));
|
|
Packit |
b099d7 |
FUNC(xpmParseValues, int, (xpmData *data, unsigned int *width,
|
|
Packit |
b099d7 |
unsigned int *height, unsigned int *ncolors,
|
|
Packit |
b099d7 |
unsigned int *cpp, unsigned int *x_hotspot,
|
|
Packit |
b099d7 |
unsigned int *y_hotspot, unsigned int *hotspot,
|
|
Packit |
b099d7 |
unsigned int *extensions));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmParseColors, int, (xpmData *data, unsigned int ncolors,
|
|
Packit |
b099d7 |
unsigned int cpp, XpmColor **colorTablePtr,
|
|
Packit |
b099d7 |
xpmHashTable *hashtable));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmParseExtensions, int, (xpmData *data, XpmExtension **extensions,
|
|
Packit |
b099d7 |
unsigned int *nextensions));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* RGB utility */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmReadRgbNames, int, (char *rgb_fname, xpmRgbName *rgbn));
|
|
Packit |
b099d7 |
FUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max,
|
|
Packit |
b099d7 |
int red, int green, int blue));
|
|
Packit |
b099d7 |
FUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max));
|
|
Packit |
b099d7 |
#ifdef FOR_MSW
|
|
Packit |
b099d7 |
FUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b));
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp,
|
|
Packit |
b099d7 |
register XImage *img));
|
|
Packit |
b099d7 |
FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp,
|
|
Packit |
b099d7 |
register XImage *img));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Macros
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* The XYNORMALIZE macro determines whether XY format data requires
|
|
Packit |
b099d7 |
* normalization and calls a routine to do so if needed. The logic in
|
|
Packit |
b099d7 |
* this module is designed for LSBFirst byte and bit order, so
|
|
Packit |
b099d7 |
* normalization is done as required to present the data in this order.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* The ZNORMALIZE macro performs byte and nibble order normalization if
|
|
Packit |
b099d7 |
* required for Z format data.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* The XYINDEX macro computes the index to the starting byte (char) boundary
|
|
Packit |
b099d7 |
* for a bitmap_unit containing a pixel with coordinates x and y for image
|
|
Packit |
b099d7 |
* data in XY format.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* The ZINDEX* macros compute the index to the starting byte (char) boundary
|
|
Packit |
b099d7 |
* for a pixel with coordinates x and y for image data in ZPixmap format.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XYNORMALIZE(bp, img) \
|
|
Packit |
b099d7 |
if ((img->byte_order == MSBFirst) || (img->bitmap_bit_order == MSBFirst)) \
|
|
Packit |
b099d7 |
xpm_xynormalizeimagebits((unsigned char *)(bp), img)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ZNORMALIZE(bp, img) \
|
|
Packit |
b099d7 |
if (img->byte_order == MSBFirst) \
|
|
Packit |
b099d7 |
xpm_znormalizeimagebits((unsigned char *)(bp), img)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define XYINDEX(x, y, img) \
|
|
Packit |
b099d7 |
((y) * img->bytes_per_line) + \
|
|
Packit |
b099d7 |
(((x) + img->xoffset) / img->bitmap_unit) * (img->bitmap_unit >> 3)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ZINDEX(x, y, img) ((y) * img->bytes_per_line) + \
|
|
Packit |
b099d7 |
(((x) * img->bits_per_pixel) >> 3)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ZINDEX32(x, y, img) ((y) * img->bytes_per_line) + ((x) << 2)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ZINDEX16(x, y, img) ((y) * img->bytes_per_line) + ((x) << 1)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ZINDEX8(x, y, img) ((y) * img->bytes_per_line) + (x)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define ZINDEX1(x, y, img) ((y) * img->bytes_per_line) + ((x) >> 3)
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __STDC__
|
|
Packit |
b099d7 |
#define Const const
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
#define Const /**/
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef NEED_STRDUP
|
|
Packit |
b099d7 |
FUNC(xpmstrdup, char *, (char *s1));
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
#undef xpmstrdup
|
|
Packit |
b099d7 |
#define xpmstrdup strdup
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef NEED_STRCASECMP
|
|
Packit |
b099d7 |
FUNC(xpmstrcasecmp, int, (char *s1, char *s2));
|
|
Packit |
b099d7 |
#else
|
|
Packit |
b099d7 |
#undef xpmstrcasecmp
|
|
Packit |
b099d7 |
#define xpmstrcasecmp strcasecmp
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
FUNC(xpmatoui, unsigned int,
|
|
Packit |
b099d7 |
(char *p, unsigned int l, unsigned int *ui_return));
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#ifdef __cplusplus
|
|
Packit |
b099d7 |
} /* Close scope of 'extern "C"' declaration which encloses file. */
|
|
Packit |
b099d7 |
#endif
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#endif /* _XpmI_h */
|