]>
git.saurik.com Git - wxWidgets.git/blob - src/mac/xpm/XpmI.h
   2  * Copyright (C) 1989-95 GROUPE BULL 
   4  * Permission is hereby granted, free of charge, to any person obtaining a copy 
   5  * of this software and associated documentation files (the "Software"), to 
   6  * deal in the Software without restriction, including without limitation the 
   7  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
   8  * sell copies of the Software, and to permit persons to whom the Software is 
   9  * furnished to do so, subject to the following conditions: 
  11  * The above copyright notice and this permission notice shall be included in 
  12  * all copies or substantial portions of the Software. 
  14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
  15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
  16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
  17  * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 
  18  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
  19  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
  21  * Except as contained in this notice, the name of GROUPE BULL shall not be 
  22  * used in advertising or otherwise to promote the sale, use or other dealings 
  23  * in this Software without prior written authorization from GROUPE BULL. 
  26 /*****************************************************************************\ 
  30 *  Internal Include file                                                      * 
  32 *  ** Everything defined here is subject to changes any time. **              * 
  34 *  Developed by Arnaud Le Hors                                                * 
  35 \*****************************************************************************/ 
  38  * The code related to FOR_MSW has been added by 
  39  * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 
  55  * lets try to solve include files 
  60 /* stdio.h doesn't declare popen on a Sequent DYNIX OS */ 
  65 #if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) || defined( macintosh ) 
  73 #define rindex strrchr 
  76 #else  /* defined(SYSV) || defined(SVR4) || defined(VMS) */ 
  82 #if defined(SYSV) || defined(SVR4) || defined(VMS) || defined(WIN32) || defined( macintosh ) 
  84 #define bcopy(source, dest, count) memcpy(dest, source, count) 
  87 #define bzero(b, len) memset(b, 0, len) 
  91 /* the following is defined in X11R6 but not in previous versions */ 
 103 /* The following should help people wanting to use their own memory allocation 
 104  * functions. To avoid the overhead of a function call when the standard 
 105  * functions are used these are all macros, even the XpmFree function which 
 106  * needs to be a real function for the outside world though. 
 107  * So if change these be sure to change the XpmFree function in misc.c 
 110 #define XpmFree(ptr) free(ptr) 
 113 #define XpmMalloc(size) malloc((size)) 
 114 #define XpmRealloc(ptr, size) realloc((ptr), (size)) 
 115 #define XpmCalloc(nelem, elsize) calloc((nelem), (elsize)) 
 117 /* checks for mallocs bigger than 64K */ 
 118 #define XpmMalloc(size) boundCheckingMalloc((long)(size))/* in simx.[ch] */ 
 119 #define XpmRealloc(ptr, size) boundCheckingRealloc((ptr),(long)(size)) 
 120 #define XpmCalloc(nelem, elsize) \ 
 121                 boundCheckingCalloc((long)(nelem),(long) (elsize)) 
 124 #define XPMMAXCMTLEN BUFSIZ 
 134     char Comment
[XPMMAXCMTLEN
]; 
 135     char *Bcmt
, *Ecmt
, Bos
, Eos
; 
 136     int format
;                 /* 1 if XPM1, 0 otherwise */ 
 153     char *type
;                 /* key word */ 
 154     char *Bcmt
;                 /* string beginning comments */ 
 155     char *Ecmt
;                 /* string ending comments */ 
 156     char Bos
;                   /* character beginning strings */ 
 157     char Eos
;                   /* character ending strings */ 
 158     char *Strs
;                 /* strings separator */ 
 159     char *Dec
;                  /* data declaration string */ 
 160     char *Boa
;                  /* string beginning assignment */ 
 161     char *Eoa
;                  /* string ending assignment */ 
 164 extern xpmDataType xpmDataTypes
[]; 
 167  * rgb values and ascii names (from rgb text file) rgb values, 
 168  * range of 0 -> 65535 color mnemonic of rgb value 
 175 /* Maximum number of rgb mnemonics allowed in rgb text file. */ 
 176 #define MAX_RGBNAMES 1024 
 178 extern char *xpmColorKeys
[]; 
 180 #define TRANSPARENT_COLOR "None"        /* this must be a string! */ 
 182 /* number of xpmColorKeys */ 
 185 /* XPM internal routines */ 
 187 FUNC(xpmParseData
, int, (xpmData 
*data
, XpmImage 
*image
, XpmInfo 
*info
)); 
 188 FUNC(xpmParseDataAndCreate
, int, (Display 
*display
, xpmData 
*data
, 
 189                                   XImage 
**image_return
, 
 190                                   XImage 
**shapeimage_return
, 
 191                                   XpmImage 
*image
, XpmInfo 
*info
, 
 192                                   XpmAttributes 
*attributes
)); 
 194 FUNC(xpmFreeColorTable
, void, (XpmColor 
*colorTable
, int ncolors
)); 
 196 FUNC(xpmInitAttributes
, void, (XpmAttributes 
*attributes
)); 
 198 FUNC(xpmInitXpmImage
, void, (XpmImage 
*image
)); 
 200 FUNC(xpmInitXpmInfo
, void, (XpmInfo 
*info
)); 
 202 FUNC(xpmSetInfoMask
, void, (XpmInfo 
*info
, XpmAttributes 
*attributes
)); 
 203 FUNC(xpmSetInfo
, void, (XpmInfo 
*info
, XpmAttributes 
*attributes
)); 
 204 FUNC(xpmSetAttributes
, void, (XpmAttributes 
*attributes
, XpmImage 
*image
, 
 207 /* structures and functions related to hastable code */ 
 209 typedef struct _xpmHashAtom 
{ 
 218     xpmHashAtom 
*atomTable
; 
 221 FUNC(xpmHashTableInit
, int, (xpmHashTable 
*table
)); 
 222 FUNC(xpmHashTableFree
, void, (xpmHashTable 
*table
)); 
 223 FUNC(xpmHashSlot
, xpmHashAtom 
*, (xpmHashTable 
*table
, char *s
)); 
 224 FUNC(xpmHashIntern
, int, (xpmHashTable 
*table
, char *tag
, void *data
)); 
 226 #define HashAtomData(i) ((void *)i) 
 227 #define HashColorIndex(slot) ((unsigned int)((*slot)->data)) 
 228 #define USE_HASHTABLE (cpp > 2 && ncolors > 4) 
 232 FUNC(xpmNextString
, int, (xpmData 
*mdata
)); 
 233 FUNC(xpmNextUI
, int, (xpmData 
*mdata
, unsigned int *ui_return
)); 
 234 FUNC(xpmGetString
, int, (xpmData 
*mdata
, char **sptr
, unsigned int *l
)); 
 236 #define xpmGetC(mdata) \ 
 237         ((!mdata->type || mdata->type == XPMBUFFER) ? \ 
 238          (*mdata->cptr++) : (getc(mdata->stream.file))) 
 240 FUNC(xpmNextWord
, unsigned int, 
 241      (xpmData 
*mdata
, char *buf
, unsigned int buflen
)); 
 242 FUNC(xpmGetCmt
, int, (xpmData 
*mdata
, char **cmt
)); 
 243 FUNC(xpmParseHeader
, int, (xpmData 
*mdata
)); 
 244 FUNC(xpmParseValues
, int, (xpmData 
*data
, unsigned int *width
, 
 245                            unsigned int *height
, unsigned int *ncolors
, 
 246                            unsigned int *cpp
, unsigned int *x_hotspot
, 
 247                            unsigned int *y_hotspot
, unsigned int *hotspot
, 
 248                            unsigned int *extensions
)); 
 250 FUNC(xpmParseColors
, int, (xpmData 
*data
, unsigned int ncolors
, 
 251                            unsigned int cpp
, XpmColor 
**colorTablePtr
, 
 252                            xpmHashTable 
*hashtable
)); 
 254 FUNC(xpmParseExtensions
, int, (xpmData 
*data
, XpmExtension 
**extensions
, 
 255                                unsigned int *nextensions
)); 
 259 FUNC(xpmReadRgbNames
, int, (char *rgb_fname
, xpmRgbName 
*rgbn
)); 
 260 FUNC(xpmGetRgbName
, char *, (xpmRgbName 
*rgbn
, int rgbn_max
, 
 261                              int red
, int green
, int blue
)); 
 262 FUNC(xpmFreeRgbNames
, void, (xpmRgbName 
*rgbn
, int rgbn_max
)); 
 264 FUNC(xpmGetRGBfromName
,int, (char *name
, int *r
, int *g
, int *b
)); 
 273 FUNC(xpmstrdup
, char *, (char *s1
)); 
 276 #define xpmstrdup strdup 
 279 #ifdef NEED_STRCASECMP                    
 280 FUNC(xpmstrcasecmp
, int, (char *s1
, char *s2
)); 
 283 #define xpmstrcasecmp strcasecmp 
 286 FUNC(xpmatoui
, unsigned int, 
 287      (char *p
, unsigned int l
, unsigned int *ui_return
));