808f752da8faa5c9208ee96bf92baad652c28a9f
[rocksndiamonds.git] / src / libgame / system.h
1 /***********************************************************
2 *  Rocks'n'Diamonds -- McDuffin Strikes Back!              *
3 *----------------------------------------------------------*
4 *  ©1995 Artsoft Development                               *
5 *        Holger Schemel                                    *
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 *----------------------------------------------------------*
12 *  system.h                                                *
13 ***********************************************************/
14
15 #ifndef SYSTEM_H
16 #define SYSTEM_H
17
18 /*
19 #include "libgame.h"
20 */
21
22 #if defined(PLATFORM_MSDOS)
23 #include "msdos.h"
24 #endif
25
26 #if defined(TARGET_SDL)
27 #include "sdl.h"
28 #elif defined(TARGET_X11)
29 #include "x11.h"
30 #endif
31
32
33 /* contant definitions */
34
35 #define DEFAULT_DEPTH                   0
36
37 #define FULLSCREEN_NOT_AVAILABLE        FALSE
38 #define FULLSCREEN_AVAILABLE            TRUE
39
40
41 /* type definitions */
42
43 typedef int (*EventFilter)(const Event *);
44
45
46 /* structure definitions */
47
48 struct ProgramInfo
49 {
50   char *command_name;
51   char *program_title;
52   char *window_title;
53   char *icon_title;
54   char *x11_icon_filename;
55   char *x11_iconmask_filename;
56   char *msdos_pointer_filename;
57 };
58
59 struct VideoSystemInfo
60 {
61   int default_depth;
62   int width, height, depth;
63   int scrollbuffer_width, scrollbuffer_height;
64   boolean fullscreen_available;
65   boolean fullscreen_enabled;
66 };
67
68 struct AudioSystemInfo
69 {
70   boolean sound_available;
71   boolean loops_available;
72   int soundserver_pipe[2];
73   int soundserver_pid;
74   char *device_name;
75   int device_fd;
76 };
77
78 struct OptionInfo
79 {
80   char *display_name;
81   char *server_host;
82   int server_port;
83   char *ro_base_directory;
84   char *rw_base_directory;
85   char *level_directory;
86   boolean serveronly;
87   boolean network;
88   boolean verbose;
89   boolean debug;
90 };
91
92
93 /* ========================================================================= */
94 /* exported variables                                                        */
95 /* ========================================================================= */
96
97 extern struct ProgramInfo       program;
98 extern struct VideoSystemInfo   video;
99 extern struct AudioSystemInfo   audio;
100 extern struct OptionInfo        options;
101
102
103 /* declarations of internal variables */
104
105 extern Display         *display;
106 extern Visual          *visual;
107 extern int              screen;
108 extern Colormap         cmap;
109
110 extern DrawWindow       window;
111 extern DrawBuffer       backbuffer;
112 extern GC               gc;
113
114 extern int              FrameCounter;
115
116
117 /* function definitions */
118
119 inline void InitProgramInfo(char *, char *, char *, char *, char *, char *,
120                             char *);
121 inline void InitScrollbufferSize(int, int);
122 inline void InitVideoDisplay(void);
123 inline void InitVideoBuffer(DrawBuffer *,DrawWindow *, int, int, int, boolean);
124 inline Bitmap CreateBitmap(int, int, int);
125 inline void FreeBitmap(Bitmap);
126 inline void ClearRectangle(Bitmap, int, int, int, int);
127 inline void BlitBitmap(Bitmap, Bitmap, int, int, int, int, int, int);
128 inline void SetClipMask(GC, Pixmap);
129 inline void SetClipOrigin(GC, int, int);
130 inline void BlitBitmapMasked(Bitmap, Bitmap, int, int, int, int, int, int);
131 inline void DrawSimpleWhiteLine(Bitmap, int, int, int, int);
132 inline void FlushDisplay(void);
133 inline void SyncDisplay(void);
134 inline void KeyboardAutoRepeatOn(void);
135 inline void KeyboardAutoRepeatOff(void);
136 inline boolean PointerInWindow(DrawWindow);
137 inline boolean SetVideoMode(boolean);
138 inline boolean ChangeVideoModeIfNeeded(boolean);
139
140 inline boolean OpenAudio(struct AudioSystemInfo *);
141 inline void CloseAudio(struct AudioSystemInfo *);
142
143 inline void InitEventFilter(EventFilter);
144 inline boolean PendingEvent(void);
145 inline void NextEvent(Event *event);
146 inline Key GetEventKey(KeyEvent *, boolean);
147 inline boolean CheckCloseWindowEvent(ClientMessageEvent *);
148
149 #endif /* SYSTEM_H */