Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/X11/extensions/XKBgeom.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /************************************************************
0002 Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
0003 
0004 Permission to use, copy, modify, and distribute this
0005 software and its documentation for any purpose and without
0006 fee is hereby granted, provided that the above copyright
0007 notice appear in all copies and that both that copyright
0008 notice and this permission notice appear in supporting
0009 documentation, and that the name of Silicon Graphics not be
0010 used in advertising or publicity pertaining to distribution
0011 of the software without specific prior written permission.
0012 Silicon Graphics makes no representation about the suitability
0013 of this software for any purpose. It is provided "as is"
0014 without any express or implied warranty.
0015 
0016 SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
0017 SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
0018 AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
0019 GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
0020 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
0021 DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
0022 OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
0023 THE USE OR PERFORMANCE OF THIS SOFTWARE.
0024 
0025 ********************************************************/
0026 
0027 #ifndef _XKBGEOM_H_
0028 #define _XKBGEOM_H_
0029 
0030 #include <X11/extensions/XKBstr.h>
0031 
0032 typedef struct _XkbProperty {
0033     char    *name;
0034     char    *value;
0035 } XkbPropertyRec,*XkbPropertyPtr;
0036 
0037 typedef struct _XkbColor {
0038     unsigned int    pixel;
0039     char *      spec;
0040 } XkbColorRec,*XkbColorPtr;
0041 
0042 typedef struct _XkbPoint {
0043     short   x;
0044     short   y;
0045 } XkbPointRec, *XkbPointPtr;
0046 
0047 typedef struct  _XkbBounds {
0048     short   x1,y1;
0049     short   x2,y2;
0050 } XkbBoundsRec, *XkbBoundsPtr;
0051 #define XkbBoundsWidth(b)   (((b)->x2)-((b)->x1))
0052 #define XkbBoundsHeight(b)  (((b)->y2)-((b)->y1))
0053 
0054 /*
0055  * In the following structs, this pattern is used for dynamically sized arrays:
0056  * foo is an array for which sz_foo entries are allocated & num_foo are used
0057  */
0058 
0059 typedef struct _XkbOutline {
0060     unsigned short  num_points;
0061     unsigned short  sz_points;
0062     unsigned short  corner_radius;
0063     XkbPointPtr points;
0064 } XkbOutlineRec, *XkbOutlinePtr;
0065 
0066 typedef struct _XkbShape {
0067     Atom         name;
0068     unsigned short   num_outlines;
0069     unsigned short   sz_outlines;
0070     XkbOutlinePtr    outlines;
0071     XkbOutlinePtr    approx;
0072     XkbOutlinePtr    primary;
0073     XkbBoundsRec     bounds;
0074 } XkbShapeRec, *XkbShapePtr;
0075 #define XkbOutlineIndex(s,o)    ((int)((o)-&(s)->outlines[0]))
0076 
0077 typedef struct _XkbShapeDoodad {
0078     Atom         name;
0079     unsigned char    type;
0080     unsigned char    priority;
0081     short        top;
0082     short        left;
0083     short        angle;
0084     unsigned short   color_ndx;
0085     unsigned short   shape_ndx;
0086 } XkbShapeDoodadRec, *XkbShapeDoodadPtr;
0087 #define XkbShapeDoodadColor(g,d)    (&(g)->colors[(d)->color_ndx])
0088 #define XkbShapeDoodadShape(g,d)    (&(g)->shapes[(d)->shape_ndx])
0089 #define XkbSetShapeDoodadColor(g,d,c)   ((d)->color_ndx= (c)-&(g)->colors[0])
0090 #define XkbSetShapeDoodadShape(g,d,s)   ((d)->shape_ndx= (s)-&(g)->shapes[0])
0091 
0092 typedef struct _XkbTextDoodad {
0093     Atom         name;
0094     unsigned char    type;
0095     unsigned char    priority;
0096     short        top;
0097     short        left;
0098     short        angle;
0099     short        width;
0100     short        height;
0101     unsigned short   color_ndx;
0102     char *       text;
0103     char *       font;
0104 } XkbTextDoodadRec, *XkbTextDoodadPtr;
0105 #define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
0106 #define XkbSetTextDoodadColor(g,d,c)    ((d)->color_ndx= (c)-&(g)->colors[0])
0107 
0108 typedef struct _XkbIndicatorDoodad {
0109     Atom         name;
0110     unsigned char    type;
0111     unsigned char    priority;
0112     short        top;
0113     short        left;
0114     short        angle;
0115     unsigned short   shape_ndx;
0116     unsigned short   on_color_ndx;
0117     unsigned short   off_color_ndx;
0118 } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
0119 #define XkbIndicatorDoodadShape(g,d)    (&(g)->shapes[(d)->shape_ndx])
0120 #define XkbIndicatorDoodadOnColor(g,d)  (&(g)->colors[(d)->on_color_ndx])
0121 #define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
0122 #define XkbSetIndicatorDoodadOnColor(g,d,c) \
0123                 ((d)->on_color_ndx= (c)-&(g)->colors[0])
0124 #define XkbSetIndicatorDoodadOffColor(g,d,c) \
0125                 ((d)->off_color_ndx= (c)-&(g)->colors[0])
0126 #define XkbSetIndicatorDoodadShape(g,d,s) \
0127                 ((d)->shape_ndx= (s)-&(g)->shapes[0])
0128 
0129 typedef struct _XkbLogoDoodad {
0130     Atom         name;
0131     unsigned char    type;
0132     unsigned char    priority;
0133     short        top;
0134     short        left;
0135     short        angle;
0136     unsigned short   color_ndx;
0137     unsigned short   shape_ndx;
0138     char *       logo_name;
0139 } XkbLogoDoodadRec, *XkbLogoDoodadPtr;
0140 #define XkbLogoDoodadColor(g,d)     (&(g)->colors[(d)->color_ndx])
0141 #define XkbLogoDoodadShape(g,d)     (&(g)->shapes[(d)->shape_ndx])
0142 #define XkbSetLogoDoodadColor(g,d,c)    ((d)->color_ndx= (c)-&(g)->colors[0])
0143 #define XkbSetLogoDoodadShape(g,d,s)    ((d)->shape_ndx= (s)-&(g)->shapes[0])
0144 
0145 typedef struct _XkbAnyDoodad {
0146     Atom         name;
0147     unsigned char    type;
0148     unsigned char    priority;
0149     short        top;
0150     short        left;
0151     short        angle;
0152 } XkbAnyDoodadRec, *XkbAnyDoodadPtr;
0153 
0154 typedef union _XkbDoodad {
0155     XkbAnyDoodadRec     any;
0156     XkbShapeDoodadRec   shape;
0157     XkbTextDoodadRec    text;
0158     XkbIndicatorDoodadRec   indicator;
0159     XkbLogoDoodadRec    logo;
0160 } XkbDoodadRec, *XkbDoodadPtr;
0161 
0162 #define XkbUnknownDoodad    0
0163 #define XkbOutlineDoodad    1
0164 #define XkbSolidDoodad      2
0165 #define XkbTextDoodad       3
0166 #define XkbIndicatorDoodad  4
0167 #define XkbLogoDoodad       5
0168 
0169 typedef struct _XkbKey {
0170     XkbKeyNameRec    name;
0171     short        gap;
0172     unsigned char    shape_ndx;
0173     unsigned char    color_ndx;
0174 } XkbKeyRec, *XkbKeyPtr;
0175 #define XkbKeyShape(g,k)    (&(g)->shapes[(k)->shape_ndx])
0176 #define XkbKeyColor(g,k)    (&(g)->colors[(k)->color_ndx])
0177 #define XkbSetKeyShape(g,k,s)   ((k)->shape_ndx= (s)-&(g)->shapes[0])
0178 #define XkbSetKeyColor(g,k,c)   ((k)->color_ndx= (c)-&(g)->colors[0])
0179 
0180 typedef struct _XkbRow {
0181     short       top;
0182     short       left;
0183     unsigned short  num_keys;
0184     unsigned short  sz_keys;
0185     int     vertical;
0186     XkbKeyPtr   keys;
0187     XkbBoundsRec    bounds;
0188 } XkbRowRec, *XkbRowPtr;
0189 
0190 typedef struct _XkbSection {
0191     Atom         name;
0192     unsigned char    priority;
0193     short        top;
0194     short        left;
0195     unsigned short   width;
0196     unsigned short   height;
0197     short        angle;
0198     unsigned short   num_rows;
0199     unsigned short   num_doodads;
0200     unsigned short   num_overlays;
0201     unsigned short   sz_rows;
0202     unsigned short   sz_doodads;
0203     unsigned short   sz_overlays;
0204     XkbRowPtr    rows;
0205     XkbDoodadPtr     doodads;
0206     XkbBoundsRec     bounds;
0207     struct _XkbOverlay *overlays;
0208 } XkbSectionRec, *XkbSectionPtr;
0209 
0210 typedef struct _XkbOverlayKey {
0211     XkbKeyNameRec   over;
0212     XkbKeyNameRec   under;
0213 } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
0214 
0215 typedef struct _XkbOverlayRow {
0216     unsigned short      row_under;
0217     unsigned short      num_keys;
0218     unsigned short      sz_keys;
0219     XkbOverlayKeyPtr    keys;
0220 } XkbOverlayRowRec,*XkbOverlayRowPtr;
0221 
0222 typedef struct _XkbOverlay {
0223     Atom            name;
0224     XkbSectionPtr       section_under;
0225     unsigned short      num_rows;
0226     unsigned short      sz_rows;
0227     XkbOverlayRowPtr    rows;
0228     XkbBoundsPtr        bounds;
0229 } XkbOverlayRec,*XkbOverlayPtr;
0230 
0231 typedef struct _XkbGeometry {
0232     Atom         name;
0233     unsigned short   width_mm;
0234     unsigned short   height_mm;
0235     char *       label_font;
0236     XkbColorPtr  label_color;
0237     XkbColorPtr  base_color;
0238     unsigned short   sz_properties;
0239     unsigned short   sz_colors;
0240     unsigned short   sz_shapes;
0241     unsigned short   sz_sections;
0242     unsigned short   sz_doodads;
0243     unsigned short   sz_key_aliases;
0244     unsigned short   num_properties;
0245     unsigned short   num_colors;
0246     unsigned short   num_shapes;
0247     unsigned short   num_sections;
0248     unsigned short   num_doodads;
0249     unsigned short   num_key_aliases;
0250     XkbPropertyPtr   properties;
0251     XkbColorPtr  colors;
0252     XkbShapePtr  shapes;
0253     XkbSectionPtr    sections;
0254     XkbDoodadPtr     doodads;
0255     XkbKeyAliasPtr   key_aliases;
0256 } XkbGeometryRec;
0257 #define XkbGeomColorIndex(g,c)  ((int)((c)-&(g)->colors[0]))
0258 
0259 #define XkbGeomPropertiesMask   (1<<0)
0260 #define XkbGeomColorsMask   (1<<1)
0261 #define XkbGeomShapesMask   (1<<2)
0262 #define XkbGeomSectionsMask (1<<3)
0263 #define XkbGeomDoodadsMask  (1<<4)
0264 #define XkbGeomKeyAliasesMask   (1<<5)
0265 #define XkbGeomAllMask      (0x3f)
0266 
0267 typedef struct _XkbGeometrySizes {
0268     unsigned int    which;
0269     unsigned short  num_properties;
0270     unsigned short  num_colors;
0271     unsigned short  num_shapes;
0272     unsigned short  num_sections;
0273     unsigned short  num_doodads;
0274     unsigned short  num_key_aliases;
0275 } XkbGeometrySizesRec,*XkbGeometrySizesPtr;
0276 
0277 _XFUNCPROTOBEGIN
0278 
0279 extern  XkbPropertyPtr
0280 XkbAddGeomProperty(
0281     XkbGeometryPtr  /* geom */,
0282     _Xconst char *  /* name */,
0283     _Xconst char *  /* value */
0284 );
0285 
0286 extern  XkbKeyAliasPtr
0287 XkbAddGeomKeyAlias(
0288     XkbGeometryPtr  /* geom */,
0289     _Xconst char *  /* alias */,
0290     _Xconst char *  /* real */
0291 );
0292 
0293 extern  XkbColorPtr
0294 XkbAddGeomColor(
0295     XkbGeometryPtr  /* geom */,
0296     _Xconst char *  /* spec */,
0297     unsigned int    /* pixel */
0298 );
0299 
0300 extern  XkbOutlinePtr
0301 XkbAddGeomOutline(
0302     XkbShapePtr     /* shape */,
0303     int         /* sz_points */
0304 );
0305 
0306 extern XkbShapePtr
0307 XkbAddGeomShape(
0308     XkbGeometryPtr  /* geom */,
0309     Atom        /* name */,
0310     int         /* sz_outlines */
0311 );
0312 
0313 extern XkbKeyPtr
0314 XkbAddGeomKey(
0315     XkbRowPtr       /* row */
0316 );
0317 
0318 extern XkbRowPtr
0319 XkbAddGeomRow(
0320     XkbSectionPtr   /* section */,
0321     int         /* sz_keys */
0322 );
0323 
0324 extern XkbSectionPtr
0325 XkbAddGeomSection(
0326     XkbGeometryPtr  /* geom */,
0327     Atom        /* name */,
0328     int         /* sz_rows */,
0329     int         /* sz_doodads */,
0330     int         /* sz_overlays */
0331 );
0332 
0333 extern XkbOverlayPtr
0334 XkbAddGeomOverlay(
0335     XkbSectionPtr   /* section */,
0336     Atom        /* name */,
0337     int         /* sz_rows */
0338 );
0339 
0340 extern XkbOverlayRowPtr
0341 XkbAddGeomOverlayRow(
0342     XkbOverlayPtr   /* overlay */,
0343     int         /* row_under */,
0344     int         /* sz_keys */
0345 );
0346 
0347 extern XkbOverlayKeyPtr
0348 XkbAddGeomOverlayKey(
0349     XkbOverlayPtr   /* overlay */,
0350     XkbOverlayRowPtr    /* row */,
0351     _Xconst char *  /* over */,
0352     _Xconst char *  /* under */
0353 );
0354 
0355 extern XkbDoodadPtr
0356 XkbAddGeomDoodad(
0357     XkbGeometryPtr  /* geom */,
0358     XkbSectionPtr   /* section */,
0359     Atom        /* name */
0360 );
0361 
0362 
0363 extern void
0364 XkbFreeGeomKeyAliases(
0365     XkbGeometryPtr  /* geom */,
0366     int         /* first */,
0367     int         /* count */,
0368     Bool        /* freeAll */
0369 );
0370 
0371 extern void
0372 XkbFreeGeomColors(
0373     XkbGeometryPtr  /* geom */,
0374     int         /* first */,
0375     int         /* count */,
0376     Bool        /* freeAll */
0377 );
0378 
0379 extern void
0380 XkbFreeGeomDoodads(
0381     XkbDoodadPtr    /* doodads */,
0382     int         /* nDoodads */,
0383     Bool        /* freeAll */
0384 );
0385 
0386 
0387 extern void
0388 XkbFreeGeomProperties(
0389     XkbGeometryPtr  /* geom */,
0390     int         /* first */,
0391     int         /* count */,
0392     Bool        /* freeAll */
0393 );
0394 
0395 extern void
0396 XkbFreeGeomOverlayKeys(
0397     XkbOverlayRowPtr    /* row */,
0398     int         /* first */,
0399     int         /* count */,
0400     Bool        /* freeAll */
0401 );
0402 
0403 extern void
0404 XkbFreeGeomOverlayRows(
0405     XkbOverlayPtr   /* overlay */,
0406     int         /* first */,
0407     int         /* count */,
0408     Bool        /* freeAll */
0409 );
0410 
0411 extern void
0412 XkbFreeGeomOverlays(
0413     XkbSectionPtr   /* section */,
0414     int         /* first */,
0415     int         /* count */,
0416     Bool        /* freeAll */
0417 );
0418 
0419 extern void
0420 XkbFreeGeomKeys(
0421     XkbRowPtr       /* row */,
0422     int         /* first */,
0423     int         /* count */,
0424     Bool        /* freeAll */
0425 );
0426 
0427 extern void
0428 XkbFreeGeomRows(
0429     XkbSectionPtr   /* section */,
0430     int         /* first */,
0431     int         /* count */,
0432     Bool        /* freeAll */
0433 );
0434 
0435 extern void
0436 XkbFreeGeomSections(
0437     XkbGeometryPtr  /* geom */,
0438     int         /* first */,
0439     int         /* count */,
0440     Bool        /* freeAll */
0441 );
0442 
0443 
0444 extern void
0445 XkbFreeGeomPoints(
0446     XkbOutlinePtr   /* outline */,
0447     int         /* first */,
0448     int         /* count */,
0449     Bool        /* freeAll */
0450 );
0451 
0452 extern void
0453 XkbFreeGeomOutlines(
0454     XkbShapePtr     /* shape */,
0455     int         /* first */,
0456     int         /* count */,
0457     Bool        /* freeAll */
0458 );
0459 
0460 extern void
0461 XkbFreeGeomShapes(
0462     XkbGeometryPtr  /* geom */,
0463     int         /* first */,
0464     int         /* count */,
0465     Bool        /* freeAll */
0466 );
0467 
0468 extern void
0469 XkbFreeGeometry(
0470     XkbGeometryPtr  /* geom */,
0471     unsigned int    /* which */,
0472     Bool        /* freeMap */
0473 );
0474 
0475 extern Status
0476 XkbAllocGeomProps(
0477     XkbGeometryPtr  /* geom */,
0478     int         /* nProps */
0479 );
0480 
0481 extern Status
0482 XkbAllocGeomKeyAliases(
0483     XkbGeometryPtr  /* geom */,
0484     int         /* nAliases */
0485 );
0486 
0487 extern Status
0488 XkbAllocGeomColors(
0489     XkbGeometryPtr  /* geom */,
0490     int         /* nColors */
0491 );
0492 
0493 extern Status
0494 XkbAllocGeomShapes(
0495     XkbGeometryPtr  /* geom */,
0496     int         /* nShapes */
0497 );
0498 
0499 extern Status
0500 XkbAllocGeomSections(
0501     XkbGeometryPtr  /* geom */,
0502     int         /* nSections */
0503 );
0504 
0505 extern Status
0506 XkbAllocGeomOverlays(
0507     XkbSectionPtr   /* section */,
0508     int         /* num_needed */
0509 );
0510 
0511 extern Status
0512 XkbAllocGeomOverlayRows(
0513     XkbOverlayPtr   /* overlay */,
0514     int         /* num_needed */
0515 );
0516 
0517 extern Status
0518 XkbAllocGeomOverlayKeys(
0519     XkbOverlayRowPtr    /* row */,
0520     int         /* num_needed */
0521 );
0522 
0523 extern Status
0524 XkbAllocGeomDoodads(
0525     XkbGeometryPtr  /* geom */,
0526     int         /* nDoodads */
0527 );
0528 
0529 extern Status
0530 XkbAllocGeomSectionDoodads(
0531     XkbSectionPtr   /* section */,
0532     int         /* nDoodads */
0533 );
0534 
0535 extern Status
0536 XkbAllocGeomOutlines(
0537     XkbShapePtr     /* shape */,
0538     int         /* nOL */
0539 );
0540 
0541 extern Status
0542 XkbAllocGeomRows(
0543     XkbSectionPtr   /* section */,
0544     int         /* nRows */
0545 );
0546 
0547 extern Status
0548 XkbAllocGeomPoints(
0549     XkbOutlinePtr   /* ol */,
0550     int         /* nPts */
0551 );
0552 
0553 extern Status
0554 XkbAllocGeomKeys(
0555     XkbRowPtr       /* row */,
0556     int         /* nKeys */
0557 );
0558 
0559 extern  Status
0560 XkbAllocGeometry(
0561     XkbDescPtr      /* xkb */,
0562     XkbGeometrySizesPtr /* sizes */
0563 );
0564 
0565 extern  Status
0566 XkbSetGeometry(
0567     Display *       /* dpy */,
0568     unsigned        /* deviceSpec */,
0569     XkbGeometryPtr      /* geom */
0570 );
0571 
0572 extern  Bool
0573 XkbComputeShapeTop(
0574     XkbShapePtr     /* shape */,
0575     XkbBoundsPtr        /* bounds */
0576 );
0577 
0578 extern  Bool
0579 XkbComputeShapeBounds(
0580     XkbShapePtr     /* shape */
0581 );
0582 
0583 extern  Bool
0584 XkbComputeRowBounds(
0585     XkbGeometryPtr      /* geom */,
0586     XkbSectionPtr       /* section */,
0587     XkbRowPtr       /* row */
0588 );
0589 
0590 extern  Bool
0591 XkbComputeSectionBounds(
0592     XkbGeometryPtr      /* geom */,
0593     XkbSectionPtr       /* section */
0594 );
0595 
0596 extern  char *
0597 XkbFindOverlayForKey(
0598     XkbGeometryPtr      /* geom */,
0599     XkbSectionPtr       /* wanted */,
0600     _Xconst char *      /* under */
0601 );
0602 
0603 extern  Status
0604 XkbGetGeometry(
0605     Display *           /* dpy */,
0606     XkbDescPtr          /* xkb */
0607 );
0608 
0609 extern  Status
0610 XkbGetNamedGeometry(
0611     Display *           /* dpy */,
0612     XkbDescPtr          /* xkb */,
0613     Atom            /* name */
0614 );
0615 
0616 _XFUNCPROTOEND
0617 
0618 #endif /* _XKBSTR_H_ */