mirror of
https://github.com/QB64Official/qb64.git
synced 2024-09-19 22:35:24 +00:00
1213 lines
40 KiB
C
1213 lines
40 KiB
C
|
/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */
|
||
|
/*
|
||
|
* Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology
|
||
|
*
|
||
|
* Permission to use, copy, modify, and distribute this software and its
|
||
|
* documentation for any purpose and without fee is hereby granted, provided
|
||
|
* that the above copyright notice appear in all copies and that both that
|
||
|
* copyright notice and this permission notice appear in supporting
|
||
|
* documentation, and that the name of M.I.T. not be used in advertising
|
||
|
* or publicity pertaining to distribution of the software without specific,
|
||
|
* written prior permission. M.I.T. makes no representations about the
|
||
|
* suitability of this software for any purpose. It is provided "as is"
|
||
|
* without express or implied warranty.
|
||
|
*
|
||
|
* X Window System is a Trademark of MIT.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Xlib.h - Header definition and support file for the C subroutine
|
||
|
* interface library (Xlib) to the X Window System Protocol (V11).
|
||
|
* Structures and symbols starting with "_" are private to the library.
|
||
|
*/
|
||
|
#ifndef _XLIB_H_
|
||
|
#define _XLIB_H_
|
||
|
|
||
|
#define XlibSpecificationRelease 5
|
||
|
|
||
|
#if !defined(MAC_OSX_TK)
|
||
|
# include <X11/X.h>
|
||
|
#endif
|
||
|
#ifdef MAC_OSX_TK
|
||
|
# include <X11/X.h>
|
||
|
# define Cursor XCursor
|
||
|
# define Region XRegion
|
||
|
#endif
|
||
|
|
||
|
/* applications should not depend on these two headers being included! */
|
||
|
#include <X11/Xfuncproto.h>
|
||
|
|
||
|
#ifndef X_WCHAR
|
||
|
#ifdef X_NOT_STDC_ENV
|
||
|
#define X_WCHAR
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifndef X_WCHAR
|
||
|
#include <stddef.h>
|
||
|
#else
|
||
|
/* replace this with #include or typedef appropriate for your system */
|
||
|
typedef unsigned long wchar_t;
|
||
|
#endif
|
||
|
|
||
|
typedef char *XPointer;
|
||
|
|
||
|
#define Bool int
|
||
|
#if defined(MAC_OSX_TK)
|
||
|
/* Use define rather than typedef, since may need to undefine this later */
|
||
|
#define Status int
|
||
|
#else
|
||
|
typedef int Status;
|
||
|
#endif
|
||
|
#define True 1
|
||
|
#define False 0
|
||
|
|
||
|
#define QueuedAlready 0
|
||
|
#define QueuedAfterReading 1
|
||
|
#define QueuedAfterFlush 2
|
||
|
|
||
|
#define ConnectionNumber(dpy) ((dpy)->fd)
|
||
|
#define RootWindow(dpy, scr) (((dpy)->screens[(scr)]).root)
|
||
|
#define DefaultScreen(dpy) ((dpy)->default_screen)
|
||
|
#define DefaultRootWindow(dpy) (((dpy)->screens[(dpy)->default_screen]).root)
|
||
|
#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual)
|
||
|
#define DefaultGC(dpy, scr) (((dpy)->screens[(scr)]).default_gc)
|
||
|
#define BlackPixel(dpy, scr) (((dpy)->screens[(scr)]).black_pixel)
|
||
|
#define WhitePixel(dpy, scr) (((dpy)->screens[(scr)]).white_pixel)
|
||
|
#define AllPlanes ((unsigned long)~0L)
|
||
|
#define QLength(dpy) ((dpy)->qlen)
|
||
|
#define DisplayWidth(dpy, scr) (((dpy)->screens[(scr)]).width)
|
||
|
#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height)
|
||
|
#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth)
|
||
|
#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight)
|
||
|
#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
|
||
|
#define DisplayCells(dpy, scr) (DefaultVisual((dpy), (scr))->map_entries)
|
||
|
#define ScreenCount(dpy) ((dpy)->nscreens)
|
||
|
#define ServerVendor(dpy) ((dpy)->vendor)
|
||
|
#define ProtocolVersion(dpy) ((dpy)->proto_major_version)
|
||
|
#define ProtocolRevision(dpy) ((dpy)->proto_minor_version)
|
||
|
#define VendorRelease(dpy) ((dpy)->release)
|
||
|
#define DisplayString(dpy) ((dpy)->display_name)
|
||
|
#define DefaultDepth(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
|
||
|
#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap)
|
||
|
#define BitmapUnit(dpy) ((dpy)->bitmap_unit)
|
||
|
#define BitmapBitOrder(dpy) ((dpy)->bitmap_bit_order)
|
||
|
#define BitmapPad(dpy) ((dpy)->bitmap_pad)
|
||
|
#define ImageByteOrder(dpy) ((dpy)->byte_order)
|
||
|
#define NextRequest(dpy) ((dpy)->request + 1)
|
||
|
#define LastKnownRequestProcessed(dpy) ((dpy)->request)
|
||
|
|
||
|
/* macros for screen oriented applications (toolkit) */
|
||
|
#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)]))
|
||
|
#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen]))
|
||
|
#define DisplayOfScreen(s) ((s)->display)
|
||
|
#define RootWindowOfScreen(s) ((s)->root)
|
||
|
#define BlackPixelOfScreen(s) ((s)->black_pixel)
|
||
|
#define WhitePixelOfScreen(s) ((s)->white_pixel)
|
||
|
#define DefaultColormapOfScreen(s)((s)->cmap)
|
||
|
#define DefaultDepthOfScreen(s) ((s)->root_depth)
|
||
|
#define DefaultGCOfScreen(s) ((s)->default_gc)
|
||
|
#define DefaultVisualOfScreen(s)((s)->root_visual)
|
||
|
#define WidthOfScreen(s) ((s)->width)
|
||
|
#define HeightOfScreen(s) ((s)->height)
|
||
|
#define WidthMMOfScreen(s) ((s)->mwidth)
|
||
|
#define HeightMMOfScreen(s) ((s)->mheight)
|
||
|
#define PlanesOfScreen(s) ((s)->root_depth)
|
||
|
#define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries)
|
||
|
#define MinCmapsOfScreen(s) ((s)->min_maps)
|
||
|
#define MaxCmapsOfScreen(s) ((s)->max_maps)
|
||
|
#define DoesSaveUnders(s) ((s)->save_unders)
|
||
|
#define DoesBackingStore(s) ((s)->backing_store)
|
||
|
#define EventMaskOfScreen(s) ((s)->root_input_mask)
|
||
|
|
||
|
/*
|
||
|
* Extensions need a way to hang private data on some structures.
|
||
|
*/
|
||
|
typedef struct _XExtData {
|
||
|
int number; /* number returned by XRegisterExtension */
|
||
|
struct _XExtData *next; /* next item on list of data for structure */
|
||
|
int (*free_private)(); /* called to free private storage */
|
||
|
XPointer private_data; /* data private to this extension. */
|
||
|
} XExtData;
|
||
|
|
||
|
/*
|
||
|
* This file contains structures used by the extension mechanism.
|
||
|
*/
|
||
|
typedef struct { /* public to extension, cannot be changed */
|
||
|
int extension; /* extension number */
|
||
|
int major_opcode; /* major op-code assigned by server */
|
||
|
int first_event; /* first event number for the extension */
|
||
|
int first_error; /* first error number for the extension */
|
||
|
} XExtCodes;
|
||
|
|
||
|
/*
|
||
|
* Data structure for retrieving info about pixmap formats.
|
||
|
*/
|
||
|
|
||
|
typedef struct {
|
||
|
int depth;
|
||
|
int bits_per_pixel;
|
||
|
int scanline_pad;
|
||
|
} XPixmapFormatValues;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Data structure for setting graphics context.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
int function; /* logical operation */
|
||
|
unsigned long plane_mask;/* plane mask */
|
||
|
unsigned long foreground;/* foreground pixel */
|
||
|
unsigned long background;/* background pixel */
|
||
|
int line_width; /* line width */
|
||
|
int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
|
||
|
int cap_style; /* CapNotLast, CapButt,
|
||
|
CapRound, CapProjecting */
|
||
|
int join_style; /* JoinMiter, JoinRound, JoinBevel */
|
||
|
int fill_style; /* FillSolid, FillTiled,
|
||
|
FillStippled, FillOpaeueStippled */
|
||
|
int fill_rule; /* EvenOddRule, WindingRule */
|
||
|
int arc_mode; /* ArcChord, ArcPieSlice */
|
||
|
Pixmap tile; /* tile pixmap for tiling operations */
|
||
|
Pixmap stipple; /* stipple 1 plane pixmap for stipping */
|
||
|
int ts_x_origin; /* offset for tile or stipple operations */
|
||
|
int ts_y_origin;
|
||
|
Font font; /* default text font for text operations */
|
||
|
int subwindow_mode; /* ClipByChildren, IncludeInferiors */
|
||
|
Bool graphics_exposures;/* boolean, should exposures be generated */
|
||
|
int clip_x_origin; /* origin for clipping */
|
||
|
int clip_y_origin;
|
||
|
Pixmap clip_mask; /* bitmap clipping; other calls for rects */
|
||
|
int dash_offset; /* patterned/dashed line information */
|
||
|
char dashes;
|
||
|
} XGCValues;
|
||
|
|
||
|
/*
|
||
|
* Graphics context. The contents of this structure are implementation
|
||
|
* dependent. A GC should be treated as opaque by application code.
|
||
|
*/
|
||
|
|
||
|
typedef XGCValues *GC;
|
||
|
|
||
|
/*
|
||
|
* Visual structure; contains information about colormapping possible.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
XExtData *ext_data; /* hook for extension to hang data */
|
||
|
VisualID visualid; /* visual id of this visual */
|
||
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||
|
int c_class; /* C++ class of screen (monochrome, etc.) */
|
||
|
#else
|
||
|
int class; /* class of screen (monochrome, etc.) */
|
||
|
#endif
|
||
|
unsigned long red_mask, green_mask, blue_mask; /* mask values */
|
||
|
#if defined(MAC_OSX_TK)
|
||
|
unsigned long alpha_mask;
|
||
|
#endif
|
||
|
int bits_per_rgb; /* log base 2 of distinct color values */
|
||
|
int map_entries; /* color map entries */
|
||
|
} Visual;
|
||
|
|
||
|
/*
|
||
|
* Depth structure; contains information for each possible depth.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
int depth; /* this depth (Z) of the depth */
|
||
|
int nvisuals; /* number of Visual types at this depth */
|
||
|
Visual *visuals; /* list of visuals possible at this depth */
|
||
|
} Depth;
|
||
|
|
||
|
/*
|
||
|
* Information about the screen. The contents of this structure are
|
||
|
* implementation dependent. A Screen should be treated as opaque
|
||
|
* by application code.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
XExtData *ext_data; /* hook for extension to hang data */
|
||
|
struct _XDisplay *display;/* back pointer to display structure */
|
||
|
Window root; /* Root window id. */
|
||
|
int width, height; /* width and height of screen */
|
||
|
int mwidth, mheight; /* width and height of in millimeters */
|
||
|
int ndepths; /* number of depths possible */
|
||
|
Depth *depths; /* list of allowable depths on the screen */
|
||
|
int root_depth; /* bits per pixel */
|
||
|
Visual *root_visual; /* root visual */
|
||
|
GC default_gc; /* GC for the root root visual */
|
||
|
Colormap cmap; /* default color map */
|
||
|
unsigned long white_pixel;
|
||
|
unsigned long black_pixel; /* White and Black pixel values */
|
||
|
int max_maps, min_maps; /* max and min color maps */
|
||
|
int backing_store; /* Never, WhenMapped, Always */
|
||
|
Bool save_unders;
|
||
|
long root_input_mask; /* initial root input mask */
|
||
|
} Screen;
|
||
|
|
||
|
/*
|
||
|
* Format structure; describes ZFormat data the screen will understand.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
XExtData *ext_data; /* hook for extension to hang data */
|
||
|
int depth; /* depth of this image format */
|
||
|
int bits_per_pixel; /* bits/pixel at this depth */
|
||
|
int scanline_pad; /* scanline must padded to this multiple */
|
||
|
} ScreenFormat;
|
||
|
|
||
|
/*
|
||
|
* Data structure for setting window attributes.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
Pixmap background_pixmap; /* background or None or ParentRelative */
|
||
|
unsigned long background_pixel; /* background pixel */
|
||
|
Pixmap border_pixmap; /* border of the window */
|
||
|
unsigned long border_pixel; /* border pixel value */
|
||
|
int bit_gravity; /* one of bit gravity values */
|
||
|
int win_gravity; /* one of the window gravity values */
|
||
|
int backing_store; /* NotUseful, WhenMapped, Always */
|
||
|
unsigned long backing_planes;/* planes to be preseved if possible */
|
||
|
unsigned long backing_pixel;/* value to use in restoring planes */
|
||
|
Bool save_under; /* should bits under be saved? (popups) */
|
||
|
long event_mask; /* set of events that should be saved */
|
||
|
long do_not_propagate_mask; /* set of events that should not propagate */
|
||
|
Bool override_redirect; /* boolean value for override-redirect */
|
||
|
Colormap colormap; /* color map to be associated with window */
|
||
|
Cursor cursor; /* cursor to be displayed (or None) */
|
||
|
} XSetWindowAttributes;
|
||
|
|
||
|
typedef struct {
|
||
|
int x, y; /* location of window */
|
||
|
int width, height; /* width and height of window */
|
||
|
int border_width; /* border width of window */
|
||
|
int depth; /* depth of window */
|
||
|
Visual *visual; /* the associated visual structure */
|
||
|
Window root; /* root of screen containing window */
|
||
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||
|
int c_class; /* C++ InputOutput, InputOnly*/
|
||
|
#else
|
||
|
int class; /* InputOutput, InputOnly*/
|
||
|
#endif
|
||
|
int bit_gravity; /* one of bit gravity values */
|
||
|
int win_gravity; /* one of the window gravity values */
|
||
|
int backing_store; /* NotUseful, WhenMapped, Always */
|
||
|
unsigned long backing_planes;/* planes to be preserved if possible */
|
||
|
unsigned long backing_pixel;/* value to be used when restoring planes */
|
||
|
Bool save_under; /* boolean, should bits under be saved? */
|
||
|
Colormap colormap; /* color map to be associated with window */
|
||
|
Bool map_installed; /* boolean, is color map currently installed*/
|
||
|
int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
|
||
|
long all_event_masks; /* set of events all people have interest in*/
|
||
|
long your_event_mask; /* my event mask */
|
||
|
long do_not_propagate_mask; /* set of events that should not propagate */
|
||
|
Bool override_redirect; /* boolean value for override-redirect */
|
||
|
Screen *screen; /* back pointer to correct screen */
|
||
|
} XWindowAttributes;
|
||
|
|
||
|
/*
|
||
|
* Data structure for host setting; getting routines.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
typedef struct {
|
||
|
int family; /* for example FamilyInternet */
|
||
|
int length; /* length of address, in bytes */
|
||
|
char *address; /* pointer to where to find the bytes */
|
||
|
} XHostAddress;
|
||
|
|
||
|
/*
|
||
|
* Data structure for "image" data, used by image manipulation routines.
|
||
|
*/
|
||
|
typedef struct _XImage {
|
||
|
int width, height; /* size of image */
|
||
|
int xoffset; /* number of pixels offset in X direction */
|
||
|
int format; /* XYBitmap, XYPixmap, ZPixmap */
|
||
|
char *data; /* pointer to image data */
|
||
|
int byte_order; /* data byte order, LSBFirst, MSBFirst */
|
||
|
int bitmap_unit; /* quant. of scanline 8, 16, 32 */
|
||
|
int bitmap_bit_order; /* LSBFirst, MSBFirst */
|
||
|
int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */
|
||
|
int depth; /* depth of image */
|
||
|
int bytes_per_line; /* accelarator to next line */
|
||
|
int bits_per_pixel; /* bits per pixel (ZPixmap) */
|
||
|
unsigned long red_mask; /* bits in z arrangment */
|
||
|
unsigned long green_mask;
|
||
|
unsigned long blue_mask;
|
||
|
XPointer obdata; /* hook for the object routines to hang on */
|
||
|
#if defined(MAC_OSX_TK)
|
||
|
int pixelpower; /* n such that pixels are 2^n x 2^n blocks*/
|
||
|
unsigned long alpha_mask;
|
||
|
#endif
|
||
|
struct funcs { /* image manipulation routines */
|
||
|
struct _XImage *(*create_image)();
|
||
|
#if NeedFunctionPrototypes
|
||
|
int (*destroy_image) (struct _XImage *);
|
||
|
unsigned long (*get_pixel) (struct _XImage *, int, int);
|
||
|
int (*put_pixel) (struct _XImage *, int, int, unsigned long);
|
||
|
struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
|
||
|
int (*add_pixel) (struct _XImage *, long);
|
||
|
#else
|
||
|
int (*destroy_image)();
|
||
|
unsigned long (*get_pixel)();
|
||
|
int (*put_pixel)();
|
||
|
struct _XImage *(*sub_image)();
|
||
|
int (*add_pixel)();
|
||
|
#endif
|
||
|
} f;
|
||
|
} XImage;
|
||
|
|
||
|
/*
|
||
|
* Data structure for XReconfigureWindow
|
||
|
*/
|
||
|
typedef struct {
|
||
|
int x, y;
|
||
|
int width, height;
|
||
|
int border_width;
|
||
|
Window sibling;
|
||
|
int stack_mode;
|
||
|
} XWindowChanges;
|
||
|
|
||
|
/*
|
||
|
* Data structure used by color operations
|
||
|
*/
|
||
|
typedef struct {
|
||
|
unsigned long pixel;
|
||
|
unsigned short red, green, blue;
|
||
|
char flags; /* do_red, do_green, do_blue */
|
||
|
char pad;
|
||
|
} XColor;
|
||
|
|
||
|
/*
|
||
|
* Data structures for graphics operations. On most machines, these are
|
||
|
* congruent with the wire protocol structures, so reformatting the data
|
||
|
* can be avoided on these architectures.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
short x1, y1, x2, y2;
|
||
|
} XSegment;
|
||
|
|
||
|
typedef struct {
|
||
|
short x, y;
|
||
|
} XPoint;
|
||
|
|
||
|
typedef struct {
|
||
|
short x, y;
|
||
|
unsigned short width, height;
|
||
|
} XRectangle;
|
||
|
|
||
|
typedef struct {
|
||
|
short x, y;
|
||
|
unsigned short width, height;
|
||
|
short angle1, angle2;
|
||
|
} XArc;
|
||
|
|
||
|
|
||
|
/* Data structure for XChangeKeyboardControl */
|
||
|
|
||
|
typedef struct {
|
||
|
int key_click_percent;
|
||
|
int bell_percent;
|
||
|
int bell_pitch;
|
||
|
int bell_duration;
|
||
|
int led;
|
||
|
int led_mode;
|
||
|
int key;
|
||
|
int auto_repeat_mode; /* On, Off, Default */
|
||
|
} XKeyboardControl;
|
||
|
|
||
|
/* Data structure for XGetKeyboardControl */
|
||
|
|
||
|
typedef struct {
|
||
|
int key_click_percent;
|
||
|
int bell_percent;
|
||
|
unsigned int bell_pitch, bell_duration;
|
||
|
unsigned long led_mask;
|
||
|
int global_auto_repeat;
|
||
|
char auto_repeats[32];
|
||
|
} XKeyboardState;
|
||
|
|
||
|
/* Data structure for XGetMotionEvents. */
|
||
|
|
||
|
typedef struct {
|
||
|
Time time;
|
||
|
short x, y;
|
||
|
} XTimeCoord;
|
||
|
|
||
|
/* Data structure for X{Set,Get}ModifierMapping */
|
||
|
|
||
|
typedef struct {
|
||
|
int max_keypermod; /* The server's max # of keys per modifier */
|
||
|
KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */
|
||
|
} XModifierKeymap;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Display datatype maintaining display specific data.
|
||
|
* The contents of this structure are implementation dependent.
|
||
|
* A Display should be treated as opaque by application code.
|
||
|
*/
|
||
|
typedef struct _XDisplay {
|
||
|
XExtData *ext_data; /* hook for extension to hang data */
|
||
|
struct _XFreeFuncs *free_funcs; /* internal free functions */
|
||
|
int fd; /* Network socket. */
|
||
|
int conn_checker; /* ugly thing used by _XEventsQueued */
|
||
|
int proto_major_version;/* maj. version of server's X protocol */
|
||
|
int proto_minor_version;/* minor version of servers X protocol */
|
||
|
char *vendor; /* vendor of the server hardware */
|
||
|
XID resource_base; /* resource ID base */
|
||
|
XID resource_mask; /* resource ID mask bits */
|
||
|
XID resource_id; /* allocator current ID */
|
||
|
int resource_shift; /* allocator shift to correct bits */
|
||
|
XID (*resource_alloc)(); /* allocator function */
|
||
|
int byte_order; /* screen byte order, LSBFirst, MSBFirst */
|
||
|
int bitmap_unit; /* padding and data requirements */
|
||
|
int bitmap_pad; /* padding requirements on bitmaps */
|
||
|
int bitmap_bit_order; /* LeastSignificant or MostSignificant */
|
||
|
int nformats; /* number of pixmap formats in list */
|
||
|
ScreenFormat *pixmap_format; /* pixmap format list */
|
||
|
int vnumber; /* Xlib's X protocol version number. */
|
||
|
int release; /* release of the server */
|
||
|
struct _XSQEvent *head, *tail; /* Input event queue. */
|
||
|
int qlen; /* Length of input event queue */
|
||
|
unsigned long request; /* sequence number of last request. */
|
||
|
char *last_req; /* beginning of last request, or dummy */
|
||
|
char *buffer; /* Output buffer starting address. */
|
||
|
char *bufptr; /* Output buffer index pointer. */
|
||
|
char *bufmax; /* Output buffer maximum+1 address. */
|
||
|
unsigned max_request_size; /* maximum number 32 bit words in request*/
|
||
|
struct _XrmHashBucketRec *db;
|
||
|
int (*synchandler)(); /* Synchronization handler */
|
||
|
char *display_name; /* "host:display" string used on this connect*/
|
||
|
int default_screen; /* default screen for operations */
|
||
|
int nscreens; /* number of screens on this server*/
|
||
|
Screen *screens; /* pointer to list of screens */
|
||
|
unsigned long motion_buffer; /* size of motion buffer */
|
||
|
unsigned long flags; /* internal connection flags */
|
||
|
int min_keycode; /* minimum defined keycode */
|
||
|
int max_keycode; /* maximum defined keycode */
|
||
|
KeySym *keysyms; /* This server's keysyms */
|
||
|
XModifierKeymap *modifiermap; /* This server's modifier keymap */
|
||
|
int keysyms_per_keycode;/* number of rows */
|
||
|
char *xdefaults; /* contents of defaults from server */
|
||
|
char *scratch_buffer; /* place to hang scratch buffer */
|
||
|
unsigned long scratch_length; /* length of scratch buffer */
|
||
|
int ext_number; /* extension number on this display */
|
||
|
struct _XExten *ext_procs; /* extensions initialized on this display */
|
||
|
/*
|
||
|
* the following can be fixed size, as the protocol defines how
|
||
|
* much address space is available.
|
||
|
* While this could be done using the extension vector, there
|
||
|
* may be MANY events processed, so a search through the extension
|
||
|
* list to find the right procedure for each event might be
|
||
|
* expensive if many extensions are being used.
|
||
|
*/
|
||
|
Bool (*event_vec[128])(); /* vector for wire to event */
|
||
|
Status (*wire_vec[128])(); /* vector for event to wire */
|
||
|
KeySym lock_meaning; /* for XLookupString */
|
||
|
struct _XLockInfo *lock; /* multi-thread state, display lock */
|
||
|
struct _XInternalAsync *async_handlers; /* for internal async */
|
||
|
unsigned long bigreq_size; /* max size of big requests */
|
||
|
struct _XLockPtrs *lock_fns; /* pointers to threads functions */
|
||
|
/* things above this line should not move, for binary compatibility */
|
||
|
struct _XKeytrans *key_bindings; /* for XLookupString */
|
||
|
Font cursor_font; /* for XCreateFontCursor */
|
||
|
struct _XDisplayAtoms *atoms; /* for XInternAtom */
|
||
|
unsigned int mode_switch; /* keyboard group modifiers */
|
||
|
struct _XContextDB *context_db; /* context database */
|
||
|
Bool (**error_vec)(); /* vector for wire to error */
|
||
|
/*
|
||
|
* Xcms information
|
||
|
*/
|
||
|
struct {
|
||
|
XPointer defaultCCCs; /* pointer to an array of default XcmsCCC */
|
||
|
XPointer clientCmaps; /* pointer to linked list of XcmsCmapRec */
|
||
|
XPointer perVisualIntensityMaps;
|
||
|
/* linked list of XcmsIntensityMap */
|
||
|
} cms;
|
||
|
struct _XIMFilter *im_filters;
|
||
|
struct _XSQEvent *qfree; /* unallocated event queue elements */
|
||
|
unsigned long next_event_serial_num; /* inserted into next queue elt */
|
||
|
int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
|
||
|
} Display;
|
||
|
|
||
|
#if NeedFunctionPrototypes /* prototypes require event type definitions */
|
||
|
#undef _XEVENT_
|
||
|
#endif
|
||
|
#ifndef _XEVENT_
|
||
|
|
||
|
#define XMaxTransChars 4
|
||
|
|
||
|
/*
|
||
|
* Definitions of specific events.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
int type; /* of event */
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window; /* "event" window it is reported relative to */
|
||
|
Window root; /* root window that the event occured on */
|
||
|
Window subwindow; /* child window */
|
||
|
Time time; /* milliseconds */
|
||
|
int x, y; /* pointer x, y coordinates in event window */
|
||
|
int x_root, y_root; /* coordinates relative to root */
|
||
|
unsigned int state; /* key or button mask */
|
||
|
unsigned int keycode; /* detail */
|
||
|
Bool same_screen; /* same screen flag */
|
||
|
char trans_chars[XMaxTransChars];
|
||
|
/* translated characters */
|
||
|
int nbytes;
|
||
|
} XKeyEvent;
|
||
|
typedef XKeyEvent XKeyPressedEvent;
|
||
|
typedef XKeyEvent XKeyReleasedEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type; /* of event */
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window; /* "event" window it is reported relative to */
|
||
|
Window root; /* root window that the event occured on */
|
||
|
Window subwindow; /* child window */
|
||
|
Time time; /* milliseconds */
|
||
|
int x, y; /* pointer x, y coordinates in event window */
|
||
|
int x_root, y_root; /* coordinates relative to root */
|
||
|
unsigned int state; /* key or button mask */
|
||
|
unsigned int button; /* detail */
|
||
|
Bool same_screen; /* same screen flag */
|
||
|
} XButtonEvent;
|
||
|
typedef XButtonEvent XButtonPressedEvent;
|
||
|
typedef XButtonEvent XButtonReleasedEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type; /* of event */
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window; /* "event" window reported relative to */
|
||
|
Window root; /* root window that the event occured on */
|
||
|
Window subwindow; /* child window */
|
||
|
Time time; /* milliseconds */
|
||
|
int x, y; /* pointer x, y coordinates in event window */
|
||
|
int x_root, y_root; /* coordinates relative to root */
|
||
|
unsigned int state; /* key or button mask */
|
||
|
char is_hint; /* detail */
|
||
|
Bool same_screen; /* same screen flag */
|
||
|
} XMotionEvent;
|
||
|
typedef XMotionEvent XPointerMovedEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type; /* of event */
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window; /* "event" window reported relative to */
|
||
|
Window root; /* root window that the event occured on */
|
||
|
Window subwindow; /* child window */
|
||
|
Time time; /* milliseconds */
|
||
|
int x, y; /* pointer x, y coordinates in event window */
|
||
|
int x_root, y_root; /* coordinates relative to root */
|
||
|
int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
|
||
|
int detail;
|
||
|
/*
|
||
|
* NotifyAncestor, NotifyVirtual, NotifyInferior,
|
||
|
* NotifyNonlinear,NotifyNonlinearVirtual
|
||
|
*/
|
||
|
Bool same_screen; /* same screen flag */
|
||
|
Bool focus; /* boolean focus */
|
||
|
unsigned int state; /* key or button mask */
|
||
|
} XCrossingEvent;
|
||
|
typedef XCrossingEvent XEnterWindowEvent;
|
||
|
typedef XCrossingEvent XLeaveWindowEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type; /* FocusIn or FocusOut */
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window; /* window of event */
|
||
|
int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
|
||
|
int detail;
|
||
|
/*
|
||
|
* NotifyAncestor, NotifyVirtual, NotifyInferior,
|
||
|
* NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
|
||
|
* NotifyPointerRoot, NotifyDetailNone
|
||
|
*/
|
||
|
} XFocusChangeEvent;
|
||
|
typedef XFocusChangeEvent XFocusInEvent;
|
||
|
typedef XFocusChangeEvent XFocusOutEvent;
|
||
|
|
||
|
/* generated on EnterWindow and FocusIn when KeyMapState selected */
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
char key_vector[32];
|
||
|
} XKeymapEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
int x, y;
|
||
|
int width, height;
|
||
|
int count; /* if non-zero, at least this many more */
|
||
|
} XExposeEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Drawable drawable;
|
||
|
int x, y;
|
||
|
int width, height;
|
||
|
int count; /* if non-zero, at least this many more */
|
||
|
int major_code; /* core is CopyArea or CopyPlane */
|
||
|
int minor_code; /* not defined in the core */
|
||
|
} XGraphicsExposeEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Drawable drawable;
|
||
|
int major_code; /* core is CopyArea or CopyPlane */
|
||
|
int minor_code; /* not defined in the core */
|
||
|
} XNoExposeEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
int state; /* Visibility state */
|
||
|
} XVisibilityEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window parent; /* parent of the window */
|
||
|
Window window; /* window id of window created */
|
||
|
int x, y; /* window location */
|
||
|
int width, height; /* size of window */
|
||
|
int border_width; /* border width */
|
||
|
Bool override_redirect; /* creation should be overridden */
|
||
|
} XCreateWindowEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
} XDestroyWindowEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
Bool from_configure;
|
||
|
} XUnmapEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
Bool override_redirect; /* boolean, is override set... */
|
||
|
} XMapEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window parent;
|
||
|
Window window;
|
||
|
} XMapRequestEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
Window parent;
|
||
|
int x, y;
|
||
|
Bool override_redirect;
|
||
|
} XReparentEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
int x, y;
|
||
|
int width, height;
|
||
|
int border_width;
|
||
|
Window above;
|
||
|
Bool override_redirect;
|
||
|
} XConfigureEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
int x, y;
|
||
|
} XGravityEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
int width, height;
|
||
|
} XResizeRequestEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window parent;
|
||
|
Window window;
|
||
|
int x, y;
|
||
|
int width, height;
|
||
|
int border_width;
|
||
|
Window above;
|
||
|
int detail; /* Above, Below, TopIf, BottomIf, Opposite */
|
||
|
unsigned long value_mask;
|
||
|
} XConfigureRequestEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window event;
|
||
|
Window window;
|
||
|
int place; /* PlaceOnTop, PlaceOnBottom */
|
||
|
} XCirculateEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window parent;
|
||
|
Window window;
|
||
|
int place; /* PlaceOnTop, PlaceOnBottom */
|
||
|
} XCirculateRequestEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
Atom atom;
|
||
|
Time time;
|
||
|
int state; /* NewValue, Deleted */
|
||
|
} XPropertyEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
Atom selection;
|
||
|
Time time;
|
||
|
} XSelectionClearEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window owner;
|
||
|
Window requestor;
|
||
|
Atom selection;
|
||
|
Atom target;
|
||
|
Atom property;
|
||
|
Time time;
|
||
|
} XSelectionRequestEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window requestor;
|
||
|
Atom selection;
|
||
|
Atom target;
|
||
|
Atom property; /* ATOM or None */
|
||
|
Time time;
|
||
|
} XSelectionEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
Colormap colormap; /* COLORMAP or None */
|
||
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||
|
Bool c_new; /* C++ */
|
||
|
#else
|
||
|
Bool new;
|
||
|
#endif
|
||
|
int state; /* ColormapInstalled, ColormapUninstalled */
|
||
|
} XColormapEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window;
|
||
|
Atom message_type;
|
||
|
int format;
|
||
|
union {
|
||
|
char b[20];
|
||
|
short s[10];
|
||
|
long l[5];
|
||
|
} data;
|
||
|
} XClientMessageEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display; /* Display the event was read from */
|
||
|
Window window; /* unused */
|
||
|
int request; /* one of MappingModifier, MappingKeyboard,
|
||
|
MappingPointer */
|
||
|
int first_keycode; /* first keycode */
|
||
|
int count; /* defines range of change w. first_keycode*/
|
||
|
} XMappingEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
Display *display; /* Display the event was read from */
|
||
|
XID resourceid; /* resource id */
|
||
|
unsigned long serial; /* serial number of failed request */
|
||
|
unsigned char error_code; /* error code of failed request */
|
||
|
unsigned char request_code; /* Major op-code of failed request */
|
||
|
unsigned char minor_code; /* Minor op-code of failed request */
|
||
|
} XErrorEvent;
|
||
|
|
||
|
typedef struct {
|
||
|
int type;
|
||
|
unsigned long serial; /* # of last request processed by server */
|
||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||
|
Display *display;/* Display the event was read from */
|
||
|
Window window; /* window on which event was requested in event mask */
|
||
|
} XAnyEvent;
|
||
|
|
||
|
/*
|
||
|
* this union is defined so Xlib can always use the same sized
|
||
|
* event structure internally, to avoid memory fragmentation.
|
||
|
*/
|
||
|
typedef union _XEvent {
|
||
|
int type; /* must not be changed; first element */
|
||
|
XAnyEvent xany;
|
||
|
XKeyEvent xkey;
|
||
|
XButtonEvent xbutton;
|
||
|
XMotionEvent xmotion;
|
||
|
XCrossingEvent xcrossing;
|
||
|
XFocusChangeEvent xfocus;
|
||
|
XExposeEvent xexpose;
|
||
|
XGraphicsExposeEvent xgraphicsexpose;
|
||
|
XNoExposeEvent xnoexpose;
|
||
|
XVisibilityEvent xvisibility;
|
||
|
XCreateWindowEvent xcreatewindow;
|
||
|
XDestroyWindowEvent xdestroywindow;
|
||
|
XUnmapEvent xunmap;
|
||
|
XMapEvent xmap;
|
||
|
XMapRequestEvent xmaprequest;
|
||
|
XReparentEvent xreparent;
|
||
|
XConfigureEvent xconfigure;
|
||
|
XGravityEvent xgravity;
|
||
|
XResizeRequestEvent xresizerequest;
|
||
|
XConfigureRequestEvent xconfigurerequest;
|
||
|
XCirculateEvent xcirculate;
|
||
|
XCirculateRequestEvent xcirculaterequest;
|
||
|
XPropertyEvent xproperty;
|
||
|
XSelectionClearEvent xselectionclear;
|
||
|
XSelectionRequestEvent xselectionrequest;
|
||
|
XSelectionEvent xselection;
|
||
|
XColormapEvent xcolormap;
|
||
|
XClientMessageEvent xclient;
|
||
|
XMappingEvent xmapping;
|
||
|
XErrorEvent xerror;
|
||
|
XKeymapEvent xkeymap;
|
||
|
long pad[24];
|
||
|
} XEvent;
|
||
|
#endif
|
||
|
|
||
|
#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy)))
|
||
|
|
||
|
/*
|
||
|
* per character font metric information.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
short lbearing; /* origin to left edge of raster */
|
||
|
short rbearing; /* origin to right edge of raster */
|
||
|
short width; /* advance to next char's origin */
|
||
|
short ascent; /* baseline to top edge of raster */
|
||
|
short descent; /* baseline to bottom edge of raster */
|
||
|
unsigned short attributes; /* per char flags (not predefined) */
|
||
|
} XCharStruct;
|
||
|
|
||
|
/*
|
||
|
* To allow arbitrary information with fonts, there are additional properties
|
||
|
* returned.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
Atom name;
|
||
|
unsigned long card32;
|
||
|
} XFontProp;
|
||
|
|
||
|
typedef struct {
|
||
|
XExtData *ext_data; /* hook for extension to hang data */
|
||
|
Font fid; /* Font id for this font */
|
||
|
unsigned direction; /* hint about direction the font is painted */
|
||
|
unsigned min_char_or_byte2;/* first character */
|
||
|
unsigned max_char_or_byte2;/* last character */
|
||
|
unsigned min_byte1; /* first row that exists */
|
||
|
unsigned max_byte1; /* last row that exists */
|
||
|
Bool all_chars_exist;/* flag if all characters have non-zero size*/
|
||
|
unsigned default_char; /* char to print for undefined character */
|
||
|
int n_properties; /* how many properties there are */
|
||
|
XFontProp *properties; /* pointer to array of additional properties*/
|
||
|
XCharStruct min_bounds; /* minimum bounds over all existing char*/
|
||
|
XCharStruct max_bounds; /* maximum bounds over all existing char*/
|
||
|
XCharStruct *per_char; /* first_char to last_char information */
|
||
|
int ascent; /* log. extent above baseline for spacing */
|
||
|
int descent; /* log. descent below baseline for spacing */
|
||
|
} XFontStruct;
|
||
|
|
||
|
/*
|
||
|
* PolyText routines take these as arguments.
|
||
|
*/
|
||
|
typedef struct {
|
||
|
char *chars; /* pointer to string */
|
||
|
int nchars; /* number of characters */
|
||
|
int delta; /* delta between strings */
|
||
|
Font font; /* font to print it in, None don't change */
|
||
|
} XTextItem;
|
||
|
|
||
|
typedef struct { /* normal 16 bit characters are two bytes */
|
||
|
unsigned char byte1;
|
||
|
unsigned char byte2;
|
||
|
} XChar2b;
|
||
|
|
||
|
typedef struct {
|
||
|
XChar2b *chars; /* two byte characters */
|
||
|
int nchars; /* number of characters */
|
||
|
int delta; /* delta between strings */
|
||
|
Font font; /* font to print it in, None don't change */
|
||
|
} XTextItem16;
|
||
|
|
||
|
|
||
|
typedef union { Display *display;
|
||
|
GC gc;
|
||
|
Visual *visual;
|
||
|
Screen *screen;
|
||
|
ScreenFormat *pixmap_format;
|
||
|
XFontStruct *font; } XEDataObject;
|
||
|
|
||
|
typedef struct {
|
||
|
XRectangle max_ink_extent;
|
||
|
XRectangle max_logical_extent;
|
||
|
} XFontSetExtents;
|
||
|
|
||
|
typedef struct _XFontSet *XFontSet;
|
||
|
|
||
|
typedef struct {
|
||
|
char *chars;
|
||
|
int nchars;
|
||
|
int delta;
|
||
|
XFontSet font_set;
|
||
|
} XmbTextItem;
|
||
|
|
||
|
typedef struct {
|
||
|
wchar_t *chars;
|
||
|
int nchars;
|
||
|
int delta;
|
||
|
XFontSet font_set;
|
||
|
} XwcTextItem;
|
||
|
|
||
|
typedef void (*XIMProc)();
|
||
|
|
||
|
typedef struct _XIM *XIM;
|
||
|
typedef struct _XIC *XIC;
|
||
|
|
||
|
typedef unsigned long XIMStyle;
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned short count_styles;
|
||
|
XIMStyle *supported_styles;
|
||
|
} XIMStyles;
|
||
|
|
||
|
#define XIMPreeditArea 0x0001L
|
||
|
#define XIMPreeditCallbacks 0x0002L
|
||
|
#define XIMPreeditPosition 0x0004L
|
||
|
#define XIMPreeditNothing 0x0008L
|
||
|
#define XIMPreeditNone 0x0010L
|
||
|
#define XIMStatusArea 0x0100L
|
||
|
#define XIMStatusCallbacks 0x0200L
|
||
|
#define XIMStatusNothing 0x0400L
|
||
|
#define XIMStatusNone 0x0800L
|
||
|
|
||
|
#define XNVaNestedList "XNVaNestedList"
|
||
|
#define XNClientWindow "clientWindow"
|
||
|
#define XNInputStyle "inputStyle"
|
||
|
#define XNFocusWindow "focusWindow"
|
||
|
#define XNResourceName "resourceName"
|
||
|
#define XNResourceClass "resourceClass"
|
||
|
#define XNGeometryCallback "geometryCallback"
|
||
|
#define XNFilterEvents "filterEvents"
|
||
|
#define XNPreeditStartCallback "preeditStartCallback"
|
||
|
#define XNPreeditDoneCallback "preeditDoneCallback"
|
||
|
#define XNPreeditDrawCallback "preeditDrawCallback"
|
||
|
#define XNPreeditCaretCallback "preeditCaretCallback"
|
||
|
#define XNPreeditAttributes "preeditAttributes"
|
||
|
#define XNStatusStartCallback "statusStartCallback"
|
||
|
#define XNStatusDoneCallback "statusDoneCallback"
|
||
|
#define XNStatusDrawCallback "statusDrawCallback"
|
||
|
#define XNStatusAttributes "statusAttributes"
|
||
|
#define XNArea "area"
|
||
|
#define XNAreaNeeded "areaNeeded"
|
||
|
#define XNSpotLocation "spotLocation"
|
||
|
#define XNColormap "colorMap"
|
||
|
#define XNStdColormap "stdColorMap"
|
||
|
#define XNForeground "foreground"
|
||
|
#define XNBackground "background"
|
||
|
#define XNBackgroundPixmap "backgroundPixmap"
|
||
|
#define XNFontSet "fontSet"
|
||
|
#define XNLineSpace "lineSpace"
|
||
|
#define XNCursor "cursor"
|
||
|
|
||
|
#define XBufferOverflow -1
|
||
|
#define XLookupNone 1
|
||
|
#define XLookupChars 2
|
||
|
#define XLookupKeySym 3
|
||
|
#define XLookupBoth 4
|
||
|
|
||
|
#if NeedFunctionPrototypes
|
||
|
typedef void *XVaNestedList;
|
||
|
#else
|
||
|
typedef XPointer XVaNestedList;
|
||
|
#endif
|
||
|
|
||
|
typedef struct {
|
||
|
XPointer client_data;
|
||
|
XIMProc callback;
|
||
|
} XIMCallback;
|
||
|
|
||
|
typedef unsigned long XIMFeedback;
|
||
|
|
||
|
#define XIMReverse 1
|
||
|
#define XIMUnderline (1<<1)
|
||
|
#define XIMHighlight (1<<2)
|
||
|
#define XIMPrimary (1<<5)
|
||
|
#define XIMSecondary (1<<6)
|
||
|
#define XIMTertiary (1<<7)
|
||
|
|
||
|
typedef struct _XIMText {
|
||
|
unsigned short length;
|
||
|
XIMFeedback *feedback;
|
||
|
Bool encoding_is_wchar;
|
||
|
union {
|
||
|
char *multi_byte;
|
||
|
wchar_t *wide_char;
|
||
|
} string;
|
||
|
} XIMText;
|
||
|
|
||
|
typedef struct _XIMPreeditDrawCallbackStruct {
|
||
|
int caret; /* Cursor offset within pre-edit string */
|
||
|
int chg_first; /* Starting change position */
|
||
|
int chg_length; /* Length of the change in character count */
|
||
|
XIMText *text;
|
||
|
} XIMPreeditDrawCallbackStruct;
|
||
|
|
||
|
typedef enum {
|
||
|
XIMForwardChar, XIMBackwardChar,
|
||
|
XIMForwardWord, XIMBackwardWord,
|
||
|
XIMCaretUp, XIMCaretDown,
|
||
|
XIMNextLine, XIMPreviousLine,
|
||
|
XIMLineStart, XIMLineEnd,
|
||
|
XIMAbsolutePosition,
|
||
|
XIMDontChange
|
||
|
} XIMCaretDirection;
|
||
|
|
||
|
typedef enum {
|
||
|
XIMIsInvisible, /* Disable caret feedback */
|
||
|
XIMIsPrimary, /* UI defined caret feedback */
|
||
|
XIMIsSecondary /* UI defined caret feedback */
|
||
|
} XIMCaretStyle;
|
||
|
|
||
|
typedef struct _XIMPreeditCaretCallbackStruct {
|
||
|
int position; /* Caret offset within pre-edit string */
|
||
|
XIMCaretDirection direction; /* Caret moves direction */
|
||
|
XIMCaretStyle style; /* Feedback of the caret */
|
||
|
} XIMPreeditCaretCallbackStruct;
|
||
|
|
||
|
typedef enum {
|
||
|
XIMTextType,
|
||
|
XIMBitmapType
|
||
|
} XIMStatusDataType;
|
||
|
|
||
|
typedef struct _XIMStatusDrawCallbackStruct {
|
||
|
XIMStatusDataType type;
|
||
|
union {
|
||
|
XIMText *text;
|
||
|
Pixmap bitmap;
|
||
|
} data;
|
||
|
} XIMStatusDrawCallbackStruct;
|
||
|
|
||
|
typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
|
||
|
#if NeedFunctionPrototypes
|
||
|
Display* /* display */,
|
||
|
XErrorEvent* /* error_event */
|
||
|
#endif
|
||
|
);
|
||
|
|
||
|
_XFUNCPROTOBEGIN
|
||
|
|
||
|
|
||
|
|
||
|
#include "tkIntXlibDecls.h"
|
||
|
|
||
|
_XFUNCPROTOEND
|
||
|
|
||
|
#if defined(MAC_OSX_TK)
|
||
|
# undef Cursor
|
||
|
# undef Region
|
||
|
#endif
|
||
|
|
||
|
#endif /* _XLIB_H_ */
|