---
name: "XkbComputeShapeTop"
section: "3"
platform: "linux"
package: "libx11"
version: "1.8.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XkbComputeShapeTop"
---

# XkbComputeShapeTop(3)

Determines the bounding box of the top surface of a shape

## NAME

XkbComputeShapeTop - Determines the bounding box of the top surface of a shape

## SYNOPSIS

**Bool XkbComputeShapeTop** **(XkbShapePtr** *shape***,** **XkbBoundsPtr** *bounds\_rtrn***);**

## ARGUMENTS

- *shape*

  shape to be examined

- *bounds\_rtrn*

  backfilled with the bounding box for the shape

## 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.

*XkbComputeShapeTop* returns a BoundsRec that contains two x and y coordinates. These coordinates describe the corners of a rectangle that contains the outline that describes the top surface of the shape. The top surface is defined to be the approximating outline if the *approx* field of *shape* is not NULL. If *approx* is NULL, the top surface is defined as the last outline in the *shape's* array of outlines. *XkbComputeShapeTop* returns False if *shape* is NULL or if there are no outlines for the shape; otherwise, it returns True.

## STRUCTURES

```
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;
```
