1 /* Wlib.h
2 
3  * Include file for the Windowing interface.
4  *
5  * Kevin P. Smith  6/11/89
6  *
7  * The deal is this:
8  *   Call W_Initialize(), and then you may call any of the listed fuinctions.
9  *   Also, externals you are allowed to pass or use include W_BigFont,
10  *     W_RegularFont, W_UnderlineFont, W_HighlightFont, W_White, W_Black,
11  *     W_Red, W_Green, W_Yellow, W_Cyan, W_Grey, W_Textwidth, and W_Textheight.
12  *
13  */
14 
15 #ifndef _h_Wlib
16 #define _h_Wlib
17 
18 
19 #include "copyright2.h"
20 #include "defs.h"
21 
22 typedef void (*W_Callback) ();
23 
24 typedef char *W_Window;
25 
26 typedef struct event
27  {
28 	int type;
29 	W_Window Window;
30 	unsigned char key;
31 	int x, y;
32 #ifdef MOUSE_AS_SHIFT
33 	int modifier;
34 #endif
35  }
36 W_Event;
37 
38 /* mapping for some X11 keys that are not represented by ASCII or Latin-1 */
39 #define W_Key_Up   1
40 #define W_Key_Down 2
41 
42 extern W_Callback W_GetWindowKeyDownHandler (W_Window w);
43 extern W_Callback W_GetWindowKeyUpHandler (W_Window w);
44 extern W_Callback W_GetWindowButtonHandler (W_Window w);
45 extern W_Callback W_GetWindowExposeHandler (W_Window w);
46 extern void W_SetWindowKeyDownHandler (W_Window w, W_Callback c);
47 extern void W_SetWindowKeyUpHandler (W_Window w, W_Callback c);
48 extern void W_SetWindowButtonHandler (W_Window w, W_Callback c);
49 extern void W_SetWindowExposeHandler (W_Window w, W_Callback c);
50 
51 typedef char *W_Icon;
52 typedef char *W_Font;
53 typedef int W_Color;
54 
55 extern W_Font W_BigFont, W_RegularFont, W_UnderlineFont, W_HighlightFont,
56   W_IndyFont;
57 extern W_Color W_White, W_Black, W_Red, W_Green, W_Yellow, W_Cyan, W_Grey;
58 #ifdef RACE_COLORS
59 extern W_Color W_Ind, W_Fed, W_Rom, W_Kli, W_Ori;
60 #endif
61 extern int W_BigTextwidth, W_BigTextheight, W_Textwidth, W_Textheight;
62 extern int W_FastClear;
63 extern W_Font W_MyPlanetFont, W_FriendlyPlanetFont, W_EnemyPlanetFont;
64 
65 extern void W_Initialize (char *str);
66 extern void W_GetPixmaps(W_Window t, W_Window g);
67 extern void W_RenameWindow(W_Window window, char *str);
68 extern W_Window W_MakeWindow (char *name, int x, int y, int width, int height, W_Window parent, int border, W_Color color);
69 extern W_Icon W_StoreBitmap (int width, int height, char *data, W_Window window);
70 extern W_Window W_MakeTextWindow (char *name, int x, int y, int width, int height, W_Window parent, int border);
71 extern W_Window W_MakeScrollingWindow (char *name, int x, int y, int width, int height, W_Window parent, int border);
72 extern void W_FlushScrollingWindow(W_Window window);
73 extern void W_SetSensitive(W_Window w, int v);
74 extern W_Window W_MakeMenu (char *name, int x, int y, int width, int height, W_Window parent, int border);
75 extern void W_WriteText (W_Window window, int x, int y, W_Color color, char *str, int len, W_Font font);
76 extern void W_MaskText (W_Window window, int x, int y, W_Color color, char *str, int len, W_Font font);
77 extern void W_WriteBitmap (int x, int y, W_Icon bit, W_Color color);
78 extern void W_ClearArea (W_Window window, int x, int y, int width, int height);
79 extern void W_MakeLine (W_Window window, int x0, int y0, int x1, int y1, W_Color color);
80 extern void W_MapWindow (W_Window window);
81 extern void W_UnmapWindow (W_Window window);
82 extern int W_EventsPending (void);
83 extern void W_NextEvent (W_Event *wevent);
84 extern void W_SetWindowName(W_Window window, char *name);
85 extern void W_TileWindow (W_Window window, W_Icon bit);
86 extern void W_UnTileWindow (W_Window window);
87 extern void W_ChangeBorder (W_Window window, int color);
88 void W_DefineMapcursor(W_Window window);
89 void W_DefineLocalcursor(W_Window window);
90 void W_DefineFedCursor(W_Window window);
91 void W_DefineRomCursor(W_Window window);
92 void W_DefineKliCursor(W_Window window);
93 void W_DefineOriCursor(W_Window window);
94 void W_DefineTrekCursor(W_Window window);
95 void W_DefineWarningCursor(W_Window window);
96 void W_DefineTextCursor(W_Window window);
97 extern void W_DefineCursor (W_Window window, int width, int height, char *bits, char *mask, int xhot, int yhot);
98 extern int W_IsMapped (W_Window window);
99 void W_ReinitMenu(W_Window window, int neww, int newh);
100 void W_ResizeMenu(W_Window window, int neww, int newh);
101 void W_ResizeWindow(W_Window window, int neww, int newh);
102 extern void W_Beep (void);
103 extern void W_DestroyWindow (W_Window window);
104 extern int W_WindowWidth (W_Window window);
105 extern int W_WindowHeight (W_Window window);
106 extern int W_Socket (void);
107 extern void W_ClearWindow (W_Window window);
108 extern void W_SetIconWindow (W_Window main, W_Window icon);
109 extern void W_CacheLine(W_Window, int, int, int, int, int);
110 extern void W_MakeTractLine(W_Window, int, int, int, int, W_Color);
111 extern void W_MakePhaserLine(W_Window, int, int, int, int, W_Color);
112 extern void W_WriteCircle(W_Window, int, int, int, W_Color);
113 extern void W_WriteTriangle(W_Window, int, int, int, int, W_Color);
114 extern void W_CacheClearArea(W_Window, int, int, int, int);
115 extern void W_FlushClearAreaCache(W_Window);
116 extern void W_FlushLineCaches(W_Window);
117 extern void W_ResizeTextWindow(W_Window, int, int);
118 extern int W_Mono(void);
119 extern int W_EventsQueuedCk(void);
120 extern void W_OverlayBitmap(int, int, W_Icon, W_Color);
121 extern void W_WriteTriangle(W_Window, int, int, int, int, W_Color);
122 extern void W_Flush(void);
123 
124 #define W_EV_EXPOSE	1
125 #define W_EV_KEY	2
126 #define W_EV_BUTTON	3
127 
128 #ifdef MOUSE_AS_SHIFT
129 #define W_EV_MKEY	4
130 #endif
131 
132 #ifdef AUTOKEY
133 #define W_EV_KEY_OFF	4
134 #endif /*AUTOKEY */
135 
136 #ifdef MOTION_MOUSE
137 #define W_EV_CM_BUTTON	5
138 #endif
139 
140 #define W_EV_CLOSED	6	/* window was closed by user action */
141 
142 #define W_LBUTTON       1
143 #define W_MBUTTON       2
144 #define W_RBUTTON       3
145 #define W_WUBUTTON      4    // Mouse wheel up
146 #define W_WDBUTTON      5    // wheel down
147 #define W_X1BUTTON      6    // future extra keys
148 #define W_X2BUTTON      7
149 
150 
151 #ifdef SHIFTED_MOUSE
152 #define W_SHIFT_BUTTON	0x08
153 #define W_CTRL_BUTTON	0x10
154 #define W_BUTTON_RANGE  0x20
155 #else
156 #define W_BUTTON_RANGE  8
157 #endif
158 
159 #define W_BoldFont W_HighlightFont
160 
161 void W_FillArea(W_Window window, int x, int y, int width, int height, W_Color color);
162 void W_DefineArrowCursor(W_Window window);
163 void W_GalacticBgd(int which);
164 void W_LocalBgd(int which);
165 
166 int W_TTSTextHeight(void);
167 int W_TTSTextWidth(char *s, int l);
168 void W_EraseTTSText(W_Window window, int max_width, int y, int width);
169 void W_WriteTTSText(W_Window window, int max_width, int y, int width, char *str, int len);
170 void W_Halo(int x, int y, W_Color color);
171 
172 void W_FullScreenOn(W_Window window);
173 void W_FullScreenOff(W_Window window);
174 void W_FullScreenInitialise(void);
175 int W_FullScreenToggle(W_Window window);
176 #define FULLSCREEN_NOT_COMPILED -1
177 #define FULLSCREEN_OK 0
178 #define FULLSCREEN_FAILED 1
179 void W_FullScreenBegin(W_Window window);
180 void W_FullScreen(W_Window window);
181 void W_CameraSnap(W_Window window);
182 int W_SpNextEvent(W_Event *wevent);
183 int findMouseInWin(int *x, int *y, W_Window w);
184 int W_EventsQueued(void);
185 int W_EventsQueuedCk(void);
186 
187 void W_SetBackground(W_Window w, int which);
188 void *W_SetBackgroundImage(W_Window w, char *name);
189 
190 void W_NextScreenShot(W_Window w, int x, int y);
191 void W_DrawScreenShot(W_Window w, int x, int y);
192 
193 void *W_ReadImage(W_Window w, char *name);
194 void W_DrawImage(int x, int y, void *sprite_v);
195 void W_DropImage(void *sprite_v);
196 
197 #endif /* _h_Wlib */
198