home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / x / x11r6-ch / xpm-3.4 / xpm-3 / xpm-3.4c / lib / simx.h < prev    next >
C/C++ Source or Header  |  1994-06-06  |  5KB  |  139 lines

  1. /*
  2.  * Copyright (C) 1989-94 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. * simx.h: 0.1a                                                                *
  28. *                                                                             *
  29. * This emulates some Xlib functionality for MSW. It's not a general solution, *
  30. * it is close related to XPM-lib. It is only intended to satisfy what is need *
  31. * there. Thus allowing to read XPM files under MS windows.                    *
  32. *                                                                             *
  33. * Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de)                           *
  34. \*****************************************************************************/
  35.  
  36.  
  37. #ifndef _SIMX_H
  38. #define _SIMX_H
  39.  
  40. #ifdef FOR_MSW
  41.  
  42. #include "windows.h"            /* MS windows GDI types */
  43.  
  44. /*
  45.  * minimal portability layer between ansi and KR C
  46.  */
  47. /* this comes from xpm.h, and is here again, to avoid complicated
  48.     includes, since this is included from xpm.h */
  49. /* these defines get undefed at the end of this file */
  50. #if __STDC__ || defined(__cplusplus) || defined(c_plusplus)
  51.  /* ANSI || C++ */
  52. #define FUNC(f, t, p) extern t f p
  53. #define LFUNC(f, t, p) static t f p
  54. #else /* k&R */
  55. #define FUNC(f, t, p) extern t f()
  56. #define LFUNC(f, t, p) static t f()
  57. #endif
  58.  
  59.  
  60. FUNC(boundCheckingMalloc, void *, (long s));
  61. FUNC(boundCheckingCalloc, void *, (long num, long s));
  62. FUNC(boundCheckingRealloc, void *, (void *p, long s));
  63.  
  64. /* define MSW types for X window types,
  65.    I don't know much about MSW, but the following defines do the job */
  66.  
  67. typedef HDC Display;            /* this should be similar */
  68. typedef void *Screen;            /* not used */
  69. typedef void *Visual;            /* not used yet, is for GRAY, COLOR,
  70.                      * MONO */
  71.  
  72. typedef void *Colormap;            /* should be COLORPALETTE, not done
  73.                      * yet */
  74.  
  75. typedef COLORREF Pixel;
  76.  
  77. #define PIXEL_ALREADY_TYPEDEFED        /* to let xpm.h know about it */
  78.  
  79. typedef struct {
  80.     Pixel pixel;
  81.     BYTE red, green, blue;
  82. }      XColor;
  83.  
  84. typedef struct {
  85.     HBITMAP bitmap;
  86.     unsigned int width;
  87.     unsigned int height;
  88.     unsigned int depth;
  89. }      XImage;
  90.  
  91. #if defined(__cplusplus) || defined(c_plusplus)
  92. extern "C" {
  93. #endif
  94. /* some replacements for X... functions */
  95.  
  96. /* XDefaultXXX */
  97.     FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen));
  98.     FUNC(XDefaultScreen, Screen *, (Display *d));
  99.     FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen));
  100.     FUNC(XDefaultDepth, int, (Display *d, Screen *s));
  101.  
  102. /* color related */
  103.     FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *));
  104.     FUNC(XAllocColor, int, (Display *, Colormap *, XColor *));
  105.     FUNC(XQueryColors, void, (Display *display, Colormap *colormap,
  106.                   XColor *xcolors, int ncolors));
  107.     FUNC(XFreeColors, int, (Display *d, Colormap cmap,
  108.                 unsigned long pixels[],
  109.                 int npixels, unsigned long planes));
  110. /* XImage */
  111.     FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format,
  112.                   int x, int y, int width, int height,
  113.                   int pad, int foo));
  114.  
  115. /* free and destroy bitmap */
  116.     FUNC(XDestroyImage, void /* ? */ , (XImage *));
  117. /* free only, bitmap remains */
  118.     FUNC(XImageFree, void, (XImage *));
  119. #if defined(__cplusplus) || defined(c_plusplus)
  120. } /* end of extern "C" */
  121. #endif /* cplusplus */
  122.  
  123. #define ZPixmap 1            /* not really used */
  124.  
  125. #ifndef True
  126. #define True 1
  127. #define False 0
  128. #endif
  129. #ifndef Bool
  130. typedef BOOL Bool;        /* take MSW bool */
  131. #endif
  132. /* make these local here, simx.c gets the same from xpm.h */
  133. #undef LFUNC
  134. #undef FUNC
  135.  
  136. #endif /* def FOR_MSW */
  137.  
  138. #endif /* _SIMX_H */
  139.