github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xcb/include/X11/extensions/XKBgeom.h (about)

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