PageRenderTime 26ms CodeModel.GetById 15ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/src/simx.h

#
C Header | 154 lines | 76 code | 25 blank | 53 comment | 4 complexity | 341c96fbb4f8ff90e1a113266e4bc60b MD5 | raw file
  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* 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#define _XFUNCPROTOBEGIN
 44#define _XFUNCPROTOEND
 45#define NO_ZPIPE
 46
 47/*
 48 * minimal portability layer between ansi and KR C
 49 */
 50/* this comes from xpm.h, and is here again, to avoid complicated
 51    includes, since this is included from xpm.h */
 52/* these defines get undefed at the end of this file */
 53#if __STDC__ || defined(__cplusplus) || defined(c_plusplus)
 54 /* ANSI || C++ */
 55#define FUNC(f, t, p) extern t f p
 56#define LFUNC(f, t, p) static t f p
 57#else /* k&R */
 58#define FUNC(f, t, p) extern t f()
 59#define LFUNC(f, t, p) static t f()
 60#endif
 61
 62
 63FUNC(boundCheckingMalloc, void *, (long s));
 64FUNC(boundCheckingCalloc, void *, (long num, long s));
 65FUNC(boundCheckingRealloc, void *, (void *p, long s));
 66
 67/* define MSW types for X window types,
 68   I don't know much about MSW, but the following defines do the job */
 69
 70typedef HDC Display;			/* this should be similar */
 71typedef void *Screen;			/* not used */
 72typedef void *Visual;			/* not used yet, is for GRAY, COLOR,
 73					 * MONO */
 74
 75typedef void *Colormap;			/* should be COLORPALETTE, not done
 76					 * yet */
 77
 78typedef COLORREF Pixel;
 79
 80#define PIXEL_ALREADY_TYPEDEFED		/* to let xpm.h know about it */
 81
 82typedef struct {
 83    Pixel pixel;
 84    BYTE red, green, blue;
 85}      XColor;
 86
 87typedef struct {
 88    HBITMAP bitmap;
 89    unsigned int width;
 90    unsigned int height;
 91    unsigned int depth;
 92}      XImage;
 93
 94#if defined(__cplusplus) || defined(c_plusplus)
 95extern "C" {
 96#endif
 97/* some replacements for X... functions */
 98
 99/* XDefaultXXX */
100    FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen));
101    FUNC(XDefaultScreen, Screen *, (Display *d));
102    FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen));
103    FUNC(XDefaultDepth, int, (Display *d, Screen *s));
104
105/* color related */
106    FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *));
107    FUNC(XAllocColor, int, (Display *, Colormap, XColor *));
108    FUNC(XQueryColors, void, (Display *display, Colormap *colormap,
109			      XColor *xcolors, int ncolors));
110    FUNC(XFreeColors, int, (Display *d, Colormap cmap,
111			    unsigned long pixels[],
112			    int npixels, unsigned long planes));
113/* XImage */
114    FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format,
115				  int x, int y, int width, int height,
116				  int pad, int foo));
117
118/* free and destroy bitmap */
119    FUNC(XDestroyImage, void /* ? */ , (XImage *));
120/* free only, bitmap remains */
121    FUNC(XImageFree, void, (XImage *));
122#if defined(__cplusplus) || defined(c_plusplus)
123} /* end of extern "C" */
124#endif /* cplusplus */
125
126#define ZPixmap 1			/* not really used */
127#define XYBitmap 1			/* not really used */
128
129#ifndef True
130#define True 1
131#define False 0
132#endif
133#ifndef Bool
134typedef BOOL Bool;		/* take MSW bool */
135#endif
136/* make these local here, simx.c gets the same from xpm.h */
137#undef LFUNC
138#undef FUNC
139
140/* Some functions and constants that have non-standard names in the
141   MS library.  */
142#define bzero(addr,sz) memset(addr, 0, sz)
143#define close _close
144#define fdopen _fdopen
145#define index strchr
146#define open _open
147#define O_RDONLY _O_RDONLY
148#define rindex strrchr
149#define strdup _strdup
150
151
152#endif /* def FOR_MSW */
153
154#endif /* _SIMX_H */