1 /************************************************************
2 Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
4 Permission to use, copy, modify, and distribute this
5 software and its documentation for any purpose and without
6 fee is hereby granted, provided that the above copyright
7 notice appear in all copies and that both that copyright
8 notice and this permission notice appear in supporting
9 documentation, and that the name of Silicon Graphics not be
10 used in advertising or publicity pertaining to distribution
11 of the software without specific prior written permission.
12 Silicon Graphics makes no representation about the suitability
13 of this software for any purpose. It is provided "as is"
14 without any express or implied warranty.
16 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
22 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
23 THE USE OR PERFORMANCE OF THIS SOFTWARE.
25 ********************************************************/
30 #include <X11/extensions/XKBstr.h>
33 #define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias
34 #define XkbAddGeomColor SrvXkbAddGeomColor
35 #define XkbAddGeomDoodad SrvXkbAddGeomDoodad
36 #define XkbAddGeomKey SrvXkbAddGeomKey
37 #define XkbAddGeomOutline SrvXkbAddGeomOutline
38 #define XkbAddGeomOverlay SrvXkbAddGeomOverlay
39 #define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow
40 #define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey
41 #define XkbAddGeomProperty SrvXkbAddGeomProperty
42 #define XkbAddGeomRow SrvXkbAddGeomRow
43 #define XkbAddGeomSection SrvXkbAddGeomSection
44 #define XkbAddGeomShape SrvXkbAddGeomShape
45 #define XkbAllocGeomKeyAliases SrvXkbAllocGeomKeyAliases
46 #define XkbAllocGeomColors SrvXkbAllocGeomColors
47 #define XkbAllocGeomDoodads SrvXkbAllocGeomDoodads
48 #define XkbAllocGeomKeys SrvXkbAllocGeomKeys
49 #define XkbAllocGeomOutlines SrvXkbAllocGeomOutlines
50 #define XkbAllocGeomPoints SrvXkbAllocGeomPoints
51 #define XkbAllocGeomProps SrvXkbAllocGeomProps
52 #define XkbAllocGeomRows SrvXkbAllocGeomRows
53 #define XkbAllocGeomSectionDoodads SrvXkbAllocGeomSectionDoodads
54 #define XkbAllocGeomSections SrvXkbAllocGeomSections
55 #define XkbAllocGeomOverlays SrvXkbAllocGeomOverlays
56 #define XkbAllocGeomOverlayRows SrvXkbAllocGeomOverlayRows
57 #define XkbAllocGeomOverlayKeys SrvXkbAllocGeomOverlayKeys
58 #define XkbAllocGeomShapes SrvXkbAllocGeomShapes
59 #define XkbAllocGeometry SrvXkbAllocGeometry
60 #define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases
61 #define XkbFreeGeomColors SrvXkbFreeGeomColors
62 #define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads
63 #define XkbFreeGeomProperties SrvXkbFreeGeomProperties
64 #define XkbFreeGeomOverlayKeys SrvXkbFreeGeomOverlayKeys
65 #define XkbFreeGeomOverlayRows SrvXkbFreeGeomOverlayRows
66 #define XkbFreeGeomOverlays SrvXkbFreeGeomOverlays
67 #define XkbFreeGeomKeys SrvXkbFreeGeomKeys
68 #define XkbFreeGeomRows SrvXkbFreeGeomRows
69 #define XkbFreeGeomSections SrvXkbFreeGeomSections
70 #define XkbFreeGeomPoints SrvXkbFreeGeomPoints
71 #define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines
72 #define XkbFreeGeomShapes SrvXkbFreeGeomShapes
73 #define XkbFreeGeometry SrvXkbFreeGeometry
76 typedef struct _XkbProperty {
79 } XkbPropertyRec,*XkbPropertyPtr;
81 typedef struct _XkbColor {
84 } XkbColorRec,*XkbColorPtr;
86 typedef struct _XkbPoint {
89 } XkbPointRec, *XkbPointPtr;
91 typedef struct _XkbBounds {
94 } XkbBoundsRec, *XkbBoundsPtr;
95 #define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
96 #define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
98 typedef struct _XkbOutline {
99 unsigned short num_points;
100 unsigned short sz_points;
101 unsigned short corner_radius;
103 } XkbOutlineRec, *XkbOutlinePtr;
105 typedef struct _XkbShape {
107 unsigned short num_outlines;
108 unsigned short sz_outlines;
109 XkbOutlinePtr outlines;
110 XkbOutlinePtr approx;
111 XkbOutlinePtr primary;
113 } XkbShapeRec, *XkbShapePtr;
114 #define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
116 typedef struct _XkbShapeDoodad {
119 unsigned char priority;
123 unsigned short color_ndx;
124 unsigned short shape_ndx;
125 } XkbShapeDoodadRec, *XkbShapeDoodadPtr;
126 #define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
127 #define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
128 #define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
129 #define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
131 typedef struct _XkbTextDoodad {
134 unsigned char priority;
140 unsigned short color_ndx;
143 } XkbTextDoodadRec, *XkbTextDoodadPtr;
144 #define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
145 #define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
147 typedef struct _XkbIndicatorDoodad {
150 unsigned char priority;
154 unsigned short shape_ndx;
155 unsigned short on_color_ndx;
156 unsigned short off_color_ndx;
157 } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
158 #define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
159 #define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
160 #define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
161 #define XkbSetIndicatorDoodadOnColor(g,d,c) \
162 ((d)->on_color_ndx= (c)-&(g)->colors[0])
163 #define XkbSetIndicatorDoodadOffColor(g,d,c) \
164 ((d)->off_color_ndx= (c)-&(g)->colors[0])
165 #define XkbSetIndicatorDoodadShape(g,d,s) \
166 ((d)->shape_ndx= (s)-&(g)->shapes[0])
168 typedef struct _XkbLogoDoodad {
171 unsigned char priority;
175 unsigned short color_ndx;
176 unsigned short shape_ndx;
178 } XkbLogoDoodadRec, *XkbLogoDoodadPtr;
179 #define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
180 #define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
181 #define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
182 #define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
184 typedef struct _XkbAnyDoodad {
187 unsigned char priority;
191 } XkbAnyDoodadRec, *XkbAnyDoodadPtr;
193 typedef union _XkbDoodad {
195 XkbShapeDoodadRec shape;
196 XkbTextDoodadRec text;
197 XkbIndicatorDoodadRec indicator;
198 XkbLogoDoodadRec logo;
199 } XkbDoodadRec, *XkbDoodadPtr;
201 #define XkbUnknownDoodad 0
202 #define XkbOutlineDoodad 1
203 #define XkbSolidDoodad 2
204 #define XkbTextDoodad 3
205 #define XkbIndicatorDoodad 4
206 #define XkbLogoDoodad 5
208 typedef struct _XkbKey {
211 unsigned char shape_ndx;
212 unsigned char color_ndx;
213 } XkbKeyRec, *XkbKeyPtr;
214 #define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
215 #define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
216 #define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
217 #define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
219 typedef struct _XkbRow {
222 unsigned short num_keys;
223 unsigned short sz_keys;
227 } XkbRowRec, *XkbRowPtr;
229 typedef struct _XkbSection {
231 unsigned char priority;
234 unsigned short width;
235 unsigned short height;
237 unsigned short num_rows;
238 unsigned short num_doodads;
239 unsigned short num_overlays;
240 unsigned short sz_rows;
241 unsigned short sz_doodads;
242 unsigned short sz_overlays;
244 XkbDoodadPtr doodads;
246 struct _XkbOverlay *overlays;
247 } XkbSectionRec, *XkbSectionPtr;
249 typedef struct _XkbOverlayKey {
252 } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
254 typedef struct _XkbOverlayRow {
255 unsigned short row_under;
256 unsigned short num_keys;
257 unsigned short sz_keys;
258 XkbOverlayKeyPtr keys;
259 } XkbOverlayRowRec,*XkbOverlayRowPtr;
261 typedef struct _XkbOverlay {
263 XkbSectionPtr section_under;
264 unsigned short num_rows;
265 unsigned short sz_rows;
266 XkbOverlayRowPtr rows;
268 } XkbOverlayRec,*XkbOverlayPtr;
270 typedef struct _XkbGeometry {
272 unsigned short width_mm;
273 unsigned short height_mm;
275 XkbColorPtr label_color;
276 XkbColorPtr base_color;
277 unsigned short sz_properties;
278 unsigned short sz_colors;
279 unsigned short sz_shapes;
280 unsigned short sz_sections;
281 unsigned short sz_doodads;
282 unsigned short sz_key_aliases;
283 unsigned short num_properties;
284 unsigned short num_colors;
285 unsigned short num_shapes;
286 unsigned short num_sections;
287 unsigned short num_doodads;
288 unsigned short num_key_aliases;
289 XkbPropertyPtr properties;
292 XkbSectionPtr sections;
293 XkbDoodadPtr doodads;
294 XkbKeyAliasPtr key_aliases;
296 #define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
298 #define XkbGeomPropertiesMask (1<<0)
299 #define XkbGeomColorsMask (1<<1)
300 #define XkbGeomShapesMask (1<<2)
301 #define XkbGeomSectionsMask (1<<3)
302 #define XkbGeomDoodadsMask (1<<4)
303 #define XkbGeomKeyAliasesMask (1<<5)
304 #define XkbGeomAllMask (0x3f)
306 typedef struct _XkbGeometrySizes {
308 unsigned short num_properties;
309 unsigned short num_colors;
310 unsigned short num_shapes;
311 unsigned short num_sections;
312 unsigned short num_doodads;
313 unsigned short num_key_aliases;
314 } XkbGeometrySizesRec,*XkbGeometrySizesPtr;
318 extern XkbPropertyPtr
320 XkbGeometryPtr /* geom */,
325 extern XkbKeyAliasPtr
327 XkbGeometryPtr /* geom */,
334 XkbGeometryPtr /* geom */,
336 unsigned int /* pixel */
341 XkbShapePtr /* shape */,
347 XkbGeometryPtr /* geom */,
349 int /* sz_outlines */
359 XkbSectionPtr /* section */,
365 XkbGeometryPtr /* geom */,
368 int /* sz_doodads */,
369 int /* sz_overlays */
374 XkbSectionPtr /* section */,
379 extern XkbOverlayRowPtr
380 XkbAddGeomOverlayRow(
381 XkbOverlayPtr /* overlay */,
386 extern XkbOverlayKeyPtr
387 XkbAddGeomOverlayKey(
388 XkbOverlayPtr /* overlay */,
389 XkbOverlayRowPtr /* row */,
396 XkbGeometryPtr /* geom */,
397 XkbSectionPtr /* section */,
403 XkbFreeGeomKeyAliases(
404 XkbGeometryPtr /* geom */,
412 XkbGeometryPtr /* geom */,
420 XkbDoodadPtr /* doodads */,
427 XkbFreeGeomProperties(
428 XkbGeometryPtr /* geom */,
435 XkbFreeGeomOverlayKeys(
436 XkbOverlayRowPtr /* row */,
443 XkbFreeGeomOverlayRows(
444 XkbOverlayPtr /* overlay */,
452 XkbSectionPtr /* section */,
468 XkbSectionPtr /* section */,
476 XkbGeometryPtr /* geom */,
485 XkbOutlinePtr /* outline */,
493 XkbShapePtr /* shape */,
501 XkbGeometryPtr /* geom */,
509 XkbGeometryPtr /* geom */,
510 unsigned int /* which */,
516 XkbGeometryPtr /* geom */,
521 XkbAllocGeomKeyAliases(
522 XkbGeometryPtr /* geom */,
528 XkbGeometryPtr /* geom */,
534 XkbGeometryPtr /* geom */,
539 XkbAllocGeomSections(
540 XkbGeometryPtr /* geom */,
545 XkbAllocGeomOverlays(
546 XkbSectionPtr /* section */,
551 XkbAllocGeomOverlayRows(
552 XkbOverlayPtr /* overlay */,
557 XkbAllocGeomOverlayKeys(
558 XkbOverlayRowPtr /* row */,
564 XkbGeometryPtr /* geom */,
569 XkbAllocGeomSectionDoodads(
570 XkbSectionPtr /* section */,
575 XkbAllocGeomOutlines(
576 XkbShapePtr /* shape */,
582 XkbSectionPtr /* section */,
588 XkbOutlinePtr /* ol */,
600 XkbDescPtr /* xkb */,
601 XkbGeometrySizesPtr /* sizes */
607 unsigned /* deviceSpec */,
608 XkbGeometryPtr /* geom */
613 XkbShapePtr /* shape */,
614 XkbBoundsPtr /* bounds */
618 XkbComputeShapeBounds(
619 XkbShapePtr /* shape */
624 XkbGeometryPtr /* geom */,
625 XkbSectionPtr /* section */,
630 XkbComputeSectionBounds(
631 XkbGeometryPtr /* geom */,
632 XkbSectionPtr /* section */
636 XkbFindOverlayForKey(
637 XkbGeometryPtr /* geom */,
638 XkbSectionPtr /* wanted */,
651 XkbDescPtr /* xkb */,
657 #endif /* _XKBSTR_H_ */