1 |
673 |
markom |
#ifndef _SERV_H
|
2 |
|
|
#define _SERV_H
|
3 |
|
|
/*
|
4 |
|
|
* Copyright (c) 2000 Greg Haerr <greg@censoft.com>
|
5 |
|
|
* Copyright (c) 2000 Alex Holden <alex@linuxhacker.org>
|
6 |
|
|
* Copyright (c) 1991 David I. Bell
|
7 |
|
|
* Permission is granted to use, distribute, or modify this source,
|
8 |
|
|
* provided that this copyright notice remains intact.
|
9 |
|
|
*
|
10 |
|
|
* Private definitions for the graphics server.
|
11 |
|
|
* These definitions are not to be used by clients.
|
12 |
|
|
*/
|
13 |
|
|
|
14 |
|
|
#if defined(__ECOS) && !defined(_NO_SVR_MAPPING)
|
15 |
|
|
//
|
16 |
|
|
// Since eCos is a single task, multi-threaded environment, the
|
17 |
|
|
// server and the client code share the same namespace. This means
|
18 |
|
|
// that server functions which are represented by dispatchers in
|
19 |
|
|
// the client code need to have unique names, thus this remapping.
|
20 |
|
|
//
|
21 |
|
|
#define GrArcAngle SVR_GrArcAngle
|
22 |
|
|
#define GrArc SVR_GrArc
|
23 |
|
|
#define GrArea SVR_GrArea
|
24 |
|
|
#define GrBell SVR_GrBell
|
25 |
|
|
#define GrBitmap SVR_GrBitmap
|
26 |
|
|
#define GrCheckNextEvent SVR_GrCheckNextEvent
|
27 |
|
|
#define GrClearWindow SVR_GrClearWindow
|
28 |
|
|
#define GrClose SVR_GrClose
|
29 |
|
|
#define GrCloseWindow SVR_GrCloseWindow
|
30 |
|
|
#define GrCopyArea SVR_GrCopyArea
|
31 |
|
|
#define GrCopyGC SVR_GrCopyGC
|
32 |
|
|
#define GrCreateFont SVR_GrCreateFont
|
33 |
|
|
#define GrDestroyFont SVR_GrDestroyFont
|
34 |
|
|
#define GrDestroyGC SVR_GrDestroyGC
|
35 |
|
|
#define GrDestroyRegion SVR_GrDestroyRegion
|
36 |
|
|
#define GrDestroyWindow SVR_GrDestroyWindow
|
37 |
|
|
#define GrDrawImageBits SVR_GrDrawImageBits
|
38 |
|
|
#define GrDrawImageFromFile SVR_GrDrawImageFromFile
|
39 |
|
|
#define GrDrawImageToFit SVR_GrDrawImageToFit
|
40 |
|
|
#define GrEllipse SVR_GrEllipse
|
41 |
|
|
#define GrEmptyRegion SVR_GrEmptyRegion
|
42 |
|
|
#define GrEqualRegion SVR_GrEqualRegion
|
43 |
|
|
#define GrFillEllipse SVR_GrFillEllipse
|
44 |
|
|
#define GrFillPoly SVR_GrFillPoly
|
45 |
|
|
#define GrFillRect SVR_GrFillRect
|
46 |
|
|
#define GrFindColor SVR_GrFindColor
|
47 |
|
|
#define GrFreeImage SVR_GrFreeImage
|
48 |
|
|
#define GrGetFocus SVR_GrGetFocus
|
49 |
|
|
#define GrGetFontInfo SVR_GrGetFontInfo
|
50 |
|
|
#define GrGetGCInfo SVR_GrGetGCInfo
|
51 |
|
|
#define GrGetGCTextSize SVR_GrGetGCTextSize
|
52 |
|
|
#define GrGetImageInfo SVR_GrGetImageInfo
|
53 |
|
|
#define GrGetRegionBox SVR_GrGetRegionBox
|
54 |
|
|
#define GrGetScreenInfo SVR_GrGetScreenInfo
|
55 |
|
|
#define GrGetSelectionOwner SVR_GrGetSelectionOwner
|
56 |
|
|
#define GrGetSysColor SVR_GrGetSysColor
|
57 |
|
|
#define GrGetSystemPalette SVR_GrGetSystemPalette
|
58 |
|
|
#define GrGetWindowInfo SVR_GrGetWindowInfo
|
59 |
|
|
#define GrGetWMProperties SVR_GrGetWMProperties
|
60 |
|
|
#define GrInjectKeyboardEvent SVR_GrInjectKeyboardEvent
|
61 |
|
|
#define GrInjectPointerEvent SVR_GrInjectPointerEvent
|
62 |
|
|
#define GrIntersectRegion SVR_GrIntersectRegion
|
63 |
|
|
#define GrKillWindow SVR_GrKillWindow
|
64 |
|
|
#define GrLine SVR_GrLine
|
65 |
|
|
#define GrLoadImageFromFile SVR_GrLoadImageFromFile
|
66 |
|
|
#define GrLowerWindow SVR_GrLowerWindow
|
67 |
|
|
#define GrMapWindow SVR_GrMapWindow
|
68 |
|
|
#define GrMoveCursor SVR_GrMoveCursor
|
69 |
|
|
#define GrMoveWindow SVR_GrMoveWindow
|
70 |
|
|
#define GrNewGC SVR_GrNewGC
|
71 |
|
|
#define GrNewInputWindow SVR_GrNewInputWindow
|
72 |
|
|
#define GrNewPixmap SVR_GrNewPixmap
|
73 |
|
|
#define GrNewPolygonRegion SVR_GrNewPolygonRegion
|
74 |
|
|
#define GrNewRegion SVR_GrNewRegion
|
75 |
|
|
#define GrNewWindow SVR_GrNewWindow
|
76 |
|
|
#define GrOffsetRegion SVR_GrOffsetRegion
|
77 |
|
|
#define GrOpen SVR_GrOpen
|
78 |
|
|
#define GrPeekEvent SVR_GrPeekEvent
|
79 |
|
|
#define GrPointInRegion SVR_GrPointInRegion
|
80 |
|
|
#define GrPoints SVR_GrPoints
|
81 |
|
|
#define GrPoint SVR_GrPoint
|
82 |
|
|
#define GrPoly SVR_GrPoly
|
83 |
|
|
#define GrRaiseWindow SVR_GrRaiseWindow
|
84 |
|
|
#define GrReadArea SVR_GrReadArea
|
85 |
|
|
#define GrRectInRegion SVR_GrRectInRegion
|
86 |
|
|
#define GrRect SVR_GrRect
|
87 |
|
|
#define GrReparentWindow SVR_GrReparentWindow
|
88 |
|
|
#define GrRequestClientData SVR_GrRequestClientData
|
89 |
|
|
#define GrResizeWindow SVR_GrResizeWindow
|
90 |
|
|
#define GrSelectEvents SVR_GrSelectEvents
|
91 |
|
|
#define GrSendClientData SVR_GrSendClientData
|
92 |
|
|
#define GrSetBackgroundPixmap SVR_GrSetBackgroundPixmap
|
93 |
|
|
#define GrSetBorderColor SVR_GrSetBorderColor
|
94 |
|
|
#define GrSetCursor SVR_GrSetCursor
|
95 |
|
|
#define GrSetFocus SVR_GrSetFocus
|
96 |
|
|
#define GrSetFontAttr SVR_GrSetFontAttr
|
97 |
|
|
#define GrSetFontRotation SVR_GrSetFontRotation
|
98 |
|
|
#define GrSetFontSize SVR_GrSetFontSize
|
99 |
|
|
#define GrSetGCBackground SVR_GrSetGCBackground
|
100 |
|
|
#define GrSetGCFont SVR_GrSetGCFont
|
101 |
|
|
#define GrSetGCForeground SVR_GrSetGCForeground
|
102 |
|
|
#define GrSetGCMode SVR_GrSetGCMode
|
103 |
|
|
#define GrSetGCRegion SVR_GrSetGCRegion
|
104 |
|
|
#define GrSetGCUseBackground SVR_GrSetGCUseBackground
|
105 |
|
|
#define GrSetScreenSaverTimeout SVR_GrSetScreenSaverTimeout
|
106 |
|
|
#define GrSetSelectionOwner SVR_GrSetSelectionOwner
|
107 |
|
|
#define GrSetSystemPalette SVR_GrSetSystemPalette
|
108 |
|
|
#define GrSetWMProperties SVR_GrSetWMProperties
|
109 |
|
|
#define GrSubtractRegion SVR_GrSubtractRegion
|
110 |
|
|
#define GrText SVR_GrText
|
111 |
|
|
#define GrUnionRectWithRegion SVR_GrUnionRectWithRegion
|
112 |
|
|
#define GrUnionRegion SVR_GrUnionRegion
|
113 |
|
|
#define GrUnmapWindow SVR_GrUnmapWindow
|
114 |
|
|
#define GrXorRegion SVR_GrXorRegion
|
115 |
|
|
#endif
|
116 |
|
|
|
117 |
|
|
#include "nano-X.h"
|
118 |
|
|
#include "device.h"
|
119 |
|
|
|
120 |
|
|
/*
|
121 |
|
|
* Drawing types.
|
122 |
|
|
*/
|
123 |
|
|
typedef int GR_DRAW_TYPE;
|
124 |
|
|
|
125 |
|
|
#define GR_DRAW_TYPE_NONE 0 /* none or error */
|
126 |
|
|
#define GR_DRAW_TYPE_WINDOW 1 /* windows */
|
127 |
|
|
#define GR_DRAW_TYPE_PIXMAP 2 /* pixmaps */
|
128 |
|
|
|
129 |
|
|
#define GR_MAX_MODE MWMODE_MAX
|
130 |
|
|
/*
|
131 |
|
|
* List of elements for events.
|
132 |
|
|
*/
|
133 |
|
|
typedef struct gr_event_list GR_EVENT_LIST;
|
134 |
|
|
struct gr_event_list {
|
135 |
|
|
GR_EVENT_LIST *next; /* next element in list */
|
136 |
|
|
GR_EVENT event; /* event */
|
137 |
|
|
};
|
138 |
|
|
|
139 |
|
|
/*
|
140 |
|
|
* Data structure to keep track of state of clients.
|
141 |
|
|
*/
|
142 |
|
|
typedef struct gr_client GR_CLIENT;
|
143 |
|
|
struct gr_client {
|
144 |
|
|
int id; /* client id and socket descriptor */
|
145 |
|
|
GR_EVENT_LIST *eventhead; /* head of event chain (or NULL) */
|
146 |
|
|
GR_EVENT_LIST *eventtail; /* tail of event chain (or NULL) */
|
147 |
|
|
GR_CLIENT *next; /* the next client in the list */
|
148 |
|
|
GR_CLIENT *prev; /* the previous client in the list */
|
149 |
|
|
int waiting_for_event; /* used to implement GrGetNextEvent*/
|
150 |
|
|
char *shm_cmds;
|
151 |
|
|
int shm_cmds_size;
|
152 |
|
|
int shm_cmds_shmid;
|
153 |
|
|
unsigned long processid; /* client process id*/
|
154 |
|
|
};
|
155 |
|
|
|
156 |
|
|
/*
|
157 |
|
|
* Structure to remember clients associated with events.
|
158 |
|
|
*/
|
159 |
|
|
typedef struct gr_event_client GR_EVENT_CLIENT;
|
160 |
|
|
struct gr_event_client {
|
161 |
|
|
GR_EVENT_CLIENT *next; /* next interested client or NULL */
|
162 |
|
|
GR_EVENT_MASK eventmask; /* events client wants to see */
|
163 |
|
|
GR_CLIENT *client; /* client who is interested */
|
164 |
|
|
};
|
165 |
|
|
|
166 |
|
|
/*
|
167 |
|
|
* Structure to remember graphics contexts.
|
168 |
|
|
*/
|
169 |
|
|
typedef struct gr_gc GR_GC;
|
170 |
|
|
struct gr_gc {
|
171 |
|
|
GR_GC_ID id; /* graphics context id */
|
172 |
|
|
int mode; /* drawing mode */
|
173 |
|
|
GR_REGION_ID regionid; /* current clipping region */
|
174 |
|
|
int xoff; /* X offset for the clip region */
|
175 |
|
|
int yoff; /* Y offset for the clip region */
|
176 |
|
|
GR_FONT_ID fontid; /* current font id*/
|
177 |
|
|
GR_COLOR foreground; /* foreground color */
|
178 |
|
|
GR_COLOR background; /* background color */
|
179 |
|
|
GR_BOOL usebackground; /* actually display the background */
|
180 |
|
|
GR_BOOL changed; /* graphics context has been changed */
|
181 |
|
|
GR_CLIENT *owner; /* client that created it */
|
182 |
|
|
GR_GC *next; /* next graphics context */
|
183 |
|
|
};
|
184 |
|
|
|
185 |
|
|
/*
|
186 |
|
|
* Structure to remember regions.
|
187 |
|
|
*/
|
188 |
|
|
typedef struct gr_region GR_REGION;
|
189 |
|
|
struct gr_region {
|
190 |
|
|
MWCLIPREGION * rgn;
|
191 |
|
|
GR_REGION_ID id;
|
192 |
|
|
GR_CLIENT * owner; /* client that created it */
|
193 |
|
|
GR_REGION * next;
|
194 |
|
|
};
|
195 |
|
|
|
196 |
|
|
/*
|
197 |
|
|
* Structure to remember fonts.
|
198 |
|
|
*/
|
199 |
|
|
typedef struct gr_font GR_FONT;
|
200 |
|
|
struct gr_font {
|
201 |
|
|
PMWFONT pfont; /* font*/
|
202 |
|
|
int fontsize; /* font size*/
|
203 |
|
|
GR_FONT_ID id; /* font id*/
|
204 |
|
|
GR_CLIENT * owner; /* client that created it */
|
205 |
|
|
GR_FONT * next; /* next font*/
|
206 |
|
|
};
|
207 |
|
|
|
208 |
|
|
/*
|
209 |
|
|
* Structure to remember images.
|
210 |
|
|
*/
|
211 |
|
|
typedef struct gr_image GR_IMAGE;
|
212 |
|
|
struct gr_image {
|
213 |
|
|
GR_IMAGE_ID id;
|
214 |
|
|
GR_CLIENT * owner; /* client that created it */
|
215 |
|
|
GR_IMAGE * next;
|
216 |
|
|
};
|
217 |
|
|
|
218 |
|
|
/*
|
219 |
|
|
* Cursor structure.
|
220 |
|
|
*/
|
221 |
|
|
typedef struct gr_cursor GR_CURSOR;
|
222 |
|
|
struct gr_cursor {
|
223 |
|
|
GR_CURSOR_ID id; /* cursor id*/
|
224 |
|
|
GR_CLIENT *owner; /* client that created it*/
|
225 |
|
|
GR_CURSOR *next;
|
226 |
|
|
MWCURSOR cursor; /* mwin engine cursor structure*/
|
227 |
|
|
};
|
228 |
|
|
|
229 |
|
|
/*
|
230 |
|
|
* Structure to remember selection owner and mime types it can produce.
|
231 |
|
|
*/
|
232 |
|
|
typedef struct {
|
233 |
|
|
GR_WINDOW_ID wid;
|
234 |
|
|
GR_CHAR *typelist;
|
235 |
|
|
} GR_SELECTIONOWNER;
|
236 |
|
|
|
237 |
|
|
|
238 |
|
|
/*
|
239 |
|
|
* Structure to remember timers.
|
240 |
|
|
*/
|
241 |
|
|
typedef struct gr_timer GR_TIMER;
|
242 |
|
|
struct gr_timer
|
243 |
|
|
{
|
244 |
|
|
GR_TIMER_ID id; /* This instances ID */
|
245 |
|
|
GR_CLIENT *owner; /* client that created it */
|
246 |
|
|
GR_WINDOW_ID wid;
|
247 |
|
|
MWTIMER *timer; /* Device independent layer timer */
|
248 |
|
|
GR_TIMER *next;
|
249 |
|
|
};
|
250 |
|
|
|
251 |
|
|
/*
|
252 |
|
|
* Drawable structure. This structure must be the first
|
253 |
|
|
* elements in a GR_WINDOW or GR_PIXMAP, as GrPrepareWindow
|
254 |
|
|
* returns a GR_DRAWABLE. This structure includes
|
255 |
|
|
* only those items that routines that use GrPrepareWindow
|
256 |
|
|
* might dereference, and must be included in windows or pixmaps.
|
257 |
|
|
*/
|
258 |
|
|
typedef struct gr_drawable {
|
259 |
|
|
GR_COORD x; /* x position (0)*/
|
260 |
|
|
GR_COORD y; /* y position (0)*/
|
261 |
|
|
GR_SIZE width; /* width */
|
262 |
|
|
GR_SIZE height; /* height */
|
263 |
|
|
struct _mwscreendevice *psd; /* associated screen device */
|
264 |
|
|
GR_WINDOW_ID id; /* window/pixmap id */
|
265 |
|
|
} GR_DRAWABLE;
|
266 |
|
|
|
267 |
|
|
/*
|
268 |
|
|
* Window structure
|
269 |
|
|
* Note: first elements must match GR_DRAWABLE
|
270 |
|
|
*/
|
271 |
|
|
typedef struct gr_pixmap GR_PIXMAP;
|
272 |
|
|
typedef struct gr_window GR_WINDOW;
|
273 |
|
|
struct gr_window {
|
274 |
|
|
GR_COORD x; /* absolute x position */
|
275 |
|
|
GR_COORD y; /* absolute y position */
|
276 |
|
|
GR_SIZE width; /* width */
|
277 |
|
|
GR_SIZE height; /* height */
|
278 |
|
|
struct _mwscreendevice *psd; /* associated screen device */
|
279 |
|
|
GR_WINDOW_ID id; /* window id */
|
280 |
|
|
/* end of GR_DRAWABLE common members*/
|
281 |
|
|
|
282 |
|
|
GR_WINDOW *next; /* next window in complete list */
|
283 |
|
|
GR_CLIENT *owner; /* client that created it */
|
284 |
|
|
GR_WINDOW *parent; /* parent window */
|
285 |
|
|
GR_WINDOW *children; /* first child window */
|
286 |
|
|
GR_WINDOW *siblings; /* next sibling window */
|
287 |
|
|
GR_SIZE bordersize; /* size of border */
|
288 |
|
|
GR_COLOR bordercolor; /* color of border */
|
289 |
|
|
GR_COLOR background; /* background color */
|
290 |
|
|
GR_PIXMAP *bgpixmap; /* background pixmap */
|
291 |
|
|
int bgpixmapflags; /* center, tile etc. */
|
292 |
|
|
GR_EVENT_MASK nopropmask; /* events not to be propagated */
|
293 |
|
|
GR_EVENT_CLIENT *eventclients; /* clients interested in events */
|
294 |
|
|
GR_CURSOR_ID cursorid; /* cursor for this window */
|
295 |
|
|
GR_BOOL mapped; /* TRUE if explicitly mapped */
|
296 |
|
|
GR_COUNT unmapcount; /* count of reasons not really mapped */
|
297 |
|
|
GR_BOOL output; /* TRUE if window can do output */
|
298 |
|
|
GR_WM_PROPS props; /* window properties*/
|
299 |
|
|
GR_CHAR *title; /* window title*/
|
300 |
|
|
};
|
301 |
|
|
|
302 |
|
|
/*
|
303 |
|
|
* Pixmap structure
|
304 |
|
|
* Note: first elements must match GR_DRAWABLE
|
305 |
|
|
*/
|
306 |
|
|
struct gr_pixmap {
|
307 |
|
|
GR_COORD x; /* x position (0)*/
|
308 |
|
|
GR_COORD y; /* y position (0)*/
|
309 |
|
|
GR_SIZE width; /* width */
|
310 |
|
|
GR_SIZE height; /* height */
|
311 |
|
|
struct _mwscreendevice *psd; /* associated screen device */
|
312 |
|
|
GR_WINDOW_ID id; /* pixmap id */
|
313 |
|
|
/* end of GR_DRAWABLE common members*/
|
314 |
|
|
|
315 |
|
|
GR_PIXMAP *next; /* next pixmap in list */
|
316 |
|
|
GR_CLIENT *owner; /* client that created it */
|
317 |
|
|
};
|
318 |
|
|
|
319 |
|
|
/*
|
320 |
|
|
* Macros to obtain the client number from a resource id, and to
|
321 |
|
|
* produce the first resource id to be used for a client number.
|
322 |
|
|
* Client numbers must not be zero. This allows for 255 clients.
|
323 |
|
|
#define GR_ID_CLIENT(n) (((GR_ID) (n)) >> 24)
|
324 |
|
|
#define GR_ID_BASE(n) (((GR_ID) (n)) << 24)
|
325 |
|
|
*/
|
326 |
|
|
|
327 |
|
|
/*
|
328 |
|
|
* Graphics server routines.
|
329 |
|
|
*/
|
330 |
|
|
int GsInitialize(void);
|
331 |
|
|
void GsClose(int fd);
|
332 |
|
|
void GsSelect(GR_TIMEOUT timeout);
|
333 |
|
|
void GsTerminate(void);
|
334 |
|
|
GR_TIMEOUT GsGetTickCount(void);
|
335 |
|
|
void GsRedrawScreen(void);
|
336 |
|
|
void GsError(GR_ERROR code, GR_ID id);
|
337 |
|
|
GR_BOOL GsCheckMouseEvent(void);
|
338 |
|
|
GR_BOOL GsCheckKeyboardEvent(void);
|
339 |
|
|
int GsReadKeyboard(GR_CHAR *buf, int *modifiers);
|
340 |
|
|
int GsOpenKeyboard(void);
|
341 |
|
|
void GsGetButtonInfo(int *buttons);
|
342 |
|
|
void GsGetModifierInfo(int *modifiers);
|
343 |
|
|
void GsCloseKeyboard(void);
|
344 |
|
|
void GsExposeArea(GR_WINDOW *wp, GR_COORD rootx, GR_COORD rooty,
|
345 |
|
|
GR_SIZE width, GR_SIZE height, GR_WINDOW *stopwp);
|
346 |
|
|
void GsCheckCursor(void);
|
347 |
|
|
void GsWpSetFocus(GR_WINDOW *wp);
|
348 |
|
|
void GsWpDrawBackgroundPixmap(GR_WINDOW *wp, GR_PIXMAP *pm,
|
349 |
|
|
GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
|
350 |
|
|
void GsWpTileBackgroundPixmap(GR_WINDOW *wp, GR_PIXMAP *pm,
|
351 |
|
|
GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
|
352 |
|
|
void GsWpClearWindow(GR_WINDOW *wp, GR_COORD x, GR_COORD y,
|
353 |
|
|
GR_SIZE width, GR_SIZE height, GR_BOOL exposeflag);
|
354 |
|
|
void GsWpUnmapWindow(GR_WINDOW *wp, GR_BOOL temp_unmap);
|
355 |
|
|
void GsWpMapWindow(GR_WINDOW *wp, GR_BOOL temp);
|
356 |
|
|
void GsWpDestroyWindow(GR_WINDOW *wp);
|
357 |
|
|
void GsSetPortraitMode(int mode);
|
358 |
|
|
void GsSetPortraitModeFromXY(GR_COORD rootx, GR_COORD rooty);
|
359 |
|
|
void GsSetClipWindow(GR_WINDOW *wp, MWCLIPREGION *userregion,
|
360 |
|
|
int flags);
|
361 |
|
|
void GsHandleMouseStatus(GR_COORD newx, GR_COORD newy,
|
362 |
|
|
int newbuttons);
|
363 |
|
|
void GsFreePositionEvent(GR_CLIENT *client, GR_WINDOW_ID wid,
|
364 |
|
|
GR_WINDOW_ID subwid);
|
365 |
|
|
void GsDeliverButtonEvent(GR_EVENT_TYPE type, int buttons,
|
366 |
|
|
int changebuttons, int modifiers);
|
367 |
|
|
void GsDeliverMotionEvent(GR_EVENT_TYPE type, int buttons,
|
368 |
|
|
MWKEYMOD modifiers);
|
369 |
|
|
void GsDeliverKeyboardEvent(GR_WINDOW_ID wid, GR_EVENT_TYPE type,
|
370 |
|
|
GR_KEY keyvalue, GR_KEYMOD modifiers,
|
371 |
|
|
GR_SCANCODE scancode);
|
372 |
|
|
void GsDeliverExposureEvent(GR_WINDOW *wp, GR_COORD x, GR_COORD y,
|
373 |
|
|
GR_SIZE width, GR_SIZE height);
|
374 |
|
|
void GsFreeExposureEvent(GR_CLIENT *client, GR_WINDOW_ID wid,
|
375 |
|
|
GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
|
376 |
|
|
void GsDeliverUpdateEvent(GR_WINDOW *wp, GR_UPDATE_TYPE utype,
|
377 |
|
|
GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
|
378 |
|
|
void GsDeliverGeneralEvent(GR_WINDOW *wp, GR_EVENT_TYPE type,
|
379 |
|
|
GR_WINDOW *other);
|
380 |
|
|
void GsDeliverPortraitChangedEvent(void);
|
381 |
|
|
void GsDeliverScreenSaverEvent(GR_BOOL activate);
|
382 |
|
|
void GsDeliverClientDataReqEvent(GR_WINDOW_ID wid, GR_WINDOW_ID rid,
|
383 |
|
|
GR_SERIALNO serial, GR_MIMETYPE mimetype);
|
384 |
|
|
void GsDeliverClientDataEvent(GR_WINDOW_ID wid, GR_WINDOW_ID rid,
|
385 |
|
|
GR_SERIALNO serial, GR_LENGTH len, GR_LENGTH thislen,
|
386 |
|
|
void *data);
|
387 |
|
|
void GsDeliverSelectionChangedEvent(GR_WINDOW_ID old_owner,
|
388 |
|
|
GR_WINDOW_ID new_owner);
|
389 |
|
|
void GsDeliverTimerEvent(GR_CLIENT *client, GR_WINDOW_ID wid,
|
390 |
|
|
GR_TIMER_ID tid);
|
391 |
|
|
void GsCheckMouseWindow(void);
|
392 |
|
|
void GsCheckFocusWindow(void);
|
393 |
|
|
GR_DRAW_TYPE GsPrepareDrawing(GR_DRAW_ID id, GR_GC_ID gcid,
|
394 |
|
|
GR_DRAWABLE **retdp);
|
395 |
|
|
GR_BOOL GsCheckOverlap(GR_WINDOW *topwp, GR_WINDOW *botwp);
|
396 |
|
|
GR_EVENT *GsAllocEvent(GR_CLIENT *client);
|
397 |
|
|
GR_WINDOW *GsFindWindow(GR_WINDOW_ID id);
|
398 |
|
|
GR_PIXMAP *GsFindPixmap(GR_WINDOW_ID id);
|
399 |
|
|
GR_GC *GsFindGC(GR_GC_ID gcid);
|
400 |
|
|
GR_REGION *GsFindRegion(GR_REGION_ID regionid);
|
401 |
|
|
GR_FONT *GsFindFont(GR_FONT_ID fontid);
|
402 |
|
|
GR_TIMER *GsFindTimer(GR_TIMER_ID timer_id);
|
403 |
|
|
GR_CURSOR *GsFindCursor(GR_CURSOR_ID cursorid);
|
404 |
|
|
GR_WINDOW *GsPrepareWindow(GR_WINDOW_ID wid);
|
405 |
|
|
GR_WINDOW *GsFindVisibleWindow(GR_COORD x, GR_COORD y);
|
406 |
|
|
void GsDrawBorder(GR_WINDOW *wp);
|
407 |
|
|
int GsCurrentVt(void);
|
408 |
|
|
void GsRedrawVt(int t);
|
409 |
|
|
int GsOpenSocket(void);
|
410 |
|
|
void GsCloseSocket(void);
|
411 |
|
|
void GsAcceptClient(void);
|
412 |
|
|
void GsAcceptClientFd(int i);
|
413 |
|
|
int GsPutCh(int fd, unsigned char c);
|
414 |
|
|
GR_CLIENT *GsFindClient(int fd);
|
415 |
|
|
void GsDestroyClientResources(GR_CLIENT * client);
|
416 |
|
|
void GsDropClient(int fd);
|
417 |
|
|
int GsRead(int fd, void *buf, int c);
|
418 |
|
|
int GsWrite(int fd, void *buf, int c);
|
419 |
|
|
void GsHandleClient(int fd);
|
420 |
|
|
void GsResetScreenSaver(void);
|
421 |
|
|
void GsActivateScreenSaver(void *arg);
|
422 |
|
|
void GrGetNextEventWrapperFinish(int);
|
423 |
|
|
void GsTimerCB(void *arg);
|
424 |
|
|
|
425 |
|
|
/*
|
426 |
|
|
* External data definitions.
|
427 |
|
|
*/
|
428 |
|
|
extern char * curfunc; /* current function name */
|
429 |
|
|
extern GR_WINDOW_ID cachewindowid; /* cached window id */
|
430 |
|
|
extern GR_WINDOW_ID cachepixmapid;
|
431 |
|
|
extern GR_GC_ID cachegcid; /* cached graphics context id */
|
432 |
|
|
extern GR_GC *cachegcp; /* cached graphics context */
|
433 |
|
|
extern GR_GC *listgcp; /* list of all gc */
|
434 |
|
|
extern GR_REGION *listregionp; /* list of all regions */
|
435 |
|
|
extern GR_FONT *listfontp; /* list of all fonts */
|
436 |
|
|
extern GR_IMAGE *listimagep; /* list of all images */
|
437 |
|
|
extern GR_CURSOR *listcursorp; /* list of all cursors */
|
438 |
|
|
extern GR_CURSOR *stdcursor; /* root window cursor */
|
439 |
|
|
extern GR_GC *curgcp; /* current graphics context */
|
440 |
|
|
extern GR_WINDOW *cachewp; /* cached window pointer */
|
441 |
|
|
extern GR_PIXMAP *cachepp; /* cached pixmap pointer */
|
442 |
|
|
extern GR_WINDOW *listwp; /* list of all windows */
|
443 |
|
|
extern GR_PIXMAP *listpp; /* list of all pixmaps */
|
444 |
|
|
extern GR_WINDOW *rootwp; /* root window pointer */
|
445 |
|
|
extern GR_WINDOW *clipwp; /* window clipping is set for */
|
446 |
|
|
extern GR_WINDOW *focuswp; /* focus window for keyboard */
|
447 |
|
|
extern GR_WINDOW *mousewp; /* window mouse is currently in */
|
448 |
|
|
extern GR_WINDOW *grabbuttonwp; /* window grabbed by button */
|
449 |
|
|
extern GR_CURSOR *curcursor; /* currently enabled cursor */
|
450 |
|
|
extern GR_COORD cursorx; /* x position of cursor */
|
451 |
|
|
extern GR_COORD cursory; /* y position of cursor */
|
452 |
|
|
extern int curbuttons; /* current state of buttons */
|
453 |
|
|
extern GR_CLIENT *curclient; /* current client */
|
454 |
|
|
extern char *current_shm_cmds;
|
455 |
|
|
extern int current_shm_cmds_size;
|
456 |
|
|
extern GR_EVENT_LIST *eventfree; /* list of free events */
|
457 |
|
|
extern GR_BOOL focusfixed; /* TRUE if focus is fixed */
|
458 |
|
|
extern GR_SCREEN_INFO sinfo; /* screen information */
|
459 |
|
|
extern PMWFONT stdfont; /* default font*/
|
460 |
|
|
extern int escape_quits; /* terminate when pressing ESC*/
|
461 |
|
|
extern int connectcount; /* # of connections to server */
|
462 |
|
|
extern GR_TIMEOUT screensaver_delay; /* time before screensaver */
|
463 |
|
|
/* activates */
|
464 |
|
|
extern GR_TIMER_ID cache_timer_id; /* cached timer ID */
|
465 |
|
|
extern GR_TIMER *cache_timer; /* cached timer */
|
466 |
|
|
extern GR_TIMER *list_timer; /* list of all timers */
|
467 |
|
|
|
468 |
|
|
extern GR_BOOL screensaver_active; /* screensaver is active */
|
469 |
|
|
extern GR_SELECTIONOWNER selection_owner; /* the selection owner */
|
470 |
|
|
extern int autoportrait; /* auto portrait mode switching*/
|
471 |
|
|
|
472 |
|
|
/*
|
473 |
|
|
* The filename to use for the named socket. If we ever support multiple
|
474 |
|
|
* servers on one machine, the last digit will be that of the FB used for it.
|
475 |
|
|
*/
|
476 |
|
|
#define GR_NAMED_SOCKET "/tmp/.nano-X"
|
477 |
|
|
#define GR_NUMB_SOCKET 79
|
478 |
|
|
|
479 |
|
|
#if VTSWITCH
|
480 |
|
|
/* temp framebuffer vt switch stuff at upper level
|
481 |
|
|
* this should be handled at the lower level, just like vgalib does.
|
482 |
|
|
*/
|
483 |
|
|
void MwInitVt(void);
|
484 |
|
|
int MwCurrentVt(void);
|
485 |
|
|
int MwCheckVtChange(void);
|
486 |
|
|
void MwRedrawVt(int t);
|
487 |
|
|
void MwExitVt(void);
|
488 |
|
|
extern int mwvterm;
|
489 |
|
|
#endif /* VTSWITCH*/
|
490 |
|
|
|
491 |
|
|
#endif /* _SERV_H*/
|