xkbgeom.h revision 4642e01f
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
94642e01fSmrgdocumentation, and that the name of Silicon Graphics not be
104642e01fSmrgused in advertising or publicity pertaining to distribution
114642e01fSmrgof the software without specific prior written permission.
124642e01fSmrgSilicon 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
164642e01fSmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
174642e01fSmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
184642e01fSmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
194642e01fSmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
204642e01fSmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
214642e01fSmrgDATA 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 XkbAllocGeomKeyAliases		SrvXkbAllocGeomKeyAliases
454642e01fSmrg#define XkbAllocGeomColors		SrvXkbAllocGeomColors
464642e01fSmrg#define XkbAllocGeomDoodads		SrvXkbAllocGeomDoodads
474642e01fSmrg#define XkbAllocGeomKeys		SrvXkbAllocGeomKeys
484642e01fSmrg#define XkbAllocGeomOutlines		SrvXkbAllocGeomOutlines
494642e01fSmrg#define XkbAllocGeomPoints		SrvXkbAllocGeomPoints
504642e01fSmrg#define XkbAllocGeomProps		SrvXkbAllocGeomProps
514642e01fSmrg#define XkbAllocGeomRows		SrvXkbAllocGeomRows
524642e01fSmrg#define XkbAllocGeomSectionDoodads	SrvXkbAllocGeomSectionDoodads
534642e01fSmrg#define XkbAllocGeomSections		SrvXkbAllocGeomSections
544642e01fSmrg#define	XkbAllocGeomOverlays		SrvXkbAllocGeomOverlays
554642e01fSmrg#define	XkbAllocGeomOverlayRows		SrvXkbAllocGeomOverlayRows
564642e01fSmrg#define	XkbAllocGeomOverlayKeys		SrvXkbAllocGeomOverlayKeys
574642e01fSmrg#define XkbAllocGeomShapes		SrvXkbAllocGeomShapes
584642e01fSmrg#define XkbAllocGeometry		SrvXkbAllocGeometry
594642e01fSmrg#define XkbFreeGeomKeyAliases		SrvXkbFreeGeomKeyAliases
604642e01fSmrg#define XkbFreeGeomColors		SrvXkbFreeGeomColors
614642e01fSmrg#define XkbFreeGeomDoodads		SrvXkbFreeGeomDoodads
624642e01fSmrg#define XkbFreeGeomProperties		SrvXkbFreeGeomProperties
634642e01fSmrg#define	XkbFreeGeomOverlayKeys		SrvXkbFreeGeomOverlayKeys
644642e01fSmrg#define	XkbFreeGeomOverlayRows		SrvXkbFreeGeomOverlayRows
654642e01fSmrg#define	XkbFreeGeomOverlays		SrvXkbFreeGeomOverlays
664642e01fSmrg#define	XkbFreeGeomKeys			SrvXkbFreeGeomKeys
674642e01fSmrg#define	XkbFreeGeomRows			SrvXkbFreeGeomRows
684642e01fSmrg#define XkbFreeGeomSections		SrvXkbFreeGeomSections
694642e01fSmrg#define	XkbFreeGeomPoints		SrvXkbFreeGeomPoints
704642e01fSmrg#define	XkbFreeGeomOutlines		SrvXkbFreeGeomOutlines
714642e01fSmrg#define XkbFreeGeomShapes		SrvXkbFreeGeomShapes
724642e01fSmrg#define XkbFreeGeometry			SrvXkbFreeGeometry
734642e01fSmrg
744642e01fSmrgtypedef	struct _XkbProperty {
754642e01fSmrg	char	*name;
764642e01fSmrg	char	*value;
774642e01fSmrg} XkbPropertyRec,*XkbPropertyPtr;
784642e01fSmrg
794642e01fSmrgtypedef struct _XkbColor {
804642e01fSmrg	unsigned int 	pixel;
814642e01fSmrg	char *		spec;
824642e01fSmrg} XkbColorRec,*XkbColorPtr;
834642e01fSmrg
844642e01fSmrgtypedef	struct _XkbPoint {
854642e01fSmrg	short	x;
864642e01fSmrg	short	y;
874642e01fSmrg} XkbPointRec, *XkbPointPtr;
884642e01fSmrg
894642e01fSmrgtypedef struct	_XkbBounds {
904642e01fSmrg	short	x1,y1;
914642e01fSmrg	short	x2,y2;
924642e01fSmrg} XkbBoundsRec, *XkbBoundsPtr;
934642e01fSmrg#define	XkbBoundsWidth(b)	(((b)->x2)-((b)->x1))
944642e01fSmrg#define	XkbBoundsHeight(b)	(((b)->y2)-((b)->y1))
954642e01fSmrg
964642e01fSmrgtypedef struct _XkbOutline {
974642e01fSmrg	unsigned short	num_points;
984642e01fSmrg	unsigned short	sz_points;
994642e01fSmrg	unsigned short	corner_radius;
1004642e01fSmrg	XkbPointPtr	points;
1014642e01fSmrg} XkbOutlineRec, *XkbOutlinePtr;
1024642e01fSmrg
1034642e01fSmrgtypedef struct _XkbShape {
1044642e01fSmrg	Atom	 	 name;
1054642e01fSmrg	unsigned short	 num_outlines;
1064642e01fSmrg	unsigned short	 sz_outlines;
1074642e01fSmrg	XkbOutlinePtr	 outlines;
1084642e01fSmrg	XkbOutlinePtr	 approx;
1094642e01fSmrg	XkbOutlinePtr	 primary;
1104642e01fSmrg	XkbBoundsRec	 bounds;
1114642e01fSmrg} XkbShapeRec, *XkbShapePtr;
1124642e01fSmrg#define	XkbOutlineIndex(s,o)	((int)((o)-&(s)->outlines[0]))
1134642e01fSmrg
1144642e01fSmrgtypedef struct _XkbShapeDoodad {
1154642e01fSmrg	Atom		 name;
1164642e01fSmrg	unsigned char	 type;
1174642e01fSmrg	unsigned char	 priority;
1184642e01fSmrg	short		 top;
1194642e01fSmrg	short		 left;
1204642e01fSmrg	short	 	 angle;
1214642e01fSmrg	unsigned short	 color_ndx;
1224642e01fSmrg	unsigned short	 shape_ndx;
1234642e01fSmrg} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
1244642e01fSmrg#define	XkbShapeDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
1254642e01fSmrg#define	XkbShapeDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
1264642e01fSmrg#define	XkbSetShapeDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
1274642e01fSmrg#define	XkbSetShapeDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
1284642e01fSmrg
1294642e01fSmrgtypedef struct _XkbTextDoodad {
1304642e01fSmrg	Atom		 name;
1314642e01fSmrg	unsigned char	 type;
1324642e01fSmrg	unsigned char	 priority;
1334642e01fSmrg	short	 	 top;
1344642e01fSmrg	short	 	 left;
1354642e01fSmrg	short	 	 angle;
1364642e01fSmrg	short	 	 width;
1374642e01fSmrg	short		 height;
1384642e01fSmrg	unsigned short	 color_ndx;
1394642e01fSmrg	char *		 text;
1404642e01fSmrg	char *		 font;
1414642e01fSmrg} XkbTextDoodadRec, *XkbTextDoodadPtr;
1424642e01fSmrg#define	XkbTextDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
1434642e01fSmrg#define	XkbSetTextDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
1444642e01fSmrg
1454642e01fSmrgtypedef struct _XkbIndicatorDoodad {
1464642e01fSmrg	Atom		 name;
1474642e01fSmrg	unsigned char	 type;
1484642e01fSmrg	unsigned char	 priority;
1494642e01fSmrg	short	 	 top;
1504642e01fSmrg	short	 	 left;
1514642e01fSmrg	short		 angle;
1524642e01fSmrg	unsigned short	 shape_ndx;
1534642e01fSmrg	unsigned short	 on_color_ndx;
1544642e01fSmrg	unsigned short	 off_color_ndx;
1554642e01fSmrg} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
1564642e01fSmrg#define	XkbIndicatorDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
1574642e01fSmrg#define	XkbIndicatorDoodadOnColor(g,d)	(&(g)->colors[(d)->on_color_ndx])
1584642e01fSmrg#define	XkbIndicatorDoodadOffColor(g,d)	(&(g)->colors[(d)->off_color_ndx])
1594642e01fSmrg#define	XkbSetIndicatorDoodadOnColor(g,d,c) \
1604642e01fSmrg				((d)->on_color_ndx= (c)-&(g)->colors[0])
1614642e01fSmrg#define	XkbSetIndicatorDoodadOffColor(g,d,c) \
1624642e01fSmrg				((d)->off_color_ndx= (c)-&(g)->colors[0])
1634642e01fSmrg#define	XkbSetIndicatorDoodadShape(g,d,s) \
1644642e01fSmrg				((d)->shape_ndx= (s)-&(g)->shapes[0])
1654642e01fSmrg
1664642e01fSmrgtypedef struct _XkbLogoDoodad {
1674642e01fSmrg	Atom		 name;
1684642e01fSmrg	unsigned char	 type;
1694642e01fSmrg	unsigned char	 priority;
1704642e01fSmrg	short		 top;
1714642e01fSmrg	short		 left;
1724642e01fSmrg	short	 	 angle;
1734642e01fSmrg	unsigned short	 color_ndx;
1744642e01fSmrg	unsigned short	 shape_ndx;
1754642e01fSmrg	char *		 logo_name;
1764642e01fSmrg} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
1774642e01fSmrg#define	XkbLogoDoodadColor(g,d)		(&(g)->colors[(d)->color_ndx])
1784642e01fSmrg#define	XkbLogoDoodadShape(g,d)		(&(g)->shapes[(d)->shape_ndx])
1794642e01fSmrg#define	XkbSetLogoDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
1804642e01fSmrg#define	XkbSetLogoDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
1814642e01fSmrg
1824642e01fSmrgtypedef struct _XkbAnyDoodad {
1834642e01fSmrg	Atom		 name;
1844642e01fSmrg	unsigned char	 type;
1854642e01fSmrg	unsigned char	 priority;
1864642e01fSmrg	short	 	 top;
1874642e01fSmrg	short	 	 left;
1884642e01fSmrg	short		 angle;
1894642e01fSmrg} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
1904642e01fSmrg
1914642e01fSmrgtypedef union _XkbDoodad {
1924642e01fSmrg	XkbAnyDoodadRec		any;
1934642e01fSmrg	XkbShapeDoodadRec	shape;
1944642e01fSmrg	XkbTextDoodadRec	text;
1954642e01fSmrg	XkbIndicatorDoodadRec	indicator;
1964642e01fSmrg	XkbLogoDoodadRec	logo;
1974642e01fSmrg} XkbDoodadRec, *XkbDoodadPtr;
1984642e01fSmrg
1994642e01fSmrg#define	XkbUnknownDoodad	0
2004642e01fSmrg#define	XkbOutlineDoodad	1
2014642e01fSmrg#define	XkbSolidDoodad		2
2024642e01fSmrg#define	XkbTextDoodad		3
2034642e01fSmrg#define	XkbIndicatorDoodad	4
2044642e01fSmrg#define	XkbLogoDoodad		5
2054642e01fSmrg
2064642e01fSmrgtypedef struct _XkbKey {
2074642e01fSmrg	XkbKeyNameRec	 name;
2084642e01fSmrg	short		 gap;
2094642e01fSmrg	unsigned char	 shape_ndx;
2104642e01fSmrg	unsigned char	 color_ndx;
2114642e01fSmrg} XkbKeyRec, *XkbKeyPtr;
2124642e01fSmrg#define	XkbKeyShape(g,k)	(&(g)->shapes[(k)->shape_ndx])
2134642e01fSmrg#define	XkbKeyColor(g,k)	(&(g)->colors[(k)->color_ndx])
2144642e01fSmrg#define	XkbSetKeyShape(g,k,s)	((k)->shape_ndx= (s)-&(g)->shapes[0])
2154642e01fSmrg#define	XkbSetKeyColor(g,k,c)	((k)->color_ndx= (c)-&(g)->colors[0])
2164642e01fSmrg
2174642e01fSmrgtypedef struct _XkbRow {
2184642e01fSmrg	short	 	top;
2194642e01fSmrg	short	 	left;
2204642e01fSmrg	unsigned short	num_keys;
2214642e01fSmrg	unsigned short	sz_keys;
2224642e01fSmrg	int		vertical;
2234642e01fSmrg	XkbKeyPtr	keys;
2244642e01fSmrg	XkbBoundsRec	bounds;
2254642e01fSmrg} XkbRowRec, *XkbRowPtr;
2264642e01fSmrg
2274642e01fSmrgtypedef struct _XkbSection {
2284642e01fSmrg	Atom		 name;
2294642e01fSmrg	unsigned char	 priority;
2304642e01fSmrg	short	 	 top;
2314642e01fSmrg	short	 	 left;
2324642e01fSmrg	unsigned short	 width;
2334642e01fSmrg	unsigned short	 height;
2344642e01fSmrg	short	 	 angle;
2354642e01fSmrg	unsigned short	 num_rows;
2364642e01fSmrg	unsigned short	 num_doodads;
2374642e01fSmrg	unsigned short	 num_overlays;
2384642e01fSmrg	unsigned short	 sz_rows;
2394642e01fSmrg	unsigned short	 sz_doodads;
2404642e01fSmrg	unsigned short	 sz_overlays;
2414642e01fSmrg	XkbRowPtr	 rows;
2424642e01fSmrg	XkbDoodadPtr	 doodads;
2434642e01fSmrg	XkbBoundsRec	 bounds;
2444642e01fSmrg	struct _XkbOverlay *overlays;
2454642e01fSmrg} XkbSectionRec, *XkbSectionPtr;
2464642e01fSmrg
2474642e01fSmrgtypedef	struct _XkbOverlayKey {
2484642e01fSmrg	XkbKeyNameRec	over;
2494642e01fSmrg	XkbKeyNameRec	under;
2504642e01fSmrg} XkbOverlayKeyRec,*XkbOverlayKeyPtr;
2514642e01fSmrg
2524642e01fSmrgtypedef struct _XkbOverlayRow {
2534642e01fSmrg	unsigned short		row_under;
2544642e01fSmrg	unsigned short		num_keys;
2554642e01fSmrg	unsigned short		sz_keys;
2564642e01fSmrg	XkbOverlayKeyPtr	keys;
2574642e01fSmrg} XkbOverlayRowRec,*XkbOverlayRowPtr;
2584642e01fSmrg
2594642e01fSmrgtypedef struct _XkbOverlay {
2604642e01fSmrg	Atom			name;
2614642e01fSmrg	XkbSectionPtr		section_under;
2624642e01fSmrg	unsigned short		num_rows;
2634642e01fSmrg	unsigned short		sz_rows;
2644642e01fSmrg	XkbOverlayRowPtr	rows;
2654642e01fSmrg	XkbBoundsPtr		bounds;
2664642e01fSmrg} XkbOverlayRec,*XkbOverlayPtr;
2674642e01fSmrg
2684642e01fSmrgtypedef struct _XkbGeometry {
2694642e01fSmrg	Atom		 name;
2704642e01fSmrg	unsigned short	 width_mm;
2714642e01fSmrg	unsigned short	 height_mm;
2724642e01fSmrg	char *		 label_font;
2734642e01fSmrg	XkbColorPtr	 label_color;
2744642e01fSmrg	XkbColorPtr	 base_color;
2754642e01fSmrg	unsigned short	 sz_properties;
2764642e01fSmrg	unsigned short	 sz_colors;
2774642e01fSmrg	unsigned short	 sz_shapes;
2784642e01fSmrg	unsigned short   sz_sections;
2794642e01fSmrg	unsigned short	 sz_doodads;
2804642e01fSmrg	unsigned short	 sz_key_aliases;
2814642e01fSmrg	unsigned short	 num_properties;
2824642e01fSmrg	unsigned short	 num_colors;
2834642e01fSmrg	unsigned short	 num_shapes;
2844642e01fSmrg	unsigned short	 num_sections;
2854642e01fSmrg	unsigned short	 num_doodads;
2864642e01fSmrg	unsigned short	 num_key_aliases;
2874642e01fSmrg	XkbPropertyPtr	 properties;
2884642e01fSmrg	XkbColorPtr	 colors;
2894642e01fSmrg	XkbShapePtr	 shapes;
2904642e01fSmrg	XkbSectionPtr	 sections;
2914642e01fSmrg	XkbDoodadPtr	 doodads;
2924642e01fSmrg	XkbKeyAliasPtr	 key_aliases;
2934642e01fSmrg} XkbGeometryRec;
2944642e01fSmrg#define	XkbGeomColorIndex(g,c)	((int)((c)-&(g)->colors[0]))
2954642e01fSmrg
2964642e01fSmrg#define	XkbGeomPropertiesMask	(1<<0)
2974642e01fSmrg#define	XkbGeomColorsMask	(1<<1)
2984642e01fSmrg#define	XkbGeomShapesMask	(1<<2)
2994642e01fSmrg#define	XkbGeomSectionsMask	(1<<3)
3004642e01fSmrg#define	XkbGeomDoodadsMask	(1<<4)
3014642e01fSmrg#define	XkbGeomKeyAliasesMask	(1<<5)
3024642e01fSmrg#define	XkbGeomAllMask		(0x3f)
3034642e01fSmrg
3044642e01fSmrgtypedef struct _XkbGeometrySizes {
3054642e01fSmrg	unsigned int	which;
3064642e01fSmrg	unsigned short	num_properties;
3074642e01fSmrg	unsigned short	num_colors;
3084642e01fSmrg	unsigned short	num_shapes;
3094642e01fSmrg	unsigned short	num_sections;
3104642e01fSmrg	unsigned short	num_doodads;
3114642e01fSmrg	unsigned short	num_key_aliases;
3124642e01fSmrg} XkbGeometrySizesRec,*XkbGeometrySizesPtr;
3134642e01fSmrg
3144642e01fSmrg_XFUNCPROTOBEGIN
3154642e01fSmrg
3164642e01fSmrgextern	XkbPropertyPtr
3174642e01fSmrgXkbAddGeomProperty(
3184642e01fSmrg    XkbGeometryPtr	/* geom */,
3194642e01fSmrg    char *		/* name */,
3204642e01fSmrg    char *		/* value */
3214642e01fSmrg);
3224642e01fSmrg
3234642e01fSmrgextern	XkbKeyAliasPtr
3244642e01fSmrgXkbAddGeomKeyAlias(
3254642e01fSmrg    XkbGeometryPtr	/* geom */,
3264642e01fSmrg    char *		/* alias */,
3274642e01fSmrg    char *		/* real */
3284642e01fSmrg);
3294642e01fSmrg
3304642e01fSmrgextern	XkbColorPtr
3314642e01fSmrgXkbAddGeomColor(
3324642e01fSmrg    XkbGeometryPtr	/* geom */,
3334642e01fSmrg    char *		/* spec */,
3344642e01fSmrg    unsigned int	/* pixel */
3354642e01fSmrg);
3364642e01fSmrg
3374642e01fSmrgextern	XkbOutlinePtr
3384642e01fSmrgXkbAddGeomOutline(
3394642e01fSmrg    XkbShapePtr		/* shape */,
3404642e01fSmrg    int			/* sz_points */
3414642e01fSmrg);
3424642e01fSmrg
3434642e01fSmrgextern XkbShapePtr
3444642e01fSmrgXkbAddGeomShape(
3454642e01fSmrg    XkbGeometryPtr	/* geom */,
3464642e01fSmrg    Atom		/* name */,
3474642e01fSmrg    int			/* sz_outlines */
3484642e01fSmrg);
3494642e01fSmrg
3504642e01fSmrgextern XkbKeyPtr
3514642e01fSmrgXkbAddGeomKey(
3524642e01fSmrg    XkbRowPtr		/* row */
3534642e01fSmrg);
3544642e01fSmrg
3554642e01fSmrgextern XkbRowPtr
3564642e01fSmrgXkbAddGeomRow(
3574642e01fSmrg    XkbSectionPtr	/* section */,
3584642e01fSmrg    int			/* sz_keys */
3594642e01fSmrg);
3604642e01fSmrg
3614642e01fSmrgextern XkbSectionPtr
3624642e01fSmrgXkbAddGeomSection(
3634642e01fSmrg    XkbGeometryPtr	/* geom */,
3644642e01fSmrg    Atom		/* name */,
3654642e01fSmrg    int			/* sz_rows */,
3664642e01fSmrg    int			/* sz_doodads */,
3674642e01fSmrg    int			/* sz_overlays */
3684642e01fSmrg);
3694642e01fSmrg
3704642e01fSmrgextern XkbOverlayPtr
3714642e01fSmrgXkbAddGeomOverlay(
3724642e01fSmrg    XkbSectionPtr	/* section */,
3734642e01fSmrg    Atom		/* name */,
3744642e01fSmrg    int			/* sz_rows */
3754642e01fSmrg);
3764642e01fSmrg
3774642e01fSmrgextern XkbOverlayRowPtr
3784642e01fSmrgXkbAddGeomOverlayRow(
3794642e01fSmrg    XkbOverlayPtr	/* overlay */,
3804642e01fSmrg    int			/* row_under */,
3814642e01fSmrg    int			/* sz_keys */
3824642e01fSmrg);
3834642e01fSmrg
3844642e01fSmrgextern XkbOverlayKeyPtr
3854642e01fSmrgXkbAddGeomOverlayKey(
3864642e01fSmrg    XkbOverlayPtr	/* overlay */,
3874642e01fSmrg    XkbOverlayRowPtr	/* row */,
3884642e01fSmrg    char *		/* over */,
3894642e01fSmrg    char *		/* under */
3904642e01fSmrg);
3914642e01fSmrg
3924642e01fSmrgextern XkbDoodadPtr
3934642e01fSmrgXkbAddGeomDoodad(
3944642e01fSmrg    XkbGeometryPtr	/* geom */,
3954642e01fSmrg    XkbSectionPtr	/* section */,
3964642e01fSmrg    Atom		/* name */
3974642e01fSmrg);
3984642e01fSmrg
3994642e01fSmrg
4004642e01fSmrgextern void
4014642e01fSmrgXkbFreeGeomKeyAliases(
4024642e01fSmrg    XkbGeometryPtr	/* geom */,
4034642e01fSmrg    int			/* first */,
4044642e01fSmrg    int			/* count */,
4054642e01fSmrg    Bool		/* freeAll */
4064642e01fSmrg);
4074642e01fSmrg
4084642e01fSmrgextern void
4094642e01fSmrgXkbFreeGeomColors(
4104642e01fSmrg    XkbGeometryPtr	/* geom */,
4114642e01fSmrg    int			/* first */,
4124642e01fSmrg    int			/* count */,
4134642e01fSmrg    Bool		/* freeAll */
4144642e01fSmrg);
4154642e01fSmrg
4164642e01fSmrgextern void
4174642e01fSmrgXkbFreeGeomDoodads(
4184642e01fSmrg    XkbDoodadPtr	/* doodads */,
4194642e01fSmrg    int			/* nDoodads */,
4204642e01fSmrg    Bool		/* freeAll */
4214642e01fSmrg);
4224642e01fSmrg
4234642e01fSmrg
4244642e01fSmrgextern void
4254642e01fSmrgXkbFreeGeomProperties(
4264642e01fSmrg    XkbGeometryPtr	/* geom */,
4274642e01fSmrg    int			/* first */,
4284642e01fSmrg    int			/* count */,
4294642e01fSmrg    Bool		/* freeAll */
4304642e01fSmrg);
4314642e01fSmrg
4324642e01fSmrgextern void
4334642e01fSmrgXkbFreeGeomOverlayKeys(
4344642e01fSmrg    XkbOverlayRowPtr	/* row */,
4354642e01fSmrg    int			/* first */,
4364642e01fSmrg    int			/* count */,
4374642e01fSmrg    Bool		/* freeAll */
4384642e01fSmrg);
4394642e01fSmrg
4404642e01fSmrgextern void
4414642e01fSmrgXkbFreeGeomOverlayRows(
4424642e01fSmrg    XkbOverlayPtr	/* overlay */,
4434642e01fSmrg    int			/* first */,
4444642e01fSmrg    int			/* count */,
4454642e01fSmrg    Bool		/* freeAll */
4464642e01fSmrg);
4474642e01fSmrg
4484642e01fSmrgextern void
4494642e01fSmrgXkbFreeGeomOverlays(
4504642e01fSmrg    XkbSectionPtr	/* section */,
4514642e01fSmrg    int			/* first */,
4524642e01fSmrg    int			/* count */,
4534642e01fSmrg    Bool		/* freeAll */
4544642e01fSmrg);
4554642e01fSmrg
4564642e01fSmrgextern void
4574642e01fSmrgXkbFreeGeomKeys(
4584642e01fSmrg    XkbRowPtr		/* row */,
4594642e01fSmrg    int			/* first */,
4604642e01fSmrg    int			/* count */,
4614642e01fSmrg    Bool		/* freeAll */
4624642e01fSmrg);
4634642e01fSmrg
4644642e01fSmrgextern void
4654642e01fSmrgXkbFreeGeomRows(
4664642e01fSmrg    XkbSectionPtr	/* section */,
4674642e01fSmrg    int			/* first */,
4684642e01fSmrg    int			/* count */,
4694642e01fSmrg    Bool		/* freeAll */
4704642e01fSmrg);
4714642e01fSmrg
4724642e01fSmrgextern void
4734642e01fSmrgXkbFreeGeomSections(
4744642e01fSmrg    XkbGeometryPtr	/* geom */,
4754642e01fSmrg    int			/* first */,
4764642e01fSmrg    int			/* count */,
4774642e01fSmrg    Bool		/* freeAll */
4784642e01fSmrg);
4794642e01fSmrg
4804642e01fSmrg
4814642e01fSmrgextern void
4824642e01fSmrgXkbFreeGeomPoints(
4834642e01fSmrg    XkbOutlinePtr	/* outline */,
4844642e01fSmrg    int			/* first */,
4854642e01fSmrg    int			/* count */,
4864642e01fSmrg    Bool		/* freeAll */
4874642e01fSmrg);
4884642e01fSmrg
4894642e01fSmrgextern void
4904642e01fSmrgXkbFreeGeomOutlines(
4914642e01fSmrg    XkbShapePtr		/* shape */,
4924642e01fSmrg    int			/* first */,
4934642e01fSmrg    int			/* count */,
4944642e01fSmrg    Bool		/* freeAll */
4954642e01fSmrg);
4964642e01fSmrg
4974642e01fSmrgextern void
4984642e01fSmrgXkbFreeGeomShapes(
4994642e01fSmrg    XkbGeometryPtr	/* geom */,
5004642e01fSmrg    int			/* first */,
5014642e01fSmrg    int			/* count */,
5024642e01fSmrg    Bool		/* freeAll */
5034642e01fSmrg);
5044642e01fSmrg
5054642e01fSmrgextern void
5064642e01fSmrgXkbFreeGeometry(
5074642e01fSmrg    XkbGeometryPtr	/* geom */,
5084642e01fSmrg    unsigned int	/* which */,
5094642e01fSmrg    Bool		/* freeMap */
5104642e01fSmrg);
5114642e01fSmrg
5124642e01fSmrgextern Status
5134642e01fSmrgXkbAllocGeomProps(
5144642e01fSmrg    XkbGeometryPtr	/* geom */,
5154642e01fSmrg    int			/* nProps */
5164642e01fSmrg);
5174642e01fSmrg
5184642e01fSmrgextern Status
5194642e01fSmrgXkbAllocGeomKeyAliases(
5204642e01fSmrg    XkbGeometryPtr	/* geom */,
5214642e01fSmrg    int			/* nAliases */
5224642e01fSmrg);
5234642e01fSmrg
5244642e01fSmrgextern Status
5254642e01fSmrgXkbAllocGeomColors(
5264642e01fSmrg    XkbGeometryPtr	/* geom */,
5274642e01fSmrg    int			/* nColors */
5284642e01fSmrg);
5294642e01fSmrg
5304642e01fSmrgextern Status
5314642e01fSmrgXkbAllocGeomShapes(
5324642e01fSmrg    XkbGeometryPtr	/* geom */,
5334642e01fSmrg    int			/* nShapes */
5344642e01fSmrg);
5354642e01fSmrg
5364642e01fSmrgextern Status
5374642e01fSmrgXkbAllocGeomSections(
5384642e01fSmrg    XkbGeometryPtr	/* geom */,
5394642e01fSmrg    int			/* nSections */
5404642e01fSmrg);
5414642e01fSmrg
5424642e01fSmrgextern Status
5434642e01fSmrgXkbAllocGeomOverlays(
5444642e01fSmrg    XkbSectionPtr	/* section */,
5454642e01fSmrg    int			/* num_needed */
5464642e01fSmrg);
5474642e01fSmrg
5484642e01fSmrgextern Status
5494642e01fSmrgXkbAllocGeomOverlayRows(
5504642e01fSmrg    XkbOverlayPtr	/* overlay */,
5514642e01fSmrg    int			/* num_needed */
5524642e01fSmrg);
5534642e01fSmrg
5544642e01fSmrgextern Status
5554642e01fSmrgXkbAllocGeomOverlayKeys(
5564642e01fSmrg    XkbOverlayRowPtr	/* row */,
5574642e01fSmrg    int			/* num_needed */
5584642e01fSmrg);
5594642e01fSmrg
5604642e01fSmrgextern Status
5614642e01fSmrgXkbAllocGeomDoodads(
5624642e01fSmrg    XkbGeometryPtr	/* geom */,
5634642e01fSmrg    int			/* nDoodads */
5644642e01fSmrg);
5654642e01fSmrg
5664642e01fSmrgextern Status
5674642e01fSmrgXkbAllocGeomSectionDoodads(
5684642e01fSmrg    XkbSectionPtr	/* section */,
5694642e01fSmrg    int			/* nDoodads */
5704642e01fSmrg);
5714642e01fSmrg
5724642e01fSmrgextern Status
5734642e01fSmrgXkbAllocGeomOutlines(
5744642e01fSmrg    XkbShapePtr		/* shape */,
5754642e01fSmrg    int			/* nOL */
5764642e01fSmrg);
5774642e01fSmrg
5784642e01fSmrgextern Status
5794642e01fSmrgXkbAllocGeomRows(
5804642e01fSmrg    XkbSectionPtr	/* section */,
5814642e01fSmrg    int			/* nRows */
5824642e01fSmrg);
5834642e01fSmrg
5844642e01fSmrgextern Status
5854642e01fSmrgXkbAllocGeomPoints(
5864642e01fSmrg    XkbOutlinePtr	/* ol */,
5874642e01fSmrg    int			/* nPts */
5884642e01fSmrg);
5894642e01fSmrg
5904642e01fSmrgextern Status
5914642e01fSmrgXkbAllocGeomKeys(
5924642e01fSmrg    XkbRowPtr		/* row */,
5934642e01fSmrg    int			/* nKeys */
5944642e01fSmrg);
5954642e01fSmrg
5964642e01fSmrgextern	Status
5974642e01fSmrgXkbAllocGeometry(
5984642e01fSmrg	XkbDescPtr		/* xkb */,
5994642e01fSmrg	XkbGeometrySizesPtr	/* sizes */
6004642e01fSmrg);
6014642e01fSmrg
6024642e01fSmrgextern	Bool
6034642e01fSmrgXkbComputeShapeTop(
6044642e01fSmrg	XkbShapePtr		/* shape */,
6054642e01fSmrg	XkbBoundsPtr		/* bounds */
6064642e01fSmrg);
6074642e01fSmrg
6084642e01fSmrgextern	Bool
6094642e01fSmrgXkbComputeShapeBounds(
6104642e01fSmrg	XkbShapePtr		/* shape */
6114642e01fSmrg);
6124642e01fSmrg
6134642e01fSmrgextern	Bool
6144642e01fSmrgXkbComputeRowBounds(
6154642e01fSmrg	XkbGeometryPtr		/* geom */,
6164642e01fSmrg	XkbSectionPtr		/* section */,
6174642e01fSmrg	XkbRowPtr		/* row */
6184642e01fSmrg);
6194642e01fSmrg
6204642e01fSmrgextern	Bool
6214642e01fSmrgXkbComputeSectionBounds(
6224642e01fSmrg	XkbGeometryPtr		/* geom */,
6234642e01fSmrg	XkbSectionPtr		/* section */
6244642e01fSmrg);
6254642e01fSmrg
6264642e01fSmrgextern	char *
6274642e01fSmrgXkbFindOverlayForKey(
6284642e01fSmrg	XkbGeometryPtr		/* geom */,
6294642e01fSmrg	XkbSectionPtr		/* wanted */,
6304642e01fSmrg	char *			/* under */
6314642e01fSmrg);
6324642e01fSmrg
6334642e01fSmrg_XFUNCPROTOEND
6344642e01fSmrg
6354642e01fSmrg#endif /* _XKBGEOM_H_ */
636