b9a21c3c91c47e090316e28d759194e46628ed49vboxsync/************************************************************
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncCopyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncPermission to use, copy, modify, and distribute this
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncsoftware and its documentation for any purpose and without
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncfee is hereby granted, provided that the above copyright
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncnotice appear in all copies and that both that copyright
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncnotice and this permission notice appear in supporting
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncdocumentation, and that the name of Silicon Graphics not be
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncused in advertising or publicity pertaining to distribution
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncof the software without specific prior written permission.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncSilicon Graphics makes no representation about the suitability
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncof this software for any purpose. It is provided "as is"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncwithout any express or implied warranty.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncSILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncAND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncGRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncDAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncTHE USE OR PERFORMANCE OF THIS SOFTWARE.
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync********************************************************/
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#ifndef _XKBGEOM_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define _XKBGEOM_H_
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#include "xkbstr.h"
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomColor SrvXkbAddGeomColor
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomDoodad SrvXkbAddGeomDoodad
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomKey SrvXkbAddGeomKey
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomOutline SrvXkbAddGeomOutline
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomOverlay SrvXkbAddGeomOverlay
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomProperty SrvXkbAddGeomProperty
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomRow SrvXkbAddGeomRow
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomSection SrvXkbAddGeomSection
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAddGeomShape SrvXkbAddGeomShape
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomKeyAliases SrvXkbAllocGeomKeyAliases
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomColors SrvXkbAllocGeomColors
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomDoodads SrvXkbAllocGeomDoodads
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomKeys SrvXkbAllocGeomKeys
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomOutlines SrvXkbAllocGeomOutlines
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomPoints SrvXkbAllocGeomPoints
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomProps SrvXkbAllocGeomProps
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomRows SrvXkbAllocGeomRows
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomSectionDoodads SrvXkbAllocGeomSectionDoodads
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomSections SrvXkbAllocGeomSections
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomOverlays SrvXkbAllocGeomOverlays
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomOverlayRows SrvXkbAllocGeomOverlayRows
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomOverlayKeys SrvXkbAllocGeomOverlayKeys
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeomShapes SrvXkbAllocGeomShapes
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbAllocGeometry SrvXkbAllocGeometry
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomColors SrvXkbFreeGeomColors
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomProperties SrvXkbFreeGeomProperties
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomOverlayKeys SrvXkbFreeGeomOverlayKeys
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomOverlayRows SrvXkbFreeGeomOverlayRows
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomOverlays SrvXkbFreeGeomOverlays
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomKeys SrvXkbFreeGeomKeys
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomRows SrvXkbFreeGeomRows
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomSections SrvXkbFreeGeomSections
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomPoints SrvXkbFreeGeomPoints
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeomShapes SrvXkbFreeGeomShapes
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbFreeGeometry SrvXkbFreeGeometry
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbProperty {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char *name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char *value;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbPropertyRec,*XkbPropertyPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbColor {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int pixel;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * spec;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbColorRec,*XkbColorPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbPoint {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short x;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short y;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbPointRec, *XkbPointPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbBounds {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short x1,y1;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short x2,y2;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbBoundsRec, *XkbBoundsPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbOutline {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_points;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_points;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short corner_radius;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbPointPtr points;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbOutlineRec, *XkbOutlinePtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbShape {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_outlines;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_outlines;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOutlinePtr outlines;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOutlinePtr approx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOutlinePtr primary;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbBoundsRec bounds;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbShapeRec, *XkbShapePtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbShapeDoodad {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char type;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char priority;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short angle;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short color_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short shape_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbTextDoodad {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char type;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char priority;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short angle;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short width;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short height;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short color_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * text;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * font;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbTextDoodadRec, *XkbTextDoodadPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbIndicatorDoodad {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char type;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char priority;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short angle;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short shape_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short on_color_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short off_color_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetIndicatorDoodadOnColor(g,d,c) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ((d)->on_color_ndx= (c)-&(g)->colors[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetIndicatorDoodadOffColor(g,d,c) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ((d)->off_color_ndx= (c)-&(g)->colors[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetIndicatorDoodadShape(g,d,s) \
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync ((d)->shape_ndx= (s)-&(g)->shapes[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbLogoDoodad {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char type;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char priority;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short angle;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short color_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short shape_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * logo_name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbAnyDoodad {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char type;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char priority;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short angle;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef union _XkbDoodad {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbAnyDoodadRec any;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapeDoodadRec shape;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbTextDoodadRec text;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbIndicatorDoodadRec indicator;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbLogoDoodadRec logo;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbDoodadRec, *XkbDoodadPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbUnknownDoodad 0
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbOutlineDoodad 1
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSolidDoodad 2
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbTextDoodad 3
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbIndicatorDoodad 4
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbLogoDoodad 5
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbKey {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbKeyNameRec name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short gap;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char shape_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char color_ndx;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbKeyRec, *XkbKeyPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbRow {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_keys;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_keys;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int vertical;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbKeyPtr keys;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbBoundsRec bounds;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbRowRec, *XkbRowPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbSection {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned char priority;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short top;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short left;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short width;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short height;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync short angle;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_rows;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_overlays;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_rows;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_overlays;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbRowPtr rows;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbDoodadPtr doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbBoundsRec bounds;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync struct _XkbOverlay *overlays;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbSectionRec, *XkbSectionPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbOverlayKey {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbKeyNameRec over;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbKeyNameRec under;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbOverlayKeyRec,*XkbOverlayKeyPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbOverlayRow {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short row_under;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_keys;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_keys;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayKeyPtr keys;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbOverlayRowRec,*XkbOverlayRowPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbOverlay {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr section_under;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_rows;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_rows;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayRowPtr rows;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbBoundsPtr bounds;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbOverlayRec,*XkbOverlayPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbGeometry {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom name;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short width_mm;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short height_mm;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * label_font;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbColorPtr label_color;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbColorPtr base_color;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_properties;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_colors;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_shapes;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_sections;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short sz_key_aliases;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_properties;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_colors;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_shapes;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_sections;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_key_aliases;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbPropertyPtr properties;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbColorPtr colors;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapePtr shapes;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr sections;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbDoodadPtr doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbKeyAliasPtr key_aliases;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbGeometryRec;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomPropertiesMask (1<<0)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomColorsMask (1<<1)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomShapesMask (1<<2)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomSectionsMask (1<<3)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomDoodadsMask (1<<4)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomKeyAliasesMask (1<<5)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#define XkbGeomAllMask (0x3f)
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsynctypedef struct _XkbGeometrySizes {
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int which;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_properties;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_colors;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_shapes;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_sections;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_doodads;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned short num_key_aliases;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync} XkbGeometrySizesRec,*XkbGeometrySizesPtr;
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbPropertyPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomProperty(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* name */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* value */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbKeyAliasPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomKeyAlias(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* alias */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* real */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbColorPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomColor(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* spec */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /* pixel */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbOutlinePtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomOutline(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapePtr /* shape */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_points */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbShapePtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomShape(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom /* name */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_outlines */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbKeyPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomKey(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbRowPtr /* row */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbRowPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomRow(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_keys */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbSectionPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomSection(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom /* name */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_rows */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_doodads */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_overlays */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbOverlayPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomOverlay(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom /* name */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_rows */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbOverlayRowPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomOverlayRow(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayPtr /* overlay */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* row_under */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* sz_keys */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbOverlayKeyPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomOverlayKey(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayPtr /* overlay */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayRowPtr /* row */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* over */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* under */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern XkbDoodadPtr
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAddGeomDoodad(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Atom /* name */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomKeyAliases(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomColors(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomDoodads(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbDoodadPtr /* doodads */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nDoodads */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomProperties(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomOverlayKeys(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayRowPtr /* row */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomOverlayRows(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayPtr /* overlay */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomOverlays(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomKeys(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbRowPtr /* row */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomRows(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomSections(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomPoints(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOutlinePtr /* outline */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomOutlines(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapePtr /* shape */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeomShapes(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* first */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* count */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeAll */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern void
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFreeGeometry(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync unsigned int /* which */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync Bool /* freeMap */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomProps(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nProps */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomKeyAliases(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nAliases */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomColors(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nColors */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomShapes(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nShapes */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomSections(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nSections */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomOverlays(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* num_needed */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomOverlayRows(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayPtr /* overlay */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* num_needed */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomOverlayKeys(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOverlayRowPtr /* row */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* num_needed */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomDoodads(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nDoodads */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomSectionDoodads(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nDoodads */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomOutlines(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapePtr /* shape */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nOL */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomRows(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nRows */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomPoints(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbOutlinePtr /* ol */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nPts */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeomKeys(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbRowPtr /* row */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync int /* nKeys */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Status
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbAllocGeometry(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbDescPtr /* xkb */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometrySizesPtr /* sizes */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbComputeShapeTop(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapePtr /* shape */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbBoundsPtr /* bounds */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbComputeShapeBounds(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbShapePtr /* shape */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbComputeRowBounds(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbRowPtr /* row */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern Bool
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbComputeSectionBounds(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* section */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncextern char *
b9a21c3c91c47e090316e28d759194e46628ed49vboxsyncXkbFindOverlayForKey(
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbGeometryPtr /* geom */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync XkbSectionPtr /* wanted */,
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync char * /* under */
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync);
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync
b9a21c3c91c47e090316e28d759194e46628ed49vboxsync#endif /* _XKBGEOM_H_ */