~ubuntu-branches/ubuntu/utopic/critcl/utopic

« back to all changes in this revision

Viewing changes to lib/critcl/critcl_c/tcl8.6/X11/Xlib.h

  • Committer: Package Import Robot
  • Author(s): Andrew Shadura
  • Date: 2013-05-11 00:08:06 UTC
  • Revision ID: package-import@ubuntu.com-20130511000806-7hq1zc3fnn0gat79
Tags: upstream-3.1.9
ImportĀ upstreamĀ versionĀ 3.1.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */
 
2
/* 
 
3
 * Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology
 
4
 *
 
5
 * Permission to use, copy, modify, and distribute this software and its
 
6
 * documentation for any purpose and without fee is hereby granted, provided 
 
7
 * that the above copyright notice appear in all copies and that both that 
 
8
 * copyright notice and this permission notice appear in supporting 
 
9
 * documentation, and that the name of M.I.T. not be used in advertising
 
10
 * or publicity pertaining to distribution of the software without specific, 
 
11
 * written prior permission. M.I.T. makes no representations about the 
 
12
 * suitability of this software for any purpose.  It is provided "as is"
 
13
 * without express or implied warranty.
 
14
 *
 
15
 * X Window System is a Trademark of MIT.
 
16
 *
 
17
 */
 
18
 
 
19
 
 
20
/*
 
21
 *      Xlib.h - Header definition and support file for the C subroutine
 
22
 *      interface library (Xlib) to the X Window System Protocol (V11).
 
23
 *      Structures and symbols starting with "_" are private to the library.
 
24
 */
 
25
#ifndef _XLIB_H_
 
26
#define _XLIB_H_
 
27
 
 
28
#define XlibSpecificationRelease 5
 
29
 
 
30
#if !defined(MAC_OSX_TK)
 
31
#   include <X11/X.h>
 
32
#endif
 
33
#ifdef MAC_OSX_TK
 
34
#   include <X11/X.h>
 
35
#   define Cursor XCursor
 
36
#   define Region XRegion
 
37
#endif
 
38
 
 
39
/* applications should not depend on these two headers being included! */
 
40
#include <X11/Xfuncproto.h>
 
41
 
 
42
#ifndef X_WCHAR
 
43
#ifdef X_NOT_STDC_ENV
 
44
#define X_WCHAR
 
45
#endif
 
46
#endif
 
47
 
 
48
#ifndef X_WCHAR
 
49
#include <stddef.h>
 
50
#else
 
51
/* replace this with #include or typedef appropriate for your system */
 
52
typedef unsigned long wchar_t;
 
53
#endif
 
54
 
 
55
typedef char *XPointer;
 
56
 
 
57
#define Bool int
 
58
#if defined(MAC_OSX_TK)
 
59
/* Use define rather than typedef, since may need to undefine this later */
 
60
#define Status int
 
61
#else
 
62
typedef int Status;
 
63
#endif
 
64
#define True 1
 
65
#define False 0
 
66
 
 
67
#define QueuedAlready 0
 
68
#define QueuedAfterReading 1
 
69
#define QueuedAfterFlush 2
 
70
 
 
71
#define ConnectionNumber(dpy)   ((dpy)->fd)
 
72
#define RootWindow(dpy, scr)    (((dpy)->screens[(scr)]).root)
 
73
#define DefaultScreen(dpy)      ((dpy)->default_screen)
 
74
#define DefaultRootWindow(dpy)  (((dpy)->screens[(dpy)->default_screen]).root)
 
75
#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual)
 
76
#define DefaultGC(dpy, scr)     (((dpy)->screens[(scr)]).default_gc)
 
77
#define BlackPixel(dpy, scr)    (((dpy)->screens[(scr)]).black_pixel)
 
78
#define WhitePixel(dpy, scr)    (((dpy)->screens[(scr)]).white_pixel)
 
79
#define AllPlanes               ((unsigned long)~0L)
 
80
#define QLength(dpy)            ((dpy)->qlen)
 
81
#define DisplayWidth(dpy, scr)  (((dpy)->screens[(scr)]).width)
 
82
#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height)
 
83
#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth)
 
84
#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight)
 
85
#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
 
86
#define DisplayCells(dpy, scr)  (DefaultVisual((dpy), (scr))->map_entries)
 
87
#define ScreenCount(dpy)        ((dpy)->nscreens)
 
88
#define ServerVendor(dpy)       ((dpy)->vendor)
 
89
#define ProtocolVersion(dpy)    ((dpy)->proto_major_version)
 
90
#define ProtocolRevision(dpy)   ((dpy)->proto_minor_version)
 
91
#define VendorRelease(dpy)      ((dpy)->release)
 
92
#define DisplayString(dpy)      ((dpy)->display_name)
 
93
#define DefaultDepth(dpy, scr)  (((dpy)->screens[(scr)]).root_depth)
 
94
#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap)
 
95
#define BitmapUnit(dpy)         ((dpy)->bitmap_unit)
 
96
#define BitmapBitOrder(dpy)     ((dpy)->bitmap_bit_order)
 
97
#define BitmapPad(dpy)          ((dpy)->bitmap_pad)
 
98
#define ImageByteOrder(dpy)     ((dpy)->byte_order)
 
99
#define NextRequest(dpy)        ((dpy)->request + 1)
 
100
#define LastKnownRequestProcessed(dpy)  ((dpy)->request)
 
101
 
 
102
/* macros for screen oriented applications (toolkit) */
 
103
#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)]))
 
104
#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen]))
 
105
#define DisplayOfScreen(s)      ((s)->display)
 
106
#define RootWindowOfScreen(s)   ((s)->root)
 
107
#define BlackPixelOfScreen(s)   ((s)->black_pixel)
 
108
#define WhitePixelOfScreen(s)   ((s)->white_pixel)
 
109
#define DefaultColormapOfScreen(s)((s)->cmap)
 
110
#define DefaultDepthOfScreen(s) ((s)->root_depth)
 
111
#define DefaultGCOfScreen(s)    ((s)->default_gc)
 
112
#define DefaultVisualOfScreen(s)((s)->root_visual)
 
113
#define WidthOfScreen(s)        ((s)->width)
 
114
#define HeightOfScreen(s)       ((s)->height)
 
115
#define WidthMMOfScreen(s)      ((s)->mwidth)
 
116
#define HeightMMOfScreen(s)     ((s)->mheight)
 
117
#define PlanesOfScreen(s)       ((s)->root_depth)
 
118
#define CellsOfScreen(s)        (DefaultVisualOfScreen((s))->map_entries)
 
119
#define MinCmapsOfScreen(s)     ((s)->min_maps)
 
120
#define MaxCmapsOfScreen(s)     ((s)->max_maps)
 
121
#define DoesSaveUnders(s)       ((s)->save_unders)
 
122
#define DoesBackingStore(s)     ((s)->backing_store)
 
123
#define EventMaskOfScreen(s)    ((s)->root_input_mask)
 
124
 
 
125
/*
 
126
 * Extensions need a way to hang private data on some structures.
 
127
 */
 
128
typedef struct _XExtData {
 
129
        int number;             /* number returned by XRegisterExtension */
 
130
        struct _XExtData *next; /* next item on list of data for structure */
 
131
        int (*free_private)();  /* called to free private storage */
 
132
        XPointer private_data;  /* data private to this extension. */
 
133
} XExtData;
 
134
 
 
135
/*
 
136
 * This file contains structures used by the extension mechanism.
 
137
 */
 
138
typedef struct {                /* public to extension, cannot be changed */
 
139
        int extension;          /* extension number */
 
140
        int major_opcode;       /* major op-code assigned by server */
 
141
        int first_event;        /* first event number for the extension */
 
142
        int first_error;        /* first error number for the extension */
 
143
} XExtCodes;
 
144
 
 
145
/*
 
146
 * Data structure for retrieving info about pixmap formats.
 
147
 */
 
148
 
 
149
typedef struct {
 
150
    int depth;
 
151
    int bits_per_pixel;
 
152
    int scanline_pad;
 
153
} XPixmapFormatValues;
 
154
 
 
155
 
 
156
/*
 
157
 * Data structure for setting graphics context.
 
158
 */
 
159
typedef struct {
 
160
        int function;           /* logical operation */
 
161
        unsigned long plane_mask;/* plane mask */
 
162
        unsigned long foreground;/* foreground pixel */
 
163
        unsigned long background;/* background pixel */
 
164
        int line_width;         /* line width */
 
165
        int line_style;         /* LineSolid, LineOnOffDash, LineDoubleDash */
 
166
        int cap_style;          /* CapNotLast, CapButt, 
 
167
                                   CapRound, CapProjecting */
 
168
        int join_style;         /* JoinMiter, JoinRound, JoinBevel */
 
169
        int fill_style;         /* FillSolid, FillTiled, 
 
170
                                   FillStippled, FillOpaeueStippled */
 
171
        int fill_rule;          /* EvenOddRule, WindingRule */
 
172
        int arc_mode;           /* ArcChord, ArcPieSlice */
 
173
        Pixmap tile;            /* tile pixmap for tiling operations */
 
174
        Pixmap stipple;         /* stipple 1 plane pixmap for stipping */
 
175
        int ts_x_origin;        /* offset for tile or stipple operations */
 
176
        int ts_y_origin;
 
177
        Font font;              /* default text font for text operations */
 
178
        int subwindow_mode;     /* ClipByChildren, IncludeInferiors */
 
179
        Bool graphics_exposures;/* boolean, should exposures be generated */
 
180
        int clip_x_origin;      /* origin for clipping */
 
181
        int clip_y_origin;
 
182
        Pixmap clip_mask;       /* bitmap clipping; other calls for rects */
 
183
        int dash_offset;        /* patterned/dashed line information */
 
184
        char dashes;
 
185
} XGCValues;
 
186
 
 
187
/*
 
188
 * Graphics context.  The contents of this structure are implementation
 
189
 * dependent.  A GC should be treated as opaque by application code.
 
190
 */
 
191
 
 
192
typedef XGCValues *GC;
 
193
 
 
194
/*
 
195
 * Visual structure; contains information about colormapping possible.
 
196
 */
 
197
typedef struct {
 
198
        XExtData *ext_data;     /* hook for extension to hang data */
 
199
        VisualID visualid;      /* visual id of this visual */
 
200
#if defined(__cplusplus) || defined(c_plusplus)
 
201
        int c_class;            /* C++ class of screen (monochrome, etc.) */
 
202
#else
 
203
        int class;              /* class of screen (monochrome, etc.) */
 
204
#endif
 
205
        unsigned long red_mask, green_mask, blue_mask;  /* mask values */
 
206
        int bits_per_rgb;       /* log base 2 of distinct color values */
 
207
        int map_entries;        /* color map entries */
 
208
} Visual;
 
209
 
 
210
/*
 
211
 * Depth structure; contains information for each possible depth.
 
212
 */     
 
213
typedef struct {
 
214
        int depth;              /* this depth (Z) of the depth */
 
215
        int nvisuals;           /* number of Visual types at this depth */
 
216
        Visual *visuals;        /* list of visuals possible at this depth */
 
217
} Depth;
 
218
 
 
219
/*
 
220
 * Information about the screen.  The contents of this structure are
 
221
 * implementation dependent.  A Screen should be treated as opaque
 
222
 * by application code.
 
223
 */
 
224
typedef struct {
 
225
        XExtData *ext_data;     /* hook for extension to hang data */
 
226
        struct _XDisplay *display;/* back pointer to display structure */
 
227
        Window root;            /* Root window id. */
 
228
        int width, height;      /* width and height of screen */
 
229
        int mwidth, mheight;    /* width and height of  in millimeters */
 
230
        int ndepths;            /* number of depths possible */
 
231
        Depth *depths;          /* list of allowable depths on the screen */
 
232
        int root_depth;         /* bits per pixel */
 
233
        Visual *root_visual;    /* root visual */
 
234
        GC default_gc;          /* GC for the root root visual */
 
235
        Colormap cmap;          /* default color map */
 
236
        unsigned long white_pixel;
 
237
        unsigned long black_pixel;      /* White and Black pixel values */
 
238
        int max_maps, min_maps; /* max and min color maps */
 
239
        int backing_store;      /* Never, WhenMapped, Always */
 
240
        Bool save_unders;       
 
241
        long root_input_mask;   /* initial root input mask */
 
242
} Screen;
 
243
 
 
244
/*
 
245
 * Format structure; describes ZFormat data the screen will understand.
 
246
 */
 
247
typedef struct {
 
248
        XExtData *ext_data;     /* hook for extension to hang data */
 
249
        int depth;              /* depth of this image format */
 
250
        int bits_per_pixel;     /* bits/pixel at this depth */
 
251
        int scanline_pad;       /* scanline must padded to this multiple */
 
252
} ScreenFormat;
 
253
 
 
254
/*
 
255
 * Data structure for setting window attributes.
 
256
 */
 
257
typedef struct {
 
258
    Pixmap background_pixmap;   /* background or None or ParentRelative */
 
259
    unsigned long background_pixel;     /* background pixel */
 
260
    Pixmap border_pixmap;       /* border of the window */
 
261
    unsigned long border_pixel; /* border pixel value */
 
262
    int bit_gravity;            /* one of bit gravity values */
 
263
    int win_gravity;            /* one of the window gravity values */
 
264
    int backing_store;          /* NotUseful, WhenMapped, Always */
 
265
    unsigned long backing_planes;/* planes to be preseved if possible */
 
266
    unsigned long backing_pixel;/* value to use in restoring planes */
 
267
    Bool save_under;            /* should bits under be saved? (popups) */
 
268
    long event_mask;            /* set of events that should be saved */
 
269
    long do_not_propagate_mask; /* set of events that should not propagate */
 
270
    Bool override_redirect;     /* boolean value for override-redirect */
 
271
    Colormap colormap;          /* color map to be associated with window */
 
272
    Cursor cursor;              /* cursor to be displayed (or None) */
 
273
} XSetWindowAttributes;
 
274
 
 
275
typedef struct {
 
276
    int x, y;                   /* location of window */
 
277
    int width, height;          /* width and height of window */
 
278
    int border_width;           /* border width of window */
 
279
    int depth;                  /* depth of window */
 
280
    Visual *visual;             /* the associated visual structure */
 
281
    Window root;                /* root of screen containing window */
 
282
#if defined(__cplusplus) || defined(c_plusplus)
 
283
    int c_class;                /* C++ InputOutput, InputOnly*/
 
284
#else
 
285
    int class;                  /* InputOutput, InputOnly*/
 
286
#endif
 
287
    int bit_gravity;            /* one of bit gravity values */
 
288
    int win_gravity;            /* one of the window gravity values */
 
289
    int backing_store;          /* NotUseful, WhenMapped, Always */
 
290
    unsigned long backing_planes;/* planes to be preserved if possible */
 
291
    unsigned long backing_pixel;/* value to be used when restoring planes */
 
292
    Bool save_under;            /* boolean, should bits under be saved? */
 
293
    Colormap colormap;          /* color map to be associated with window */
 
294
    Bool map_installed;         /* boolean, is color map currently installed*/
 
295
    int map_state;              /* IsUnmapped, IsUnviewable, IsViewable */
 
296
    long all_event_masks;       /* set of events all people have interest in*/
 
297
    long your_event_mask;       /* my event mask */
 
298
    long do_not_propagate_mask; /* set of events that should not propagate */
 
299
    Bool override_redirect;     /* boolean value for override-redirect */
 
300
    Screen *screen;             /* back pointer to correct screen */
 
301
} XWindowAttributes;
 
302
 
 
303
/*
 
304
 * Data structure for host setting; getting routines.
 
305
 *
 
306
 */
 
307
 
 
308
typedef struct {
 
309
        int family;             /* for example FamilyInternet */
 
310
        int length;             /* length of address, in bytes */
 
311
        char *address;          /* pointer to where to find the bytes */
 
312
} XHostAddress;
 
313
 
 
314
/*
 
315
 * Data structure for "image" data, used by image manipulation routines.
 
316
 */
 
317
typedef struct _XImage {
 
318
    int width, height;          /* size of image */
 
319
    int xoffset;                /* number of pixels offset in X direction */
 
320
    int format;                 /* XYBitmap, XYPixmap, ZPixmap */
 
321
    char *data;                 /* pointer to image data */
 
322
    int byte_order;             /* data byte order, LSBFirst, MSBFirst */
 
323
    int bitmap_unit;            /* quant. of scanline 8, 16, 32 */
 
324
    int bitmap_bit_order;       /* LSBFirst, MSBFirst */
 
325
    int bitmap_pad;             /* 8, 16, 32 either XY or ZPixmap */
 
326
    int depth;                  /* depth of image */
 
327
    int bytes_per_line;         /* accelarator to next line */
 
328
    int bits_per_pixel;         /* bits per pixel (ZPixmap) */
 
329
    unsigned long red_mask;     /* bits in z arrangment */
 
330
    unsigned long green_mask;
 
331
    unsigned long blue_mask;
 
332
    XPointer obdata;            /* hook for the object routines to hang on */
 
333
    struct funcs {              /* image manipulation routines */
 
334
        struct _XImage *(*create_image)();
 
335
#if NeedFunctionPrototypes
 
336
        int (*destroy_image)        (struct _XImage *);
 
337
        unsigned long (*get_pixel)  (struct _XImage *, int, int);
 
338
        int (*put_pixel)            (struct _XImage *, int, int, unsigned long);
 
339
        struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
 
340
        int (*add_pixel)            (struct _XImage *, long);
 
341
#else
 
342
        int (*destroy_image)();
 
343
        unsigned long (*get_pixel)();
 
344
        int (*put_pixel)();
 
345
        struct _XImage *(*sub_image)();
 
346
        int (*add_pixel)();
 
347
#endif
 
348
        } f;
 
349
} XImage;
 
350
 
 
351
/* 
 
352
 * Data structure for XReconfigureWindow
 
353
 */
 
354
typedef struct {
 
355
    int x, y;
 
356
    int width, height;
 
357
    int border_width;
 
358
    Window sibling;
 
359
    int stack_mode;
 
360
} XWindowChanges;
 
361
 
 
362
/*
 
363
 * Data structure used by color operations
 
364
 */
 
365
typedef struct {
 
366
        unsigned long pixel;
 
367
        unsigned short red, green, blue;
 
368
        char flags;  /* do_red, do_green, do_blue */
 
369
        char pad;
 
370
} XColor;
 
371
 
 
372
/* 
 
373
 * Data structures for graphics operations.  On most machines, these are
 
374
 * congruent with the wire protocol structures, so reformatting the data
 
375
 * can be avoided on these architectures.
 
376
 */
 
377
typedef struct {
 
378
    short x1, y1, x2, y2;
 
379
} XSegment;
 
380
 
 
381
typedef struct {
 
382
    short x, y;
 
383
} XPoint;
 
384
    
 
385
typedef struct {
 
386
    short x, y;
 
387
    unsigned short width, height;
 
388
} XRectangle;
 
389
    
 
390
typedef struct {
 
391
    short x, y;
 
392
    unsigned short width, height;
 
393
    short angle1, angle2;
 
394
} XArc;
 
395
 
 
396
 
 
397
/* Data structure for XChangeKeyboardControl */
 
398
 
 
399
typedef struct {
 
400
        int key_click_percent;
 
401
        int bell_percent;
 
402
        int bell_pitch;
 
403
        int bell_duration;
 
404
        int led;
 
405
        int led_mode;
 
406
        int key;
 
407
        int auto_repeat_mode;   /* On, Off, Default */
 
408
} XKeyboardControl;
 
409
 
 
410
/* Data structure for XGetKeyboardControl */
 
411
 
 
412
typedef struct {
 
413
        int key_click_percent;
 
414
        int bell_percent;
 
415
        unsigned int bell_pitch, bell_duration;
 
416
        unsigned long led_mask;
 
417
        int global_auto_repeat;
 
418
        char auto_repeats[32];
 
419
} XKeyboardState;
 
420
 
 
421
/* Data structure for XGetMotionEvents.  */
 
422
 
 
423
typedef struct {
 
424
        Time time;
 
425
        short x, y;
 
426
} XTimeCoord;
 
427
 
 
428
/* Data structure for X{Set,Get}ModifierMapping */
 
429
 
 
430
typedef struct {
 
431
        int max_keypermod;      /* The server's max # of keys per modifier */
 
432
        KeyCode *modifiermap;   /* An 8 by max_keypermod array of modifiers */
 
433
} XModifierKeymap;
 
434
 
 
435
 
 
436
/*
 
437
 * Display datatype maintaining display specific data.
 
438
 * The contents of this structure are implementation dependent.
 
439
 * A Display should be treated as opaque by application code.
 
440
 */
 
441
typedef struct _XDisplay {
 
442
        XExtData *ext_data;     /* hook for extension to hang data */
 
443
        struct _XFreeFuncs *free_funcs; /* internal free functions */
 
444
        int fd;                 /* Network socket. */
 
445
        int conn_checker;         /* ugly thing used by _XEventsQueued */
 
446
        int proto_major_version;/* maj. version of server's X protocol */
 
447
        int proto_minor_version;/* minor version of servers X protocol */
 
448
        char *vendor;           /* vendor of the server hardware */
 
449
        XID resource_base;      /* resource ID base */
 
450
        XID resource_mask;      /* resource ID mask bits */
 
451
        XID resource_id;        /* allocator current ID */
 
452
        int resource_shift;     /* allocator shift to correct bits */
 
453
        XID (*resource_alloc)(); /* allocator function */
 
454
        int byte_order;         /* screen byte order, LSBFirst, MSBFirst */
 
455
        int bitmap_unit;        /* padding and data requirements */
 
456
        int bitmap_pad;         /* padding requirements on bitmaps */
 
457
        int bitmap_bit_order;   /* LeastSignificant or MostSignificant */
 
458
        int nformats;           /* number of pixmap formats in list */
 
459
        ScreenFormat *pixmap_format;    /* pixmap format list */
 
460
        int vnumber;            /* Xlib's X protocol version number. */
 
461
        int release;            /* release of the server */
 
462
        struct _XSQEvent *head, *tail;  /* Input event queue. */
 
463
        int qlen;               /* Length of input event queue */
 
464
        unsigned long request;  /* sequence number of last request. */
 
465
        char *last_req;         /* beginning of last request, or dummy */
 
466
        char *buffer;           /* Output buffer starting address. */
 
467
        char *bufptr;           /* Output buffer index pointer. */
 
468
        char *bufmax;           /* Output buffer maximum+1 address. */
 
469
        unsigned max_request_size; /* maximum number 32 bit words in request*/
 
470
        struct _XrmHashBucketRec *db;
 
471
        int (*synchandler)();   /* Synchronization handler */
 
472
        char *display_name;     /* "host:display" string used on this connect*/
 
473
        int default_screen;     /* default screen for operations */
 
474
        int nscreens;           /* number of screens on this server*/
 
475
        Screen *screens;        /* pointer to list of screens */
 
476
        unsigned long motion_buffer;    /* size of motion buffer */
 
477
        unsigned long flags;    /* internal connection flags */
 
478
        int min_keycode;        /* minimum defined keycode */
 
479
        int max_keycode;        /* maximum defined keycode */
 
480
        KeySym *keysyms;        /* This server's keysyms */
 
481
        XModifierKeymap *modifiermap;   /* This server's modifier keymap */
 
482
        int keysyms_per_keycode;/* number of rows */
 
483
        char *xdefaults;        /* contents of defaults from server */
 
484
        char *scratch_buffer;   /* place to hang scratch buffer */
 
485
        unsigned long scratch_length;   /* length of scratch buffer */
 
486
        int ext_number;         /* extension number on this display */
 
487
        struct _XExten *ext_procs; /* extensions initialized on this display */
 
488
        /*
 
489
         * the following can be fixed size, as the protocol defines how
 
490
         * much address space is available. 
 
491
         * While this could be done using the extension vector, there
 
492
         * may be MANY events processed, so a search through the extension
 
493
         * list to find the right procedure for each event might be
 
494
         * expensive if many extensions are being used.
 
495
         */
 
496
        Bool (*event_vec[128])();  /* vector for wire to event */
 
497
        Status (*wire_vec[128])(); /* vector for event to wire */
 
498
        KeySym lock_meaning;       /* for XLookupString */
 
499
        struct _XLockInfo *lock;   /* multi-thread state, display lock */
 
500
        struct _XInternalAsync *async_handlers; /* for internal async */
 
501
        unsigned long bigreq_size; /* max size of big requests */
 
502
        struct _XLockPtrs *lock_fns; /* pointers to threads functions */
 
503
        /* things above this line should not move, for binary compatibility */
 
504
        struct _XKeytrans *key_bindings; /* for XLookupString */
 
505
        Font cursor_font;          /* for XCreateFontCursor */
 
506
        struct _XDisplayAtoms *atoms; /* for XInternAtom */
 
507
        unsigned int mode_switch;  /* keyboard group modifiers */
 
508
        struct _XContextDB *context_db; /* context database */
 
509
        Bool (**error_vec)();      /* vector for wire to error */
 
510
        /*
 
511
         * Xcms information
 
512
         */
 
513
        struct {
 
514
           XPointer defaultCCCs;  /* pointer to an array of default XcmsCCC */
 
515
           XPointer clientCmaps;  /* pointer to linked list of XcmsCmapRec */
 
516
           XPointer perVisualIntensityMaps;
 
517
                                  /* linked list of XcmsIntensityMap */
 
518
        } cms;
 
519
        struct _XIMFilter *im_filters;
 
520
        struct _XSQEvent *qfree; /* unallocated event queue elements */
 
521
        unsigned long next_event_serial_num; /* inserted into next queue elt */
 
522
        int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
 
523
} Display;
 
524
 
 
525
#if NeedFunctionPrototypes      /* prototypes require event type definitions */
 
526
#undef _XEVENT_
 
527
#endif
 
528
#ifndef _XEVENT_
 
529
 
 
530
#define XMaxTransChars 4
 
531
 
 
532
/*
 
533
 * Definitions of specific events.
 
534
 */
 
535
typedef struct {
 
536
        int type;               /* of event */
 
537
        unsigned long serial;   /* # of last request processed by server */
 
538
        Bool send_event;        /* true if this came from a SendEvent request */
 
539
        Display *display;       /* Display the event was read from */
 
540
        Window window;          /* "event" window it is reported relative to */
 
541
        Window root;            /* root window that the event occured on */
 
542
        Window subwindow;       /* child window */
 
543
        Time time;              /* milliseconds */
 
544
        int x, y;               /* pointer x, y coordinates in event window */
 
545
        int x_root, y_root;     /* coordinates relative to root */
 
546
        unsigned int state;     /* key or button mask */
 
547
        unsigned int keycode;   /* detail */
 
548
        Bool same_screen;       /* same screen flag */
 
549
        char trans_chars[XMaxTransChars];
 
550
                                /* translated characters */
 
551
        int nbytes;
 
552
} XKeyEvent;
 
553
typedef XKeyEvent XKeyPressedEvent;
 
554
typedef XKeyEvent XKeyReleasedEvent;
 
555
 
 
556
typedef struct {
 
557
        int type;               /* of event */
 
558
        unsigned long serial;   /* # of last request processed by server */
 
559
        Bool send_event;        /* true if this came from a SendEvent request */
 
560
        Display *display;       /* Display the event was read from */
 
561
        Window window;          /* "event" window it is reported relative to */
 
562
        Window root;            /* root window that the event occured on */
 
563
        Window subwindow;       /* child window */
 
564
        Time time;              /* milliseconds */
 
565
        int x, y;               /* pointer x, y coordinates in event window */
 
566
        int x_root, y_root;     /* coordinates relative to root */
 
567
        unsigned int state;     /* key or button mask */
 
568
        unsigned int button;    /* detail */
 
569
        Bool same_screen;       /* same screen flag */
 
570
} XButtonEvent;
 
571
typedef XButtonEvent XButtonPressedEvent;
 
572
typedef XButtonEvent XButtonReleasedEvent;
 
573
 
 
574
typedef struct {
 
575
        int type;               /* of event */
 
576
        unsigned long serial;   /* # of last request processed by server */
 
577
        Bool send_event;        /* true if this came from a SendEvent request */
 
578
        Display *display;       /* Display the event was read from */
 
579
        Window window;          /* "event" window reported relative to */
 
580
        Window root;            /* root window that the event occured on */
 
581
        Window subwindow;       /* child window */
 
582
        Time time;              /* milliseconds */
 
583
        int x, y;               /* pointer x, y coordinates in event window */
 
584
        int x_root, y_root;     /* coordinates relative to root */
 
585
        unsigned int state;     /* key or button mask */
 
586
        char is_hint;           /* detail */
 
587
        Bool same_screen;       /* same screen flag */
 
588
} XMotionEvent;
 
589
typedef XMotionEvent XPointerMovedEvent;
 
590
 
 
591
typedef struct {
 
592
        int type;               /* of event */
 
593
        unsigned long serial;   /* # of last request processed by server */
 
594
        Bool send_event;        /* true if this came from a SendEvent request */
 
595
        Display *display;       /* Display the event was read from */
 
596
        Window window;          /* "event" window reported relative to */
 
597
        Window root;            /* root window that the event occured on */
 
598
        Window subwindow;       /* child window */
 
599
        Time time;              /* milliseconds */
 
600
        int x, y;               /* pointer x, y coordinates in event window */
 
601
        int x_root, y_root;     /* coordinates relative to root */
 
602
        int mode;               /* NotifyNormal, NotifyGrab, NotifyUngrab */
 
603
        int detail;
 
604
        /*
 
605
         * NotifyAncestor, NotifyVirtual, NotifyInferior, 
 
606
         * NotifyNonlinear,NotifyNonlinearVirtual
 
607
         */
 
608
        Bool same_screen;       /* same screen flag */
 
609
        Bool focus;             /* boolean focus */
 
610
        unsigned int state;     /* key or button mask */
 
611
} XCrossingEvent;
 
612
typedef XCrossingEvent XEnterWindowEvent;
 
613
typedef XCrossingEvent XLeaveWindowEvent;
 
614
 
 
615
typedef struct {
 
616
        int type;               /* FocusIn or FocusOut */
 
617
        unsigned long serial;   /* # of last request processed by server */
 
618
        Bool send_event;        /* true if this came from a SendEvent request */
 
619
        Display *display;       /* Display the event was read from */
 
620
        Window window;          /* window of event */
 
621
        int mode;               /* NotifyNormal, NotifyGrab, NotifyUngrab */
 
622
        int detail;
 
623
        /*
 
624
         * NotifyAncestor, NotifyVirtual, NotifyInferior, 
 
625
         * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
 
626
         * NotifyPointerRoot, NotifyDetailNone 
 
627
         */
 
628
} XFocusChangeEvent;
 
629
typedef XFocusChangeEvent XFocusInEvent;
 
630
typedef XFocusChangeEvent XFocusOutEvent;
 
631
 
 
632
/* generated on EnterWindow and FocusIn  when KeyMapState selected */
 
633
typedef struct {
 
634
        int type;
 
635
        unsigned long serial;   /* # of last request processed by server */
 
636
        Bool send_event;        /* true if this came from a SendEvent request */
 
637
        Display *display;       /* Display the event was read from */
 
638
        Window window;
 
639
        char key_vector[32];
 
640
} XKeymapEvent; 
 
641
 
 
642
typedef struct {
 
643
        int type;
 
644
        unsigned long serial;   /* # of last request processed by server */
 
645
        Bool send_event;        /* true if this came from a SendEvent request */
 
646
        Display *display;       /* Display the event was read from */
 
647
        Window window;
 
648
        int x, y;
 
649
        int width, height;
 
650
        int count;              /* if non-zero, at least this many more */
 
651
} XExposeEvent;
 
652
 
 
653
typedef struct {
 
654
        int type;
 
655
        unsigned long serial;   /* # of last request processed by server */
 
656
        Bool send_event;        /* true if this came from a SendEvent request */
 
657
        Display *display;       /* Display the event was read from */
 
658
        Drawable drawable;
 
659
        int x, y;
 
660
        int width, height;
 
661
        int count;              /* if non-zero, at least this many more */
 
662
        int major_code;         /* core is CopyArea or CopyPlane */
 
663
        int minor_code;         /* not defined in the core */
 
664
} XGraphicsExposeEvent;
 
665
 
 
666
typedef struct {
 
667
        int type;
 
668
        unsigned long serial;   /* # of last request processed by server */
 
669
        Bool send_event;        /* true if this came from a SendEvent request */
 
670
        Display *display;       /* Display the event was read from */
 
671
        Drawable drawable;
 
672
        int major_code;         /* core is CopyArea or CopyPlane */
 
673
        int minor_code;         /* not defined in the core */
 
674
} XNoExposeEvent;
 
675
 
 
676
typedef struct {
 
677
        int type;
 
678
        unsigned long serial;   /* # of last request processed by server */
 
679
        Bool send_event;        /* true if this came from a SendEvent request */
 
680
        Display *display;       /* Display the event was read from */
 
681
        Window window;
 
682
        int state;              /* Visibility state */
 
683
} XVisibilityEvent;
 
684
 
 
685
typedef struct {
 
686
        int type;
 
687
        unsigned long serial;   /* # of last request processed by server */
 
688
        Bool send_event;        /* true if this came from a SendEvent request */
 
689
        Display *display;       /* Display the event was read from */
 
690
        Window parent;          /* parent of the window */
 
691
        Window window;          /* window id of window created */
 
692
        int x, y;               /* window location */
 
693
        int width, height;      /* size of window */
 
694
        int border_width;       /* border width */
 
695
        Bool override_redirect; /* creation should be overridden */
 
696
} XCreateWindowEvent;
 
697
 
 
698
typedef struct {
 
699
        int type;
 
700
        unsigned long serial;   /* # of last request processed by server */
 
701
        Bool send_event;        /* true if this came from a SendEvent request */
 
702
        Display *display;       /* Display the event was read from */
 
703
        Window event;
 
704
        Window window;
 
705
} XDestroyWindowEvent;
 
706
 
 
707
typedef struct {
 
708
        int type;
 
709
        unsigned long serial;   /* # of last request processed by server */
 
710
        Bool send_event;        /* true if this came from a SendEvent request */
 
711
        Display *display;       /* Display the event was read from */
 
712
        Window event;
 
713
        Window window;
 
714
        Bool from_configure;
 
715
} XUnmapEvent;
 
716
 
 
717
typedef struct {
 
718
        int type;
 
719
        unsigned long serial;   /* # of last request processed by server */
 
720
        Bool send_event;        /* true if this came from a SendEvent request */
 
721
        Display *display;       /* Display the event was read from */
 
722
        Window event;
 
723
        Window window;
 
724
        Bool override_redirect; /* boolean, is override set... */
 
725
} XMapEvent;
 
726
 
 
727
typedef struct {
 
728
        int type;
 
729
        unsigned long serial;   /* # of last request processed by server */
 
730
        Bool send_event;        /* true if this came from a SendEvent request */
 
731
        Display *display;       /* Display the event was read from */
 
732
        Window parent;
 
733
        Window window;
 
734
} XMapRequestEvent;
 
735
 
 
736
typedef struct {
 
737
        int type;
 
738
        unsigned long serial;   /* # of last request processed by server */
 
739
        Bool send_event;        /* true if this came from a SendEvent request */
 
740
        Display *display;       /* Display the event was read from */
 
741
        Window event;
 
742
        Window window;
 
743
        Window parent;
 
744
        int x, y;
 
745
        Bool override_redirect;
 
746
} XReparentEvent;
 
747
 
 
748
typedef struct {
 
749
        int type;
 
750
        unsigned long serial;   /* # of last request processed by server */
 
751
        Bool send_event;        /* true if this came from a SendEvent request */
 
752
        Display *display;       /* Display the event was read from */
 
753
        Window event;
 
754
        Window window;
 
755
        int x, y;
 
756
        int width, height;
 
757
        int border_width;
 
758
        Window above;
 
759
        Bool override_redirect;
 
760
} XConfigureEvent;
 
761
 
 
762
typedef struct {
 
763
        int type;
 
764
        unsigned long serial;   /* # of last request processed by server */
 
765
        Bool send_event;        /* true if this came from a SendEvent request */
 
766
        Display *display;       /* Display the event was read from */
 
767
        Window event;
 
768
        Window window;
 
769
        int x, y;
 
770
} XGravityEvent;
 
771
 
 
772
typedef struct {
 
773
        int type;
 
774
        unsigned long serial;   /* # of last request processed by server */
 
775
        Bool send_event;        /* true if this came from a SendEvent request */
 
776
        Display *display;       /* Display the event was read from */
 
777
        Window window;
 
778
        int width, height;
 
779
} XResizeRequestEvent;
 
780
 
 
781
typedef struct {
 
782
        int type;
 
783
        unsigned long serial;   /* # of last request processed by server */
 
784
        Bool send_event;        /* true if this came from a SendEvent request */
 
785
        Display *display;       /* Display the event was read from */
 
786
        Window parent;
 
787
        Window window;
 
788
        int x, y;
 
789
        int width, height;
 
790
        int border_width;
 
791
        Window above;
 
792
        int detail;             /* Above, Below, TopIf, BottomIf, Opposite */
 
793
        unsigned long value_mask;
 
794
} XConfigureRequestEvent;
 
795
 
 
796
typedef struct {
 
797
        int type;
 
798
        unsigned long serial;   /* # of last request processed by server */
 
799
        Bool send_event;        /* true if this came from a SendEvent request */
 
800
        Display *display;       /* Display the event was read from */
 
801
        Window event;
 
802
        Window window;
 
803
        int place;              /* PlaceOnTop, PlaceOnBottom */
 
804
} XCirculateEvent;
 
805
 
 
806
typedef struct {
 
807
        int type;
 
808
        unsigned long serial;   /* # of last request processed by server */
 
809
        Bool send_event;        /* true if this came from a SendEvent request */
 
810
        Display *display;       /* Display the event was read from */
 
811
        Window parent;
 
812
        Window window;
 
813
        int place;              /* PlaceOnTop, PlaceOnBottom */
 
814
} XCirculateRequestEvent;
 
815
 
 
816
typedef struct {
 
817
        int type;
 
818
        unsigned long serial;   /* # of last request processed by server */
 
819
        Bool send_event;        /* true if this came from a SendEvent request */
 
820
        Display *display;       /* Display the event was read from */
 
821
        Window window;
 
822
        Atom atom;
 
823
        Time time;
 
824
        int state;              /* NewValue, Deleted */
 
825
} XPropertyEvent;
 
826
 
 
827
typedef struct {
 
828
        int type;
 
829
        unsigned long serial;   /* # of last request processed by server */
 
830
        Bool send_event;        /* true if this came from a SendEvent request */
 
831
        Display *display;       /* Display the event was read from */
 
832
        Window window;
 
833
        Atom selection;
 
834
        Time time;
 
835
} XSelectionClearEvent;
 
836
 
 
837
typedef struct {
 
838
        int type;
 
839
        unsigned long serial;   /* # of last request processed by server */
 
840
        Bool send_event;        /* true if this came from a SendEvent request */
 
841
        Display *display;       /* Display the event was read from */
 
842
        Window owner;
 
843
        Window requestor;
 
844
        Atom selection;
 
845
        Atom target;
 
846
        Atom property;
 
847
        Time time;
 
848
} XSelectionRequestEvent;
 
849
 
 
850
typedef struct {
 
851
        int type;
 
852
        unsigned long serial;   /* # of last request processed by server */
 
853
        Bool send_event;        /* true if this came from a SendEvent request */
 
854
        Display *display;       /* Display the event was read from */
 
855
        Window requestor;
 
856
        Atom selection;
 
857
        Atom target;
 
858
        Atom property;          /* ATOM or None */
 
859
        Time time;
 
860
} XSelectionEvent;
 
861
 
 
862
typedef struct {
 
863
        int type;
 
864
        unsigned long serial;   /* # of last request processed by server */
 
865
        Bool send_event;        /* true if this came from a SendEvent request */
 
866
        Display *display;       /* Display the event was read from */
 
867
        Window window;
 
868
        Colormap colormap;      /* COLORMAP or None */
 
869
#if defined(__cplusplus) || defined(c_plusplus)
 
870
        Bool c_new;             /* C++ */
 
871
#else
 
872
        Bool new;
 
873
#endif
 
874
        int state;              /* ColormapInstalled, ColormapUninstalled */
 
875
} XColormapEvent;
 
876
 
 
877
typedef struct {
 
878
        int type;
 
879
        unsigned long serial;   /* # of last request processed by server */
 
880
        Bool send_event;        /* true if this came from a SendEvent request */
 
881
        Display *display;       /* Display the event was read from */
 
882
        Window window;
 
883
        Atom message_type;
 
884
        int format;
 
885
        union {
 
886
                char b[20];
 
887
                short s[10];
 
888
                long l[5];
 
889
                } data;
 
890
} XClientMessageEvent;
 
891
 
 
892
typedef struct {
 
893
        int type;
 
894
        unsigned long serial;   /* # of last request processed by server */
 
895
        Bool send_event;        /* true if this came from a SendEvent request */
 
896
        Display *display;       /* Display the event was read from */
 
897
        Window window;          /* unused */
 
898
        int request;            /* one of MappingModifier, MappingKeyboard,
 
899
                                   MappingPointer */
 
900
        int first_keycode;      /* first keycode */
 
901
        int count;              /* defines range of change w. first_keycode*/
 
902
} XMappingEvent;
 
903
 
 
904
typedef struct {
 
905
        int type;
 
906
        Display *display;       /* Display the event was read from */
 
907
        XID resourceid;         /* resource id */
 
908
        unsigned long serial;   /* serial number of failed request */
 
909
        unsigned char error_code;       /* error code of failed request */
 
910
        unsigned char request_code;     /* Major op-code of failed request */
 
911
        unsigned char minor_code;       /* Minor op-code of failed request */
 
912
} XErrorEvent;
 
913
 
 
914
typedef struct {
 
915
        int type;
 
916
        unsigned long serial;   /* # of last request processed by server */
 
917
        Bool send_event;        /* true if this came from a SendEvent request */
 
918
        Display *display;/* Display the event was read from */
 
919
        Window window;  /* window on which event was requested in event mask */
 
920
} XAnyEvent;
 
921
 
 
922
/*
 
923
 * this union is defined so Xlib can always use the same sized
 
924
 * event structure internally, to avoid memory fragmentation.
 
925
 */
 
926
typedef union _XEvent {
 
927
        int type;               /* must not be changed; first element */
 
928
        XAnyEvent xany;
 
929
        XKeyEvent xkey;
 
930
        XButtonEvent xbutton;
 
931
        XMotionEvent xmotion;
 
932
        XCrossingEvent xcrossing;
 
933
        XFocusChangeEvent xfocus;
 
934
        XExposeEvent xexpose;
 
935
        XGraphicsExposeEvent xgraphicsexpose;
 
936
        XNoExposeEvent xnoexpose;
 
937
        XVisibilityEvent xvisibility;
 
938
        XCreateWindowEvent xcreatewindow;
 
939
        XDestroyWindowEvent xdestroywindow;
 
940
        XUnmapEvent xunmap;
 
941
        XMapEvent xmap;
 
942
        XMapRequestEvent xmaprequest;
 
943
        XReparentEvent xreparent;
 
944
        XConfigureEvent xconfigure;
 
945
        XGravityEvent xgravity;
 
946
        XResizeRequestEvent xresizerequest;
 
947
        XConfigureRequestEvent xconfigurerequest;
 
948
        XCirculateEvent xcirculate;
 
949
        XCirculateRequestEvent xcirculaterequest;
 
950
        XPropertyEvent xproperty;
 
951
        XSelectionClearEvent xselectionclear;
 
952
        XSelectionRequestEvent xselectionrequest;
 
953
        XSelectionEvent xselection;
 
954
        XColormapEvent xcolormap;
 
955
        XClientMessageEvent xclient;
 
956
        XMappingEvent xmapping;
 
957
        XErrorEvent xerror;
 
958
        XKeymapEvent xkeymap;
 
959
        long pad[24];
 
960
} XEvent;
 
961
#endif
 
962
 
 
963
#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy)))
 
964
 
 
965
/*
 
966
 * per character font metric information.
 
967
 */
 
968
typedef struct {
 
969
    short       lbearing;       /* origin to left edge of raster */
 
970
    short       rbearing;       /* origin to right edge of raster */
 
971
    short       width;          /* advance to next char's origin */
 
972
    short       ascent;         /* baseline to top edge of raster */
 
973
    short       descent;        /* baseline to bottom edge of raster */
 
974
    unsigned short attributes;  /* per char flags (not predefined) */
 
975
} XCharStruct;
 
976
 
 
977
/*
 
978
 * To allow arbitrary information with fonts, there are additional properties
 
979
 * returned.
 
980
 */
 
981
typedef struct {
 
982
    Atom name;
 
983
    unsigned long card32;
 
984
} XFontProp;
 
985
 
 
986
typedef struct {
 
987
    XExtData    *ext_data;      /* hook for extension to hang data */
 
988
    Font        fid;            /* Font id for this font */
 
989
    unsigned    direction;      /* hint about direction the font is painted */
 
990
    unsigned    min_char_or_byte2;/* first character */
 
991
    unsigned    max_char_or_byte2;/* last character */
 
992
    unsigned    min_byte1;      /* first row that exists */
 
993
    unsigned    max_byte1;      /* last row that exists */
 
994
    Bool        all_chars_exist;/* flag if all characters have non-zero size*/
 
995
    unsigned    default_char;   /* char to print for undefined character */
 
996
    int         n_properties;   /* how many properties there are */
 
997
    XFontProp   *properties;    /* pointer to array of additional properties*/
 
998
    XCharStruct min_bounds;     /* minimum bounds over all existing char*/
 
999
    XCharStruct max_bounds;     /* maximum bounds over all existing char*/
 
1000
    XCharStruct *per_char;      /* first_char to last_char information */
 
1001
    int         ascent;         /* log. extent above baseline for spacing */
 
1002
    int         descent;        /* log. descent below baseline for spacing */
 
1003
} XFontStruct;
 
1004
 
 
1005
/*
 
1006
 * PolyText routines take these as arguments.
 
1007
 */
 
1008
typedef struct {
 
1009
    char *chars;                /* pointer to string */
 
1010
    int nchars;                 /* number of characters */
 
1011
    int delta;                  /* delta between strings */
 
1012
    Font font;                  /* font to print it in, None don't change */
 
1013
} XTextItem;
 
1014
 
 
1015
typedef struct {                /* normal 16 bit characters are two bytes */
 
1016
    unsigned char byte1;
 
1017
    unsigned char byte2;
 
1018
} XChar2b;
 
1019
 
 
1020
typedef struct {
 
1021
    XChar2b *chars;             /* two byte characters */
 
1022
    int nchars;                 /* number of characters */
 
1023
    int delta;                  /* delta between strings */
 
1024
    Font font;                  /* font to print it in, None don't change */
 
1025
} XTextItem16;
 
1026
 
 
1027
 
 
1028
typedef union { Display *display;
 
1029
                GC gc;
 
1030
                Visual *visual;
 
1031
                Screen *screen;
 
1032
                ScreenFormat *pixmap_format;
 
1033
                XFontStruct *font; } XEDataObject;
 
1034
 
 
1035
typedef struct {
 
1036
    XRectangle      max_ink_extent;
 
1037
    XRectangle      max_logical_extent;
 
1038
} XFontSetExtents;
 
1039
 
 
1040
typedef struct _XFontSet *XFontSet;
 
1041
 
 
1042
typedef struct {
 
1043
    char           *chars;
 
1044
    int             nchars;
 
1045
    int             delta;
 
1046
    XFontSet        font_set;
 
1047
} XmbTextItem;
 
1048
 
 
1049
typedef struct {
 
1050
    wchar_t        *chars;
 
1051
    int             nchars;
 
1052
    int             delta;
 
1053
    XFontSet        font_set;
 
1054
} XwcTextItem;
 
1055
 
 
1056
typedef void (*XIMProc)();
 
1057
 
 
1058
typedef struct _XIM *XIM;
 
1059
typedef struct _XIC *XIC;
 
1060
 
 
1061
typedef unsigned long XIMStyle;
 
1062
 
 
1063
typedef struct {
 
1064
    unsigned short count_styles;
 
1065
    XIMStyle *supported_styles;
 
1066
} XIMStyles;
 
1067
 
 
1068
#define XIMPreeditArea          0x0001L
 
1069
#define XIMPreeditCallbacks     0x0002L
 
1070
#define XIMPreeditPosition      0x0004L
 
1071
#define XIMPreeditNothing       0x0008L
 
1072
#define XIMPreeditNone          0x0010L
 
1073
#define XIMStatusArea           0x0100L
 
1074
#define XIMStatusCallbacks      0x0200L
 
1075
#define XIMStatusNothing        0x0400L
 
1076
#define XIMStatusNone           0x0800L
 
1077
 
 
1078
#define XNVaNestedList "XNVaNestedList"
 
1079
#define XNClientWindow "clientWindow"
 
1080
#define XNInputStyle "inputStyle"
 
1081
#define XNFocusWindow "focusWindow"
 
1082
#define XNResourceName "resourceName"
 
1083
#define XNResourceClass "resourceClass"
 
1084
#define XNGeometryCallback "geometryCallback"
 
1085
#define XNFilterEvents "filterEvents"
 
1086
#define XNPreeditStartCallback "preeditStartCallback"
 
1087
#define XNPreeditDoneCallback "preeditDoneCallback"
 
1088
#define XNPreeditDrawCallback "preeditDrawCallback"
 
1089
#define XNPreeditCaretCallback "preeditCaretCallback"
 
1090
#define XNPreeditAttributes "preeditAttributes"
 
1091
#define XNStatusStartCallback "statusStartCallback"
 
1092
#define XNStatusDoneCallback "statusDoneCallback"
 
1093
#define XNStatusDrawCallback "statusDrawCallback"
 
1094
#define XNStatusAttributes "statusAttributes"
 
1095
#define XNArea "area"
 
1096
#define XNAreaNeeded "areaNeeded"
 
1097
#define XNSpotLocation "spotLocation"
 
1098
#define XNColormap "colorMap"
 
1099
#define XNStdColormap "stdColorMap"
 
1100
#define XNForeground "foreground"
 
1101
#define XNBackground "background"
 
1102
#define XNBackgroundPixmap "backgroundPixmap"
 
1103
#define XNFontSet "fontSet"
 
1104
#define XNLineSpace "lineSpace"
 
1105
#define XNCursor "cursor"
 
1106
 
 
1107
#define XBufferOverflow         -1
 
1108
#define XLookupNone             1
 
1109
#define XLookupChars            2
 
1110
#define XLookupKeySym           3
 
1111
#define XLookupBoth             4
 
1112
 
 
1113
#if NeedFunctionPrototypes
 
1114
typedef void *XVaNestedList;
 
1115
#else
 
1116
typedef XPointer XVaNestedList;
 
1117
#endif
 
1118
 
 
1119
typedef struct {
 
1120
    XPointer client_data;
 
1121
    XIMProc callback;
 
1122
} XIMCallback;
 
1123
 
 
1124
typedef unsigned long XIMFeedback;
 
1125
 
 
1126
#define XIMReverse      1
 
1127
#define XIMUnderline    (1<<1) 
 
1128
#define XIMHighlight    (1<<2)
 
1129
#define XIMPrimary      (1<<5)
 
1130
#define XIMSecondary    (1<<6)
 
1131
#define XIMTertiary     (1<<7)
 
1132
 
 
1133
typedef struct _XIMText {
 
1134
    unsigned short length;
 
1135
    XIMFeedback *feedback;
 
1136
    Bool encoding_is_wchar; 
 
1137
    union {
 
1138
        char *multi_byte;
 
1139
        wchar_t *wide_char;
 
1140
    } string; 
 
1141
} XIMText;
 
1142
 
 
1143
typedef struct _XIMPreeditDrawCallbackStruct {
 
1144
    int caret;          /* Cursor offset within pre-edit string */
 
1145
    int chg_first;      /* Starting change position */
 
1146
    int chg_length;     /* Length of the change in character count */
 
1147
    XIMText *text;
 
1148
} XIMPreeditDrawCallbackStruct;
 
1149
 
 
1150
typedef enum {
 
1151
    XIMForwardChar, XIMBackwardChar,
 
1152
    XIMForwardWord, XIMBackwardWord,
 
1153
    XIMCaretUp, XIMCaretDown,
 
1154
    XIMNextLine, XIMPreviousLine,
 
1155
    XIMLineStart, XIMLineEnd, 
 
1156
    XIMAbsolutePosition,
 
1157
    XIMDontChange
 
1158
} XIMCaretDirection;
 
1159
 
 
1160
typedef enum {
 
1161
    XIMIsInvisible,     /* Disable caret feedback */ 
 
1162
    XIMIsPrimary,       /* UI defined caret feedback */
 
1163
    XIMIsSecondary      /* UI defined caret feedback */
 
1164
} XIMCaretStyle;
 
1165
 
 
1166
typedef struct _XIMPreeditCaretCallbackStruct {
 
1167
    int position;                /* Caret offset within pre-edit string */
 
1168
    XIMCaretDirection direction; /* Caret moves direction */
 
1169
    XIMCaretStyle style;         /* Feedback of the caret */
 
1170
} XIMPreeditCaretCallbackStruct;
 
1171
 
 
1172
typedef enum {
 
1173
    XIMTextType,
 
1174
    XIMBitmapType
 
1175
} XIMStatusDataType;
 
1176
        
 
1177
typedef struct _XIMStatusDrawCallbackStruct {
 
1178
    XIMStatusDataType type;
 
1179
    union {
 
1180
        XIMText *text;
 
1181
        Pixmap  bitmap;
 
1182
    } data;
 
1183
} XIMStatusDrawCallbackStruct;
 
1184
 
 
1185
typedef int (*XErrorHandler) (      /* WARNING, this type not in Xlib spec */
 
1186
#if NeedFunctionPrototypes
 
1187
    Display*            /* display */,
 
1188
    XErrorEvent*        /* error_event */
 
1189
#endif
 
1190
);
 
1191
 
 
1192
_XFUNCPROTOBEGIN
 
1193
 
 
1194
 
 
1195
 
 
1196
#include "tkIntXlibDecls.h"
 
1197
 
 
1198
_XFUNCPROTOEND
 
1199
 
 
1200
#if defined(MAC_OSX_TK)
 
1201
#   undef Cursor
 
1202
#   undef Region
 
1203
#endif
 
1204
 
 
1205
#endif /* _XLIB_H_ */