<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<!-- lifted from troff+man by doclifter -->
<refentry id='xfillrectman'>
<!--  Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium -->

<!--  Permission is hereby granted, free of charge, to any person obtaining -->
<!--  a copy of this software and associated documentation files (the -->
<!--  "Software"), to deal in the Software without restriction, including -->
<!--  without limitation the rights to use, copy, modify, merge, publish, -->
<!--  distribute, sublicense, and/or sell copies of the Software, and to -->
<!--  permit persons to whom the Software is furnished to do so, subject to -->
<!--  the following conditions: -->

<!--  The above copyright notice and this permission notice shall be included -->
<!--  in all copies or substantial portions of the Software. -->

<!--  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -->
<!--  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -->
<!--  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -->
<!--  IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR -->
<!--  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -->
<!--  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -->
<!--  OTHER DEALINGS IN THE SOFTWARE. -->

<!--  Except as contained in this notice, the name of the X Consortium shall -->
<!--  not be used in advertising or otherwise to promote the sale, use or -->
<!--  other dealings in this Software without prior written authorization -->
<!--  from the X Consortium. -->

<!--  Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by -->
<!--  Digital Equipment Corporation -->

<!--  Portions Copyright \(co 1990, 1991 by -->
<!--  Tektronix, Inc. -->

<!--  Permission to use, copy, modify and distribute this documentation for -->
<!--  any purpose and without fee is hereby granted, provided that the above -->
<!--  copyright notice appears in all copies and that both that copyright notice -->
<!--  and this permission notice appear in all copies, and that the names of -->
<!--  Digital and Tektronix not be used in in advertising or publicity pertaining -->
<!--  to this documentation without specific, written prior permission. -->
<!--  Digital and Tektronix makes no representations about the suitability -->
<!--  of this documentation for any purpose. -->
<!--  It is provided ``as is'' without express or implied warranty. -->
<!--   -->
<!--  $XFree86: xc/doc/man/X11/XFillRect.man,v 1.4 2003/04/28 22:17:54 herrb Exp $ -->

<!-- .na -->
<!-- FD listing suppressed (not used) -->
<!-- FN listing suppressed (not used) -->
<!-- IN listing suppressed (not used) -->
<!-- C{ listing suppressed (not used) -->
<!-- C} listing suppressed (not used) -->
<!-- Pn listing suppressed (not used) -->
<!-- hN listing suppressed (not used) -->
<!-- NT listing suppressed (not used) -->
<!-- .		\" Note End \-\- doug kraft 3/85 -->
<!-- NE listing suppressed (not used) -->
<!-- .ny0 -->
<refmeta>
<refentrytitle>XFillRectangle</refentrytitle>
<manvolnum>3X11</manvolnum>
<refmiscinfo class='date'>__xorgversion__</refmiscinfo>
<refmiscinfo class='source'>XLIB FUNCTIONS</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>XFillRectangle</refname>
<refname>XFillRectangles</refname>
<refname>XFillPolygon</refname>
<refname>XFillArc</refname>
<refname>XFillArcs</refname>
<refpurpose>fill rectangles, polygons, or arcs</refpurpose>
</refnamediv>
<!-- body begins here -->

<refsect1 id='syntax'><title>SYNTAX</title>

<para>int XFillRectangle&hairsp;(&hairsp;Display *<emphasis remap='I'>display</emphasis>&hairsp;, Drawable <emphasis remap='I'>d</emphasis>&hairsp;, GC
<emphasis remap='I'>gc</emphasis>&hairsp;, int <emphasis remap='I'>x</emphasis>&hairsp;, int <emphasis remap='I'>y</emphasis>&hairsp;, unsigned int <emphasis remap='I'>width</emphasis>&hairsp;, unsigned
int <emphasis remap='I'>height</emphasis>&hairsp;);</para> 

<para>int XFillRectangles&hairsp;(&hairsp;Display *<emphasis remap='I'>display</emphasis>&hairsp;, Drawable <emphasis remap='I'>d</emphasis>&hairsp;, GC
<emphasis remap='I'>gc</emphasis>&hairsp;, XRectangle *<emphasis remap='I'>rectangles</emphasis>&hairsp;, int <emphasis remap='I'>nrectangles</emphasis>&hairsp;);</para> 

<para>int XFillPolygon&hairsp;(&hairsp;Display *<emphasis remap='I'>display</emphasis>&hairsp;, Drawable <emphasis remap='I'>d</emphasis>&hairsp;, GC
<emphasis remap='I'>gc</emphasis>&hairsp;, XPoint *<emphasis remap='I'>points</emphasis>&hairsp;, int <emphasis remap='I'>npoints</emphasis>&hairsp;, int <emphasis remap='I'>shape</emphasis>&hairsp;,
int <emphasis remap='I'>mode</emphasis>&hairsp;);</para>

<para>int XFillArc&hairsp;(&hairsp;Display *<emphasis remap='I'>display</emphasis>&hairsp;, Drawable <emphasis remap='I'>d</emphasis>&hairsp;, GC <emphasis remap='I'>gc</emphasis>&hairsp;, 
int <emphasis remap='I'>x</emphasis>&hairsp;, int <emphasis remap='I'>y</emphasis>&hairsp;, unsigned int <emphasis remap='I'>width</emphasis>&hairsp;, unsigned int
<emphasis remap='I'>height</emphasis>&hairsp;, int <emphasis remap='I'>angle1</emphasis>&hairsp;, int <emphasis remap='I'>angle2</emphasis>&hairsp;);</para> 

<para>int XFillArcs&hairsp;(&hairsp;Display *<emphasis remap='I'>display</emphasis>&hairsp;, Drawable <emphasis remap='I'>d</emphasis>&hairsp;, GC <emphasis remap='I'>gc</emphasis>&hairsp;,
XArc *<emphasis remap='I'>arcs</emphasis>&hairsp;, int <emphasis remap='I'>narcs</emphasis>&hairsp;);</para> 
</refsect1>

<refsect1 id='arguments'><title>ARGUMENTS</title>
<variablelist remap='IP'>
  <varlistentry>
  <term><emphasis remap='I'>angle1</emphasis></term>
  <listitem>
<para>Specifies the start of the arc relative to the three-o'clock position
from the center, in units of degrees * 64.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>angle2</emphasis></term>
  <listitem>
<para>Specifies the path and extent of the arc relative to the start of the
arc, in units of degrees * 64.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>arcs</emphasis></term>
  <listitem>
<para>Specifies an array of arcs.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>d</emphasis></term>
  <listitem>
<para>Specifies the drawable.</para> 
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>display</emphasis></term>
  <listitem>
<para>Specifies the connection to the X server.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>gc</emphasis></term>
  <listitem>
<para>Specifies the GC.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>mode</emphasis></term>
  <listitem>
<para>Specifies the coordinate mode. 
You can pass
<emphasis remap='I'>&hairsp;CoordModeOrigin&hairsp;</emphasis>
or
<emphasis remap='I'>&hairsp;CoordModePrevious&hairsp;</emphasis>.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>narcs</emphasis></term>
  <listitem>
<para>Specifies the number of arcs in the array.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>npoints</emphasis></term>
  <listitem>
<para>Specifies the number of points in the array.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>nrectangles</emphasis></term>
  <listitem>
<para>Specifies the number of rectangles in the array.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>points</emphasis></term>
  <listitem>
<para>Specifies an array of points.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>rectangles</emphasis></term>
  <listitem>
<para>Specifies an array of rectangles.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>shape</emphasis></term>
  <listitem>
<para>Specifies a shape that helps the server to improve performance.
You can pass 
<emphasis remap='I'>&hairsp;Complex&hairsp;</emphasis>,
<emphasis remap='I'>&hairsp;Convex&hairsp;</emphasis>,
or 
<emphasis remap='I'>&hairsp;Nonconvex&hairsp;</emphasis>.
or the major and minor axes of the arc</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>width</emphasis></term>
<!-- .br -->
<!-- .ns -->
  <term><emphasis remap='I'>height</emphasis></term>
  <listitem>
<para>Specify the width and height, which are the dimensions of the rectangle to be filled.
and specify the upper-left corner of the rectangle</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>x</emphasis></term>
<!-- .br -->
<!-- .ns -->
  <term><emphasis remap='I'>y</emphasis></term>
  <listitem>
<para>Specify the x and y coordinates, which are relative to the origin of the drawable.</para>
  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='description'><title>DESCRIPTION</title>
<para>The
<emphasis remap='I'>&hairsp;XFillRectangle&hairsp;</emphasis>
and
<emphasis remap='I'>&hairsp;XFillRectangles&hairsp;</emphasis>
functions fill the specified rectangle or rectangles
as if a four-point 
<emphasis remap='I'>&hairsp;FillPolygon&hairsp;</emphasis>
protocol request were specified for each rectangle:</para>

<literallayout remap='.nf'>
<!-- .D   -->

<!-- .ps \n(PS -->
<!-- .if \n(VS&gt;=40 .vs \n(VSu -->
<!-- .if \n(VS&lt;=39 .vs \n(VSp -->
[x,y] [x+width,y] [x+width,y+height] [x,y+height]
<!-- .ce 0  IGNORED -->
<!-- .in \n(OIu  IGNORED -->

</literallayout> <!-- .fi -->

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

<para><emphasis remap='I'>&hairsp;XFillRectangles&hairsp;</emphasis>
fills the rectangles in the order listed in the array.  
For any given rectangle,
<emphasis remap='I'>&hairsp;XFillRectangle&hairsp;</emphasis>
and
<emphasis remap='I'>&hairsp;XFillRectangles&hairsp;</emphasis>
do not draw a pixel more than once.  
If rectangles intersect, the intersecting pixels are
drawn multiple times.</para>

<para>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.</para>

<para><emphasis remap='I'>&hairsp;XFillRectangle&hairsp;</emphasis>
and
<emphasis remap='I'>&hairsp;XFillRectangles&hairsp;</emphasis>
can generate
<emphasis remap='I'>&hairsp;BadDrawable&hairsp;</emphasis>,
<emphasis remap='I'>&hairsp;BadGC&hairsp;</emphasis>,
and
<emphasis remap='I'>&hairsp;BadMatch&hairsp;</emphasis>
errors.</para>

<para><emphasis remap='I'>&hairsp;XFillPolygon&hairsp;</emphasis>
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.
<emphasis remap='I'>&hairsp;XFillPolygon&hairsp;</emphasis>
does not draw a pixel of the region more than once.
<emphasis remap='I'>&hairsp;CoordModeOrigin&hairsp;</emphasis>
treats all coordinates as relative to the origin,
and
<emphasis remap='I'>&hairsp;CoordModePrevious&hairsp;</emphasis>
treats all coordinates after the first as relative to the previous point.</para>

<para>Depending on the specified shape, the following occurs:</para> 
<itemizedlist remap='IP+bullet'>
  <listitem override='bullet'>
<para>If shape is
<emphasis remap='I'>&hairsp;Complex&hairsp;</emphasis>,
the path may self-intersect. 
Note that contiguous coincident points in the path are not treated 
as self-intersection.</para>
  </listitem>
</itemizedlist>
<itemizedlist remap='IP+bullet'>
  <listitem override='bullet'>
<para>If shape is
<emphasis remap='I'>&hairsp;Convex&hairsp;</emphasis>,
for every pair of points inside the polygon,
the line segment connecting them does not intersect the path.
If known by the client,
specifying 
<emphasis remap='I'>&hairsp;Convex&hairsp;</emphasis>
can improve performance.  
If you specify
<emphasis remap='I'>&hairsp;Convex&hairsp;</emphasis>
for a path that is not convex, 
the graphics results are undefined.</para>
  </listitem>
</itemizedlist>
<itemizedlist remap='IP+bullet'>
  <listitem override='bullet'>
<para>If shape is
<emphasis remap='I'>&hairsp;Nonconvex&hairsp;</emphasis>,
the path does not self-intersect, but the shape is not
wholly convex. 
If known by the client, 
specifying 
<emphasis remap='I'>&hairsp;Nonconvex&hairsp;</emphasis>
instead of
<emphasis remap='I'>&hairsp;Complex&hairsp;</emphasis>
may improve performance.  
If you specify
<emphasis remap='I'>&hairsp;Nonconvex&hairsp;</emphasis>
for a self-intersecting path, the graphics results are undefined.</para>
  </listitem>
</itemizedlist>

<para>The fill-rule of the GC controls the filling behavior of 
self-intersecting polygons.</para>

<para>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.</para>

<para><emphasis remap='I'>&hairsp;XFillPolygon&hairsp;</emphasis>
can generate
<emphasis remap='I'>&hairsp;BadDrawable&hairsp;</emphasis>,
<emphasis remap='I'>&hairsp;BadGC&hairsp;</emphasis>,
<emphasis remap='I'>&hairsp;BadMatch&hairsp;</emphasis>,
and
<emphasis remap='I'>&hairsp;BadValue&hairsp;</emphasis>
errors.</para>

<para>For each arc, 
<emphasis remap='I'>&hairsp;XFillArc&hairsp;</emphasis>
or
<emphasis remap='I'>&hairsp;XFillArcs&hairsp;</emphasis>
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 
<emphasis remap='I'>&hairsp;ArcChord&hairsp;</emphasis>,
the single line segment joining the endpoints of the arc is used.  
For 
<emphasis remap='I'>&hairsp;ArcPieSlice&hairsp;</emphasis>,
the two line segments joining the endpoints of the arc with the center
point are used.  
<emphasis remap='I'>&hairsp;XFillArcs&hairsp;</emphasis>
fills the arcs in the order listed in the array.  
For any given arc,  
<emphasis remap='I'>&hairsp;XFillArc&hairsp;</emphasis>
and
<emphasis remap='I'>&hairsp;XFillArcs&hairsp;</emphasis>
do not draw a pixel more than once.  
If regions intersect, 
the intersecting pixels are drawn multiple times.</para>

<para>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.</para>

<para><emphasis remap='I'>&hairsp;XFillArc&hairsp;</emphasis>
and
<emphasis remap='I'>&hairsp;XFillArcs&hairsp;</emphasis>
can generate
<emphasis remap='I'>&hairsp;BadDrawable&hairsp;</emphasis>,
<emphasis remap='I'>&hairsp;BadGC&hairsp;</emphasis>,
and
<emphasis remap='I'>&hairsp;BadMatch&hairsp;</emphasis>
errors.</para>
</refsect1>

<refsect1 id='diagnostics'><title>DIAGNOSTICS</title>
<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&hairsp;BadDrawable&hairsp;</emphasis></term>
  <listitem>
<para>A value for a Drawable argument does not name a defined Window or Pixmap.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>&hairsp;BadGC&hairsp;</emphasis></term>
  <listitem>
<para>A value for a GContext argument does not name a defined GContext.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>&hairsp;BadMatch&hairsp;</emphasis></term>
  <listitem>
<para>An
<emphasis remap='I'>&hairsp;InputOnly&hairsp;</emphasis>
window is used as a Drawable.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>&hairsp;BadMatch&hairsp;</emphasis></term>
  <listitem>
<para>Some argument or pair of arguments has the correct type and range but fails
to match in some other way required by the request.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>&hairsp;BadValue&hairsp;</emphasis></term>
  <listitem>
<para>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.</para>
  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='see_also'><title>SEE ALSO</title>
<para>XDrawArc(3X11),
XDrawPoint(3X11),
XDrawRectangle(3X11)
<!-- .br -->
<userinput>Xlib - C Language X Interface</userinput></para>
</refsect1>
</refentry>

