XDrawArc, XDrawArcs, XArc - draw arcs and arc structure


SYNTAX

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

       XDrawArcs(display, d, gc, arcs, narcs)
             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 rela-
                 tive 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.

       narcs     Specifies the number of arcs in the array.

       width
       height    Specify the width and height, which are the
                 major and minor axes of the arc.

       x
       y         Specify the x and y coordinates, which are rela-
                 tive to the origin of the drawable and specify
                 the upper-left corner of the bounding rectangle.


DESCRIPTION

       XDrawArc draws a single circular or elliptical arc, and
       XDrawArcs draws multiple circular or elliptical arcs.
       Each arc is specified by a rectangle and two angles.  The
       center of the circle or ellipse is the center of the rect-
       cated to discrete coordinates.  The path should be defined
       by the ideal mathematical path.  For a wide line with
       line-width lw, the bounding outlines for filling are given
       by the two infinitely thin paths consisting of all points
       whose perpendicular distance from the path of the cir-
       cle/ellipse is equal to lw/2 (which may be a fractional
       value).  The cap-style and join-style are applied the same
       as for a line corresponding to the tangent of the cir-
       cle/ellipse at the endpoint.

       For an arc specified as [x,y,width,height,angle1,angle2],
       the angles must be specified in the effectively skewed
       coordinate system of the ellipse (for a circle, the angles
       and coordinate systems are identical).  The relationship
       between these angles and angles expressed in the normal
       coordinate system of the screen (as measured with a pro-
       tractor) is as follows:

       skewed-angle=atan(tan(normal-angle)*h_w<I>e_i<I>i_d<I>g_t<I>h_h<I>t_)+adjust

       The skewed-angle and normal-angle are expressed in radians
       (rather than in degrees scaled by 64) in the range [0,2n]
       and where atan returns a value in the range [-_,_] and
       adjust is:

       0         for normal-angle in the range [0,_]
       n         for normal-angle in the range [_,__]
       2n        for normal-angle in the range [__,2n]

       For any given arc, XDrawArc and XDrawArcs do not draw a
       pixel more than once.  If two arcs join correctly and if
       the line-width is greater than zero and the arcs inter-
       sect, XDrawArc and XDrawArcs do not draw a pixel more than
       once.  Otherwise, the intersecting pixels of intersecting
       arcs are drawn multiple times.  Specifying an arc with one
       endpoint and a clockwise extent draws the same pixels as
       specifying the other endpoint and an equivalent counter-
       clockwise extent, except as it affects joins.

       If the last point in one arc coincides with the first
       point in the following arc, the two arcs will join cor-
       rectly.  If the first point in the first arc coincides
       with the last point in the last arc, the two arcs will
       join correctly.  By specifying one axis to be zero, a hor-
       izontal or vertical line can be drawn.  Angles are com-
       puted based solely on the coordinate system and ignore the
       aspect ratio.

       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 compo-
       } XArc;

       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

       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 cor-
                 rect type and range but fails to match in some
                 other way required by the request.


SEE ALSO

       XDrawLine(3X11), XDrawPoint(3X11), XDrawRectangle(3X11)
       Xlib - C Language X Interface



X Version 11               Release 6.4                          1