fe805c8aa6e4e04dbe0ce6e8bd928e5089314fef
[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 #include "libgame.h"
19
20 #if defined(PLATFORM_MSDOS)
21 #include "msdos.h"
22 #endif
23
24 #if defined(TARGET_SDL)
25 #include "sdl.h"
26 #elif defined(TARGET_X11)
27 #include "x11.h"
28 #endif
29
30
31 /* contant definitions */
32
33 #define DEFAULT_DEPTH                   0
34
35 #define FULLSCREEN_NOT_AVAILABLE        FALSE
36 #define FULLSCREEN_AVAILABLE            TRUE
37
38
39 /* type definitions */
40
41 typedef int (*EventFilter)(const Event *);
42
43
44 /* structure definitions */
45
46 struct VideoSystemInfo
47 {
48   boolean fullscreen_available;
49   boolean fullscreen_enabled;
50 };
51
52 struct AudioSystemInfo
53 {
54   boolean sound_available;
55   boolean loops_available;
56   int soundserver_pipe[2];
57   int soundserver_pid;
58   char *device_name;
59   int device_fd;
60 };
61
62 struct OptionInfo
63 {
64   char *display_name;
65   char *server_host;
66   int server_port;
67   char *ro_base_directory;
68   char *rw_base_directory;
69   char *level_directory;
70   boolean serveronly;
71   boolean network;
72   boolean verbose;
73   boolean debug;
74 };
75
76
77 /* ========================================================================= */
78 /* exported variables                                                        */
79 /* ========================================================================= */
80
81 extern struct VideoSystemInfo   video;
82 extern struct AudioSystemInfo   audio;
83 extern struct OptionInfo        options;
84
85
86 /* declarations of internal variables */
87
88 extern Display         *display;
89 extern Visual          *visual;
90 extern int              screen;
91 extern Colormap         cmap;
92
93 extern DrawWindow       window;
94 extern GC               gc;
95
96 extern int              FrameCounter;
97
98
99 /* function definitions */
100
101 inline void InitBufferedDisplay(DrawBuffer *, DrawWindow *);
102 inline int GetDisplayDepth(void);
103 inline Bitmap CreateBitmap(int, int, int);
104 inline void FreeBitmap(Bitmap);
105 inline void ClearRectangle(Bitmap, int, int, int, int);
106 inline void BlitBitmap(Bitmap, Bitmap, int, int, int, int, int, int);
107 inline void SetClipMask(GC, Pixmap);
108 inline void SetClipOrigin(GC, int, int);
109 inline void BlitBitmapMasked(Bitmap, Bitmap, int, int, int, int, int, int);
110 inline void DrawSimpleWhiteLine(Bitmap, int, int, int, int);
111 inline void FlushDisplay(void);
112 inline void SyncDisplay(void);
113 inline void KeyboardAutoRepeatOn(void);
114 inline void KeyboardAutoRepeatOff(void);
115 inline boolean PointerInWindow(DrawWindow);
116 inline boolean SetVideoMode(boolean);
117 inline boolean ChangeVideoModeIfNeeded(boolean);
118
119 inline boolean OpenAudio(struct AudioSystemInfo *);
120 inline void CloseAudio(struct AudioSystemInfo *);
121
122 inline void InitEventFilter(EventFilter);
123 inline boolean PendingEvent(void);
124 inline void NextEvent(Event *event);
125 inline Key GetEventKey(KeyEvent *, boolean);
126 inline boolean CheckCloseWindowEvent(ClientMessageEvent *);
127
128 #endif /* SYSTEM_H */