1
/* $Xorg: XKBgeom.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
2
/************************************************************
3
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
5
Permission to use, copy, modify, and distribute this
6
software and its documentation for any purpose and without
7
fee is hereby granted, provided that the above copyright
8
notice appear in all copies and that both that copyright
9
notice and this permission notice appear in supporting
10
documentation, and that the name of Silicon Graphics not be
11
used in advertising or publicity pertaining to distribution
12
of the software without specific prior written permission.
13
Silicon Graphics makes no representation about the suitability
14
of this software for any purpose. It is provided "as is"
15
without any express or implied warranty.
17
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
18
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
19
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
20
GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
21
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
22
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
23
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
24
THE USE OR PERFORMANCE OF THIS SOFTWARE.
26
********************************************************/
27
/* $XFree86: xc/include/extensions/XKBgeom.h,v 3.9 2002/09/18 17:11:40 tsi Exp $ */
32
#include <X11/extensions/XKBstr.h>
35
#define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias
36
#define XkbAddGeomColor SrvXkbAddGeomColor
37
#define XkbAddGeomDoodad SrvXkbAddGeomDoodad
38
#define XkbAddGeomKey SrvXkbAddGeomKey
39
#define XkbAddGeomOutline SrvXkbAddGeomOutline
40
#define XkbAddGeomOverlay SrvXkbAddGeomOverlay
41
#define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow
42
#define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey
43
#define XkbAddGeomProperty SrvXkbAddGeomProperty
44
#define XkbAddGeomRow SrvXkbAddGeomRow
45
#define XkbAddGeomSection SrvXkbAddGeomSection
46
#define XkbAddGeomShape SrvXkbAddGeomShape
47
#define XkbAllocGeomKeyAliases SrvXkbAllocGeomKeyAliases
48
#define XkbAllocGeomColors SrvXkbAllocGeomColors
49
#define XkbAllocGeomDoodads SrvXkbAllocGeomDoodads
50
#define XkbAllocGeomKeys SrvXkbAllocGeomKeys
51
#define XkbAllocGeomOutlines SrvXkbAllocGeomOutlines
52
#define XkbAllocGeomPoints SrvXkbAllocGeomPoints
53
#define XkbAllocGeomProps SrvXkbAllocGeomProps
54
#define XkbAllocGeomRows SrvXkbAllocGeomRows
55
#define XkbAllocGeomSectionDoodads SrvXkbAllocGeomSectionDoodads
56
#define XkbAllocGeomSections SrvXkbAllocGeomSections
57
#define XkbAllocGeomOverlays SrvXkbAllocGeomOverlays
58
#define XkbAllocGeomOverlayRows SrvXkbAllocGeomOverlayRows
59
#define XkbAllocGeomOverlayKeys SrvXkbAllocGeomOverlayKeys
60
#define XkbAllocGeomShapes SrvXkbAllocGeomShapes
61
#define XkbAllocGeometry SrvXkbAllocGeometry
62
#define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases
63
#define XkbFreeGeomColors SrvXkbFreeGeomColors
64
#define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads
65
#define XkbFreeGeomProperties SrvXkbFreeGeomProperties
66
#define XkbFreeGeomOverlayKeys SrvXkbFreeGeomOverlayKeys
67
#define XkbFreeGeomOverlayRows SrvXkbFreeGeomOverlayRows
68
#define XkbFreeGeomOverlays SrvXkbFreeGeomOverlays
69
#define XkbFreeGeomKeys SrvXkbFreeGeomKeys
70
#define XkbFreeGeomRows SrvXkbFreeGeomRows
71
#define XkbFreeGeomSections SrvXkbFreeGeomSections
72
#define XkbFreeGeomPoints SrvXkbFreeGeomPoints
73
#define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines
74
#define XkbFreeGeomShapes SrvXkbFreeGeomShapes
75
#define XkbFreeGeometry SrvXkbFreeGeometry
78
typedef struct _XkbProperty {
81
} XkbPropertyRec,*XkbPropertyPtr;
83
typedef struct _XkbColor {
86
} XkbColorRec,*XkbColorPtr;
88
typedef struct _XkbPoint {
91
} XkbPointRec, *XkbPointPtr;
93
typedef struct _XkbBounds {
96
} XkbBoundsRec, *XkbBoundsPtr;
97
#define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
98
#define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
100
typedef struct _XkbOutline {
101
unsigned short num_points;
102
unsigned short sz_points;
103
unsigned short corner_radius;
105
} XkbOutlineRec, *XkbOutlinePtr;
107
typedef struct _XkbShape {
109
unsigned short num_outlines;
110
unsigned short sz_outlines;
111
XkbOutlinePtr outlines;
112
XkbOutlinePtr approx;
113
XkbOutlinePtr primary;
115
} XkbShapeRec, *XkbShapePtr;
116
#define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
118
typedef struct _XkbShapeDoodad {
121
unsigned char priority;
125
unsigned short color_ndx;
126
unsigned short shape_ndx;
127
} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
128
#define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
129
#define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
130
#define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
131
#define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
133
typedef struct _XkbTextDoodad {
136
unsigned char priority;
142
unsigned short color_ndx;
145
} XkbTextDoodadRec, *XkbTextDoodadPtr;
146
#define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
147
#define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
149
typedef struct _XkbIndicatorDoodad {
152
unsigned char priority;
156
unsigned short shape_ndx;
157
unsigned short on_color_ndx;
158
unsigned short off_color_ndx;
159
} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
160
#define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
161
#define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
162
#define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
163
#define XkbSetIndicatorDoodadOnColor(g,d,c) \
164
((d)->on_color_ndx= (c)-&(g)->colors[0])
165
#define XkbSetIndicatorDoodadOffColor(g,d,c) \
166
((d)->off_color_ndx= (c)-&(g)->colors[0])
167
#define XkbSetIndicatorDoodadShape(g,d,s) \
168
((d)->shape_ndx= (s)-&(g)->shapes[0])
170
typedef struct _XkbLogoDoodad {
173
unsigned char priority;
177
unsigned short color_ndx;
178
unsigned short shape_ndx;
180
} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
181
#define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
182
#define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
183
#define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
184
#define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
186
typedef struct _XkbAnyDoodad {
189
unsigned char priority;
193
} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
195
typedef union _XkbDoodad {
197
XkbShapeDoodadRec shape;
198
XkbTextDoodadRec text;
199
XkbIndicatorDoodadRec indicator;
200
XkbLogoDoodadRec logo;
201
} XkbDoodadRec, *XkbDoodadPtr;
203
#define XkbUnknownDoodad 0
204
#define XkbOutlineDoodad 1
205
#define XkbSolidDoodad 2
206
#define XkbTextDoodad 3
207
#define XkbIndicatorDoodad 4
208
#define XkbLogoDoodad 5
210
typedef struct _XkbKey {
213
unsigned char shape_ndx;
214
unsigned char color_ndx;
215
} XkbKeyRec, *XkbKeyPtr;
216
#define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
217
#define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
218
#define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
219
#define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
221
typedef struct _XkbRow {
224
unsigned short num_keys;
225
unsigned short sz_keys;
229
} XkbRowRec, *XkbRowPtr;
231
typedef struct _XkbSection {
233
unsigned char priority;
236
unsigned short width;
237
unsigned short height;
239
unsigned short num_rows;
240
unsigned short num_doodads;
241
unsigned short num_overlays;
242
unsigned short sz_rows;
243
unsigned short sz_doodads;
244
unsigned short sz_overlays;
246
XkbDoodadPtr doodads;
248
struct _XkbOverlay *overlays;
249
} XkbSectionRec, *XkbSectionPtr;
251
typedef struct _XkbOverlayKey {
254
} XkbOverlayKeyRec,*XkbOverlayKeyPtr;
256
typedef struct _XkbOverlayRow {
257
unsigned short row_under;
258
unsigned short num_keys;
259
unsigned short sz_keys;
260
XkbOverlayKeyPtr keys;
261
} XkbOverlayRowRec,*XkbOverlayRowPtr;
263
typedef struct _XkbOverlay {
265
XkbSectionPtr section_under;
266
unsigned short num_rows;
267
unsigned short sz_rows;
268
XkbOverlayRowPtr rows;
270
} XkbOverlayRec,*XkbOverlayPtr;
272
typedef struct _XkbGeometry {
274
unsigned short width_mm;
275
unsigned short height_mm;
277
XkbColorPtr label_color;
278
XkbColorPtr base_color;
279
unsigned short sz_properties;
280
unsigned short sz_colors;
281
unsigned short sz_shapes;
282
unsigned short sz_sections;
283
unsigned short sz_doodads;
284
unsigned short sz_key_aliases;
285
unsigned short num_properties;
286
unsigned short num_colors;
287
unsigned short num_shapes;
288
unsigned short num_sections;
289
unsigned short num_doodads;
290
unsigned short num_key_aliases;
291
XkbPropertyPtr properties;
294
XkbSectionPtr sections;
295
XkbDoodadPtr doodads;
296
XkbKeyAliasPtr key_aliases;
298
#define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
300
#define XkbGeomPropertiesMask (1<<0)
301
#define XkbGeomColorsMask (1<<1)
302
#define XkbGeomShapesMask (1<<2)
303
#define XkbGeomSectionsMask (1<<3)
304
#define XkbGeomDoodadsMask (1<<4)
305
#define XkbGeomKeyAliasesMask (1<<5)
306
#define XkbGeomAllMask (0x3f)
308
typedef struct _XkbGeometrySizes {
310
unsigned short num_properties;
311
unsigned short num_colors;
312
unsigned short num_shapes;
313
unsigned short num_sections;
314
unsigned short num_doodads;
315
unsigned short num_key_aliases;
316
} XkbGeometrySizesRec,*XkbGeometrySizesPtr;
320
extern XkbPropertyPtr
322
XkbGeometryPtr /* geom */,
327
extern XkbKeyAliasPtr
329
XkbGeometryPtr /* geom */,
336
XkbGeometryPtr /* geom */,
338
unsigned int /* pixel */
343
XkbShapePtr /* shape */,
349
XkbGeometryPtr /* geom */,
351
int /* sz_outlines */
361
XkbSectionPtr /* section */,
367
XkbGeometryPtr /* geom */,
370
int /* sz_doodads */,
371
int /* sz_overlays */
376
XkbSectionPtr /* section */,
381
extern XkbOverlayRowPtr
382
XkbAddGeomOverlayRow(
383
XkbOverlayPtr /* overlay */,
388
extern XkbOverlayKeyPtr
389
XkbAddGeomOverlayKey(
390
XkbOverlayPtr /* overlay */,
391
XkbOverlayRowPtr /* row */,
398
XkbGeometryPtr /* geom */,
399
XkbSectionPtr /* section */,
405
XkbFreeGeomKeyAliases(
406
XkbGeometryPtr /* geom */,
414
XkbGeometryPtr /* geom */,
422
XkbDoodadPtr /* doodads */,
429
XkbFreeGeomProperties(
430
XkbGeometryPtr /* geom */,
437
XkbFreeGeomOverlayKeys(
438
XkbOverlayRowPtr /* row */,
445
XkbFreeGeomOverlayRows(
446
XkbOverlayPtr /* overlay */,
454
XkbSectionPtr /* section */,
470
XkbSectionPtr /* section */,
478
XkbGeometryPtr /* geom */,
487
XkbOutlinePtr /* outline */,
495
XkbShapePtr /* shape */,
503
XkbGeometryPtr /* geom */,
511
XkbGeometryPtr /* geom */,
512
unsigned int /* which */,
518
XkbGeometryPtr /* geom */,
523
XkbAllocGeomKeyAliases(
524
XkbGeometryPtr /* geom */,
530
XkbGeometryPtr /* geom */,
536
XkbGeometryPtr /* geom */,
541
XkbAllocGeomSections(
542
XkbGeometryPtr /* geom */,
547
XkbAllocGeomOverlays(
548
XkbSectionPtr /* section */,
553
XkbAllocGeomOverlayRows(
554
XkbOverlayPtr /* overlay */,
559
XkbAllocGeomOverlayKeys(
560
XkbOverlayRowPtr /* row */,
566
XkbGeometryPtr /* geom */,
571
XkbAllocGeomSectionDoodads(
572
XkbSectionPtr /* section */,
577
XkbAllocGeomOutlines(
578
XkbShapePtr /* shape */,
584
XkbSectionPtr /* section */,
590
XkbOutlinePtr /* ol */,
602
XkbDescPtr /* xkb */,
603
XkbGeometrySizesPtr /* sizes */
609
unsigned /* deviceSpec */,
610
XkbGeometryPtr /* geom */
615
XkbShapePtr /* shape */,
616
XkbBoundsPtr /* bounds */
620
XkbComputeShapeBounds(
621
XkbShapePtr /* shape */
626
XkbGeometryPtr /* geom */,
627
XkbSectionPtr /* section */,
632
XkbComputeSectionBounds(
633
XkbGeometryPtr /* geom */,
634
XkbSectionPtr /* section */
638
XkbFindOverlayForKey(
639
XkbGeometryPtr /* geom */,
640
XkbSectionPtr /* wanted */,
653
XkbDescPtr /* xkb */,
659
#endif /* _XKBSTR_H_ */