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