


XDrawArc(3X11)						       XDrawArc(3X11)
X11R5									X11R5



NAME
  XDrawArc, XDrawArcs, XArc - draw arcs	and arc	structure

SYNTAX

  XDrawArc(_d_i_s_p_l_a_y, _d, _g_c, _x, _y, _w_i_d_t_h,	_h_e_i_g_h_t,	_a_n_g_l_e_1,	_a_n_g_l_e_2)
	Display	*_d_i_s_p_l_a_y;
	Drawable _d;
	GC _g_c;
	int _x, _y;
	unsigned int _w_i_d_t_h, _h_e_i_g_h_t;
	int _a_n_g_l_e_1, _a_n_g_l_e_2;

  XDrawArcs(_d_i_s_p_l_a_y, _d,	_g_c, _a_r_c_s, _n_a_r_c_s)
	Display	*_d_i_s_p_l_a_y;
	Drawable _d;
	GC _g_c;
	XArc *_a_r_c_s;
	int _n_a_r_c_s;

ARGUMENTS

  _a_n_g_l_e_1    Specifies the start	of the arc relative to the three-o'clock
	    position from the center, in units of degrees * 64.

  _a_n_g_l_e_2    Specifies the path and extent of the arc relative to the start of
	    the	arc, in	units of degrees * 64.

  _a_r_c_s	    Specifies an array of arcs.

  _d	    Specifies the drawable.

  _d_i_s_p_l_a_y   Specifies the connection to	the X server.

  _g_c	    Specifies the GC.

  _n_a_r_c_s	    Specifies the number of arcs in the	array.

  _w_i_d_t_h
  _h_e_i_g_h_t    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 relative	to the origin
	    of the drawable and	specify	the upper-left corner of the bounding
	    rectangle.

DESCRIPTION

  _X_D_r_a_w_A_r_c draws a single circular or elliptical arc, and _X_D_r_a_w_A_r_c_s 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
  rectangle, and the major and minor axes are specified	by the width and
  height.  Positive angles indicate counterclockwise motion, and negative
  angles indicate clockwise motion. If the magnitude of	angle2 is greater
  than 360 degrees, _X_D_r_a_w_A_r_c or	_X_D_r_a_w_A_r_c_s truncates it to 360 degrees.


  For an arc specified as [ _x, _y, _w_i_d_t_h, _h_e_i_g_h_t, _a_n_g_l_e_1, _a_n_g_l_e_2	], the origin
  of the major and minor axes is at [ _x+(_w_i_d_t_h/2), _y+(_h_e_i_g_h_t/2)	], and the
  infinitely thin path describing the entire circle or ellipse intersects the
  horizontal axis at [ _x, _y+(_h_e_i_g_h_t/2) ] and [ _x+_w_i_d_t_h,	_y+(_h_e_i_g_h_t/2) ] and
  intersects the vertical axis at [ _x+(_w_i_d_t_h/2), _y ] and [ _x+(_w_i_d_t_h/2),
  _y+_h_e_i_g_h_t ].  These coordinates can be	fractional and so are not truncated
  to discrete coordinates.  The	path should be defined by the ideal mathemat-
  ical 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 circle/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
  circle/ellipse at the	endpoint.

  For an arc specified as [ _x, _y, _w_i_d_t_h, _h_e_i_g_h_t, _a_n_g_l_e_1, _a_n_g_l_e_2	], 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 protractor) is as	fol-
  lows:

  _s_k_e_w_e_d-_a_n_g_l_e = aattaann [	ttaann((_n_o_r_m_a_l-_a_n_g_l_e) * (_w_i_d_t_h/_h_e_i_g_h_t) ] + _a_d_j_u_s_t

  The _s_k_e_w_e_d-_a_n_g_l_e and _n_o_r_m_a_l-_a_n_g_l_e are	expressed in radians (rather than in
  degrees scaled by 64)	in the range [ 0, 2pi ]	and where aattaann returns a
  value	in the range [ -pi/2, pi/2 ] and _a_d_j_u_s_t	is:

  0	  for _n_o_r_m_a_l-_a_n_g_l_e in the range	 [ 0, pi/2 ]

  pi	  for _n_o_r_m_a_l-_a_n_g_l_e in the range	 [ pi/2, 3pi/2 ]

  2pi	  for _n_o_r_m_a_l-_a_n_g_l_e in the range	 [ 3pi/2, 2pi ]

  For any given	arc, _X_D_r_a_w_A_r_c and _X_D_r_a_w_A_r_c_s 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 intersect, _X_D_r_a_w_A_r_c and _X_D_r_a_w_A_r_c_s 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 counterclockwise extent, except as	it affects joins.

  If the last point in one arc coincides with the first	point in the follow-
  ing arc, the two arcs	will join correctly. 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 horizontal or vertical
  line can be drawn.  Angles are computed based	solely on the coordinate sys-
  tem 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 components:	foreground, background,	tile, stipple, tile-stipple-
  x-origin, tile-stipple-y-origin, dash-offset,	and dash-list.

  _X_D_r_a_w_A_r_c and _X_D_r_a_w_A_r_c_s can generate _B_a_d_D_r_a_w_a_b_l_e, _B_a_d_G_C, and _B_a_d_M_a_t_c_h
  errors.




STRUCTURES
  The _X_A_r_c structure contains:

  typedef struct {
	  short	x, y;
	  unsigned short width,	height;
	  short	angle1,	angle2;		    /* Degrees * 64 */
  } 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 coordi-
  nates	and sizes out of the 16-bit ranges, because the	protocol only has
  16-bit fields	for these values.

DIAGNOSTICS

  _B_a_d_D_r_a_w_a_b_l_e
	    A value for	a Drawable argument does not name a defined Window or
	    Pixmap.

  _B_a_d_G_C	    A value for	a GContext argument does not name a defined GContext.

  _B_a_d_M_a_t_c_h  An _I_n_p_u_t_O_n_l_y window	is used	as a Drawable.

  _B_a_d_M_a_t_c_h  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
  XDrawLine(3X11), XDrawPoint(3X11), XDrawRectangle(3X11)
  _X_l_i_b - _C _L_a_n_g_u_a_g_e _X _I_n_t_e_r_f_a_c_e	delim off










































