xpm.h
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:16k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

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