1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back! *
3 *----------------------------------------------------------*
4 * ©1995 Artsoft Development *
6 * 33659 Bielefeld-Senne *
7 * Telefon: (0521) 493245 *
8 * eMail: aeglos@valinor.owl.de *
9 * aeglos@uni-paderborn.de *
10 * q99492@pbhrzx.uni-paderborn.de *
11 *----------------------------------------------------------*
13 ***********************************************************/
22 #if defined(PLATFORM_MSDOS)
26 #if defined(TARGET_SDL)
28 #elif defined(TARGET_X11)
33 /* contant definitions */
35 #define DEFAULT_DEPTH 0
37 #define FULLSCREEN_NOT_AVAILABLE FALSE
38 #define FULLSCREEN_AVAILABLE TRUE
41 /* values for redraw_mask */
42 #define REDRAW_ALL (1 << 0)
43 #define REDRAW_FIELD (1 << 1)
44 #define REDRAW_TILES (1 << 2)
45 #define REDRAW_DOOR_1 (1 << 3)
46 #define REDRAW_VIDEO_1 (1 << 4)
47 #define REDRAW_VIDEO_2 (1 << 5)
48 #define REDRAW_VIDEO_3 (1 << 6)
49 #define REDRAW_MICROLEVEL (1 << 7)
50 #define REDRAW_FROM_BACKBUFFER (1 << 8)
51 #define REDRAW_DOOR_2 (REDRAW_VIDEO_1 | \
54 #define REDRAW_DOOR_3 (1 << 9)
55 #define REDRAW_DOORS (REDRAW_DOOR_1 | \
58 #define REDRAW_MAIN (REDRAW_FIELD | \
61 #define REDRAW_FPS (1 << 10)
62 #define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2)
65 /* type definitions */
67 typedef int (*EventFilter)(const Event *);
70 /* structure definitions */
78 char *x11_icon_filename;
79 char *x11_iconmask_filename;
80 char *msdos_pointer_filename;
88 char *ro_base_directory;
89 char *rw_base_directory;
90 char *level_directory;
97 struct VideoSystemInfo
100 int width, height, depth;
101 boolean fullscreen_available;
102 boolean fullscreen_enabled;
105 struct AudioSystemInfo
107 boolean sound_available;
108 boolean loops_available;
109 int soundserver_pipe[2];
119 int real_sx, real_sy;
120 int full_sxsize, full_sysize;
121 int scrollbuffer_width, scrollbuffer_height;
131 /* ========================================================================= */
132 /* exported variables */
133 /* ========================================================================= */
135 extern struct ProgramInfo program;
136 extern struct OptionInfo options;
137 extern struct VideoSystemInfo video;
138 extern struct AudioSystemInfo audio;
139 extern struct PlayfieldInfo playfield;
141 extern Display *display;
142 extern Visual *visual;
144 extern Colormap cmap;
146 extern DrawWindow window;
147 extern DrawBuffer backbuffer;
148 extern DrawBuffer drawto;
150 extern int redraw_mask;
151 extern int redraw_tiles;
153 extern int FrameCounter;
156 /* function definitions */
158 inline void InitProgramInfo(char *, char *, char *, char *, char *, char *,
161 inline void InitPlayfieldInfo(int, int, int, int, int, int, int, int);
162 inline void InitDoor1Info(int, int, int, int);
163 inline void InitDoor2Info(int, int, int, int);
164 inline void InitScrollbufferInfo(int, int);
166 inline void InitVideoDisplay(void);
167 inline void InitVideoBuffer(DrawBuffer *,DrawWindow *, int, int, int, boolean);
168 inline Bitmap CreateBitmapStruct(void);
169 inline Bitmap CreateBitmap(int, int, int);
170 inline void FreeBitmap(Bitmap);
171 inline void BlitBitmap(Bitmap, Bitmap, int, int, int, int, int, int);
172 inline void ClearRectangle(Bitmap, int, int, int, int);
173 inline void SetClipMask(Bitmap, GC, Pixmap);
174 inline void SetClipOrigin(Bitmap, GC, int, int);
175 inline void BlitBitmapMasked(Bitmap, Bitmap, int, int, int, int, int, int);
176 inline void DrawSimpleWhiteLine(Bitmap, int, int, int, int);
177 inline void FlushDisplay(void);
178 inline void SyncDisplay(void);
179 inline void KeyboardAutoRepeatOn(void);
180 inline void KeyboardAutoRepeatOff(void);
181 inline boolean PointerInWindow(DrawWindow);
182 inline boolean SetVideoMode(boolean);
183 inline boolean ChangeVideoModeIfNeeded(boolean);
185 inline boolean OpenAudio(struct AudioSystemInfo *);
186 inline void CloseAudio(struct AudioSystemInfo *);
188 inline void InitEventFilter(EventFilter);
189 inline boolean PendingEvent(void);
190 inline void NextEvent(Event *event);
191 inline Key GetEventKey(KeyEvent *, boolean);
192 inline boolean CheckCloseWindowEvent(ClientMessageEvent *);
194 #endif /* SYSTEM_H */