123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564 |
- /************************************************************
- Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
- ********************************************************/
- #ifndef _XKBGEOM_H_
- #define _XKBGEOM_H_
- #include "xkbstr.h"
- #define XkbAddGeomKeyAlias SrvXkbAddGeomKeyAlias
- #define XkbAddGeomColor SrvXkbAddGeomColor
- #define XkbAddGeomDoodad SrvXkbAddGeomDoodad
- #define XkbAddGeomKey SrvXkbAddGeomKey
- #define XkbAddGeomOutline SrvXkbAddGeomOutline
- #define XkbAddGeomOverlay SrvXkbAddGeomOverlay
- #define XkbAddGeomOverlayRow SrvXkbAddGeomOverlayRow
- #define XkbAddGeomOverlayKey SrvXkbAddGeomOverlayKey
- #define XkbAddGeomProperty SrvXkbAddGeomProperty
- #define XkbAddGeomRow SrvXkbAddGeomRow
- #define XkbAddGeomSection SrvXkbAddGeomSection
- #define XkbAddGeomShape SrvXkbAddGeomShape
- #define XkbAllocGeometry SrvXkbAllocGeometry
- #define XkbFreeGeomKeyAliases SrvXkbFreeGeomKeyAliases
- #define XkbFreeGeomColors SrvXkbFreeGeomColors
- #define XkbFreeGeomDoodads SrvXkbFreeGeomDoodads
- #define XkbFreeGeomProperties SrvXkbFreeGeomProperties
- #define XkbFreeGeomKeys SrvXkbFreeGeomKeys
- #define XkbFreeGeomRows SrvXkbFreeGeomRows
- #define XkbFreeGeomSections SrvXkbFreeGeomSections
- #define XkbFreeGeomPoints SrvXkbFreeGeomPoints
- #define XkbFreeGeomOutlines SrvXkbFreeGeomOutlines
- #define XkbFreeGeomShapes SrvXkbFreeGeomShapes
- #define XkbFreeGeometry SrvXkbFreeGeometry
- typedef struct _XkbProperty {
- char *name;
- char *value;
- } XkbPropertyRec, *XkbPropertyPtr;
- typedef struct _XkbColor {
- unsigned int pixel;
- char *spec;
- } XkbColorRec, *XkbColorPtr;
- typedef struct _XkbPoint {
- short x;
- short y;
- } XkbPointRec, *XkbPointPtr;
- typedef struct _XkbBounds {
- short x1, y1;
- short x2, y2;
- } XkbBoundsRec, *XkbBoundsPtr;
- #define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))
- #define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))
- typedef struct _XkbOutline {
- unsigned short num_points;
- unsigned short sz_points;
- unsigned short corner_radius;
- XkbPointPtr points;
- } XkbOutlineRec, *XkbOutlinePtr;
- typedef struct _XkbShape {
- Atom name;
- unsigned short num_outlines;
- unsigned short sz_outlines;
- XkbOutlinePtr outlines;
- XkbOutlinePtr approx;
- XkbOutlinePtr primary;
- XkbBoundsRec bounds;
- } XkbShapeRec, *XkbShapePtr;
- #define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))
- typedef struct _XkbShapeDoodad {
- Atom name;
- unsigned char type;
- unsigned char priority;
- short top;
- short left;
- short angle;
- unsigned short color_ndx;
- unsigned short shape_ndx;
- } XkbShapeDoodadRec, *XkbShapeDoodadPtr;
- #define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
- #define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
- #define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
- #define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
- typedef struct _XkbTextDoodad {
- Atom name;
- unsigned char type;
- unsigned char priority;
- short top;
- short left;
- short angle;
- short width;
- short height;
- unsigned short color_ndx;
- char *text;
- char *font;
- } XkbTextDoodadRec, *XkbTextDoodadPtr;
- #define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
- #define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
- typedef struct _XkbIndicatorDoodad {
- Atom name;
- unsigned char type;
- unsigned char priority;
- short top;
- short left;
- short angle;
- unsigned short shape_ndx;
- unsigned short on_color_ndx;
- unsigned short off_color_ndx;
- } XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
- #define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
- #define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])
- #define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])
- #define XkbSetIndicatorDoodadOnColor(g,d,c) \
- ((d)->on_color_ndx= (c)-&(g)->colors[0])
- #define XkbSetIndicatorDoodadOffColor(g,d,c) \
- ((d)->off_color_ndx= (c)-&(g)->colors[0])
- #define XkbSetIndicatorDoodadShape(g,d,s) \
- ((d)->shape_ndx= (s)-&(g)->shapes[0])
- typedef struct _XkbLogoDoodad {
- Atom name;
- unsigned char type;
- unsigned char priority;
- short top;
- short left;
- short angle;
- unsigned short color_ndx;
- unsigned short shape_ndx;
- char *logo_name;
- } XkbLogoDoodadRec, *XkbLogoDoodadPtr;
- #define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])
- #define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])
- #define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])
- #define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])
- typedef struct _XkbAnyDoodad {
- Atom name;
- unsigned char type;
- unsigned char priority;
- short top;
- short left;
- short angle;
- } XkbAnyDoodadRec, *XkbAnyDoodadPtr;
- typedef union _XkbDoodad {
- XkbAnyDoodadRec any;
- XkbShapeDoodadRec shape;
- XkbTextDoodadRec text;
- XkbIndicatorDoodadRec indicator;
- XkbLogoDoodadRec logo;
- } XkbDoodadRec, *XkbDoodadPtr;
- #define XkbUnknownDoodad 0
- #define XkbOutlineDoodad 1
- #define XkbSolidDoodad 2
- #define XkbTextDoodad 3
- #define XkbIndicatorDoodad 4
- #define XkbLogoDoodad 5
- typedef struct _XkbKey {
- XkbKeyNameRec name;
- short gap;
- unsigned char shape_ndx;
- unsigned char color_ndx;
- } XkbKeyRec, *XkbKeyPtr;
- #define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])
- #define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])
- #define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])
- #define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])
- typedef struct _XkbRow {
- short top;
- short left;
- unsigned short num_keys;
- unsigned short sz_keys;
- int vertical;
- XkbKeyPtr keys;
- XkbBoundsRec bounds;
- } XkbRowRec, *XkbRowPtr;
- typedef struct _XkbSection {
- Atom name;
- unsigned char priority;
- short top;
- short left;
- unsigned short width;
- unsigned short height;
- short angle;
- unsigned short num_rows;
- unsigned short num_doodads;
- unsigned short num_overlays;
- unsigned short sz_rows;
- unsigned short sz_doodads;
- unsigned short sz_overlays;
- XkbRowPtr rows;
- XkbDoodadPtr doodads;
- XkbBoundsRec bounds;
- struct _XkbOverlay *overlays;
- } XkbSectionRec, *XkbSectionPtr;
- typedef struct _XkbOverlayKey {
- XkbKeyNameRec over;
- XkbKeyNameRec under;
- } XkbOverlayKeyRec, *XkbOverlayKeyPtr;
- typedef struct _XkbOverlayRow {
- unsigned short row_under;
- unsigned short num_keys;
- unsigned short sz_keys;
- XkbOverlayKeyPtr keys;
- } XkbOverlayRowRec, *XkbOverlayRowPtr;
- typedef struct _XkbOverlay {
- Atom name;
- XkbSectionPtr section_under;
- unsigned short num_rows;
- unsigned short sz_rows;
- XkbOverlayRowPtr rows;
- XkbBoundsPtr bounds;
- } XkbOverlayRec, *XkbOverlayPtr;
- typedef struct _XkbGeometry {
- Atom name;
- unsigned short width_mm;
- unsigned short height_mm;
- char *label_font;
- XkbColorPtr label_color;
- XkbColorPtr base_color;
- unsigned short sz_properties;
- unsigned short sz_colors;
- unsigned short sz_shapes;
- unsigned short sz_sections;
- unsigned short sz_doodads;
- unsigned short sz_key_aliases;
- unsigned short num_properties;
- unsigned short num_colors;
- unsigned short num_shapes;
- unsigned short num_sections;
- unsigned short num_doodads;
- unsigned short num_key_aliases;
- XkbPropertyPtr properties;
- XkbColorPtr colors;
- XkbShapePtr shapes;
- XkbSectionPtr sections;
- XkbDoodadPtr doodads;
- XkbKeyAliasPtr key_aliases;
- } XkbGeometryRec;
- #define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))
- #define XkbGeomPropertiesMask (1<<0)
- #define XkbGeomColorsMask (1<<1)
- #define XkbGeomShapesMask (1<<2)
- #define XkbGeomSectionsMask (1<<3)
- #define XkbGeomDoodadsMask (1<<4)
- #define XkbGeomKeyAliasesMask (1<<5)
- #define XkbGeomAllMask (0x3f)
- typedef struct _XkbGeometrySizes {
- unsigned int which;
- unsigned short num_properties;
- unsigned short num_colors;
- unsigned short num_shapes;
- unsigned short num_sections;
- unsigned short num_doodads;
- unsigned short num_key_aliases;
- } XkbGeometrySizesRec, *XkbGeometrySizesPtr;
- /**
- * Specifies which items should be cleared in an XKB geometry array
- * when the array is reallocated.
- */
- typedef enum {
- XKB_GEOM_CLEAR_NONE, /* Don't clear any items, just reallocate. */
- XKB_GEOM_CLEAR_EXCESS, /* Clear new extra items after reallocation. */
- XKB_GEOM_CLEAR_ALL /* Clear all items after reallocation. */
- } XkbGeomClearance;
- extern XkbPropertyPtr XkbAddGeomProperty(XkbGeometryPtr /* geom */ ,
- char * /* name */ ,
- char * /* value */
- );
- extern XkbKeyAliasPtr XkbAddGeomKeyAlias(XkbGeometryPtr /* geom */ ,
- char * /* alias */ ,
- char * /* real */
- );
- extern XkbColorPtr XkbAddGeomColor(XkbGeometryPtr /* geom */ ,
- char * /* spec */ ,
- unsigned int /* pixel */
- );
- extern XkbOutlinePtr XkbAddGeomOutline(XkbShapePtr /* shape */ ,
- int /* sz_points */
- );
- extern XkbShapePtr XkbAddGeomShape(XkbGeometryPtr /* geom */ ,
- Atom /* name */ ,
- int /* sz_outlines */
- );
- extern XkbKeyPtr XkbAddGeomKey(XkbRowPtr /* row */
- );
- extern XkbRowPtr XkbAddGeomRow(XkbSectionPtr /* section */ ,
- int /* sz_keys */
- );
- extern XkbSectionPtr XkbAddGeomSection(XkbGeometryPtr /* geom */ ,
- Atom /* name */ ,
- int /* sz_rows */ ,
- int /* sz_doodads */ ,
- int /* sz_overlays */
- );
- extern XkbOverlayPtr XkbAddGeomOverlay(XkbSectionPtr /* section */ ,
- Atom /* name */ ,
- int /* sz_rows */
- );
- extern XkbOverlayRowPtr XkbAddGeomOverlayRow(XkbOverlayPtr /* overlay */ ,
- int /* row_under */ ,
- int /* sz_keys */
- );
- extern XkbOverlayKeyPtr XkbAddGeomOverlayKey(XkbOverlayPtr /* overlay */ ,
- XkbOverlayRowPtr /* row */ ,
- char * /* over */ ,
- char * /* under */
- );
- extern XkbDoodadPtr XkbAddGeomDoodad(XkbGeometryPtr /* geom */ ,
- XkbSectionPtr /* section */ ,
- Atom /* name */
- );
- extern void
- XkbFreeGeomKeyAliases(XkbGeometryPtr /* geom */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomColors(XkbGeometryPtr /* geom */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomDoodads(XkbDoodadPtr /* doodads */ ,
- int /* nDoodads */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomProperties(XkbGeometryPtr /* geom */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomOverlayKeys(XkbOverlayRowPtr /* row */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomOverlayRows(XkbOverlayPtr /* overlay */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomOverlays(XkbSectionPtr /* section */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomKeys(XkbRowPtr /* row */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomRows(XkbSectionPtr /* section */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomSections(XkbGeometryPtr /* geom */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomPoints(XkbOutlinePtr /* outline */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomOutlines(XkbShapePtr /* shape */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeomShapes(XkbGeometryPtr /* geom */ ,
- int /* first */ ,
- int /* count */ ,
- Bool /* freeAll */
- );
- extern void
- XkbFreeGeometry(XkbGeometryPtr /* geom */ ,
- unsigned int /* which */ ,
- Bool /* freeMap */
- );
- extern Bool
- XkbGeomRealloc(void ** /* buffer */ ,
- int /* szItems */ ,
- int /* nrItems */ ,
- int /* itemSize */ ,
- XkbGeomClearance /* clearance */
- );
- extern Status XkbAllocGeomProps(XkbGeometryPtr /* geom */ ,
- int /* nProps */
- );
- extern Status XkbAllocGeomKeyAliases(XkbGeometryPtr /* geom */ ,
- int /* nAliases */
- );
- extern Status XkbAllocGeomColors(XkbGeometryPtr /* geom */ ,
- int /* nColors */
- );
- extern Status XkbAllocGeomShapes(XkbGeometryPtr /* geom */ ,
- int /* nShapes */
- );
- extern Status XkbAllocGeomSections(XkbGeometryPtr /* geom */ ,
- int /* nSections */
- );
- extern Status XkbAllocGeomOverlays(XkbSectionPtr /* section */ ,
- int /* num_needed */
- );
- extern Status XkbAllocGeomOverlayRows(XkbOverlayPtr /* overlay */ ,
- int /* num_needed */
- );
- extern Status XkbAllocGeomOverlayKeys(XkbOverlayRowPtr /* row */ ,
- int /* num_needed */
- );
- extern Status XkbAllocGeomDoodads(XkbGeometryPtr /* geom */ ,
- int /* nDoodads */
- );
- extern Status XkbAllocGeomSectionDoodads(XkbSectionPtr /* section */ ,
- int /* nDoodads */
- );
- extern Status XkbAllocGeomOutlines(XkbShapePtr /* shape */ ,
- int /* nOL */
- );
- extern Status XkbAllocGeomRows(XkbSectionPtr /* section */ ,
- int /* nRows */
- );
- extern Status XkbAllocGeomPoints(XkbOutlinePtr /* ol */ ,
- int /* nPts */
- );
- extern Status XkbAllocGeomKeys(XkbRowPtr /* row */ ,
- int /* nKeys */
- );
- extern Status XkbAllocGeometry(XkbDescPtr /* xkb */ ,
- XkbGeometrySizesPtr /* sizes */
- );
- extern Bool
- XkbComputeShapeTop(XkbShapePtr /* shape */ ,
- XkbBoundsPtr /* bounds */
- );
- extern Bool
- XkbComputeShapeBounds(XkbShapePtr /* shape */
- );
- extern Bool
- XkbComputeRowBounds(XkbGeometryPtr /* geom */ ,
- XkbSectionPtr /* section */ ,
- XkbRowPtr /* row */
- );
- extern Bool
- XkbComputeSectionBounds(XkbGeometryPtr /* geom */ ,
- XkbSectionPtr /* section */
- );
- extern char *XkbFindOverlayForKey(XkbGeometryPtr /* geom */ ,
- XkbSectionPtr /* wanted */ ,
- char * /* under */
- );
- #endif /* _XKBGEOM_H_ */
|