1 /* 2 * Copyright (C) 1989-95 GROUPE BULL 3 * 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: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 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. 20 * 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. 24 */ 25 26 /*****************************************************************************\ 27 * xpm.h: * 28 * * 29 * XPM library * 30 * Include file * 31 * * 32 * Developed by Arnaud Le Hors * 33 \*****************************************************************************/ 34 35 #ifndef XPM_h 36 #define XPM_h 37 38 /* 39 * first some identification numbers: 40 * the version and revision numbers are determined with the following rule: 41 * SO Major number = LIB minor version number. 42 * SO Minor number = LIB sub-minor version number. 43 * e.g: Xpm version 3.2f 44 * we forget the 3 which is the format number, 2 gives 2, and f gives 6. 45 * thus we have XpmVersion = 2 and XpmRevision = 6 46 * which gives SOXPMLIBREV = 2.6 47 * 48 * Then the XpmIncludeVersion number is built from these numbers. 49 */ 50 #define XpmFormat 3 51 #define XpmVersion 4 52 #define XpmRevision 11 53 #define XpmIncludeVersion ((XpmFormat * 100 + XpmVersion) * 100 + XpmRevision) 54 55 #ifndef XPM_NUMBERS 56 57 # include <X11/Xfuncproto.h> 58 # include <X11/Xlib.h> 59 # include <X11/Xutil.h> 60 61 /* let's define Pixel if it is not done yet */ 62 #if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED) 63 typedef unsigned long Pixel; /* Index into colormap */ 64 # define PIXEL_ALREADY_TYPEDEFED 65 #endif 66 67 /* Return ErrorStatus codes: 68 * null if full success 69 * positive if partial success 70 * negative if failure 71 */ 72 73 #define XpmColorError 1 74 #define XpmSuccess 0 75 #define XpmOpenFailed -1 76 #define XpmFileInvalid -2 77 #define XpmNoMemory -3 78 #define XpmColorFailed -4 79 80 typedef struct { 81 char *name; /* Symbolic color name */ 82 char *value; /* Color value */ 83 Pixel pixel; /* Color pixel */ 84 } XpmColorSymbol; 85 86 typedef struct { 87 char *name; /* name of the extension */ 88 unsigned int nlines; /* number of lines in this extension */ 89 char **lines; /* pointer to the extension array of strings */ 90 } XpmExtension; 91 92 typedef struct { 93 char *string; /* characters string */ 94 char *symbolic; /* symbolic name */ 95 char *m_color; /* monochrom default */ 96 char *g4_color; /* 4 level grayscale default */ 97 char *g_color; /* other level grayscale default */ 98 char *c_color; /* color default */ 99 } XpmColor; 100 101 typedef struct { 102 unsigned int width; /* image width */ 103 unsigned int height; /* image height */ 104 unsigned int cpp; /* number of characters per pixel */ 105 unsigned int ncolors; /* number of colors */ 106 XpmColor *colorTable; /* list of related colors */ 107 unsigned int *data; /* image data */ 108 } XpmImage; 109 110 typedef struct { 111 unsigned long valuemask; /* Specifies which attributes are defined */ 112 char *hints_cmt; /* Comment of the hints section */ 113 char *colors_cmt; /* Comment of the colors section */ 114 char *pixels_cmt; /* Comment of the pixels section */ 115 unsigned int x_hotspot; /* Returns the x hotspot's coordinate */ 116 unsigned int y_hotspot; /* Returns the y hotspot's coordinate */ 117 unsigned int nextensions; /* number of extensions */ 118 XpmExtension *extensions; /* pointer to array of extensions */ 119 } XpmInfo; 120 121 typedef int (*XpmAllocColorFunc)( 122 Display* /* display */, 123 Colormap /* colormap */, 124 char* /* colorname */, 125 XColor* /* xcolor */, 126 void* /* closure */ 127 ); 128 129 typedef int (*XpmFreeColorsFunc)( 130 Display* /* display */, 131 Colormap /* colormap */, 132 Pixel* /* pixels */, 133 int /* npixels */, 134 void* /* closure */ 135 ); 136 137 typedef struct { 138 unsigned long valuemask; /* Specifies which attributes are 139 defined */ 140 141 Visual *visual; /* Specifies the visual to use */ 142 Colormap colormap; /* Specifies the colormap to use */ 143 unsigned int depth; /* Specifies the depth */ 144 unsigned int width; /* Returns the width of the created 145 pixmap */ 146 unsigned int height; /* Returns the height of the created 147 pixmap */ 148 unsigned int x_hotspot; /* Returns the x hotspot's 149 coordinate */ 150 unsigned int y_hotspot; /* Returns the y hotspot's 151 coordinate */ 152 unsigned int cpp; /* Specifies the number of char per 153 pixel */ 154 Pixel *pixels; /* List of used color pixels */ 155 unsigned int npixels; /* Number of used pixels */ 156 XpmColorSymbol *colorsymbols; /* List of color symbols to override */ 157 unsigned int numsymbols; /* Number of symbols */ 158 char *rgb_fname; /* RGB text file name */ 159 unsigned int nextensions; /* Number of extensions */ 160 XpmExtension *extensions; /* List of extensions */ 161 162 unsigned int ncolors; /* Number of colors */ 163 XpmColor *colorTable; /* List of colors */ 164 /* 3.2 backward compatibility code */ 165 char *hints_cmt; /* Comment of the hints section */ 166 char *colors_cmt; /* Comment of the colors section */ 167 char *pixels_cmt; /* Comment of the pixels section */ 168 /* end 3.2 bc */ 169 unsigned int mask_pixel; /* Color table index of transparent 170 color */ 171 172 /* Color Allocation Directives */ 173 Bool exactColors; /* Only use exact colors for visual */ 174 unsigned int closeness; /* Allowable RGB deviation */ 175 unsigned int red_closeness; /* Allowable red deviation */ 176 unsigned int green_closeness; /* Allowable green deviation */ 177 unsigned int blue_closeness; /* Allowable blue deviation */ 178 int color_key; /* Use colors from this color set */ 179 180 Pixel *alloc_pixels; /* Returns the list of alloc'ed color 181 pixels */ 182 int nalloc_pixels; /* Returns the number of alloc'ed 183 color pixels */ 184 185 Bool alloc_close_colors; /* Specify whether close colors should 186 be allocated using XAllocColor 187 or not */ 188 int bitmap_format; /* Specify the format of 1bit depth 189 images: ZPixmap or XYBitmap */ 190 191 /* Color functions */ 192 XpmAllocColorFunc alloc_color; /* Application color allocator */ 193 XpmFreeColorsFunc free_colors; /* Application color de-allocator */ 194 void *color_closure; /* Application private data to pass to 195 alloc_color and free_colors */ 196 197 } XpmAttributes; 198 199 /* XpmAttributes value masks bits */ 200 #define XpmVisual (1L<<0) 201 #define XpmColormap (1L<<1) 202 #define XpmDepth (1L<<2) 203 #define XpmSize (1L<<3) /* width & height */ 204 #define XpmHotspot (1L<<4) /* x_hotspot & y_hotspot */ 205 #define XpmCharsPerPixel (1L<<5) 206 #define XpmColorSymbols (1L<<6) 207 #define XpmRgbFilename (1L<<7) 208 /* 3.2 backward compatibility code */ 209 #define XpmInfos (1L<<8) 210 #define XpmReturnInfos XpmInfos 211 /* end 3.2 bc */ 212 #define XpmReturnPixels (1L<<9) 213 #define XpmExtensions (1L<<10) 214 #define XpmReturnExtensions XpmExtensions 215 216 #define XpmExactColors (1L<<11) 217 #define XpmCloseness (1L<<12) 218 #define XpmRGBCloseness (1L<<13) 219 #define XpmColorKey (1L<<14) 220 221 #define XpmColorTable (1L<<15) 222 #define XpmReturnColorTable XpmColorTable 223 224 #define XpmReturnAllocPixels (1L<<16) 225 #define XpmAllocCloseColors (1L<<17) 226 #define XpmBitmapFormat (1L<<18) 227 228 #define XpmAllocColor (1L<<19) 229 #define XpmFreeColors (1L<<20) 230 #define XpmColorClosure (1L<<21) 231 232 233 /* XpmInfo value masks bits */ 234 #define XpmComments XpmInfos 235 #define XpmReturnComments XpmComments 236 237 /* XpmAttributes mask_pixel value when there is no mask */ 238 #define XpmUndefPixel 0x80000000 239 240 /* 241 * color keys for visual type, they must fit along with the number key of 242 * each related element in xpmColorKeys[] defined in XpmI.h 243 */ 244 #define XPM_MONO 2 245 #define XPM_GREY4 3 246 #define XPM_GRAY4 3 247 #define XPM_GREY 4 248 #define XPM_GRAY 4 249 #define XPM_COLOR 5 250 251 252 /* macros for forward declarations of functions with prototypes */ 253 #ifndef _X_EXPORT 254 # define _X_EXPORT 255 # define _X_HIDDEN 256 #endif 257 #define FUNC(f, t, p) extern _X_EXPORT t f p 258 #define HFUNC(f, t, p) extern _X_HIDDEN t f p 259 #define LFUNC(f, t, p) static t f p 260 261 262 /* 263 * functions declarations 264 */ 265 266 _XFUNCPROTOBEGIN 267 268 FUNC(XpmCreatePixmapFromData, int, (Display *display, 269 Drawable d, 270 char **data, 271 Pixmap *pixmap_return, 272 Pixmap *shapemask_return, 273 XpmAttributes *attributes)); 274 275 FUNC(XpmCreateDataFromPixmap, int, (Display *display, 276 char ***data_return, 277 Pixmap pixmap, 278 Pixmap shapemask, 279 XpmAttributes *attributes)); 280 281 FUNC(XpmReadFileToPixmap, int, (Display *display, 282 Drawable d, 283 const char *filename, 284 Pixmap *pixmap_return, 285 Pixmap *shapemask_return, 286 XpmAttributes *attributes)); 287 288 FUNC(XpmWriteFileFromPixmap, int, (Display *display, 289 const char *filename, 290 Pixmap pixmap, 291 Pixmap shapemask, 292 XpmAttributes *attributes)); 293 294 FUNC(XpmCreateImageFromData, int, (Display *display, 295 char **data, 296 XImage **image_return, 297 XImage **shapemask_return, 298 XpmAttributes *attributes)); 299 300 FUNC(XpmCreateDataFromImage, int, (Display *display, 301 char ***data_return, 302 XImage *image, 303 XImage *shapeimage, 304 XpmAttributes *attributes)); 305 306 FUNC(XpmReadFileToImage, int, (Display *display, 307 const char *filename, 308 XImage **image_return, 309 XImage **shapeimage_return, 310 XpmAttributes *attributes)); 311 312 FUNC(XpmWriteFileFromImage, int, (Display *display, 313 const char *filename, 314 XImage *image, 315 XImage *shapeimage, 316 XpmAttributes *attributes)); 317 318 FUNC(XpmCreateImageFromBuffer, int, (Display *display, 319 char *buffer, 320 XImage **image_return, 321 XImage **shapemask_return, 322 XpmAttributes *attributes)); 323 324 FUNC(XpmCreatePixmapFromBuffer, int, (Display *display, 325 Drawable d, 326 char *buffer, 327 Pixmap *pixmap_return, 328 Pixmap *shapemask_return, 329 XpmAttributes *attributes)); 330 331 FUNC(XpmCreateBufferFromImage, int, (Display *display, 332 char **buffer_return, 333 XImage *image, 334 XImage *shapeimage, 335 XpmAttributes *attributes)); 336 337 FUNC(XpmCreateBufferFromPixmap, int, (Display *display, 338 char **buffer_return, 339 Pixmap pixmap, 340 Pixmap shapemask, 341 XpmAttributes *attributes)); 342 343 FUNC(XpmReadFileToBuffer, int, (const char *filename, char **buffer_return)); 344 FUNC(XpmWriteFileFromBuffer, int, (const char *filename, char *buffer)); 345 346 FUNC(XpmReadFileToData, int, (const char *filename, char ***data_return)); 347 FUNC(XpmWriteFileFromData, int, (const char *filename, char **data)); 348 349 FUNC(XpmAttributesSize, int, (void)); 350 FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes)); 351 FUNC(XpmFreeExtensions, void, (XpmExtension *extensions, 352 int nextensions)); 353 354 FUNC(XpmFreeXpmImage, void, (XpmImage *image)); 355 FUNC(XpmFreeXpmInfo, void, (XpmInfo *info)); 356 FUNC(XpmGetErrorString, char *, (int errcode)); 357 FUNC(XpmLibraryVersion, int, (void)); 358 359 /* XpmImage functions */ 360 FUNC(XpmReadFileToXpmImage, int, (const char *filename, 361 XpmImage *image, 362 XpmInfo *info)); 363 364 FUNC(XpmWriteFileFromXpmImage, int, (const char *filename, 365 XpmImage *image, 366 XpmInfo *info)); 367 368 FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display, 369 Drawable d, 370 XpmImage *image, 371 Pixmap *pixmap_return, 372 Pixmap *shapemask_return, 373 XpmAttributes *attributes)); 374 375 FUNC(XpmCreateImageFromXpmImage, int, (Display *display, 376 XpmImage *image, 377 XImage **image_return, 378 XImage **shapeimage_return, 379 XpmAttributes *attributes)); 380 381 FUNC(XpmCreateXpmImageFromImage, int, (Display *display, 382 XImage *image, 383 XImage *shapeimage, 384 XpmImage *xpmimage, 385 XpmAttributes *attributes)); 386 387 FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display, 388 Pixmap pixmap, 389 Pixmap shapemask, 390 XpmImage *xpmimage, 391 XpmAttributes *attributes)); 392 393 FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return, 394 XpmImage *image, 395 XpmInfo *info)); 396 397 FUNC(XpmCreateXpmImageFromData, int, (char **data, 398 XpmImage *image, 399 XpmInfo *info)); 400 401 FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer, 402 XpmImage *image, 403 XpmInfo *info)); 404 405 FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return, 406 XpmImage *image, 407 XpmInfo *info)); 408 409 FUNC(XpmGetParseError, int, (char *filename, 410 int *linenum_return, 411 int *charnum_return)); 412 413 FUNC(XpmFree, void, (void *ptr)); 414 415 _XFUNCPROTOEND 416 417 /* backward compatibility */ 418 419 /* for version 3.0c */ 420 #define XpmPixmapColorError XpmColorError 421 #define XpmPixmapSuccess XpmSuccess 422 #define XpmPixmapOpenFailed XpmOpenFailed 423 #define XpmPixmapFileInvalid XpmFileInvalid 424 #define XpmPixmapNoMemory XpmNoMemory 425 #define XpmPixmapColorFailed XpmColorFailed 426 427 #define XpmReadPixmapFile(dpy, d, file, pix, mask, att) \ 428 XpmReadFileToPixmap(dpy, d, file, pix, mask, att) 429 #define XpmWritePixmapFile(dpy, file, pix, mask, att) \ 430 XpmWriteFileFromPixmap(dpy, file, pix, mask, att) 431 432 /* for version 3.0b */ 433 #define PixmapColorError XpmColorError 434 #define PixmapSuccess XpmSuccess 435 #define PixmapOpenFailed XpmOpenFailed 436 #define PixmapFileInvalid XpmFileInvalid 437 #define PixmapNoMemory XpmNoMemory 438 #define PixmapColorFailed XpmColorFailed 439 440 #define ColorSymbol XpmColorSymbol 441 442 #define XReadPixmapFile(dpy, d, file, pix, mask, att) \ 443 XpmReadFileToPixmap(dpy, d, file, pix, mask, att) 444 #define XWritePixmapFile(dpy, file, pix, mask, att) \ 445 XpmWriteFileFromPixmap(dpy, file, pix, mask, att) 446 #define XCreatePixmapFromData(dpy, d, data, pix, mask, att) \ 447 XpmCreatePixmapFromData(dpy, d, data, pix, mask, att) 448 #define XCreateDataFromPixmap(dpy, data, pix, mask, att) \ 449 XpmCreateDataFromPixmap(dpy, data, pix, mask, att) 450 451 #endif /* XPM_NUMBERS */ 452 #endif 453