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_ */ 1206