---
name: "XFillArc"
section: "3x"
platform: "linux"
package: "libx11-dev"
version: "4.3.0.dfsg.1-14sarge7"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/XFillRectangle/3x"
---

# XFillArc(3x)

fill rectangles, polygons, or arcs

Part of [XFillRectangle(3x)](/XFillRectangle/3x.md).

## NAME

XFillRectangle, XFillRectangles, XFillPolygon, XFillArc, XFillArcs - fill rectangles, polygons, or arcs

## SYNTAX

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

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

int XFillPolygon(Display \**display*, Drawable *d*, GC *gc*, XPoint \**points*, int *npoints*, int *shape*, int *mode*);

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

int XFillArcs(Display \**display*, Drawable *d*, GC *gc*, XArc \**arcs*, int *narcs*);

## ARGUMENTS

- *angle1*

  Specifies the start of the arc relative to the three-o'clock position from the center, in units of degrees \* 64.

- *angle2*

  Specifies the path and extent of the arc relative to the start of the arc, in units of degrees \* 64.

- *arcs*

  Specifies an array of arcs.

- *d*

  Specifies the drawable.

- *display*

  Specifies the connection to the X server.

- *gc*

  Specifies the GC.

- *mode*

  Specifies the coordinate mode.  You can pass *CoordModeOrigin* or *CoordModePrevious*.

- *narcs*

  Specifies the number of arcs in the array.

- *npoints*

  Specifies the number of points in the array.

- *nrectangles*

  Specifies the number of rectangles in the array.

- *points*

  Specifies an array of points.

- *rectangles*

  Specifies an array of rectangles.

- *shape*

  Specifies a shape that helps the server to improve performance. You can pass  *Complex*, *Convex*, or  *Nonconvex*. or the major and minor axes of the arc

- *width*

  - *height*

  Specify the width and height, which are the dimensions of the rectangle to be filled. and specify the upper-left corner of the rectangle

- *x*

  - *y*

  Specify the x and y coordinates, which are relative to the origin of the drawable.

## DESCRIPTION

The *XFillRectangle* and *XFillRectangles* functions fill the specified rectangle or rectangles as if a four-point  *FillPolygon* protocol request were specified for each rectangle:

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

```

Each function uses the x and y coordinates, width and height dimensions, and GC you specify.

*XFillRectangles* fills the rectangles in the order listed in the array.   For any given rectangle, *XFillRectangle* and *XFillRectangles* do not draw a pixel more than once.   If rectangles intersect, the intersecting pixels are drawn multiple times.

Both functions use these GC components:  function, plane-mask, 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,  and tile-stipple-y-origin.

*XFillRectangle* and *XFillRectangles* can generate *BadDrawable*, *BadGC*, and *BadMatch* errors.

*XFillPolygon* fills the region closed by the specified path. The path is closed automatically if the last point in the list does not coincide with the first point. *XFillPolygon* does not draw a pixel of the region more than once. *CoordModeOrigin* treats all coordinates as relative to the origin, and *CoordModePrevious* treats all coordinates after the first as relative to the previous point.

Depending on the specified shape, the following occurs:

- •

  If shape is *Complex*, the path may self-intersect.  Note that contiguous coincident points in the path are not treated  as self-intersection.

- •

  If shape is *Convex*, for every pair of points inside the polygon, the line segment connecting them does not intersect the path. If known by the client, specifying  *Convex* can improve performance.   If you specify *Convex* for a path that is not convex,  the graphics results are undefined.

- •

  If shape is *Nonconvex*, the path does not self-intersect, but the shape is not wholly convex.  If known by the client,  specifying  *Nonconvex* instead of *Complex* may improve performance.   If you specify *Nonconvex* for a self-intersecting path, the graphics results are undefined.

The fill-rule of the GC controls the filling behavior of  self-intersecting polygons.

This function uses these GC components:  function, plane-mask, fill-style, fill-rule, subwindow-mode, clip-x-origin,  clip-y-origin, and clip-mask. It also uses these GC mode-dependent components:  foreground, background, tile, stipple, tile-stipple-x-origin,  and tile-stipple-y-origin.

*XFillPolygon* can generate *BadDrawable*, *BadGC*, *BadMatch*, and *BadValue* errors.

For each arc,  *XFillArc* or *XFillArcs* fills the region closed by the infinitely thin path described by the specified arc and, depending on the  arc-mode specified in the GC, one or two line segments.  For  *ArcChord*, the single line segment joining the endpoints of the arc is used.   For  *ArcPieSlice*, the two line segments joining the endpoints of the arc with the center point are used.   *XFillArcs* fills the arcs in the order listed in the array.   For any given arc,   *XFillArc* and *XFillArcs* do not draw a pixel more than once.   If regions intersect,  the intersecting pixels are drawn multiple times.

Both functions use these GC components:  function, plane-mask, fill-style, arc-mode, 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,  and tile-stipple-y-origin.

*XFillArc* and *XFillArcs* can generate *BadDrawable*, *BadGC*, and *BadMatch* errors.

## DIAGNOSTICS

- *BadDrawable*

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

- *BadGC*

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

- *BadMatch*

  An *InputOnly* window is used as a Drawable.

- *BadMatch*

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

- *BadValue*

  Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted.  Any argument defined as a set of alternatives can generate this error.

## SEE ALSO

XDrawArc(3X11), XDrawPoint(3X11), XDrawRectangle(3X11)\
 *Xlib - C Language X Interface*
