XDrawRectangle(3) XLIB FUNCTIONS XDrawRectangle(3)

# [NAME](#NAME)

XDrawRectangle, XDrawRectangles, XRectangle - draw rectangles and rectangles structure

# [SYNTAX](#SYNTAX)

int XDrawRectangle(Display \**display*, Drawable *d*, GC *gc*, int *x*, int *y*, unsigned int *width*, unsigned int *height*);

int XDrawRectangles(Display \**display*, Drawable *d*, GC *gc*, XRectangle *rectangles*\[], int *nrectangles*);

# [ARGUMENTS](#ARGUMENTS)

[*d*](#d)

Specifies the drawable.

[*display*](#display)

Specifies the connection to the X server.

[*gc*](#gc)

Specifies the GC.

[*nrectangles*](#nrectangles)

Specifies the number of rectangles in the array.

[*rectangles*](#rectangles)

Specifies an array of rectangles.

[*width*](#width)

[*height*](#height)

Specify the width and height, which specify the dimensions of the rectangle.

[*x*](#x)

[*y*](#y)

Specify the x and y coordinates, which specify the upper-left corner of the rectangle.

# [DESCRIPTION](#DESCRIPTION)

The **XDrawRectangle** and **XDrawRectangles** functions draw the outlines of the specified rectangle or rectangles as if a five-point **PolyLine** protocol request were specified for each rectangle:

\[x,y] \[x+width,y] \[x+width,y+height] \[x,y+height] \[x,y]

For the specified rectangle or rectangles, these functions do not draw a pixel more than once. **XDrawRectangles** draws the rectangles in the order listed in the array. If rectangles intersect, the intersecting pixels are drawn multiple times.

Both functions use these GC components: function, plane-mask, line-width, line-style, cap-style, join-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. They also use these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list.

**XDrawRectangle** and **XDrawRectangles** can generate **BadDrawable**, **BadGC**, and **BadMatch** errors.

# [STRUCTURES](#STRUCTURES)

The **XRectangle** structure contains:

```
typedef struct {


        short x, y;


        unsigned short width, height;
} XRectangle;
```

All x and y members are signed integers. The width and height members are 16-bit unsigned integers. You should be careful not to generate coordinates and sizes out of the 16-bit ranges, because the protocol only has 16-bit fields for these values.

# [DIAGNOSTICS](#DIAGNOSTICS)

[**BadDrawable**](#BadDrawable)

A value for a Drawable argument does not name a defined Window or Pixmap.

[**BadGC**](#BadGC)

A value for a GContext argument does not name a defined GContext.

[**BadMatch**](#BadMatch)

An **InputOnly** window is used as a Drawable.

[**BadMatch**](#BadMatch~2)

Some argument or pair of arguments has the correct type and range but fails to match in some other way required by the request.

# [SEE ALSO](#SEE_ALSO)

[**XDrawArc**(3)](/man/os/libx11/XDrawArc.3), [**XDrawLine**(3)](/man/os/libx11/XDrawLine.3), [**XDrawPoint**(3)](/man/os/libx11/XDrawPoint.3)  
*Xlib - C Language X Interface*

libX11 1.8.14 X Version 11

---

Document: XDrawRectangles(3) from libx11 1.8.14-r2 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libx11.git
