|
|
1.1 root 1: #include <X/mit-copyright.h>
2:
3: /* $Header: Xlib.h,v 10.14 86/02/01 15:41:59 tony Rel $ */
4: /* Copyright Massachusetts Institute of Technology 1985 */
5:
6: /*
7: * Xlib.h - Header definition and support file for the C subroutine
8: * interface library (Xlib) to the X Window System Protocol.
9: *
10: */
11:
12: #include <sys/types.h>
13: #include <X/X.h>
14:
15: #define Status int
16: #define XId long
17: #define XClearVertexFlag() (_XlibCurrentDisplay->lastdraw = NULL)
18: #define XMakePattern(pattern, patlen, patmul)\
19: ((Pattern)(((patmul) << 20) | (((patlen) - 1) << 16) | (pattern) ))
20: #define dpyno() (_XlibCurrentDisplay->fd)
21: #define RootWindow (_XlibCurrentDisplay->root)
22: #define BlackPixmap (_XlibCurrentDisplay->black)
23: #define WhitePixmap (_XlibCurrentDisplay->white)
24: #define AllPlanes (~0)
25: #define QLength() (_XlibCurrentDisplay->qlen)
26: #define DisplayType() (_XlibCurrentDisplay->dtype)
27: #define DisplayPlanes() (_XlibCurrentDisplay->dplanes)
28: #define DisplayCells() (_XlibCurrentDisplay->dcells)
29: #define ProtocolVersion() (_XlibCurrentDisplay->vnumber)
30: #define DisplayName() (_XlibCurrentDisplay->displayname)
31:
32: /* Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
33: value (x, y, width, height) was found in the parsed string. */
34:
35: #define NoValue 0x0000
36: #define XValue 0x0001
37: #define YValue 0x0002
38: #define WidthValue 0x0004
39: #define HeightValue 0x0008
40: #define AllValues 0x000F
41: #define XNegative 0x0010
42: #define YNegative 0x0020
43:
44: /* Definition of a generic event. It must be cast to a specific event
45: * type before one can read event-specific data */
46:
47: typedef struct _XEvent {
48: unsigned long type; /* of event (KeyPressed, ExposeWindow, etc.) */
49: Window window; /* which selected this event */
50: long pad_l1, pad_l2; /* event-specific data */
51: Window subwindow; /* child window (if any) event actually happened in */
52: long pad_l4; /* event-specific data */
53: } XEvent;
54:
55:
56: /*
57: * _QEvent datatype for use in input queueing.
58: */
59: typedef struct _qevent {
60: struct _qevent *next;
61: XEvent event;
62: } _QEvent;
63:
64:
65: /*
66: * Display datatype maintaining display specific data.
67: */
68: typedef struct _display {
69: int fd; /* Network socket. */
70: Window root; /* Root window id. */
71: int vnumber; /* X protocol version number. */
72: int dtype; /* X server display device type. */
73: int dplanes; /* Number of display bit planes. */
74: int dcells; /* Number of display color map cells. */
75: _QEvent *head, *tail; /* Input event queue. */
76: int qlen; /* Length of input event queue */
77: int request; /* Id of last request. */
78: char * lastdraw; /* Last draw request. */
79: char *buffer; /* Output buffer starting address. */
80: char *bufptr; /* Output buffer index pointer. */
81: char *bufmax; /* Output buffer maximum+1 address. */
82: int squish; /* Squish MouseMoved events? */
83: Pixmap black, white; /* Constant tile pixmaps */
84: char *displayname; /* "host:display" string used on this connect*/
85: int width, height; /* width and height of display */
86: } Display;
87:
88:
89: /*
90: * XAssoc - Associations used in the XAssocTable data structure. The
91: * associations are used as circular queue entries in the association table
92: * which is contains an array of circular queues (buckets).
93: */
94: typedef struct _x_assoc {
95: struct _x_assoc *next; /* Next object in this bucket. */
96: struct _x_assoc *prev; /* Previous obejct in this bucket. */
97: Display *display; /* Display which ownes the id. */
98: XId x_id; /* X Window System id. */
99: char *data; /* Pointer to untyped memory. */
100: } XAssoc;
101:
102: /*
103: * XAssocTable - X Window System id to data structure pointer association
104: * table. An XAssocTable consists of a pointer to an array of XAssoc's
105: * (table) which are circular queue (bucket) headers and an integer (size)
106: * representing the number of circular queues (buckets) in the array.
107: */
108: typedef struct _x_assoc_table {
109: struct _x_assoc (*table)[]; /* Array of association queues. */
110: int size; /* Table size. */
111: } XAssocTable;
112:
113:
114: /*
115: * Data returned by XQueryWindow.
116: */
117: typedef struct _WindowInfo {
118: short width, height; /* Width and height. */
119: short x, y; /* X and y coordinates. */
120: short bdrwidth; /* Border width. */
121: short mapped; /* IsUnmapped, IsMapped or IsInvisible.*/
122: short type; /* IsTransparent, IsOpaque or IsIcon. */
123: Window assoc_wind; /* Associated icon or opaque Window. */
124: } WindowInfo;
125:
126:
127: /*
128: * Data returned by XQueryFont.
129: */
130: typedef struct _FontInfo {
131: Font id;
132: short height, width, baseline, fixedwidth;
133: unsigned char firstchar, lastchar;
134: short *widths; /* pointer to width array in OpenFont */
135: } FontInfo;
136:
137:
138: /*
139: * Data structure used by color operations; ints rather than shorts
140: * to keep 16 bit protocol limitation out of the library.
141: */
142: typedef struct _Color {
143: int pixel;
144: unsigned short red, green, blue;
145: } Color;
146:
147:
148: /*
149: * Data structure use by XCreateTiles.
150: */
151: typedef struct _TileFrame {
152: int pixel; /* Pixel color for constructing the tile. */
153: Pixmap pixmap; /* Pixmap id of the pixmap, filled in later. */
154: } TileFrame;
155:
156:
157: /*
158: * Data structures used by XCreateWindows XCreateTransparencies and
159: * XCreateWindowBatch.
160: */
161: typedef struct _OpaqueFrame {
162: Window self; /* window id of the window, filled in later */
163: short x, y; /* where to create the window */
164: short width, height; /* width and height */
165: short bdrwidth; /* border width */
166: Pixmap border; /* border pixmap */
167: Pixmap background; /* background */
168: } OpaqueFrame;
169:
170: typedef struct _TransparentFrame {
171: Window self; /* window id of the window, filled in later */
172: short x, y; /* where to create the window */
173: short width, height; /* width and height */
174: } TransparentFrame;
175:
176: typedef struct _BatchFrame {
177: short type; /* One of (IsOpaque, IsTransparent). */
178: Window parent; /* Window if of the window's parent. */
179: Window self; /* Window id of the window, filled in later. */
180: short x, y; /* Where to create the window. */
181: short width, height; /* Window width and height. */
182: short bdrwidth; /* Window border width. */
183: Pixmap border; /* Window border pixmap */
184: Pixmap background; /* Window background pixmap. */
185: } BatchFrame;
186:
187:
188: /*
189: * Definitions of specific events
190: * In all of the following, fields whose names begin with "pad" contain
191: * no meaningful value.
192: */
193:
194: struct _XKeyOrButtonEvent {
195: unsigned long type; /* of event (KeyPressed, ButtonReleased, etc.) */
196: Window window; /* which selected this event */
197: unsigned short time; /* in 10 millisecond ticks */
198: short detail; /* event-dependent data (key state, etc.) */
199: short x; /* mouse x coordinate within event window */
200: short y; /* mouse y coordinate within event window */
201: Window subwindow; /* child window (if any) mouse was in */
202: Locator location; /* absolute coordinates of mouse */
203: };
204:
205: typedef struct _XKeyOrButtonEvent XKeyOrButtonEvent;
206:
207: typedef struct _XKeyOrButtonEvent XKeyEvent;
208: typedef struct _XKeyOrButtonEvent XKeyPressedEvent;
209: typedef struct _XKeyOrButtonEvent XKeyReleasedEvent;
210:
211: typedef struct _XKeyOrButtonEvent XButtonEvent;
212: typedef struct _XKeyOrButtonEvent XButtonPressedEvent;
213: typedef struct _XKeyOrButtonEvent XButtonReleasedEvent;
214:
215: struct _XMouseOrCrossingEvent {
216: unsigned long type; /* EnterWindow, LeaveWindow, or MouseMoved */
217: Window window; /* which selected this event */
218: short pad_s2;
219: short detail; /* event-dependent data (key state, etc. ) */
220: short x; /* mouse x coordinate within event window */
221: short y; /* mouse y coordinate within event window */
222: Window subwindow; /* child window (if any) mouse was in */
223: Locator location; /* absolute coordinates of mouse */
224: };
225:
226: typedef struct _XMouseOrCrossingEvent XMouseOrCrossingEvent;
227:
228: typedef struct _XMouseOrCrossingEvent XMouseEvent;
229: typedef struct _XMouseOrCrossingEvent XMouseMovedEvent;
230:
231: typedef struct _XMouseOrCrossingEvent XCrossingEvent;
232: typedef struct _XMouseOrCrossingEvent XEnterWindowEvent;
233: typedef struct _XMouseOrCrossingEvent XLeaveWindowEvent;
234:
235: struct _XExposeEvent {
236: unsigned long type; /* ExposeWindow or ExposeRegion */
237: Window window; /* that selected this event */
238: short pad_s2;
239: short detail; /* 0 or ExposeCopy */
240: short width; /* width of exposed area */
241: short height; /* height of exposed area */
242: Window subwindow; /* child window (if any) actually exposed */
243: short y; /* top of exposed area (0 for ExposeWindow) */
244: short x; /* left edge of exposed area (0 for ExposeWindow) */
245: };
246:
247: typedef struct _XExposeEvent XExposeEvent;
248: typedef struct _XExposeEvent XExposeWindowEvent;
249: typedef struct _XExposeEvent XExposeRegionEvent;
250:
251: typedef struct _XExposeCopyEvent {
252: unsigned long type; /* ExposeCopy */
253: Window window; /* that selected this event */
254: long pad_l1;
255: long pad_l2;
256: Window subwindow; /* child window (if any) actually exposed */
257: long pad_l4;
258: } XExposeCopyEvent;
259:
260: typedef struct _XUnmapEvent {
261: unsigned long type; /* UnmapWindow */
262: Window window; /* that selected this event */
263: long pad_l1;
264: long pad_l2;
265: Window subwindow; /* child window (if any) actually unmapped */
266: long pad_l4;
267: } XUnmapEvent;
268:
269: typedef struct _XFocusChangeEvent {
270: unsigned long type; /* FocusChange */
271: Window window; /* that selected this event */
272: short pad_s2;
273: short detail; /* EnterWindow or LeaveWindow */
274: long pad_l2;
275: Window subwindow; /* child window (if any) of actual focus change*/
276: long pad_l4;
277: } XFocusChangeEvent;
278:
279: typedef struct _XErrorEvent {
280: long pad;
281: long serial; /* serial number of failed request */
282: char error_code; /* error code of failed request */
283: char request_code; /* request code of failed request */
284: char func; /* function field of failed request */
285: char pad_b7;
286: Window window; /* Window of failed request */
287: long pad_l3;
288: long pad_l4;
289: } XErrorEvent;
290:
291: /*
292: * Line pattern related definitions for the library.
293: */
294: typedef long Pattern;
295:
296: #define DashedLine XMakePattern(0xf0f0, 16, 1)
297: #define DottedLine XMakePattern(0xaaaa, 16, 1)
298: #define DotDashLine XMakePattern(0xf4f4, 16, 1)
299: #define SolidLine XMakePattern(1,1,1)
300:
301: typedef short KeyMapEntry [8];
302:
303: /* define values for keyboard map table */
304: /* these values will vanish in the next version; DO NOT USE THEM! */
305: #define SHFT (short) -2
306: #define CNTL (short) -3
307: #define LOCK (short) -4
308: #define SYMBOL (short) -5
309: #define KEYPAD (short) -6
310: #define CURSOR (short) -7
311: #define PFX (short) -8
312: #define FUNC1 (short) -9
313: #define FUNC2 (short) -10
314: #define FUNC3 (short) -11
315: #define FUNC4 (short) -12
316: #define FUNC5 (short) -13
317: #define FUNC6 (short) -14
318: #define FUNC7 (short) -15
319: #define FUNC8 (short) -16
320: #define FUNC9 (short) -17
321: #define FUNC10 (short) -18
322: #define FUNC11 (short) -19
323: #define FUNC12 (short) -20
324: #define FUNC13 (short) -21
325: #define FUNC14 (short) -22
326: #define FUNC15 (short) -23
327: #define FUNC16 (short) -24
328: #define FUNC17 (short) -25
329: #define FUNC18 (short) -26
330: #define FUNC19 (short) -27
331: #define FUNC20 (short) -28
332: #define E1 (short) -29
333: #define E2 (short) -30
334: #define E3 (short) -31
335: #define E4 (short) -32
336: #define E5 (short) -33
337: #define E6 (short) -34
338:
339:
340: /*
341: * X function declarations.
342: */
343: Display *XOpenDisplay();
344:
345: char *XFetchBytes();
346: char * XFetchBuffer();
347:
348: char *XErrDescrip();
349: char *XLookupMapping();
350:
351: short *XFontWidths();
352: FontInfo *XOpenFont();
353: extern Display *_XlibCurrentDisplay;
354: char *XGetDefault();
355: Bitmap XCharBitmap(), XStoreBitmap();
356: Pixmap XMakePixmap(), XMakeTile(), XStorePixmapXY(), XStorePixmapZ();
357: Pixmap XPixmapSave();
358: Cursor XCreateCursor(), XStoreCursor();
359: Window XCreate(), XCreateTerm(), XCreateTransparency(), XCreateWindow();
360: Window XGetIconWindow();
361: Font XGetFont();
362: Status XFetchName(), XGetColorCells(), XGetColor(), XGetHardwareColor();
363: Status XGetResizeHint(), XGrabButton(), XGrabMouse(), XInterpretLocator();
364: Status XParseColor(), XPixmapGetXY(), XPismapGetZ(), XQueryMouseButtons();
365: Status XQueryFont(), XQueryMouse(), XQueryTree(), XQueryWindow();
366: Status XReadBitmapFile(), XUpdateMouse();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.