xref: /OK3568_Linux_fs/external/xserver/xkb/xkbgeom.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /************************************************************
2*4882a593Smuzhiyun Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun Permission to use, copy, modify, and distribute this
5*4882a593Smuzhiyun software and its documentation for any purpose and without
6*4882a593Smuzhiyun fee is hereby granted, provided that the above copyright
7*4882a593Smuzhiyun notice appear in all copies and that both that copyright
8*4882a593Smuzhiyun notice and this permission notice appear in supporting
9*4882a593Smuzhiyun documentation, and that the name of Silicon Graphics not be
10*4882a593Smuzhiyun used in advertising or publicity pertaining to distribution
11*4882a593Smuzhiyun of the software without specific prior written permission.
12*4882a593Smuzhiyun Silicon Graphics makes no representation about the suitability
13*4882a593Smuzhiyun of this software for any purpose. It is provided "as is"
14*4882a593Smuzhiyun without any express or implied warranty.
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17*4882a593Smuzhiyun SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18*4882a593Smuzhiyun AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19*4882a593Smuzhiyun GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20*4882a593Smuzhiyun DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21*4882a593Smuzhiyun DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
22*4882a593Smuzhiyun OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
23*4882a593Smuzhiyun THE USE OR PERFORMANCE OF THIS SOFTWARE.
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun ********************************************************/
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #ifndef _XKBGEOM_H_
28*4882a593Smuzhiyun #define	_XKBGEOM_H_
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #include "xkbstr.h"
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define XkbAddGeomKeyAlias 		SrvXkbAddGeomKeyAlias
33*4882a593Smuzhiyun #define XkbAddGeomColor 		SrvXkbAddGeomColor
34*4882a593Smuzhiyun #define XkbAddGeomDoodad		SrvXkbAddGeomDoodad
35*4882a593Smuzhiyun #define XkbAddGeomKey			SrvXkbAddGeomKey
36*4882a593Smuzhiyun #define XkbAddGeomOutline		SrvXkbAddGeomOutline
37*4882a593Smuzhiyun #define XkbAddGeomOverlay		SrvXkbAddGeomOverlay
38*4882a593Smuzhiyun #define XkbAddGeomOverlayRow		SrvXkbAddGeomOverlayRow
39*4882a593Smuzhiyun #define	XkbAddGeomOverlayKey		SrvXkbAddGeomOverlayKey
40*4882a593Smuzhiyun #define XkbAddGeomProperty		SrvXkbAddGeomProperty
41*4882a593Smuzhiyun #define XkbAddGeomRow			SrvXkbAddGeomRow
42*4882a593Smuzhiyun #define XkbAddGeomSection		SrvXkbAddGeomSection
43*4882a593Smuzhiyun #define XkbAddGeomShape			SrvXkbAddGeomShape
44*4882a593Smuzhiyun #define XkbAllocGeometry		SrvXkbAllocGeometry
45*4882a593Smuzhiyun #define XkbFreeGeomKeyAliases		SrvXkbFreeGeomKeyAliases
46*4882a593Smuzhiyun #define XkbFreeGeomColors		SrvXkbFreeGeomColors
47*4882a593Smuzhiyun #define XkbFreeGeomDoodads		SrvXkbFreeGeomDoodads
48*4882a593Smuzhiyun #define XkbFreeGeomProperties		SrvXkbFreeGeomProperties
49*4882a593Smuzhiyun #define	XkbFreeGeomKeys			SrvXkbFreeGeomKeys
50*4882a593Smuzhiyun #define	XkbFreeGeomRows			SrvXkbFreeGeomRows
51*4882a593Smuzhiyun #define XkbFreeGeomSections		SrvXkbFreeGeomSections
52*4882a593Smuzhiyun #define	XkbFreeGeomPoints		SrvXkbFreeGeomPoints
53*4882a593Smuzhiyun #define	XkbFreeGeomOutlines		SrvXkbFreeGeomOutlines
54*4882a593Smuzhiyun #define XkbFreeGeomShapes		SrvXkbFreeGeomShapes
55*4882a593Smuzhiyun #define XkbFreeGeometry			SrvXkbFreeGeometry
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun typedef struct _XkbProperty {
58*4882a593Smuzhiyun     char *name;
59*4882a593Smuzhiyun     char *value;
60*4882a593Smuzhiyun } XkbPropertyRec, *XkbPropertyPtr;
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun typedef struct _XkbColor {
63*4882a593Smuzhiyun     unsigned int pixel;
64*4882a593Smuzhiyun     char *spec;
65*4882a593Smuzhiyun } XkbColorRec, *XkbColorPtr;
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun typedef struct _XkbPoint {
68*4882a593Smuzhiyun     short x;
69*4882a593Smuzhiyun     short y;
70*4882a593Smuzhiyun } XkbPointRec, *XkbPointPtr;
71*4882a593Smuzhiyun 
72*4882a593Smuzhiyun typedef struct _XkbBounds {
73*4882a593Smuzhiyun     short x1, y1;
74*4882a593Smuzhiyun     short x2, y2;
75*4882a593Smuzhiyun } XkbBoundsRec, *XkbBoundsPtr;
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define	XkbBoundsWidth(b)	(((b)->x2)-((b)->x1))
78*4882a593Smuzhiyun #define	XkbBoundsHeight(b)	(((b)->y2)-((b)->y1))
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun typedef struct _XkbOutline {
81*4882a593Smuzhiyun     unsigned short num_points;
82*4882a593Smuzhiyun     unsigned short sz_points;
83*4882a593Smuzhiyun     unsigned short corner_radius;
84*4882a593Smuzhiyun     XkbPointPtr points;
85*4882a593Smuzhiyun } XkbOutlineRec, *XkbOutlinePtr;
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun typedef struct _XkbShape {
88*4882a593Smuzhiyun     Atom name;
89*4882a593Smuzhiyun     unsigned short num_outlines;
90*4882a593Smuzhiyun     unsigned short sz_outlines;
91*4882a593Smuzhiyun     XkbOutlinePtr outlines;
92*4882a593Smuzhiyun     XkbOutlinePtr approx;
93*4882a593Smuzhiyun     XkbOutlinePtr primary;
94*4882a593Smuzhiyun     XkbBoundsRec bounds;
95*4882a593Smuzhiyun } XkbShapeRec, *XkbShapePtr;
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define	XkbOutlineIndex(s,o)	((int)((o)-&(s)->outlines[0]))
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun typedef struct _XkbShapeDoodad {
100*4882a593Smuzhiyun     Atom name;
101*4882a593Smuzhiyun     unsigned char type;
102*4882a593Smuzhiyun     unsigned char priority;
103*4882a593Smuzhiyun     short top;
104*4882a593Smuzhiyun     short left;
105*4882a593Smuzhiyun     short angle;
106*4882a593Smuzhiyun     unsigned short color_ndx;
107*4882a593Smuzhiyun     unsigned short shape_ndx;
108*4882a593Smuzhiyun } XkbShapeDoodadRec, *XkbShapeDoodadPtr;
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define	XkbShapeDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
111*4882a593Smuzhiyun #define	XkbShapeDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
112*4882a593Smuzhiyun #define	XkbSetShapeDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
113*4882a593Smuzhiyun #define	XkbSetShapeDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun typedef struct _XkbTextDoodad {
116*4882a593Smuzhiyun     Atom name;
117*4882a593Smuzhiyun     unsigned char type;
118*4882a593Smuzhiyun     unsigned char priority;
119*4882a593Smuzhiyun     short top;
120*4882a593Smuzhiyun     short left;
121*4882a593Smuzhiyun     short angle;
122*4882a593Smuzhiyun     short width;
123*4882a593Smuzhiyun     short height;
124*4882a593Smuzhiyun     unsigned short color_ndx;
125*4882a593Smuzhiyun     char *text;
126*4882a593Smuzhiyun     char *font;
127*4882a593Smuzhiyun } XkbTextDoodadRec, *XkbTextDoodadPtr;
128*4882a593Smuzhiyun 
129*4882a593Smuzhiyun #define	XkbTextDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
130*4882a593Smuzhiyun #define	XkbSetTextDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun typedef struct _XkbIndicatorDoodad {
133*4882a593Smuzhiyun     Atom name;
134*4882a593Smuzhiyun     unsigned char type;
135*4882a593Smuzhiyun     unsigned char priority;
136*4882a593Smuzhiyun     short top;
137*4882a593Smuzhiyun     short left;
138*4882a593Smuzhiyun     short angle;
139*4882a593Smuzhiyun     unsigned short shape_ndx;
140*4882a593Smuzhiyun     unsigned short on_color_ndx;
141*4882a593Smuzhiyun     unsigned short off_color_ndx;
142*4882a593Smuzhiyun } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun #define	XkbIndicatorDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
145*4882a593Smuzhiyun #define	XkbIndicatorDoodadOnColor(g,d)	(&(g)->colors[(d)->on_color_ndx])
146*4882a593Smuzhiyun #define	XkbIndicatorDoodadOffColor(g,d)	(&(g)->colors[(d)->off_color_ndx])
147*4882a593Smuzhiyun #define	XkbSetIndicatorDoodadOnColor(g,d,c) \
148*4882a593Smuzhiyun 				((d)->on_color_ndx= (c)-&(g)->colors[0])
149*4882a593Smuzhiyun #define	XkbSetIndicatorDoodadOffColor(g,d,c) \
150*4882a593Smuzhiyun 				((d)->off_color_ndx= (c)-&(g)->colors[0])
151*4882a593Smuzhiyun #define	XkbSetIndicatorDoodadShape(g,d,s) \
152*4882a593Smuzhiyun 				((d)->shape_ndx= (s)-&(g)->shapes[0])
153*4882a593Smuzhiyun 
154*4882a593Smuzhiyun typedef struct _XkbLogoDoodad {
155*4882a593Smuzhiyun     Atom name;
156*4882a593Smuzhiyun     unsigned char type;
157*4882a593Smuzhiyun     unsigned char priority;
158*4882a593Smuzhiyun     short top;
159*4882a593Smuzhiyun     short left;
160*4882a593Smuzhiyun     short angle;
161*4882a593Smuzhiyun     unsigned short color_ndx;
162*4882a593Smuzhiyun     unsigned short shape_ndx;
163*4882a593Smuzhiyun     char *logo_name;
164*4882a593Smuzhiyun } XkbLogoDoodadRec, *XkbLogoDoodadPtr;
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun #define	XkbLogoDoodadColor(g,d)		(&(g)->colors[(d)->color_ndx])
167*4882a593Smuzhiyun #define	XkbLogoDoodadShape(g,d)		(&(g)->shapes[(d)->shape_ndx])
168*4882a593Smuzhiyun #define	XkbSetLogoDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
169*4882a593Smuzhiyun #define	XkbSetLogoDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
170*4882a593Smuzhiyun 
171*4882a593Smuzhiyun typedef struct _XkbAnyDoodad {
172*4882a593Smuzhiyun     Atom name;
173*4882a593Smuzhiyun     unsigned char type;
174*4882a593Smuzhiyun     unsigned char priority;
175*4882a593Smuzhiyun     short top;
176*4882a593Smuzhiyun     short left;
177*4882a593Smuzhiyun     short angle;
178*4882a593Smuzhiyun } XkbAnyDoodadRec, *XkbAnyDoodadPtr;
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun typedef union _XkbDoodad {
181*4882a593Smuzhiyun     XkbAnyDoodadRec any;
182*4882a593Smuzhiyun     XkbShapeDoodadRec shape;
183*4882a593Smuzhiyun     XkbTextDoodadRec text;
184*4882a593Smuzhiyun     XkbIndicatorDoodadRec indicator;
185*4882a593Smuzhiyun     XkbLogoDoodadRec logo;
186*4882a593Smuzhiyun } XkbDoodadRec, *XkbDoodadPtr;
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun #define	XkbUnknownDoodad	0
189*4882a593Smuzhiyun #define	XkbOutlineDoodad	1
190*4882a593Smuzhiyun #define	XkbSolidDoodad		2
191*4882a593Smuzhiyun #define	XkbTextDoodad		3
192*4882a593Smuzhiyun #define	XkbIndicatorDoodad	4
193*4882a593Smuzhiyun #define	XkbLogoDoodad		5
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun typedef struct _XkbKey {
196*4882a593Smuzhiyun     XkbKeyNameRec name;
197*4882a593Smuzhiyun     short gap;
198*4882a593Smuzhiyun     unsigned char shape_ndx;
199*4882a593Smuzhiyun     unsigned char color_ndx;
200*4882a593Smuzhiyun } XkbKeyRec, *XkbKeyPtr;
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun #define	XkbKeyShape(g,k)	(&(g)->shapes[(k)->shape_ndx])
203*4882a593Smuzhiyun #define	XkbKeyColor(g,k)	(&(g)->colors[(k)->color_ndx])
204*4882a593Smuzhiyun #define	XkbSetKeyShape(g,k,s)	((k)->shape_ndx= (s)-&(g)->shapes[0])
205*4882a593Smuzhiyun #define	XkbSetKeyColor(g,k,c)	((k)->color_ndx= (c)-&(g)->colors[0])
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun typedef struct _XkbRow {
208*4882a593Smuzhiyun     short top;
209*4882a593Smuzhiyun     short left;
210*4882a593Smuzhiyun     unsigned short num_keys;
211*4882a593Smuzhiyun     unsigned short sz_keys;
212*4882a593Smuzhiyun     int vertical;
213*4882a593Smuzhiyun     XkbKeyPtr keys;
214*4882a593Smuzhiyun     XkbBoundsRec bounds;
215*4882a593Smuzhiyun } XkbRowRec, *XkbRowPtr;
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun typedef struct _XkbSection {
218*4882a593Smuzhiyun     Atom name;
219*4882a593Smuzhiyun     unsigned char priority;
220*4882a593Smuzhiyun     short top;
221*4882a593Smuzhiyun     short left;
222*4882a593Smuzhiyun     unsigned short width;
223*4882a593Smuzhiyun     unsigned short height;
224*4882a593Smuzhiyun     short angle;
225*4882a593Smuzhiyun     unsigned short num_rows;
226*4882a593Smuzhiyun     unsigned short num_doodads;
227*4882a593Smuzhiyun     unsigned short num_overlays;
228*4882a593Smuzhiyun     unsigned short sz_rows;
229*4882a593Smuzhiyun     unsigned short sz_doodads;
230*4882a593Smuzhiyun     unsigned short sz_overlays;
231*4882a593Smuzhiyun     XkbRowPtr rows;
232*4882a593Smuzhiyun     XkbDoodadPtr doodads;
233*4882a593Smuzhiyun     XkbBoundsRec bounds;
234*4882a593Smuzhiyun     struct _XkbOverlay *overlays;
235*4882a593Smuzhiyun } XkbSectionRec, *XkbSectionPtr;
236*4882a593Smuzhiyun 
237*4882a593Smuzhiyun typedef struct _XkbOverlayKey {
238*4882a593Smuzhiyun     XkbKeyNameRec over;
239*4882a593Smuzhiyun     XkbKeyNameRec under;
240*4882a593Smuzhiyun } XkbOverlayKeyRec, *XkbOverlayKeyPtr;
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun typedef struct _XkbOverlayRow {
243*4882a593Smuzhiyun     unsigned short row_under;
244*4882a593Smuzhiyun     unsigned short num_keys;
245*4882a593Smuzhiyun     unsigned short sz_keys;
246*4882a593Smuzhiyun     XkbOverlayKeyPtr keys;
247*4882a593Smuzhiyun } XkbOverlayRowRec, *XkbOverlayRowPtr;
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun typedef struct _XkbOverlay {
250*4882a593Smuzhiyun     Atom name;
251*4882a593Smuzhiyun     XkbSectionPtr section_under;
252*4882a593Smuzhiyun     unsigned short num_rows;
253*4882a593Smuzhiyun     unsigned short sz_rows;
254*4882a593Smuzhiyun     XkbOverlayRowPtr rows;
255*4882a593Smuzhiyun     XkbBoundsPtr bounds;
256*4882a593Smuzhiyun } XkbOverlayRec, *XkbOverlayPtr;
257*4882a593Smuzhiyun 
258*4882a593Smuzhiyun typedef struct _XkbGeometry {
259*4882a593Smuzhiyun     Atom name;
260*4882a593Smuzhiyun     unsigned short width_mm;
261*4882a593Smuzhiyun     unsigned short height_mm;
262*4882a593Smuzhiyun     char *label_font;
263*4882a593Smuzhiyun     XkbColorPtr label_color;
264*4882a593Smuzhiyun     XkbColorPtr base_color;
265*4882a593Smuzhiyun     unsigned short sz_properties;
266*4882a593Smuzhiyun     unsigned short sz_colors;
267*4882a593Smuzhiyun     unsigned short sz_shapes;
268*4882a593Smuzhiyun     unsigned short sz_sections;
269*4882a593Smuzhiyun     unsigned short sz_doodads;
270*4882a593Smuzhiyun     unsigned short sz_key_aliases;
271*4882a593Smuzhiyun     unsigned short num_properties;
272*4882a593Smuzhiyun     unsigned short num_colors;
273*4882a593Smuzhiyun     unsigned short num_shapes;
274*4882a593Smuzhiyun     unsigned short num_sections;
275*4882a593Smuzhiyun     unsigned short num_doodads;
276*4882a593Smuzhiyun     unsigned short num_key_aliases;
277*4882a593Smuzhiyun     XkbPropertyPtr properties;
278*4882a593Smuzhiyun     XkbColorPtr colors;
279*4882a593Smuzhiyun     XkbShapePtr shapes;
280*4882a593Smuzhiyun     XkbSectionPtr sections;
281*4882a593Smuzhiyun     XkbDoodadPtr doodads;
282*4882a593Smuzhiyun     XkbKeyAliasPtr key_aliases;
283*4882a593Smuzhiyun } XkbGeometryRec;
284*4882a593Smuzhiyun 
285*4882a593Smuzhiyun #define	XkbGeomColorIndex(g,c)	((int)((c)-&(g)->colors[0]))
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun #define	XkbGeomPropertiesMask	(1<<0)
288*4882a593Smuzhiyun #define	XkbGeomColorsMask	(1<<1)
289*4882a593Smuzhiyun #define	XkbGeomShapesMask	(1<<2)
290*4882a593Smuzhiyun #define	XkbGeomSectionsMask	(1<<3)
291*4882a593Smuzhiyun #define	XkbGeomDoodadsMask	(1<<4)
292*4882a593Smuzhiyun #define	XkbGeomKeyAliasesMask	(1<<5)
293*4882a593Smuzhiyun #define	XkbGeomAllMask		(0x3f)
294*4882a593Smuzhiyun 
295*4882a593Smuzhiyun typedef struct _XkbGeometrySizes {
296*4882a593Smuzhiyun     unsigned int which;
297*4882a593Smuzhiyun     unsigned short num_properties;
298*4882a593Smuzhiyun     unsigned short num_colors;
299*4882a593Smuzhiyun     unsigned short num_shapes;
300*4882a593Smuzhiyun     unsigned short num_sections;
301*4882a593Smuzhiyun     unsigned short num_doodads;
302*4882a593Smuzhiyun     unsigned short num_key_aliases;
303*4882a593Smuzhiyun } XkbGeometrySizesRec, *XkbGeometrySizesPtr;
304*4882a593Smuzhiyun 
305*4882a593Smuzhiyun /**
306*4882a593Smuzhiyun  * Specifies which items should be cleared in an XKB geometry array
307*4882a593Smuzhiyun  * when the array is reallocated.
308*4882a593Smuzhiyun  */
309*4882a593Smuzhiyun typedef enum {
310*4882a593Smuzhiyun     XKB_GEOM_CLEAR_NONE,        /* Don't clear any items, just reallocate.   */
311*4882a593Smuzhiyun     XKB_GEOM_CLEAR_EXCESS,      /* Clear new extra items after reallocation. */
312*4882a593Smuzhiyun     XKB_GEOM_CLEAR_ALL          /* Clear all items after reallocation.       */
313*4882a593Smuzhiyun } XkbGeomClearance;
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun extern XkbPropertyPtr XkbAddGeomProperty(XkbGeometryPtr /* geom */ ,
316*4882a593Smuzhiyun                                          char * /* name */ ,
317*4882a593Smuzhiyun                                          char * /* value */
318*4882a593Smuzhiyun     );
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun extern XkbKeyAliasPtr XkbAddGeomKeyAlias(XkbGeometryPtr /* geom */ ,
321*4882a593Smuzhiyun                                          char * /* alias */ ,
322*4882a593Smuzhiyun                                          char * /* real */
323*4882a593Smuzhiyun     );
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun extern XkbColorPtr XkbAddGeomColor(XkbGeometryPtr /* geom */ ,
326*4882a593Smuzhiyun                                    char * /* spec */ ,
327*4882a593Smuzhiyun                                    unsigned int /* pixel */
328*4882a593Smuzhiyun     );
329*4882a593Smuzhiyun 
330*4882a593Smuzhiyun extern XkbOutlinePtr XkbAddGeomOutline(XkbShapePtr /* shape */ ,
331*4882a593Smuzhiyun                                        int      /* sz_points */
332*4882a593Smuzhiyun     );
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun extern XkbShapePtr XkbAddGeomShape(XkbGeometryPtr /* geom */ ,
335*4882a593Smuzhiyun                                    Atom /* name */ ,
336*4882a593Smuzhiyun                                    int  /* sz_outlines */
337*4882a593Smuzhiyun     );
338*4882a593Smuzhiyun 
339*4882a593Smuzhiyun extern XkbKeyPtr XkbAddGeomKey(XkbRowPtr        /* row */
340*4882a593Smuzhiyun     );
341*4882a593Smuzhiyun 
342*4882a593Smuzhiyun extern XkbRowPtr XkbAddGeomRow(XkbSectionPtr /* section */ ,
343*4882a593Smuzhiyun                                int      /* sz_keys */
344*4882a593Smuzhiyun     );
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun extern XkbSectionPtr XkbAddGeomSection(XkbGeometryPtr /* geom */ ,
347*4882a593Smuzhiyun                                        Atom /* name */ ,
348*4882a593Smuzhiyun                                        int /* sz_rows */ ,
349*4882a593Smuzhiyun                                        int /* sz_doodads */ ,
350*4882a593Smuzhiyun                                        int      /* sz_overlays */
351*4882a593Smuzhiyun     );
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun extern XkbOverlayPtr XkbAddGeomOverlay(XkbSectionPtr /* section */ ,
354*4882a593Smuzhiyun                                        Atom /* name */ ,
355*4882a593Smuzhiyun                                        int      /* sz_rows */
356*4882a593Smuzhiyun     );
357*4882a593Smuzhiyun 
358*4882a593Smuzhiyun extern XkbOverlayRowPtr XkbAddGeomOverlayRow(XkbOverlayPtr /* overlay */ ,
359*4882a593Smuzhiyun                                              int /* row_under */ ,
360*4882a593Smuzhiyun                                              int        /* sz_keys */
361*4882a593Smuzhiyun     );
362*4882a593Smuzhiyun 
363*4882a593Smuzhiyun extern XkbOverlayKeyPtr XkbAddGeomOverlayKey(XkbOverlayPtr /* overlay */ ,
364*4882a593Smuzhiyun                                              XkbOverlayRowPtr /* row */ ,
365*4882a593Smuzhiyun                                              char * /* over */ ,
366*4882a593Smuzhiyun                                              char *     /* under */
367*4882a593Smuzhiyun     );
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun extern XkbDoodadPtr XkbAddGeomDoodad(XkbGeometryPtr /* geom */ ,
370*4882a593Smuzhiyun                                      XkbSectionPtr /* section */ ,
371*4882a593Smuzhiyun                                      Atom       /* name */
372*4882a593Smuzhiyun     );
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun extern void
375*4882a593Smuzhiyun  XkbFreeGeomKeyAliases(XkbGeometryPtr /* geom */ ,
376*4882a593Smuzhiyun                        int /* first */ ,
377*4882a593Smuzhiyun                        int /* count */ ,
378*4882a593Smuzhiyun                        Bool     /* freeAll */
379*4882a593Smuzhiyun     );
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun extern void
382*4882a593Smuzhiyun  XkbFreeGeomColors(XkbGeometryPtr /* geom */ ,
383*4882a593Smuzhiyun                    int /* first */ ,
384*4882a593Smuzhiyun                    int /* count */ ,
385*4882a593Smuzhiyun                    Bool         /* freeAll */
386*4882a593Smuzhiyun     );
387*4882a593Smuzhiyun 
388*4882a593Smuzhiyun extern void
389*4882a593Smuzhiyun  XkbFreeGeomDoodads(XkbDoodadPtr /* doodads */ ,
390*4882a593Smuzhiyun                     int /* nDoodads */ ,
391*4882a593Smuzhiyun                     Bool        /* freeAll */
392*4882a593Smuzhiyun     );
393*4882a593Smuzhiyun 
394*4882a593Smuzhiyun extern void
395*4882a593Smuzhiyun  XkbFreeGeomProperties(XkbGeometryPtr /* geom */ ,
396*4882a593Smuzhiyun                        int /* first */ ,
397*4882a593Smuzhiyun                        int /* count */ ,
398*4882a593Smuzhiyun                        Bool     /* freeAll */
399*4882a593Smuzhiyun     );
400*4882a593Smuzhiyun 
401*4882a593Smuzhiyun extern void
402*4882a593Smuzhiyun  XkbFreeGeomOverlayKeys(XkbOverlayRowPtr /* row */ ,
403*4882a593Smuzhiyun                         int /* first */ ,
404*4882a593Smuzhiyun                         int /* count */ ,
405*4882a593Smuzhiyun                         Bool    /* freeAll */
406*4882a593Smuzhiyun     );
407*4882a593Smuzhiyun 
408*4882a593Smuzhiyun extern void
409*4882a593Smuzhiyun  XkbFreeGeomOverlayRows(XkbOverlayPtr /* overlay */ ,
410*4882a593Smuzhiyun                         int /* first */ ,
411*4882a593Smuzhiyun                         int /* count */ ,
412*4882a593Smuzhiyun                         Bool    /* freeAll */
413*4882a593Smuzhiyun     );
414*4882a593Smuzhiyun 
415*4882a593Smuzhiyun extern void
416*4882a593Smuzhiyun  XkbFreeGeomOverlays(XkbSectionPtr /* section */ ,
417*4882a593Smuzhiyun                      int /* first */ ,
418*4882a593Smuzhiyun                      int /* count */ ,
419*4882a593Smuzhiyun                      Bool       /* freeAll */
420*4882a593Smuzhiyun     );
421*4882a593Smuzhiyun 
422*4882a593Smuzhiyun extern void
423*4882a593Smuzhiyun  XkbFreeGeomKeys(XkbRowPtr /* row */ ,
424*4882a593Smuzhiyun                  int /* first */ ,
425*4882a593Smuzhiyun                  int /* count */ ,
426*4882a593Smuzhiyun                  Bool           /* freeAll */
427*4882a593Smuzhiyun     );
428*4882a593Smuzhiyun 
429*4882a593Smuzhiyun extern void
430*4882a593Smuzhiyun  XkbFreeGeomRows(XkbSectionPtr /* section */ ,
431*4882a593Smuzhiyun                  int /* first */ ,
432*4882a593Smuzhiyun                  int /* count */ ,
433*4882a593Smuzhiyun                  Bool           /* freeAll */
434*4882a593Smuzhiyun     );
435*4882a593Smuzhiyun 
436*4882a593Smuzhiyun extern void
437*4882a593Smuzhiyun  XkbFreeGeomSections(XkbGeometryPtr /* geom */ ,
438*4882a593Smuzhiyun                      int /* first */ ,
439*4882a593Smuzhiyun                      int /* count */ ,
440*4882a593Smuzhiyun                      Bool       /* freeAll */
441*4882a593Smuzhiyun     );
442*4882a593Smuzhiyun 
443*4882a593Smuzhiyun extern void
444*4882a593Smuzhiyun  XkbFreeGeomPoints(XkbOutlinePtr /* outline */ ,
445*4882a593Smuzhiyun                    int /* first */ ,
446*4882a593Smuzhiyun                    int /* count */ ,
447*4882a593Smuzhiyun                    Bool         /* freeAll */
448*4882a593Smuzhiyun     );
449*4882a593Smuzhiyun 
450*4882a593Smuzhiyun extern void
451*4882a593Smuzhiyun  XkbFreeGeomOutlines(XkbShapePtr /* shape */ ,
452*4882a593Smuzhiyun                      int /* first */ ,
453*4882a593Smuzhiyun                      int /* count */ ,
454*4882a593Smuzhiyun                      Bool       /* freeAll */
455*4882a593Smuzhiyun     );
456*4882a593Smuzhiyun 
457*4882a593Smuzhiyun extern void
458*4882a593Smuzhiyun  XkbFreeGeomShapes(XkbGeometryPtr /* geom */ ,
459*4882a593Smuzhiyun                    int /* first */ ,
460*4882a593Smuzhiyun                    int /* count */ ,
461*4882a593Smuzhiyun                    Bool         /* freeAll */
462*4882a593Smuzhiyun     );
463*4882a593Smuzhiyun 
464*4882a593Smuzhiyun extern void
465*4882a593Smuzhiyun  XkbFreeGeometry(XkbGeometryPtr /* geom */ ,
466*4882a593Smuzhiyun                  unsigned int /* which */ ,
467*4882a593Smuzhiyun                  Bool           /* freeMap */
468*4882a593Smuzhiyun     );
469*4882a593Smuzhiyun 
470*4882a593Smuzhiyun extern Bool
471*4882a593Smuzhiyun  XkbGeomRealloc(void ** /* buffer */ ,
472*4882a593Smuzhiyun                 int /* szItems */ ,
473*4882a593Smuzhiyun                 int /* nrItems */ ,
474*4882a593Smuzhiyun                 int /* itemSize */ ,
475*4882a593Smuzhiyun                 XkbGeomClearance        /* clearance */
476*4882a593Smuzhiyun     );
477*4882a593Smuzhiyun 
478*4882a593Smuzhiyun extern Status XkbAllocGeomProps(XkbGeometryPtr /* geom */ ,
479*4882a593Smuzhiyun                                 int     /* nProps */
480*4882a593Smuzhiyun     );
481*4882a593Smuzhiyun 
482*4882a593Smuzhiyun extern Status XkbAllocGeomKeyAliases(XkbGeometryPtr /* geom */ ,
483*4882a593Smuzhiyun                                      int        /* nAliases */
484*4882a593Smuzhiyun     );
485*4882a593Smuzhiyun 
486*4882a593Smuzhiyun extern Status XkbAllocGeomColors(XkbGeometryPtr /* geom */ ,
487*4882a593Smuzhiyun                                  int    /* nColors */
488*4882a593Smuzhiyun     );
489*4882a593Smuzhiyun 
490*4882a593Smuzhiyun extern Status XkbAllocGeomShapes(XkbGeometryPtr /* geom */ ,
491*4882a593Smuzhiyun                                  int    /* nShapes */
492*4882a593Smuzhiyun     );
493*4882a593Smuzhiyun 
494*4882a593Smuzhiyun extern Status XkbAllocGeomSections(XkbGeometryPtr /* geom */ ,
495*4882a593Smuzhiyun                                    int  /* nSections */
496*4882a593Smuzhiyun     );
497*4882a593Smuzhiyun 
498*4882a593Smuzhiyun extern Status XkbAllocGeomOverlays(XkbSectionPtr /* section */ ,
499*4882a593Smuzhiyun                                    int  /* num_needed */
500*4882a593Smuzhiyun     );
501*4882a593Smuzhiyun 
502*4882a593Smuzhiyun extern Status XkbAllocGeomOverlayRows(XkbOverlayPtr /* overlay */ ,
503*4882a593Smuzhiyun                                       int       /* num_needed */
504*4882a593Smuzhiyun     );
505*4882a593Smuzhiyun 
506*4882a593Smuzhiyun extern Status XkbAllocGeomOverlayKeys(XkbOverlayRowPtr /* row */ ,
507*4882a593Smuzhiyun                                       int       /* num_needed */
508*4882a593Smuzhiyun     );
509*4882a593Smuzhiyun 
510*4882a593Smuzhiyun extern Status XkbAllocGeomDoodads(XkbGeometryPtr /* geom */ ,
511*4882a593Smuzhiyun                                   int   /* nDoodads */
512*4882a593Smuzhiyun     );
513*4882a593Smuzhiyun 
514*4882a593Smuzhiyun extern Status XkbAllocGeomSectionDoodads(XkbSectionPtr /* section */ ,
515*4882a593Smuzhiyun                                          int    /* nDoodads */
516*4882a593Smuzhiyun     );
517*4882a593Smuzhiyun 
518*4882a593Smuzhiyun extern Status XkbAllocGeomOutlines(XkbShapePtr /* shape */ ,
519*4882a593Smuzhiyun                                    int  /* nOL */
520*4882a593Smuzhiyun     );
521*4882a593Smuzhiyun 
522*4882a593Smuzhiyun extern Status XkbAllocGeomRows(XkbSectionPtr /* section */ ,
523*4882a593Smuzhiyun                                int      /* nRows */
524*4882a593Smuzhiyun     );
525*4882a593Smuzhiyun 
526*4882a593Smuzhiyun extern Status XkbAllocGeomPoints(XkbOutlinePtr /* ol */ ,
527*4882a593Smuzhiyun                                  int    /* nPts */
528*4882a593Smuzhiyun     );
529*4882a593Smuzhiyun 
530*4882a593Smuzhiyun extern Status XkbAllocGeomKeys(XkbRowPtr /* row */ ,
531*4882a593Smuzhiyun                                int      /* nKeys */
532*4882a593Smuzhiyun     );
533*4882a593Smuzhiyun 
534*4882a593Smuzhiyun extern Status XkbAllocGeometry(XkbDescPtr /* xkb */ ,
535*4882a593Smuzhiyun                                XkbGeometrySizesPtr      /* sizes */
536*4882a593Smuzhiyun     );
537*4882a593Smuzhiyun 
538*4882a593Smuzhiyun extern Bool
539*4882a593Smuzhiyun  XkbComputeShapeTop(XkbShapePtr /* shape */ ,
540*4882a593Smuzhiyun                     XkbBoundsPtr        /* bounds */
541*4882a593Smuzhiyun     );
542*4882a593Smuzhiyun 
543*4882a593Smuzhiyun extern Bool
544*4882a593Smuzhiyun  XkbComputeShapeBounds(XkbShapePtr      /* shape */
545*4882a593Smuzhiyun     );
546*4882a593Smuzhiyun 
547*4882a593Smuzhiyun extern Bool
548*4882a593Smuzhiyun  XkbComputeRowBounds(XkbGeometryPtr /* geom */ ,
549*4882a593Smuzhiyun                      XkbSectionPtr /* section */ ,
550*4882a593Smuzhiyun                      XkbRowPtr  /* row */
551*4882a593Smuzhiyun     );
552*4882a593Smuzhiyun 
553*4882a593Smuzhiyun extern Bool
554*4882a593Smuzhiyun  XkbComputeSectionBounds(XkbGeometryPtr /* geom */ ,
555*4882a593Smuzhiyun                          XkbSectionPtr  /* section */
556*4882a593Smuzhiyun     );
557*4882a593Smuzhiyun 
558*4882a593Smuzhiyun extern char *XkbFindOverlayForKey(XkbGeometryPtr /* geom */ ,
559*4882a593Smuzhiyun                                   XkbSectionPtr /* wanted */ ,
560*4882a593Smuzhiyun                                   char *        /* under */
561*4882a593Smuzhiyun     );
562*4882a593Smuzhiyun 
563*4882a593Smuzhiyun #endif                          /* _XKBGEOM_H_ */
564