14642e01fSmrg/************************************************************
24642e01fSmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
34642e01fSmrg
44642e01fSmrgPermission to use, copy, modify, and distribute this
54642e01fSmrgsoftware and its documentation for any purpose and without
64642e01fSmrgfee is hereby granted, provided that the above copyright
74642e01fSmrgnotice appear in all copies and that both that copyright
84642e01fSmrgnotice and this permission notice appear in supporting
935c4bbdfSmrgdocumentation, and that the name of Silicon Graphics not be
1035c4bbdfSmrgused in advertising or publicity pertaining to distribution
114642e01fSmrgof the software without specific prior written permission.
1235c4bbdfSmrgSilicon Graphics makes no representation about the suitability
134642e01fSmrgof this software for any purpose. It is provided "as is"
144642e01fSmrgwithout any express or implied warranty.
154642e01fSmrg
1635c4bbdfSmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
1735c4bbdfSmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
184642e01fSmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
1935c4bbdfSmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
2035c4bbdfSmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
2135c4bbdfSmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
224642e01fSmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
234642e01fSmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE.
244642e01fSmrg
254642e01fSmrg********************************************************/
264642e01fSmrg
274642e01fSmrg#ifndef _XKBGEOM_H_
284642e01fSmrg#define	_XKBGEOM_H_
294642e01fSmrg
304642e01fSmrg#include "xkbstr.h"
314642e01fSmrg
324642e01fSmrg#define XkbAddGeomKeyAlias 		SrvXkbAddGeomKeyAlias
334642e01fSmrg#define XkbAddGeomColor 		SrvXkbAddGeomColor
344642e01fSmrg#define XkbAddGeomDoodad		SrvXkbAddGeomDoodad
354642e01fSmrg#define XkbAddGeomKey			SrvXkbAddGeomKey
364642e01fSmrg#define XkbAddGeomOutline		SrvXkbAddGeomOutline
374642e01fSmrg#define XkbAddGeomOverlay		SrvXkbAddGeomOverlay
384642e01fSmrg#define XkbAddGeomOverlayRow		SrvXkbAddGeomOverlayRow
394642e01fSmrg#define	XkbAddGeomOverlayKey		SrvXkbAddGeomOverlayKey
404642e01fSmrg#define XkbAddGeomProperty		SrvXkbAddGeomProperty
414642e01fSmrg#define XkbAddGeomRow			SrvXkbAddGeomRow
424642e01fSmrg#define XkbAddGeomSection		SrvXkbAddGeomSection
434642e01fSmrg#define XkbAddGeomShape			SrvXkbAddGeomShape
444642e01fSmrg#define XkbAllocGeometry		SrvXkbAllocGeometry
454642e01fSmrg#define XkbFreeGeomKeyAliases		SrvXkbFreeGeomKeyAliases
464642e01fSmrg#define XkbFreeGeomColors		SrvXkbFreeGeomColors
474642e01fSmrg#define XkbFreeGeomDoodads		SrvXkbFreeGeomDoodads
484642e01fSmrg#define XkbFreeGeomProperties		SrvXkbFreeGeomProperties
494642e01fSmrg#define	XkbFreeGeomKeys			SrvXkbFreeGeomKeys
504642e01fSmrg#define	XkbFreeGeomRows			SrvXkbFreeGeomRows
514642e01fSmrg#define XkbFreeGeomSections		SrvXkbFreeGeomSections
524642e01fSmrg#define	XkbFreeGeomPoints		SrvXkbFreeGeomPoints
534642e01fSmrg#define	XkbFreeGeomOutlines		SrvXkbFreeGeomOutlines
544642e01fSmrg#define XkbFreeGeomShapes		SrvXkbFreeGeomShapes
554642e01fSmrg#define XkbFreeGeometry			SrvXkbFreeGeometry
564642e01fSmrg
5735c4bbdfSmrgtypedef struct _XkbProperty {
5835c4bbdfSmrg    char *name;
5935c4bbdfSmrg    char *value;
6035c4bbdfSmrg} XkbPropertyRec, *XkbPropertyPtr;
614642e01fSmrg
624642e01fSmrgtypedef struct _XkbColor {
6335c4bbdfSmrg    unsigned int pixel;
6435c4bbdfSmrg    char *spec;
6535c4bbdfSmrg} XkbColorRec, *XkbColorPtr;
664642e01fSmrg
6735c4bbdfSmrgtypedef struct _XkbPoint {
6835c4bbdfSmrg    short x;
6935c4bbdfSmrg    short y;
704642e01fSmrg} XkbPointRec, *XkbPointPtr;
714642e01fSmrg
7235c4bbdfSmrgtypedef struct _XkbBounds {
7335c4bbdfSmrg    short x1, y1;
7435c4bbdfSmrg    short x2, y2;
754642e01fSmrg} XkbBoundsRec, *XkbBoundsPtr;
7635c4bbdfSmrg
774642e01fSmrg#define	XkbBoundsWidth(b)	(((b)->x2)-((b)->x1))
784642e01fSmrg#define	XkbBoundsHeight(b)	(((b)->y2)-((b)->y1))
794642e01fSmrg
804642e01fSmrgtypedef struct _XkbOutline {
8135c4bbdfSmrg    unsigned short num_points;
8235c4bbdfSmrg    unsigned short sz_points;
8335c4bbdfSmrg    unsigned short corner_radius;
8435c4bbdfSmrg    XkbPointPtr points;
854642e01fSmrg} XkbOutlineRec, *XkbOutlinePtr;
864642e01fSmrg
874642e01fSmrgtypedef struct _XkbShape {
8835c4bbdfSmrg    Atom name;
8935c4bbdfSmrg    unsigned short num_outlines;
9035c4bbdfSmrg    unsigned short sz_outlines;
9135c4bbdfSmrg    XkbOutlinePtr outlines;
9235c4bbdfSmrg    XkbOutlinePtr approx;
9335c4bbdfSmrg    XkbOutlinePtr primary;
9435c4bbdfSmrg    XkbBoundsRec bounds;
954642e01fSmrg} XkbShapeRec, *XkbShapePtr;
9635c4bbdfSmrg
974642e01fSmrg#define	XkbOutlineIndex(s,o)	((int)((o)-&(s)->outlines[0]))
984642e01fSmrg
994642e01fSmrgtypedef struct _XkbShapeDoodad {
10035c4bbdfSmrg    Atom name;
10135c4bbdfSmrg    unsigned char type;
10235c4bbdfSmrg    unsigned char priority;
10335c4bbdfSmrg    short top;
10435c4bbdfSmrg    short left;
10535c4bbdfSmrg    short angle;
10635c4bbdfSmrg    unsigned short color_ndx;
10735c4bbdfSmrg    unsigned short shape_ndx;
1084642e01fSmrg} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
10935c4bbdfSmrg
1104642e01fSmrg#define	XkbShapeDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
1114642e01fSmrg#define	XkbShapeDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
1124642e01fSmrg#define	XkbSetShapeDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
1134642e01fSmrg#define	XkbSetShapeDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
1144642e01fSmrg
1154642e01fSmrgtypedef struct _XkbTextDoodad {
11635c4bbdfSmrg    Atom name;
11735c4bbdfSmrg    unsigned char type;
11835c4bbdfSmrg    unsigned char priority;
11935c4bbdfSmrg    short top;
12035c4bbdfSmrg    short left;
12135c4bbdfSmrg    short angle;
12235c4bbdfSmrg    short width;
12335c4bbdfSmrg    short height;
12435c4bbdfSmrg    unsigned short color_ndx;
12535c4bbdfSmrg    char *text;
12635c4bbdfSmrg    char *font;
1274642e01fSmrg} XkbTextDoodadRec, *XkbTextDoodadPtr;
12835c4bbdfSmrg
1294642e01fSmrg#define	XkbTextDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
1304642e01fSmrg#define	XkbSetTextDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
1314642e01fSmrg
1324642e01fSmrgtypedef struct _XkbIndicatorDoodad {
13335c4bbdfSmrg    Atom name;
13435c4bbdfSmrg    unsigned char type;
13535c4bbdfSmrg    unsigned char priority;
13635c4bbdfSmrg    short top;
13735c4bbdfSmrg    short left;
13835c4bbdfSmrg    short angle;
13935c4bbdfSmrg    unsigned short shape_ndx;
14035c4bbdfSmrg    unsigned short on_color_ndx;
14135c4bbdfSmrg    unsigned short off_color_ndx;
1424642e01fSmrg} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
14335c4bbdfSmrg
1444642e01fSmrg#define	XkbIndicatorDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
1454642e01fSmrg#define	XkbIndicatorDoodadOnColor(g,d)	(&(g)->colors[(d)->on_color_ndx])
1464642e01fSmrg#define	XkbIndicatorDoodadOffColor(g,d)	(&(g)->colors[(d)->off_color_ndx])
1474642e01fSmrg#define	XkbSetIndicatorDoodadOnColor(g,d,c) \
1484642e01fSmrg				((d)->on_color_ndx= (c)-&(g)->colors[0])
1494642e01fSmrg#define	XkbSetIndicatorDoodadOffColor(g,d,c) \
1504642e01fSmrg				((d)->off_color_ndx= (c)-&(g)->colors[0])
1514642e01fSmrg#define	XkbSetIndicatorDoodadShape(g,d,s) \
1524642e01fSmrg				((d)->shape_ndx= (s)-&(g)->shapes[0])
1534642e01fSmrg
1544642e01fSmrgtypedef struct _XkbLogoDoodad {
15535c4bbdfSmrg    Atom name;
15635c4bbdfSmrg    unsigned char type;
15735c4bbdfSmrg    unsigned char priority;
15835c4bbdfSmrg    short top;
15935c4bbdfSmrg    short left;
16035c4bbdfSmrg    short angle;
16135c4bbdfSmrg    unsigned short color_ndx;
16235c4bbdfSmrg    unsigned short shape_ndx;
16335c4bbdfSmrg    char *logo_name;
1644642e01fSmrg} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
16535c4bbdfSmrg
1664642e01fSmrg#define	XkbLogoDoodadColor(g,d)		(&(g)->colors[(d)->color_ndx])
1674642e01fSmrg#define	XkbLogoDoodadShape(g,d)		(&(g)->shapes[(d)->shape_ndx])
1684642e01fSmrg#define	XkbSetLogoDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
1694642e01fSmrg#define	XkbSetLogoDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
1704642e01fSmrg
1714642e01fSmrgtypedef struct _XkbAnyDoodad {
17235c4bbdfSmrg    Atom name;
17335c4bbdfSmrg    unsigned char type;
17435c4bbdfSmrg    unsigned char priority;
17535c4bbdfSmrg    short top;
17635c4bbdfSmrg    short left;
17735c4bbdfSmrg    short angle;
1784642e01fSmrg} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
1794642e01fSmrg
1804642e01fSmrgtypedef union _XkbDoodad {
18135c4bbdfSmrg    XkbAnyDoodadRec any;
18235c4bbdfSmrg    XkbShapeDoodadRec shape;
18335c4bbdfSmrg    XkbTextDoodadRec text;
18435c4bbdfSmrg    XkbIndicatorDoodadRec indicator;
18535c4bbdfSmrg    XkbLogoDoodadRec logo;
1864642e01fSmrg} XkbDoodadRec, *XkbDoodadPtr;
1874642e01fSmrg
1884642e01fSmrg#define	XkbUnknownDoodad	0
1894642e01fSmrg#define	XkbOutlineDoodad	1
1904642e01fSmrg#define	XkbSolidDoodad		2
1914642e01fSmrg#define	XkbTextDoodad		3
1924642e01fSmrg#define	XkbIndicatorDoodad	4
1934642e01fSmrg#define	XkbLogoDoodad		5
1944642e01fSmrg
1954642e01fSmrgtypedef struct _XkbKey {
19635c4bbdfSmrg    XkbKeyNameRec name;
19735c4bbdfSmrg    short gap;
19835c4bbdfSmrg    unsigned char shape_ndx;
19935c4bbdfSmrg    unsigned char color_ndx;
2004642e01fSmrg} XkbKeyRec, *XkbKeyPtr;
20135c4bbdfSmrg
2024642e01fSmrg#define	XkbKeyShape(g,k)	(&(g)->shapes[(k)->shape_ndx])
2034642e01fSmrg#define	XkbKeyColor(g,k)	(&(g)->colors[(k)->color_ndx])
2044642e01fSmrg#define	XkbSetKeyShape(g,k,s)	((k)->shape_ndx= (s)-&(g)->shapes[0])
2054642e01fSmrg#define	XkbSetKeyColor(g,k,c)	((k)->color_ndx= (c)-&(g)->colors[0])
2064642e01fSmrg
2074642e01fSmrgtypedef struct _XkbRow {
20835c4bbdfSmrg    short top;
20935c4bbdfSmrg    short left;
21035c4bbdfSmrg    unsigned short num_keys;
21135c4bbdfSmrg    unsigned short sz_keys;
21235c4bbdfSmrg    int vertical;
21335c4bbdfSmrg    XkbKeyPtr keys;
21435c4bbdfSmrg    XkbBoundsRec bounds;
2154642e01fSmrg} XkbRowRec, *XkbRowPtr;
2164642e01fSmrg
2174642e01fSmrgtypedef struct _XkbSection {
21835c4bbdfSmrg    Atom name;
21935c4bbdfSmrg    unsigned char priority;
22035c4bbdfSmrg    short top;
22135c4bbdfSmrg    short left;
22235c4bbdfSmrg    unsigned short width;
22335c4bbdfSmrg    unsigned short height;
22435c4bbdfSmrg    short angle;
22535c4bbdfSmrg    unsigned short num_rows;
22635c4bbdfSmrg    unsigned short num_doodads;
22735c4bbdfSmrg    unsigned short num_overlays;
22835c4bbdfSmrg    unsigned short sz_rows;
22935c4bbdfSmrg    unsigned short sz_doodads;
23035c4bbdfSmrg    unsigned short sz_overlays;
23135c4bbdfSmrg    XkbRowPtr rows;
23235c4bbdfSmrg    XkbDoodadPtr doodads;
23335c4bbdfSmrg    XkbBoundsRec bounds;
23435c4bbdfSmrg    struct _XkbOverlay *overlays;
2354642e01fSmrg} XkbSectionRec, *XkbSectionPtr;
2364642e01fSmrg
23735c4bbdfSmrgtypedef struct _XkbOverlayKey {
23835c4bbdfSmrg    XkbKeyNameRec over;
23935c4bbdfSmrg    XkbKeyNameRec under;
24035c4bbdfSmrg} XkbOverlayKeyRec, *XkbOverlayKeyPtr;
2414642e01fSmrg
2424642e01fSmrgtypedef struct _XkbOverlayRow {
24335c4bbdfSmrg    unsigned short row_under;
24435c4bbdfSmrg    unsigned short num_keys;
24535c4bbdfSmrg    unsigned short sz_keys;
24635c4bbdfSmrg    XkbOverlayKeyPtr keys;
24735c4bbdfSmrg} XkbOverlayRowRec, *XkbOverlayRowPtr;
2484642e01fSmrg
2494642e01fSmrgtypedef struct _XkbOverlay {
25035c4bbdfSmrg    Atom name;
25135c4bbdfSmrg    XkbSectionPtr section_under;
25235c4bbdfSmrg    unsigned short num_rows;
25335c4bbdfSmrg    unsigned short sz_rows;
25435c4bbdfSmrg    XkbOverlayRowPtr rows;
25535c4bbdfSmrg    XkbBoundsPtr bounds;
25635c4bbdfSmrg} XkbOverlayRec, *XkbOverlayPtr;
2574642e01fSmrg
2584642e01fSmrgtypedef struct _XkbGeometry {
25935c4bbdfSmrg    Atom name;
26035c4bbdfSmrg    unsigned short width_mm;
26135c4bbdfSmrg    unsigned short height_mm;
26235c4bbdfSmrg    char *label_font;
26335c4bbdfSmrg    XkbColorPtr label_color;
26435c4bbdfSmrg    XkbColorPtr base_color;
26535c4bbdfSmrg    unsigned short sz_properties;
26635c4bbdfSmrg    unsigned short sz_colors;
26735c4bbdfSmrg    unsigned short sz_shapes;
26835c4bbdfSmrg    unsigned short sz_sections;
26935c4bbdfSmrg    unsigned short sz_doodads;
27035c4bbdfSmrg    unsigned short sz_key_aliases;
27135c4bbdfSmrg    unsigned short num_properties;
27235c4bbdfSmrg    unsigned short num_colors;
27335c4bbdfSmrg    unsigned short num_shapes;
27435c4bbdfSmrg    unsigned short num_sections;
27535c4bbdfSmrg    unsigned short num_doodads;
27635c4bbdfSmrg    unsigned short num_key_aliases;
27735c4bbdfSmrg    XkbPropertyPtr properties;
27835c4bbdfSmrg    XkbColorPtr colors;
27935c4bbdfSmrg    XkbShapePtr shapes;
28035c4bbdfSmrg    XkbSectionPtr sections;
28135c4bbdfSmrg    XkbDoodadPtr doodads;
28235c4bbdfSmrg    XkbKeyAliasPtr key_aliases;
2834642e01fSmrg} XkbGeometryRec;
28435c4bbdfSmrg
2854642e01fSmrg#define	XkbGeomColorIndex(g,c)	((int)((c)-&(g)->colors[0]))
2864642e01fSmrg
2874642e01fSmrg#define	XkbGeomPropertiesMask	(1<<0)
2884642e01fSmrg#define	XkbGeomColorsMask	(1<<1)
2894642e01fSmrg#define	XkbGeomShapesMask	(1<<2)
2904642e01fSmrg#define	XkbGeomSectionsMask	(1<<3)
2914642e01fSmrg#define	XkbGeomDoodadsMask	(1<<4)
2924642e01fSmrg#define	XkbGeomKeyAliasesMask	(1<<5)
2934642e01fSmrg#define	XkbGeomAllMask		(0x3f)
2944642e01fSmrg
2954642e01fSmrgtypedef struct _XkbGeometrySizes {
29635c4bbdfSmrg    unsigned int which;
29735c4bbdfSmrg    unsigned short num_properties;
29835c4bbdfSmrg    unsigned short num_colors;
29935c4bbdfSmrg    unsigned short num_shapes;
30035c4bbdfSmrg    unsigned short num_sections;
30135c4bbdfSmrg    unsigned short num_doodads;
30235c4bbdfSmrg    unsigned short num_key_aliases;
30335c4bbdfSmrg} XkbGeometrySizesRec, *XkbGeometrySizesPtr;
30435c4bbdfSmrg
30535c4bbdfSmrg/**
30635c4bbdfSmrg * Specifies which items should be cleared in an XKB geometry array
30735c4bbdfSmrg * when the array is reallocated.
30835c4bbdfSmrg */
30935c4bbdfSmrgtypedef enum {
31035c4bbdfSmrg    XKB_GEOM_CLEAR_NONE,        /* Don't clear any items, just reallocate.   */
31135c4bbdfSmrg    XKB_GEOM_CLEAR_EXCESS,      /* Clear new extra items after reallocation. */
31235c4bbdfSmrg    XKB_GEOM_CLEAR_ALL          /* Clear all items after reallocation.       */
31335c4bbdfSmrg} XkbGeomClearance;
31435c4bbdfSmrg
31535c4bbdfSmrgextern XkbPropertyPtr XkbAddGeomProperty(XkbGeometryPtr /* geom */ ,
31635c4bbdfSmrg                                         char * /* name */ ,
31735c4bbdfSmrg                                         char * /* value */
31835c4bbdfSmrg    );
31935c4bbdfSmrg
32035c4bbdfSmrgextern XkbKeyAliasPtr XkbAddGeomKeyAlias(XkbGeometryPtr /* geom */ ,
32135c4bbdfSmrg                                         char * /* alias */ ,
32235c4bbdfSmrg                                         char * /* real */
32335c4bbdfSmrg    );
32435c4bbdfSmrg
32535c4bbdfSmrgextern XkbColorPtr XkbAddGeomColor(XkbGeometryPtr /* geom */ ,
32635c4bbdfSmrg                                   char * /* spec */ ,
32735c4bbdfSmrg                                   unsigned int /* pixel */
32835c4bbdfSmrg    );
32935c4bbdfSmrg
33035c4bbdfSmrgextern XkbOutlinePtr XkbAddGeomOutline(XkbShapePtr /* shape */ ,
33135c4bbdfSmrg                                       int      /* sz_points */
33235c4bbdfSmrg    );
33335c4bbdfSmrg
33435c4bbdfSmrgextern XkbShapePtr XkbAddGeomShape(XkbGeometryPtr /* geom */ ,
33535c4bbdfSmrg                                   Atom /* name */ ,
33635c4bbdfSmrg                                   int  /* sz_outlines */
33735c4bbdfSmrg    );
33835c4bbdfSmrg
33935c4bbdfSmrgextern XkbKeyPtr XkbAddGeomKey(XkbRowPtr        /* row */
34035c4bbdfSmrg    );
34135c4bbdfSmrg
34235c4bbdfSmrgextern XkbRowPtr XkbAddGeomRow(XkbSectionPtr /* section */ ,
34335c4bbdfSmrg                               int      /* sz_keys */
34435c4bbdfSmrg    );
34535c4bbdfSmrg
34635c4bbdfSmrgextern XkbSectionPtr XkbAddGeomSection(XkbGeometryPtr /* geom */ ,
34735c4bbdfSmrg                                       Atom /* name */ ,
34835c4bbdfSmrg                                       int /* sz_rows */ ,
34935c4bbdfSmrg                                       int /* sz_doodads */ ,
35035c4bbdfSmrg                                       int      /* sz_overlays */
35135c4bbdfSmrg    );
35235c4bbdfSmrg
35335c4bbdfSmrgextern XkbOverlayPtr XkbAddGeomOverlay(XkbSectionPtr /* section */ ,
35435c4bbdfSmrg                                       Atom /* name */ ,
35535c4bbdfSmrg                                       int      /* sz_rows */
35635c4bbdfSmrg    );
35735c4bbdfSmrg
35835c4bbdfSmrgextern XkbOverlayRowPtr XkbAddGeomOverlayRow(XkbOverlayPtr /* overlay */ ,
35935c4bbdfSmrg                                             int /* row_under */ ,
36035c4bbdfSmrg                                             int        /* sz_keys */
36135c4bbdfSmrg    );
36235c4bbdfSmrg
36335c4bbdfSmrgextern XkbOverlayKeyPtr XkbAddGeomOverlayKey(XkbOverlayPtr /* overlay */ ,
36435c4bbdfSmrg                                             XkbOverlayRowPtr /* row */ ,
36535c4bbdfSmrg                                             char * /* over */ ,
36635c4bbdfSmrg                                             char *     /* under */
36735c4bbdfSmrg    );
36835c4bbdfSmrg
36935c4bbdfSmrgextern XkbDoodadPtr XkbAddGeomDoodad(XkbGeometryPtr /* geom */ ,
37035c4bbdfSmrg                                     XkbSectionPtr /* section */ ,
37135c4bbdfSmrg                                     Atom       /* name */
37235c4bbdfSmrg    );
3734642e01fSmrg
3744642e01fSmrgextern void
37535c4bbdfSmrg XkbFreeGeomKeyAliases(XkbGeometryPtr /* geom */ ,
37635c4bbdfSmrg                       int /* first */ ,
37735c4bbdfSmrg                       int /* count */ ,
37835c4bbdfSmrg                       Bool     /* freeAll */
37935c4bbdfSmrg    );
3804642e01fSmrg
3814642e01fSmrgextern void
38235c4bbdfSmrg XkbFreeGeomColors(XkbGeometryPtr /* geom */ ,
38335c4bbdfSmrg                   int /* first */ ,
38435c4bbdfSmrg                   int /* count */ ,
38535c4bbdfSmrg                   Bool         /* freeAll */
38635c4bbdfSmrg    );
3874642e01fSmrg
3884642e01fSmrgextern void
38935c4bbdfSmrg XkbFreeGeomDoodads(XkbDoodadPtr /* doodads */ ,
39035c4bbdfSmrg                    int /* nDoodads */ ,
39135c4bbdfSmrg                    Bool        /* freeAll */
39235c4bbdfSmrg    );
3934642e01fSmrg
3944642e01fSmrgextern void
39535c4bbdfSmrg XkbFreeGeomProperties(XkbGeometryPtr /* geom */ ,
39635c4bbdfSmrg                       int /* first */ ,
39735c4bbdfSmrg                       int /* count */ ,
39835c4bbdfSmrg                       Bool     /* freeAll */
39935c4bbdfSmrg    );
4004642e01fSmrg
4014642e01fSmrgextern void
40235c4bbdfSmrg XkbFreeGeomOverlayKeys(XkbOverlayRowPtr /* row */ ,
40335c4bbdfSmrg                        int /* first */ ,
40435c4bbdfSmrg                        int /* count */ ,
40535c4bbdfSmrg                        Bool    /* freeAll */
40635c4bbdfSmrg    );
4074642e01fSmrg
4084642e01fSmrgextern void
40935c4bbdfSmrg XkbFreeGeomOverlayRows(XkbOverlayPtr /* overlay */ ,
41035c4bbdfSmrg                        int /* first */ ,
41135c4bbdfSmrg                        int /* count */ ,
41235c4bbdfSmrg                        Bool    /* freeAll */
41335c4bbdfSmrg    );
4144642e01fSmrg
4154642e01fSmrgextern void
41635c4bbdfSmrg XkbFreeGeomOverlays(XkbSectionPtr /* section */ ,
41735c4bbdfSmrg                     int /* first */ ,
41835c4bbdfSmrg                     int /* count */ ,
41935c4bbdfSmrg                     Bool       /* freeAll */
42035c4bbdfSmrg    );
4214642e01fSmrg
4224642e01fSmrgextern void
42335c4bbdfSmrg XkbFreeGeomKeys(XkbRowPtr /* row */ ,
42435c4bbdfSmrg                 int /* first */ ,
42535c4bbdfSmrg                 int /* count */ ,
42635c4bbdfSmrg                 Bool           /* freeAll */
42735c4bbdfSmrg    );
4284642e01fSmrg
4294642e01fSmrgextern void
43035c4bbdfSmrg XkbFreeGeomRows(XkbSectionPtr /* section */ ,
43135c4bbdfSmrg                 int /* first */ ,
43235c4bbdfSmrg                 int /* count */ ,
43335c4bbdfSmrg                 Bool           /* freeAll */
43435c4bbdfSmrg    );
4354642e01fSmrg
4364642e01fSmrgextern void
43735c4bbdfSmrg XkbFreeGeomSections(XkbGeometryPtr /* geom */ ,
43835c4bbdfSmrg                     int /* first */ ,
43935c4bbdfSmrg                     int /* count */ ,
44035c4bbdfSmrg                     Bool       /* freeAll */
44135c4bbdfSmrg    );
4424642e01fSmrg
4434642e01fSmrgextern void
44435c4bbdfSmrg XkbFreeGeomPoints(XkbOutlinePtr /* outline */ ,
44535c4bbdfSmrg                   int /* first */ ,
44635c4bbdfSmrg                   int /* count */ ,
44735c4bbdfSmrg                   Bool         /* freeAll */
44835c4bbdfSmrg    );
4494642e01fSmrg
4504642e01fSmrgextern void
45135c4bbdfSmrg XkbFreeGeomOutlines(XkbShapePtr /* shape */ ,
45235c4bbdfSmrg                     int /* first */ ,
45335c4bbdfSmrg                     int /* count */ ,
45435c4bbdfSmrg                     Bool       /* freeAll */
45535c4bbdfSmrg    );
4564642e01fSmrg
4574642e01fSmrgextern void
45835c4bbdfSmrg XkbFreeGeomShapes(XkbGeometryPtr /* geom */ ,
45935c4bbdfSmrg                   int /* first */ ,
46035c4bbdfSmrg                   int /* count */ ,
46135c4bbdfSmrg                   Bool         /* freeAll */
46235c4bbdfSmrg    );
4634642e01fSmrg
4644642e01fSmrgextern void
46535c4bbdfSmrg XkbFreeGeometry(XkbGeometryPtr /* geom */ ,
46635c4bbdfSmrg                 unsigned int /* which */ ,
46735c4bbdfSmrg                 Bool           /* freeMap */
46835c4bbdfSmrg    );
46935c4bbdfSmrg
47035c4bbdfSmrgextern Bool
47135c4bbdfSmrg XkbGeomRealloc(void ** /* buffer */ ,
47235c4bbdfSmrg                int /* szItems */ ,
47335c4bbdfSmrg                int /* nrItems */ ,
47435c4bbdfSmrg                int /* itemSize */ ,
47535c4bbdfSmrg                XkbGeomClearance        /* clearance */
47635c4bbdfSmrg    );
47735c4bbdfSmrg
47835c4bbdfSmrgextern Status XkbAllocGeomProps(XkbGeometryPtr /* geom */ ,
47935c4bbdfSmrg                                int     /* nProps */
48035c4bbdfSmrg    );
48135c4bbdfSmrg
48235c4bbdfSmrgextern Status XkbAllocGeomKeyAliases(XkbGeometryPtr /* geom */ ,
48335c4bbdfSmrg                                     int        /* nAliases */
48435c4bbdfSmrg    );
48535c4bbdfSmrg
48635c4bbdfSmrgextern Status XkbAllocGeomColors(XkbGeometryPtr /* geom */ ,
48735c4bbdfSmrg                                 int    /* nColors */
48835c4bbdfSmrg    );
48935c4bbdfSmrg
49035c4bbdfSmrgextern Status XkbAllocGeomShapes(XkbGeometryPtr /* geom */ ,
49135c4bbdfSmrg                                 int    /* nShapes */
49235c4bbdfSmrg    );
49335c4bbdfSmrg
49435c4bbdfSmrgextern Status XkbAllocGeomSections(XkbGeometryPtr /* geom */ ,
49535c4bbdfSmrg                                   int  /* nSections */
49635c4bbdfSmrg    );
49735c4bbdfSmrg
49835c4bbdfSmrgextern Status XkbAllocGeomOverlays(XkbSectionPtr /* section */ ,
49935c4bbdfSmrg                                   int  /* num_needed */
50035c4bbdfSmrg    );
50135c4bbdfSmrg
50235c4bbdfSmrgextern Status XkbAllocGeomOverlayRows(XkbOverlayPtr /* overlay */ ,
50335c4bbdfSmrg                                      int       /* num_needed */
50435c4bbdfSmrg    );
50535c4bbdfSmrg
50635c4bbdfSmrgextern Status XkbAllocGeomOverlayKeys(XkbOverlayRowPtr /* row */ ,
50735c4bbdfSmrg                                      int       /* num_needed */
50835c4bbdfSmrg    );
50935c4bbdfSmrg
51035c4bbdfSmrgextern Status XkbAllocGeomDoodads(XkbGeometryPtr /* geom */ ,
51135c4bbdfSmrg                                  int   /* nDoodads */
51235c4bbdfSmrg    );
51335c4bbdfSmrg
51435c4bbdfSmrgextern Status XkbAllocGeomSectionDoodads(XkbSectionPtr /* section */ ,
51535c4bbdfSmrg                                         int    /* nDoodads */
51635c4bbdfSmrg    );
51735c4bbdfSmrg
51835c4bbdfSmrgextern Status XkbAllocGeomOutlines(XkbShapePtr /* shape */ ,
51935c4bbdfSmrg                                   int  /* nOL */
52035c4bbdfSmrg    );
52135c4bbdfSmrg
52235c4bbdfSmrgextern Status XkbAllocGeomRows(XkbSectionPtr /* section */ ,
52335c4bbdfSmrg                               int      /* nRows */
52435c4bbdfSmrg    );
52535c4bbdfSmrg
52635c4bbdfSmrgextern Status XkbAllocGeomPoints(XkbOutlinePtr /* ol */ ,
52735c4bbdfSmrg                                 int    /* nPts */
52835c4bbdfSmrg    );
52935c4bbdfSmrg
53035c4bbdfSmrgextern Status XkbAllocGeomKeys(XkbRowPtr /* row */ ,
53135c4bbdfSmrg                               int      /* nKeys */
53235c4bbdfSmrg    );
53335c4bbdfSmrg
53435c4bbdfSmrgextern Status XkbAllocGeometry(XkbDescPtr /* xkb */ ,
53535c4bbdfSmrg                               XkbGeometrySizesPtr      /* sizes */
53635c4bbdfSmrg    );
53735c4bbdfSmrg
53835c4bbdfSmrgextern Bool
53935c4bbdfSmrg XkbComputeShapeTop(XkbShapePtr /* shape */ ,
54035c4bbdfSmrg                    XkbBoundsPtr        /* bounds */
54135c4bbdfSmrg    );
54235c4bbdfSmrg
54335c4bbdfSmrgextern Bool
54435c4bbdfSmrg XkbComputeShapeBounds(XkbShapePtr      /* shape */
54535c4bbdfSmrg    );
54635c4bbdfSmrg
54735c4bbdfSmrgextern Bool
54835c4bbdfSmrg XkbComputeRowBounds(XkbGeometryPtr /* geom */ ,
54935c4bbdfSmrg                     XkbSectionPtr /* section */ ,
55035c4bbdfSmrg                     XkbRowPtr  /* row */
55135c4bbdfSmrg    );
55235c4bbdfSmrg
55335c4bbdfSmrgextern Bool
55435c4bbdfSmrg XkbComputeSectionBounds(XkbGeometryPtr /* geom */ ,
55535c4bbdfSmrg                         XkbSectionPtr  /* section */
55635c4bbdfSmrg    );
55735c4bbdfSmrg
55835c4bbdfSmrgextern char *XkbFindOverlayForKey(XkbGeometryPtr /* geom */ ,
55935c4bbdfSmrg                                  XkbSectionPtr /* wanted */ ,
56035c4bbdfSmrg                                  char *        /* under */
56135c4bbdfSmrg    );
56235c4bbdfSmrg
56335c4bbdfSmrg#endif                          /* _XKBGEOM_H_ */
564