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