XkbComputeShapeBounds(3)

πŸ’… XkbComputeShapeBounds β€” XKB FUNCTIONS ✨

🌸 NAME 🌸

XkbComputeShapeBounds β€” updates the bounding box of a shape. periodt πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

Bool XkbComputeShapeBounds (XkbShapePtr shape);

πŸ¦‹ ARGUMENTS πŸ¦‹

  • shape β€” the shape to be examined πŸ‘€

✨ DESCRIPTION ✨

okay bestie, so Xkb gives you a bunch of convenience functions to help you 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. iconic behavior ngl πŸ’…

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. it's giving container energy fr fr 🎁

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. no cap, keep it fresh ✨

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. lowkey important: NULL or empty outlines = False, bestie 😭

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. that's your row-bounds bestie right there 🫢


πŸ‘‘ 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 🌈


made with πŸ’– from the X Version 11 / libX11 1.8.14 footer β€” the original page doesn't show a separate date, so no date tea to spill 🫢✨

πŸ“¦ where this page comes from