1 /* $XConsortium: XKBgeom.h /main/7 1996/03/06 21:40:11 kaleb $ */
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 ********************************************************/
32 #define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias
33 #define XkbAddGeomColor SrvXkbAddGeomColor
34 #define XkbAddGeomDoodad SrvXkbAddGeomDoodad
35 #define XkbAddGeomKey SrvXkbAddGeomKey
36 #define XkbAddGeomOutline SrvXkbAddGeomOutline
37 #define XkbAddGeomOverlay SrvXkbAddGeomOverlay
38 #define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow
39 #define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey
40 #define XkbAddGeomProperty SrvXkbAddGeomProperty
41 #define XkbAddGeomRow SrvXkbAddGeomRow
42 #define XkbAddGeomSection SrvXkbAddGeomSection
43 #define XkbAddGeomShape SrvXkbAddGeomShape
44 #define XkbAllocGeomKeyAliases SrvXkbAllocGeomKeyAliases
45 #define XkbAllocGeomColors SrvXkbAllocGeomColors
46 #define XkbAllocGeomDoodads SrvXkbAllocGeomDoodads
47 #define XkbAllocGeomKeys SrvXkbAllocGeomKeys
48 #define XkbAllocGeomOutlines SrvXkbAllocGeomOutlines
49 #define XkbAllocGeomPoints SrvXkbAllocGeomPoints
50 #define XkbAllocGeomProps SrvXkbAllocGeomProps
51 #define XkbAllocGeomRows SrvXkbAllocGeomRows
52 #define XkbAllocGeomSectionDoodads SrvXkbAllocGeomSectionDoodads
53 #define XkbAllocGeomSections SrvXkbAllocGeomSections
54 #define XkbAllocGeomOverlays SrvXkbAllocGeomOverlays
55 #define XkbAllocGeomOverlayRows SrvXkbAllocGeomOverlayRows
56 #define XkbAllocGeomOverlayKeys SrvXkbAllocGeomOverlayKeys
57 #define XkbAllocGeomShapes SrvXkbAllocGeomShapes
58 #define XkbAllocGeometry SrvXkbAllocGeometry
59 #define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases
60 #define XkbFreeGeomColors SrvXkbFreeGeomColors
61 #define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads
62 #define XkbFreeGeomProperties SrvXkbFreeGeomProperties
63 #define XkbFreeGeomOverlayKeys SrvXkbFreeGeomOverlayKeys
64 #define XkbFreeGeomOverlayRows SrvXkbFreeGeomOverlayRows
65 #define XkbFreeGeomOverlays SrvXkbFreeGeomOverlays
66 #define XkbFreeGeomKeys SrvXKbFreeGeomKeys
67 #define XkbFreeGeomRows SrvXKbFreeGeomRows
68 #define XkbFreeGeomSections SrvXkbFreeGeomSections
69 #define XkbFreeGeomPoints SrvXkbFreeGeomPoints
70 #define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines
71 #define XkbFreeGeomShapes SrvXkbFreeGeomShapes
72 #define XkbFreeGeometry SrvXkbFreeGeometry
75 typedef struct _XkbProperty {
78 } XkbPropertyRec,*XkbPropertyPtr;
80 typedef struct _XkbColor {
83 } XkbColorRec,*XkbColorPtr;
85 typedef struct _XkbPoint {
88 } XkbPointRec, *XkbPointPtr;
90 typedef struct _XkbBounds {
93 } XkbBoundsRec, *XkbBoundsPtr;
94 #define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
95 #define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
97 typedef struct _XkbOutline {
98 unsigned short num_points;
99 unsigned short sz_points;
100 unsigned short corner_radius;
102 } XkbOutlineRec, *XkbOutlinePtr;
104 typedef struct _XkbShape {
106 unsigned short num_outlines;
107 unsigned short sz_outlines;
108 XkbOutlinePtr outlines;
109 XkbOutlinePtr approx;
110 XkbOutlinePtr primary;
112 } XkbShapeRec, *XkbShapePtr;
113 #define XkbOutlineIndex(s,o) ((o)-&(s)->outlines[0])
115 typedef struct _XkbShapeDoodad {
118 unsigned char priority;
122 unsigned short color_ndx;
123 unsigned short shape_ndx;
124 } XkbShapeDoodadRec, *XkbShapeDoodadPtr;
125 #define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
126 #define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
127 #define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
128 #define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
130 typedef struct _XkbTextDoodad {
133 unsigned char priority;
139 unsigned short color_ndx;
142 } XkbTextDoodadRec, *XkbTextDoodadPtr;
143 #define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
144 #define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
146 typedef struct _XkbIndicatorDoodad {
149 unsigned char priority;
153 unsigned short shape_ndx;
154 unsigned short on_color_ndx;
155 unsigned short off_color_ndx;
156 } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
157 #define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
158 #define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
159 #define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
160 #define XkbSetIndicatorDoodadOnColor(g,d,c) \
161 ((d)->on_color_ndx= (c)-&(g)->colors[0])
162 #define XkbSetIndicatorDoodadOffColor(g,d,c) \
163 ((d)->off_color_ndx= (c)-&(g)->colors[0])
164 #define XkbSetIndicatorDoodadShape(g,d,s) \
165 ((d)->shape_ndx= (s)-&(g)->shapes[0])
167 typedef struct _XkbLogoDoodad {
170 unsigned char priority;
174 unsigned short color_ndx;
175 unsigned short shape_ndx;
177 } XkbLogoDoodadRec, *XkbLogoDoodadPtr;
178 #define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
179 #define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
180 #define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
181 #define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
183 typedef struct _XkbAnyDoodad {
186 unsigned char priority;
190 } XkbAnyDoodadRec, *XkbAnyDoodadPtr;
192 typedef union _XkbDoodad {
194 XkbShapeDoodadRec shape;
195 XkbTextDoodadRec text;
196 XkbIndicatorDoodadRec indicator;
197 XkbLogoDoodadRec logo;
198 } XkbDoodadRec, *XkbDoodadPtr;
200 #define XkbUnknownDoodad 0
201 #define XkbOutlineDoodad 1
202 #define XkbSolidDoodad 2
203 #define XkbTextDoodad 3
204 #define XkbIndicatorDoodad 4
205 #define XkbLogoDoodad 5
207 typedef struct _XkbKey {
210 unsigned char shape_ndx;
211 unsigned char color_ndx;
212 } XkbKeyRec, *XkbKeyPtr;
213 #define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
214 #define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
215 #define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
216 #define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
218 typedef struct _XkbRow {
221 unsigned short num_keys;
222 unsigned short sz_keys;
226 } XkbRowRec, *XkbRowPtr;
228 typedef struct _XkbSection {
230 unsigned char priority;
233 unsigned short width;
234 unsigned short height;
236 unsigned short num_rows;
237 unsigned short num_doodads;
238 unsigned short num_overlays;
239 unsigned short sz_rows;
240 unsigned short sz_doodads;
241 unsigned short sz_overlays;
243 XkbDoodadPtr doodads;
245 struct _XkbOverlay *overlays;
246 } XkbSectionRec, *XkbSectionPtr;
248 typedef struct _XkbOverlayKey {
251 } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
253 typedef struct _XkbOverlayRow {
254 unsigned short row_under;
255 unsigned short num_keys;
256 unsigned short sz_keys;
257 XkbOverlayKeyPtr keys;
258 } XkbOverlayRowRec,*XkbOverlayRowPtr;
260 typedef struct _XkbOverlay {
262 XkbSectionPtr section_under;
263 unsigned short num_rows;
264 unsigned short sz_rows;
265 XkbOverlayRowPtr rows;
267 } XkbOverlayRec,*XkbOverlayPtr;
269 typedef struct _XkbGeometry {
271 unsigned short width_mm;
272 unsigned short height_mm;
274 XkbColorPtr label_color;
275 XkbColorPtr base_color;
276 unsigned short sz_properties;
277 unsigned short sz_colors;
278 unsigned short sz_shapes;
279 unsigned short sz_sections;
280 unsigned short sz_doodads;
281 unsigned short sz_key_aliases;
282 unsigned short num_properties;
283 unsigned short num_colors;
284 unsigned short num_shapes;
285 unsigned short num_sections;
286 unsigned short num_doodads;
287 unsigned short num_key_aliases;
288 XkbPropertyPtr properties;
291 XkbSectionPtr sections;
292 XkbDoodadPtr doodads;
293 XkbKeyAliasPtr key_aliases;
295 #define XkbGeomColorIndex(g,c) ((c)-&(g)->colors[0])
297 #define XkbGeomPropertiesMask (1<<0)
298 #define XkbGeomColorsMask (1<<1)
299 #define XkbGeomShapesMask (1<<2)
300 #define XkbGeomSectionsMask (1<<3)
301 #define XkbGeomDoodadsMask (1<<4)
302 #define XkbGeomKeyAliasesMask (1<<5)
303 #define XkbGeomAllMask (0x3f)
305 typedef struct _XkbGeometrySizes {
307 unsigned short num_properties;
308 unsigned short num_colors;
309 unsigned short num_shapes;
310 unsigned short num_sections;
311 unsigned short num_doodads;
312 unsigned short num_key_aliases;
313 } XkbGeometrySizesRec,*XkbGeometrySizesPtr;
317 extern XkbPropertyPtr
319 #if NeedFunctionPrototypes
320 XkbGeometryPtr /* geom */,
326 extern XkbKeyAliasPtr
328 #if NeedFunctionPrototypes
329 XkbGeometryPtr /* geom */,
337 #if NeedFunctionPrototypes
338 XkbGeometryPtr /* geom */,
340 unsigned int /* pixel */
346 #if NeedFunctionPrototypes
347 XkbShapePtr /* shape */,
354 #if NeedFunctionPrototypes
355 XkbGeometryPtr /* geom */,
357 int /* sz_outlines */
363 #if NeedFunctionPrototypes
370 #if NeedFunctionPrototypes
371 XkbSectionPtr /* section */,
378 #if NeedFunctionPrototypes
379 XkbGeometryPtr /* geom */,
382 int /* sz_doodads */,
383 int /* sz_overlays */
389 #if NeedFunctionPrototypes
390 XkbSectionPtr /* section */,
396 extern XkbOverlayRowPtr
397 XkbAddGeomOverlayRow(
398 #if NeedFunctionPrototypes
399 XkbOverlayPtr /* overlay */,
405 extern XkbOverlayKeyPtr
406 XkbAddGeomOverlayKey(
407 #if NeedFunctionPrototypes
408 XkbOverlayPtr /* overlay */,
409 XkbOverlayRowPtr /* row */,
417 #if NeedFunctionPrototypes
418 XkbGeometryPtr /* geom */,
419 XkbSectionPtr /* section */,
426 XkbFreeGeomKeyAliases(
427 #if NeedFunctionPrototypes
428 XkbGeometryPtr /* geom */,
437 #if NeedFunctionPrototypes
438 XkbGeometryPtr /* geom */,
447 #if NeedFunctionPrototypes
448 XkbDoodadPtr /* doodads */,
456 XkbFreeGeomProperties(
457 #if NeedFunctionPrototypes
458 XkbGeometryPtr /* geom */,
466 XkbFreeGeomOverlayKeys(
467 #if NeedFunctionPrototypes
468 XkbOverlayRowPtr /* row */,
476 XkbFreeGeomOverlayRows(
477 #if NeedFunctionPrototypes
478 XkbOverlayPtr /* overlay */,
487 #if NeedFunctionPrototypes
488 XkbSectionPtr /* section */,
497 #if NeedFunctionPrototypes
507 #if NeedFunctionPrototypes
508 XkbSectionPtr /* section */,
517 #if NeedFunctionPrototypes
518 XkbGeometryPtr /* geom */,
528 #if NeedFunctionPrototypes
529 XkbOutlinePtr /* outline */,
538 #if NeedFunctionPrototypes
539 XkbShapePtr /* shape */,
548 #if NeedFunctionPrototypes
549 XkbGeometryPtr /* geom */,
558 #if NeedFunctionPrototypes
559 XkbGeometryPtr /* geom */,
560 unsigned int /* which */,
567 #if NeedFunctionPrototypes
568 XkbGeometryPtr /* geom */,
574 XkbAllocGeomKeyAliases(
575 #if NeedFunctionPrototypes
576 XkbGeometryPtr /* geom */,
583 #if NeedFunctionPrototypes
584 XkbGeometryPtr /* geom */,
591 #if NeedFunctionPrototypes
592 XkbGeometryPtr /* geom */,
598 XkbAllocGeomSections(
599 #if NeedFunctionPrototypes
600 XkbGeometryPtr /* geom */,
606 XkbAllocGeomOverlays(
607 #if NeedFunctionPrototypes
608 XkbSectionPtr /* section */,
614 XkbAllocGeomOverlayRows(
615 #if NeedFunctionPrototypes
616 XkbOverlayPtr /* overlay */,
622 XkbAllocGeomOverlayKeys(
623 #if NeedFunctionPrototypes
624 XkbOverlayRowPtr /* row */,
631 #if NeedFunctionPrototypes
632 XkbGeometryPtr /* geom */,
638 XkbAllocGeomSectionDoodads(
639 #if NeedFunctionPrototypes
640 XkbSectionPtr /* section */,
646 XkbAllocGeomOutlines(
647 #if NeedFunctionPrototypes
648 XkbShapePtr /* shape */,
655 #if NeedFunctionPrototypes
656 XkbSectionPtr /* section */,
663 #if NeedFunctionPrototypes
664 XkbOutlinePtr /* ol */,
671 #if NeedFunctionPrototypes
679 #if NeedFunctionPrototypes
680 XkbDescPtr /* xkb */,
681 XkbGeometrySizesPtr /* sizes */
687 #if NeedFunctionPrototypes
688 XkbShapePtr /* shape */,
689 XkbBoundsPtr /* bounds */
694 XkbComputeShapeBounds(
695 #if NeedFunctionPrototypes
696 XkbShapePtr /* shape */
702 #if NeedFunctionPrototypes
703 XkbGeometryPtr /* geom */,
704 XkbSectionPtr /* section */,
710 XkbComputeSectionBounds(
711 #if NeedFunctionPrototypes
712 XkbGeometryPtr /* geom */,
713 XkbSectionPtr /* section */
718 XkbFindOverlayForKey(
719 #if NeedFunctionPrototypes
720 XkbGeometryPtr /* geom */,
721 XkbSectionPtr /* wanted */,
728 #if NeedFunctionPrototypes
736 #if NeedFunctionPrototypes
738 XkbDescPtr /* xkb */,
745 #endif /* _XKBSTR_H_ */