117ca54c3Smrg/************************************************************
217ca54c3SmrgCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
317ca54c3Smrg
417ca54c3SmrgPermission to use, copy, modify, and distribute this
517ca54c3Smrgsoftware and its documentation for any purpose and without
617ca54c3Smrgfee is hereby granted, provided that the above copyright
717ca54c3Smrgnotice appear in all copies and that both that copyright
817ca54c3Smrgnotice and this permission notice appear in supporting
9ea1d6981Smrgdocumentation, and that the name of Silicon Graphics not be
10ea1d6981Smrgused in advertising or publicity pertaining to distribution
1117ca54c3Smrgof the software without specific prior written permission.
12ea1d6981SmrgSilicon Graphics makes no representation about the suitability
1317ca54c3Smrgof this software for any purpose. It is provided "as is"
1417ca54c3Smrgwithout any express or implied warranty.
1517ca54c3Smrg
16ea1d6981SmrgSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17ea1d6981SmrgSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
1817ca54c3SmrgAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
19ea1d6981SmrgGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
20ea1d6981SmrgDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21ea1d6981SmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
2217ca54c3SmrgOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
2317ca54c3SmrgTHE USE OR PERFORMANCE OF THIS SOFTWARE.
2417ca54c3Smrg
2517ca54c3Smrg********************************************************/
2617ca54c3Smrg
2717ca54c3Smrg#ifndef _XKBGEOM_H_
2817ca54c3Smrg#define	_XKBGEOM_H_
2917ca54c3Smrg
3017ca54c3Smrg#include <X11/extensions/XKBstr.h>
3117ca54c3Smrg
3217ca54c3Smrg#ifdef XKB_IN_SERVER
3317ca54c3Smrg#define XkbAddGeomKeyAlias 		SrvXkbAddGeomKeyAlias
3417ca54c3Smrg#define XkbAddGeomColor 		SrvXkbAddGeomColor
3517ca54c3Smrg#define XkbAddGeomDoodad		SrvXkbAddGeomDoodad
3617ca54c3Smrg#define XkbAddGeomKey			SrvXkbAddGeomKey
3717ca54c3Smrg#define XkbAddGeomOutline		SrvXkbAddGeomOutline
3817ca54c3Smrg#define XkbAddGeomOverlay		SrvXkbAddGeomOverlay
3917ca54c3Smrg#define XkbAddGeomOverlayRow		SrvXkbAddGeomOverlayRow
4017ca54c3Smrg#define	XkbAddGeomOverlayKey		SrvXkbAddGeomOverlayKey
4117ca54c3Smrg#define XkbAddGeomProperty		SrvXkbAddGeomProperty
4217ca54c3Smrg#define XkbAddGeomRow			SrvXkbAddGeomRow
4317ca54c3Smrg#define XkbAddGeomSection		SrvXkbAddGeomSection
4417ca54c3Smrg#define XkbAddGeomShape			SrvXkbAddGeomShape
4517ca54c3Smrg#define XkbAllocGeomKeyAliases		SrvXkbAllocGeomKeyAliases
4617ca54c3Smrg#define XkbAllocGeomColors		SrvXkbAllocGeomColors
4717ca54c3Smrg#define XkbAllocGeomDoodads		SrvXkbAllocGeomDoodads
4817ca54c3Smrg#define XkbAllocGeomKeys		SrvXkbAllocGeomKeys
4917ca54c3Smrg#define XkbAllocGeomOutlines		SrvXkbAllocGeomOutlines
5017ca54c3Smrg#define XkbAllocGeomPoints		SrvXkbAllocGeomPoints
5117ca54c3Smrg#define XkbAllocGeomProps		SrvXkbAllocGeomProps
5217ca54c3Smrg#define XkbAllocGeomRows		SrvXkbAllocGeomRows
5317ca54c3Smrg#define XkbAllocGeomSectionDoodads	SrvXkbAllocGeomSectionDoodads
5417ca54c3Smrg#define XkbAllocGeomSections		SrvXkbAllocGeomSections
5517ca54c3Smrg#define	XkbAllocGeomOverlays		SrvXkbAllocGeomOverlays
5617ca54c3Smrg#define	XkbAllocGeomOverlayRows		SrvXkbAllocGeomOverlayRows
5717ca54c3Smrg#define	XkbAllocGeomOverlayKeys		SrvXkbAllocGeomOverlayKeys
5817ca54c3Smrg#define XkbAllocGeomShapes		SrvXkbAllocGeomShapes
5917ca54c3Smrg#define XkbAllocGeometry		SrvXkbAllocGeometry
6017ca54c3Smrg#define XkbFreeGeomKeyAliases		SrvXkbFreeGeomKeyAliases
6117ca54c3Smrg#define XkbFreeGeomColors		SrvXkbFreeGeomColors
6217ca54c3Smrg#define XkbFreeGeomDoodads		SrvXkbFreeGeomDoodads
6317ca54c3Smrg#define XkbFreeGeomProperties		SrvXkbFreeGeomProperties
6417ca54c3Smrg#define	XkbFreeGeomOverlayKeys		SrvXkbFreeGeomOverlayKeys
6517ca54c3Smrg#define	XkbFreeGeomOverlayRows		SrvXkbFreeGeomOverlayRows
6617ca54c3Smrg#define	XkbFreeGeomOverlays		SrvXkbFreeGeomOverlays
6717ca54c3Smrg#define	XkbFreeGeomKeys			SrvXkbFreeGeomKeys
6817ca54c3Smrg#define	XkbFreeGeomRows			SrvXkbFreeGeomRows
6917ca54c3Smrg#define XkbFreeGeomSections		SrvXkbFreeGeomSections
7017ca54c3Smrg#define	XkbFreeGeomPoints		SrvXkbFreeGeomPoints
7117ca54c3Smrg#define	XkbFreeGeomOutlines		SrvXkbFreeGeomOutlines
7217ca54c3Smrg#define XkbFreeGeomShapes		SrvXkbFreeGeomShapes
7317ca54c3Smrg#define XkbFreeGeometry			SrvXkbFreeGeometry
7417ca54c3Smrg#endif
7517ca54c3Smrg
7617ca54c3Smrgtypedef	struct _XkbProperty {
7717ca54c3Smrg	char	*name;
7817ca54c3Smrg	char	*value;
7917ca54c3Smrg} XkbPropertyRec,*XkbPropertyPtr;
8017ca54c3Smrg
8117ca54c3Smrgtypedef struct _XkbColor {
8217ca54c3Smrg	unsigned int 	pixel;
8317ca54c3Smrg	char *		spec;
8417ca54c3Smrg} XkbColorRec,*XkbColorPtr;
8517ca54c3Smrg
8617ca54c3Smrgtypedef	struct _XkbPoint {
8717ca54c3Smrg	short	x;
8817ca54c3Smrg	short	y;
8917ca54c3Smrg} XkbPointRec, *XkbPointPtr;
9017ca54c3Smrg
9117ca54c3Smrgtypedef struct	_XkbBounds {
9217ca54c3Smrg	short	x1,y1;
9317ca54c3Smrg	short	x2,y2;
9417ca54c3Smrg} XkbBoundsRec, *XkbBoundsPtr;
9517ca54c3Smrg#define	XkbBoundsWidth(b)	(((b)->x2)-((b)->x1))
9617ca54c3Smrg#define	XkbBoundsHeight(b)	(((b)->y2)-((b)->y1))
9717ca54c3Smrg
9817ca54c3Smrg/*
9917ca54c3Smrg * In the following structs, this pattern is used for dynamically sized arrays:
10017ca54c3Smrg * foo is an array for which sz_foo entries are allocated & num_foo are used
10117ca54c3Smrg */
10217ca54c3Smrg
10317ca54c3Smrgtypedef struct _XkbOutline {
10417ca54c3Smrg	unsigned short	num_points;
10517ca54c3Smrg	unsigned short	sz_points;
10617ca54c3Smrg	unsigned short	corner_radius;
10717ca54c3Smrg	XkbPointPtr	points;
10817ca54c3Smrg} XkbOutlineRec, *XkbOutlinePtr;
10917ca54c3Smrg
11017ca54c3Smrgtypedef struct _XkbShape {
11117ca54c3Smrg	Atom	 	 name;
11217ca54c3Smrg	unsigned short	 num_outlines;
11317ca54c3Smrg	unsigned short	 sz_outlines;
11417ca54c3Smrg	XkbOutlinePtr	 outlines;
11517ca54c3Smrg	XkbOutlinePtr	 approx;
11617ca54c3Smrg	XkbOutlinePtr	 primary;
11717ca54c3Smrg	XkbBoundsRec	 bounds;
11817ca54c3Smrg} XkbShapeRec, *XkbShapePtr;
11917ca54c3Smrg#define	XkbOutlineIndex(s,o)	((int)((o)-&(s)->outlines[0]))
12017ca54c3Smrg
12117ca54c3Smrgtypedef struct _XkbShapeDoodad {
12217ca54c3Smrg	Atom		 name;
12317ca54c3Smrg	unsigned char	 type;
12417ca54c3Smrg	unsigned char	 priority;
12517ca54c3Smrg	short		 top;
12617ca54c3Smrg	short		 left;
12717ca54c3Smrg	short	 	 angle;
12817ca54c3Smrg	unsigned short	 color_ndx;
12917ca54c3Smrg	unsigned short	 shape_ndx;
13017ca54c3Smrg} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
13117ca54c3Smrg#define	XkbShapeDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
13217ca54c3Smrg#define	XkbShapeDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
13317ca54c3Smrg#define	XkbSetShapeDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
13417ca54c3Smrg#define	XkbSetShapeDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
13517ca54c3Smrg
13617ca54c3Smrgtypedef struct _XkbTextDoodad {
13717ca54c3Smrg	Atom		 name;
13817ca54c3Smrg	unsigned char	 type;
13917ca54c3Smrg	unsigned char	 priority;
14017ca54c3Smrg	short	 	 top;
14117ca54c3Smrg	short	 	 left;
14217ca54c3Smrg	short	 	 angle;
14317ca54c3Smrg	short	 	 width;
14417ca54c3Smrg	short		 height;
14517ca54c3Smrg	unsigned short	 color_ndx;
14617ca54c3Smrg	char *		 text;
14717ca54c3Smrg	char *		 font;
14817ca54c3Smrg} XkbTextDoodadRec, *XkbTextDoodadPtr;
14917ca54c3Smrg#define	XkbTextDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
15017ca54c3Smrg#define	XkbSetTextDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
15117ca54c3Smrg
15217ca54c3Smrgtypedef struct _XkbIndicatorDoodad {
15317ca54c3Smrg	Atom		 name;
15417ca54c3Smrg	unsigned char	 type;
15517ca54c3Smrg	unsigned char	 priority;
15617ca54c3Smrg	short	 	 top;
15717ca54c3Smrg	short	 	 left;
15817ca54c3Smrg	short		 angle;
15917ca54c3Smrg	unsigned short	 shape_ndx;
16017ca54c3Smrg	unsigned short	 on_color_ndx;
16117ca54c3Smrg	unsigned short	 off_color_ndx;
16217ca54c3Smrg} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
16317ca54c3Smrg#define	XkbIndicatorDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
16417ca54c3Smrg#define	XkbIndicatorDoodadOnColor(g,d)	(&(g)->colors[(d)->on_color_ndx])
16517ca54c3Smrg#define	XkbIndicatorDoodadOffColor(g,d)	(&(g)->colors[(d)->off_color_ndx])
16617ca54c3Smrg#define	XkbSetIndicatorDoodadOnColor(g,d,c) \
16717ca54c3Smrg				((d)->on_color_ndx= (c)-&(g)->colors[0])
16817ca54c3Smrg#define	XkbSetIndicatorDoodadOffColor(g,d,c) \
16917ca54c3Smrg				((d)->off_color_ndx= (c)-&(g)->colors[0])
17017ca54c3Smrg#define	XkbSetIndicatorDoodadShape(g,d,s) \
17117ca54c3Smrg				((d)->shape_ndx= (s)-&(g)->shapes[0])
17217ca54c3Smrg
17317ca54c3Smrgtypedef struct _XkbLogoDoodad {
17417ca54c3Smrg	Atom		 name;
17517ca54c3Smrg	unsigned char	 type;
17617ca54c3Smrg	unsigned char	 priority;
17717ca54c3Smrg	short		 top;
17817ca54c3Smrg	short		 left;
17917ca54c3Smrg	short	 	 angle;
18017ca54c3Smrg	unsigned short	 color_ndx;
18117ca54c3Smrg	unsigned short	 shape_ndx;
18217ca54c3Smrg	char *		 logo_name;
18317ca54c3Smrg} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
18417ca54c3Smrg#define	XkbLogoDoodadColor(g,d)		(&(g)->colors[(d)->color_ndx])
18517ca54c3Smrg#define	XkbLogoDoodadShape(g,d)		(&(g)->shapes[(d)->shape_ndx])
18617ca54c3Smrg#define	XkbSetLogoDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
18717ca54c3Smrg#define	XkbSetLogoDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
18817ca54c3Smrg
18917ca54c3Smrgtypedef struct _XkbAnyDoodad {
19017ca54c3Smrg	Atom		 name;
19117ca54c3Smrg	unsigned char	 type;
19217ca54c3Smrg	unsigned char	 priority;
19317ca54c3Smrg	short	 	 top;
19417ca54c3Smrg	short	 	 left;
19517ca54c3Smrg	short		 angle;
19617ca54c3Smrg} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
19717ca54c3Smrg
19817ca54c3Smrgtypedef union _XkbDoodad {
19917ca54c3Smrg	XkbAnyDoodadRec		any;
20017ca54c3Smrg	XkbShapeDoodadRec	shape;
20117ca54c3Smrg	XkbTextDoodadRec	text;
20217ca54c3Smrg	XkbIndicatorDoodadRec	indicator;
20317ca54c3Smrg	XkbLogoDoodadRec	logo;
20417ca54c3Smrg} XkbDoodadRec, *XkbDoodadPtr;
20517ca54c3Smrg
20617ca54c3Smrg#define	XkbUnknownDoodad	0
20717ca54c3Smrg#define	XkbOutlineDoodad	1
20817ca54c3Smrg#define	XkbSolidDoodad		2
20917ca54c3Smrg#define	XkbTextDoodad		3
21017ca54c3Smrg#define	XkbIndicatorDoodad	4
21117ca54c3Smrg#define	XkbLogoDoodad		5
21217ca54c3Smrg
21317ca54c3Smrgtypedef struct _XkbKey {
21417ca54c3Smrg	XkbKeyNameRec	 name;
21517ca54c3Smrg	short		 gap;
21617ca54c3Smrg	unsigned char	 shape_ndx;
21717ca54c3Smrg	unsigned char	 color_ndx;
21817ca54c3Smrg} XkbKeyRec, *XkbKeyPtr;
21917ca54c3Smrg#define	XkbKeyShape(g,k)	(&(g)->shapes[(k)->shape_ndx])
22017ca54c3Smrg#define	XkbKeyColor(g,k)	(&(g)->colors[(k)->color_ndx])
22117ca54c3Smrg#define	XkbSetKeyShape(g,k,s)	((k)->shape_ndx= (s)-&(g)->shapes[0])
22217ca54c3Smrg#define	XkbSetKeyColor(g,k,c)	((k)->color_ndx= (c)-&(g)->colors[0])
22317ca54c3Smrg
22417ca54c3Smrgtypedef struct _XkbRow {
22517ca54c3Smrg	short	 	top;
22617ca54c3Smrg	short	 	left;
22717ca54c3Smrg	unsigned short	num_keys;
22817ca54c3Smrg	unsigned short	sz_keys;
22917ca54c3Smrg	int		vertical;
23017ca54c3Smrg	XkbKeyPtr	keys;
23117ca54c3Smrg	XkbBoundsRec	bounds;
23217ca54c3Smrg} XkbRowRec, *XkbRowPtr;
23317ca54c3Smrg
23417ca54c3Smrgtypedef struct _XkbSection {
23517ca54c3Smrg	Atom		 name;
23617ca54c3Smrg	unsigned char	 priority;
23717ca54c3Smrg	short	 	 top;
23817ca54c3Smrg	short	 	 left;
23917ca54c3Smrg	unsigned short	 width;
24017ca54c3Smrg	unsigned short	 height;
24117ca54c3Smrg	short	 	 angle;
24217ca54c3Smrg	unsigned short	 num_rows;
24317ca54c3Smrg	unsigned short	 num_doodads;
24417ca54c3Smrg	unsigned short	 num_overlays;
24517ca54c3Smrg	unsigned short	 sz_rows;
24617ca54c3Smrg	unsigned short	 sz_doodads;
24717ca54c3Smrg	unsigned short	 sz_overlays;
24817ca54c3Smrg	XkbRowPtr	 rows;
24917ca54c3Smrg	XkbDoodadPtr	 doodads;
25017ca54c3Smrg	XkbBoundsRec	 bounds;
25117ca54c3Smrg	struct _XkbOverlay *overlays;
25217ca54c3Smrg} XkbSectionRec, *XkbSectionPtr;
25317ca54c3Smrg
25417ca54c3Smrgtypedef	struct _XkbOverlayKey {
25517ca54c3Smrg	XkbKeyNameRec	over;
25617ca54c3Smrg	XkbKeyNameRec	under;
25717ca54c3Smrg} XkbOverlayKeyRec,*XkbOverlayKeyPtr;
25817ca54c3Smrg
25917ca54c3Smrgtypedef struct _XkbOverlayRow {
26017ca54c3Smrg	unsigned short		row_under;
26117ca54c3Smrg	unsigned short		num_keys;
26217ca54c3Smrg	unsigned short		sz_keys;
26317ca54c3Smrg	XkbOverlayKeyPtr	keys;
26417ca54c3Smrg} XkbOverlayRowRec,*XkbOverlayRowPtr;
26517ca54c3Smrg
26617ca54c3Smrgtypedef struct _XkbOverlay {
26717ca54c3Smrg	Atom			name;
26817ca54c3Smrg	XkbSectionPtr		section_under;
26917ca54c3Smrg	unsigned short		num_rows;
27017ca54c3Smrg	unsigned short		sz_rows;
27117ca54c3Smrg	XkbOverlayRowPtr	rows;
27217ca54c3Smrg	XkbBoundsPtr		bounds;
27317ca54c3Smrg} XkbOverlayRec,*XkbOverlayPtr;
27417ca54c3Smrg
27517ca54c3Smrgtypedef struct _XkbGeometry {
27617ca54c3Smrg	Atom		 name;
27717ca54c3Smrg	unsigned short	 width_mm;
27817ca54c3Smrg	unsigned short	 height_mm;
27917ca54c3Smrg	char *		 label_font;
28017ca54c3Smrg	XkbColorPtr	 label_color;
28117ca54c3Smrg	XkbColorPtr	 base_color;
28217ca54c3Smrg	unsigned short	 sz_properties;
28317ca54c3Smrg	unsigned short	 sz_colors;
28417ca54c3Smrg	unsigned short	 sz_shapes;
28517ca54c3Smrg	unsigned short   sz_sections;
28617ca54c3Smrg	unsigned short	 sz_doodads;
28717ca54c3Smrg	unsigned short	 sz_key_aliases;
28817ca54c3Smrg	unsigned short	 num_properties;
28917ca54c3Smrg	unsigned short	 num_colors;
29017ca54c3Smrg	unsigned short	 num_shapes;
29117ca54c3Smrg	unsigned short	 num_sections;
29217ca54c3Smrg	unsigned short	 num_doodads;
29317ca54c3Smrg	unsigned short	 num_key_aliases;
29417ca54c3Smrg	XkbPropertyPtr	 properties;
29517ca54c3Smrg	XkbColorPtr	 colors;
29617ca54c3Smrg	XkbShapePtr	 shapes;
29717ca54c3Smrg	XkbSectionPtr	 sections;
29817ca54c3Smrg	XkbDoodadPtr	 doodads;
29917ca54c3Smrg	XkbKeyAliasPtr	 key_aliases;
30017ca54c3Smrg} XkbGeometryRec;
30117ca54c3Smrg#define	XkbGeomColorIndex(g,c)	((int)((c)-&(g)->colors[0]))
30217ca54c3Smrg
30317ca54c3Smrg#define	XkbGeomPropertiesMask	(1<<0)
30417ca54c3Smrg#define	XkbGeomColorsMask	(1<<1)
30517ca54c3Smrg#define	XkbGeomShapesMask	(1<<2)
30617ca54c3Smrg#define	XkbGeomSectionsMask	(1<<3)
30717ca54c3Smrg#define	XkbGeomDoodadsMask	(1<<4)
30817ca54c3Smrg#define	XkbGeomKeyAliasesMask	(1<<5)
30917ca54c3Smrg#define	XkbGeomAllMask		(0x3f)
31017ca54c3Smrg
31117ca54c3Smrgtypedef struct _XkbGeometrySizes {
31217ca54c3Smrg	unsigned int	which;
31317ca54c3Smrg	unsigned short	num_properties;
31417ca54c3Smrg	unsigned short	num_colors;
31517ca54c3Smrg	unsigned short	num_shapes;
31617ca54c3Smrg	unsigned short	num_sections;
31717ca54c3Smrg	unsigned short	num_doodads;
31817ca54c3Smrg	unsigned short	num_key_aliases;
31917ca54c3Smrg} XkbGeometrySizesRec,*XkbGeometrySizesPtr;
32017ca54c3Smrg
32117ca54c3Smrg_XFUNCPROTOBEGIN
32217ca54c3Smrg
32317ca54c3Smrgextern	XkbPropertyPtr
32417ca54c3SmrgXkbAddGeomProperty(
32517ca54c3Smrg    XkbGeometryPtr	/* geom */,
32617ca54c3Smrg    char *		/* name */,
32717ca54c3Smrg    char *		/* value */
32817ca54c3Smrg);
32917ca54c3Smrg
33017ca54c3Smrgextern	XkbKeyAliasPtr
33117ca54c3SmrgXkbAddGeomKeyAlias(
33217ca54c3Smrg    XkbGeometryPtr	/* geom */,
33317ca54c3Smrg    char *		/* alias */,
33417ca54c3Smrg    char *		/* real */
33517ca54c3Smrg);
33617ca54c3Smrg
33717ca54c3Smrgextern	XkbColorPtr
33817ca54c3SmrgXkbAddGeomColor(
33917ca54c3Smrg    XkbGeometryPtr	/* geom */,
34017ca54c3Smrg    char *		/* spec */,
34117ca54c3Smrg    unsigned int	/* pixel */
34217ca54c3Smrg);
34317ca54c3Smrg
34417ca54c3Smrgextern	XkbOutlinePtr
34517ca54c3SmrgXkbAddGeomOutline(
34617ca54c3Smrg    XkbShapePtr		/* shape */,
34717ca54c3Smrg    int			/* sz_points */
34817ca54c3Smrg);
34917ca54c3Smrg
35017ca54c3Smrgextern XkbShapePtr
35117ca54c3SmrgXkbAddGeomShape(
35217ca54c3Smrg    XkbGeometryPtr	/* geom */,
35317ca54c3Smrg    Atom		/* name */,
35417ca54c3Smrg    int			/* sz_outlines */
35517ca54c3Smrg);
35617ca54c3Smrg
35717ca54c3Smrgextern XkbKeyPtr
35817ca54c3SmrgXkbAddGeomKey(
35917ca54c3Smrg    XkbRowPtr		/* row */
36017ca54c3Smrg);
36117ca54c3Smrg
36217ca54c3Smrgextern XkbRowPtr
36317ca54c3SmrgXkbAddGeomRow(
36417ca54c3Smrg    XkbSectionPtr	/* section */,
36517ca54c3Smrg    int			/* sz_keys */
36617ca54c3Smrg);
36717ca54c3Smrg
36817ca54c3Smrgextern XkbSectionPtr
36917ca54c3SmrgXkbAddGeomSection(
37017ca54c3Smrg    XkbGeometryPtr	/* geom */,
37117ca54c3Smrg    Atom		/* name */,
37217ca54c3Smrg    int			/* sz_rows */,
37317ca54c3Smrg    int			/* sz_doodads */,
37417ca54c3Smrg    int			/* sz_overlays */
37517ca54c3Smrg);
37617ca54c3Smrg
37717ca54c3Smrgextern XkbOverlayPtr
37817ca54c3SmrgXkbAddGeomOverlay(
37917ca54c3Smrg    XkbSectionPtr	/* section */,
38017ca54c3Smrg    Atom		/* name */,
38117ca54c3Smrg    int			/* sz_rows */
38217ca54c3Smrg);
38317ca54c3Smrg
38417ca54c3Smrgextern XkbOverlayRowPtr
38517ca54c3SmrgXkbAddGeomOverlayRow(
38617ca54c3Smrg    XkbOverlayPtr	/* overlay */,
38717ca54c3Smrg    int			/* row_under */,
38817ca54c3Smrg    int			/* sz_keys */
38917ca54c3Smrg);
39017ca54c3Smrg
39117ca54c3Smrgextern XkbOverlayKeyPtr
39217ca54c3SmrgXkbAddGeomOverlayKey(
39317ca54c3Smrg    XkbOverlayPtr	/* overlay */,
39417ca54c3Smrg    XkbOverlayRowPtr	/* row */,
39517ca54c3Smrg    char *		/* over */,
39617ca54c3Smrg    char *		/* under */
39717ca54c3Smrg);
39817ca54c3Smrg
39917ca54c3Smrgextern XkbDoodadPtr
40017ca54c3SmrgXkbAddGeomDoodad(
40117ca54c3Smrg    XkbGeometryPtr	/* geom */,
40217ca54c3Smrg    XkbSectionPtr	/* section */,
40317ca54c3Smrg    Atom		/* name */
40417ca54c3Smrg);
40517ca54c3Smrg
40617ca54c3Smrg
40717ca54c3Smrgextern void
40817ca54c3SmrgXkbFreeGeomKeyAliases(
40917ca54c3Smrg    XkbGeometryPtr	/* geom */,
41017ca54c3Smrg    int			/* first */,
41117ca54c3Smrg    int			/* count */,
41217ca54c3Smrg    Bool		/* freeAll */
41317ca54c3Smrg);
41417ca54c3Smrg
41517ca54c3Smrgextern void
41617ca54c3SmrgXkbFreeGeomColors(
41717ca54c3Smrg    XkbGeometryPtr	/* geom */,
41817ca54c3Smrg    int			/* first */,
41917ca54c3Smrg    int			/* count */,
42017ca54c3Smrg    Bool		/* freeAll */
42117ca54c3Smrg);
42217ca54c3Smrg
42317ca54c3Smrgextern void
42417ca54c3SmrgXkbFreeGeomDoodads(
42517ca54c3Smrg    XkbDoodadPtr	/* doodads */,
42617ca54c3Smrg    int			/* nDoodads */,
42717ca54c3Smrg    Bool		/* freeAll */
42817ca54c3Smrg);
42917ca54c3Smrg
43017ca54c3Smrg
43117ca54c3Smrgextern void
43217ca54c3SmrgXkbFreeGeomProperties(
43317ca54c3Smrg    XkbGeometryPtr	/* geom */,
43417ca54c3Smrg    int			/* first */,
43517ca54c3Smrg    int			/* count */,
43617ca54c3Smrg    Bool		/* freeAll */
43717ca54c3Smrg);
43817ca54c3Smrg
43917ca54c3Smrgextern void
44017ca54c3SmrgXkbFreeGeomOverlayKeys(
44117ca54c3Smrg    XkbOverlayRowPtr	/* row */,
44217ca54c3Smrg    int			/* first */,
44317ca54c3Smrg    int			/* count */,
44417ca54c3Smrg    Bool		/* freeAll */
44517ca54c3Smrg);
44617ca54c3Smrg
44717ca54c3Smrgextern void
44817ca54c3SmrgXkbFreeGeomOverlayRows(
44917ca54c3Smrg    XkbOverlayPtr	/* overlay */,
45017ca54c3Smrg    int			/* first */,
45117ca54c3Smrg    int			/* count */,
45217ca54c3Smrg    Bool		/* freeAll */
45317ca54c3Smrg);
45417ca54c3Smrg
45517ca54c3Smrgextern void
45617ca54c3SmrgXkbFreeGeomOverlays(
45717ca54c3Smrg    XkbSectionPtr	/* section */,
45817ca54c3Smrg    int			/* first */,
45917ca54c3Smrg    int			/* count */,
46017ca54c3Smrg    Bool		/* freeAll */
46117ca54c3Smrg);
46217ca54c3Smrg
46317ca54c3Smrgextern void
46417ca54c3SmrgXkbFreeGeomKeys(
46517ca54c3Smrg    XkbRowPtr		/* row */,
46617ca54c3Smrg    int			/* first */,
46717ca54c3Smrg    int			/* count */,
46817ca54c3Smrg    Bool		/* freeAll */
46917ca54c3Smrg);
47017ca54c3Smrg
47117ca54c3Smrgextern void
47217ca54c3SmrgXkbFreeGeomRows(
47317ca54c3Smrg    XkbSectionPtr	/* section */,
47417ca54c3Smrg    int			/* first */,
47517ca54c3Smrg    int			/* count */,
47617ca54c3Smrg    Bool		/* freeAll */
47717ca54c3Smrg);
47817ca54c3Smrg
47917ca54c3Smrgextern void
48017ca54c3SmrgXkbFreeGeomSections(
48117ca54c3Smrg    XkbGeometryPtr	/* geom */,
48217ca54c3Smrg    int			/* first */,
48317ca54c3Smrg    int			/* count */,
48417ca54c3Smrg    Bool		/* freeAll */
48517ca54c3Smrg);
48617ca54c3Smrg
48717ca54c3Smrg
48817ca54c3Smrgextern void
48917ca54c3SmrgXkbFreeGeomPoints(
49017ca54c3Smrg    XkbOutlinePtr	/* outline */,
49117ca54c3Smrg    int			/* first */,
49217ca54c3Smrg    int			/* count */,
49317ca54c3Smrg    Bool		/* freeAll */
49417ca54c3Smrg);
49517ca54c3Smrg
49617ca54c3Smrgextern void
49717ca54c3SmrgXkbFreeGeomOutlines(
49817ca54c3Smrg    XkbShapePtr		/* shape */,
49917ca54c3Smrg    int			/* first */,
50017ca54c3Smrg    int			/* count */,
50117ca54c3Smrg    Bool		/* freeAll */
50217ca54c3Smrg);
50317ca54c3Smrg
50417ca54c3Smrgextern void
50517ca54c3SmrgXkbFreeGeomShapes(
50617ca54c3Smrg    XkbGeometryPtr	/* geom */,
50717ca54c3Smrg    int			/* first */,
50817ca54c3Smrg    int			/* count */,
50917ca54c3Smrg    Bool		/* freeAll */
51017ca54c3Smrg);
51117ca54c3Smrg
51217ca54c3Smrgextern void
51317ca54c3SmrgXkbFreeGeometry(
51417ca54c3Smrg    XkbGeometryPtr	/* geom */,
51517ca54c3Smrg    unsigned int	/* which */,
51617ca54c3Smrg    Bool		/* freeMap */
51717ca54c3Smrg);
51817ca54c3Smrg
51917ca54c3Smrgextern Status
52017ca54c3SmrgXkbAllocGeomProps(
52117ca54c3Smrg    XkbGeometryPtr	/* geom */,
52217ca54c3Smrg    int			/* nProps */
52317ca54c3Smrg);
52417ca54c3Smrg
52517ca54c3Smrgextern Status
52617ca54c3SmrgXkbAllocGeomKeyAliases(
52717ca54c3Smrg    XkbGeometryPtr	/* geom */,
52817ca54c3Smrg    int			/* nAliases */
52917ca54c3Smrg);
53017ca54c3Smrg
53117ca54c3Smrgextern Status
53217ca54c3SmrgXkbAllocGeomColors(
53317ca54c3Smrg    XkbGeometryPtr	/* geom */,
53417ca54c3Smrg    int			/* nColors */
53517ca54c3Smrg);
53617ca54c3Smrg
53717ca54c3Smrgextern Status
53817ca54c3SmrgXkbAllocGeomShapes(
53917ca54c3Smrg    XkbGeometryPtr	/* geom */,
54017ca54c3Smrg    int			/* nShapes */
54117ca54c3Smrg);
54217ca54c3Smrg
54317ca54c3Smrgextern Status
54417ca54c3SmrgXkbAllocGeomSections(
54517ca54c3Smrg    XkbGeometryPtr	/* geom */,
54617ca54c3Smrg    int			/* nSections */
54717ca54c3Smrg);
54817ca54c3Smrg
54917ca54c3Smrgextern Status
55017ca54c3SmrgXkbAllocGeomOverlays(
55117ca54c3Smrg    XkbSectionPtr	/* section */,
55217ca54c3Smrg    int			/* num_needed */
55317ca54c3Smrg);
55417ca54c3Smrg
55517ca54c3Smrgextern Status
55617ca54c3SmrgXkbAllocGeomOverlayRows(
55717ca54c3Smrg    XkbOverlayPtr	/* overlay */,
55817ca54c3Smrg    int			/* num_needed */
55917ca54c3Smrg);
56017ca54c3Smrg
56117ca54c3Smrgextern Status
56217ca54c3SmrgXkbAllocGeomOverlayKeys(
56317ca54c3Smrg    XkbOverlayRowPtr	/* row */,
56417ca54c3Smrg    int			/* num_needed */
56517ca54c3Smrg);
56617ca54c3Smrg
56717ca54c3Smrgextern Status
56817ca54c3SmrgXkbAllocGeomDoodads(
56917ca54c3Smrg    XkbGeometryPtr	/* geom */,
57017ca54c3Smrg    int			/* nDoodads */
57117ca54c3Smrg);
57217ca54c3Smrg
57317ca54c3Smrgextern Status
57417ca54c3SmrgXkbAllocGeomSectionDoodads(
57517ca54c3Smrg    XkbSectionPtr	/* section */,
57617ca54c3Smrg    int			/* nDoodads */
57717ca54c3Smrg);
57817ca54c3Smrg
57917ca54c3Smrgextern Status
58017ca54c3SmrgXkbAllocGeomOutlines(
58117ca54c3Smrg    XkbShapePtr		/* shape */,
58217ca54c3Smrg    int			/* nOL */
58317ca54c3Smrg);
58417ca54c3Smrg
58517ca54c3Smrgextern Status
58617ca54c3SmrgXkbAllocGeomRows(
58717ca54c3Smrg    XkbSectionPtr	/* section */,
58817ca54c3Smrg    int			/* nRows */
58917ca54c3Smrg);
59017ca54c3Smrg
59117ca54c3Smrgextern Status
59217ca54c3SmrgXkbAllocGeomPoints(
59317ca54c3Smrg    XkbOutlinePtr	/* ol */,
59417ca54c3Smrg    int			/* nPts */
59517ca54c3Smrg);
59617ca54c3Smrg
59717ca54c3Smrgextern Status
59817ca54c3SmrgXkbAllocGeomKeys(
59917ca54c3Smrg    XkbRowPtr		/* row */,
60017ca54c3Smrg    int			/* nKeys */
60117ca54c3Smrg);
60217ca54c3Smrg
60317ca54c3Smrgextern	Status
60417ca54c3SmrgXkbAllocGeometry(
60517ca54c3Smrg	XkbDescPtr		/* xkb */,
60617ca54c3Smrg	XkbGeometrySizesPtr	/* sizes */
60717ca54c3Smrg);
60817ca54c3Smrg
60917ca54c3Smrgextern	Status
61017ca54c3SmrgXkbSetGeometry(
61117ca54c3Smrg	Display *		/* dpy */,
61217ca54c3Smrg	unsigned		/* deviceSpec */,
61317ca54c3Smrg	XkbGeometryPtr		/* geom */
61417ca54c3Smrg);
61517ca54c3Smrg
61617ca54c3Smrgextern	Bool
61717ca54c3SmrgXkbComputeShapeTop(
61817ca54c3Smrg	XkbShapePtr		/* shape */,
61917ca54c3Smrg	XkbBoundsPtr		/* bounds */
62017ca54c3Smrg);
62117ca54c3Smrg
62217ca54c3Smrgextern	Bool
62317ca54c3SmrgXkbComputeShapeBounds(
62417ca54c3Smrg	XkbShapePtr		/* shape */
62517ca54c3Smrg);
62617ca54c3Smrg
62717ca54c3Smrgextern	Bool
62817ca54c3SmrgXkbComputeRowBounds(
62917ca54c3Smrg	XkbGeometryPtr		/* geom */,
63017ca54c3Smrg	XkbSectionPtr		/* section */,
63117ca54c3Smrg	XkbRowPtr		/* row */
63217ca54c3Smrg);
63317ca54c3Smrg
63417ca54c3Smrgextern	Bool
63517ca54c3SmrgXkbComputeSectionBounds(
63617ca54c3Smrg	XkbGeometryPtr		/* geom */,
63717ca54c3Smrg	XkbSectionPtr		/* section */
63817ca54c3Smrg);
63917ca54c3Smrg
64017ca54c3Smrgextern	char *
64117ca54c3SmrgXkbFindOverlayForKey(
64217ca54c3Smrg	XkbGeometryPtr		/* geom */,
64317ca54c3Smrg	XkbSectionPtr		/* wanted */,
64417ca54c3Smrg	char *			/* under */
64517ca54c3Smrg);
64617ca54c3Smrg
64717ca54c3Smrgextern	Status
64817ca54c3SmrgXkbGetGeometry(
64917ca54c3Smrg    Display *			/* dpy */,
65017ca54c3Smrg    XkbDescPtr			/* xkb */
65117ca54c3Smrg);
65217ca54c3Smrg
65317ca54c3Smrgextern	Status
65417ca54c3SmrgXkbGetNamedGeometry(
65517ca54c3Smrg    Display *			/* dpy */,
65617ca54c3Smrg    XkbDescPtr			/* xkb */,
65717ca54c3Smrg    Atom			/* name */
65817ca54c3Smrg);
65917ca54c3Smrg
66017ca54c3Smrg_XFUNCPROTOEND
66117ca54c3Smrg
66217ca54c3Smrg#endif /* _XKBSTR_H_ */
663