NAME
XkbComputeShapeBounds - Updates the bounding box of a shape
SYNOPSIS
Bool XkbComputeShapeBounds (XkbShapePtr shape);
ARGUMENTS
- shape
shape to be examined
DESCRIPTION
Xkb provides a number of convenience functions to help use a keyboard
geometry. These include functions to return the bounding box of a
shape’s top surface and to update the bounding box of a shape row or
section.
A shape is made up of a number of outlines. Each outline is a polygon
made up of a number of points. The bounding box of a shape is a
rectangle that contains all the outlines of that shape.
A ShapeRec contains a BoundsRec that describes the bounds of the shape.
If you add or delete an outline to or from a shape, the bounding box
must be updated.
XkbComputeShapeBounds updates the BoundsRec contained in the shape by
examining all the outlines of the shape and setting the BoundsRec to
the minimum x and minimum y, and maximum x and maximum y values found
in those outlines. XkbComputeShapeBounds returns False if shape is
NULL or if there are no outlines for the shape; otherwise, it returns
True.
If you add or delete a key to or from a row, or if you update the shape
of one of the keys in that row, you may need to update the bounding box
of that row. To update the bounding box of a row, use
XkbComputeRowBounds.
STRUCTURES
typedef struct _XkbShape {
Atom name; /∗ shape’s name */
unsigned short num_outlines; /∗ number of outlines for the shape */
unsigned short sz_outlines; /∗ size of the outlines array */
XkbOutlinePtr outlines; /∗ array of outlines for the shape */
XkbOutlinePtr approx; /∗ pointer into the array to the approximating outline */
XkbOutlinePtr primary; /∗ pointer into the array to the primary outline */
XkbBoundsRec bounds; /∗ bounding box for the shape; encompasses all outlines */
} XkbShapeRec, *XkbShapePtr;
typedef struct _XkbBounds {
short x1,y1; /∗ upper left corner of the bounds, in mm/10 */
short x2,y2; /∗ lower right corner of the bounds, in mm/10 */
} XkbBoundsRec, *XkbBoundsPtr;
SEE ALSO
XkbComputeRowBounds(3)