Provided by: libx11-doc_1.6.2-1ubuntu2.1_all bug

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)