Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
XDrawArc(3)			XLIB FUNCTIONS			   XDrawArc(3)

       XDrawArc, XDrawArcs, XArc - draw	arcs and arc structure

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

       int XDrawArcs(Display *display, Drawable	d, GC gc, XArc *arcs, int

       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.

       narcs	 Specifies the number of arcs in the array.

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

       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.

       delim %%	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 rectangle, and the major and minor axes
       are specified by	the width and height.  Positive	angles indicate	coun-
       terclockwise motion, and	negative angles	indicate clockwise motion.  If
       the magnitude of	angle2 is greater than 360 degrees, XDrawArc or
       XDrawArcs truncates it to 360 degrees.

       For an arc specified as %[ ~x, ~y, ~width , ~height, ~angle1, ~angle2
       ]%, the origin of the major and minor axes is at	% [ x +^ {width	over
       2} , ~y +^ {height over 2}  ]%, and the infinitely thin path describing
       the entire circle or ellipse intersects the horizontal axis at %	[ x,
       ~y +^ {height over 2}  ]% and % [ x +^ width , ~y +^ { height over 2 }]
       % and intersects	the vertical axis at % [ x +^ {	width over 2 } , ~y ]%
       and % [ x +^ { width over 2 }, ~y +^ height ]%.	These coordinates can
       be fractional and so are	not truncated 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 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/el-
       lipse 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 ex-
       pressed in the normal coordinate	system of the screen (as measured with
       a protractor) is	as follows:

       % roman "skewed-angle" ~	= ~ atan left (	tan ( roman "normal-angle" )
	* width	over height right ) +^ adjust%

       The skewed-angle	and normal-angle are expressed in radians (rather than
       in degrees scaled by 64)	in the range % [ 0 , ~2	pi  ]% and where atan
       returns a value in the range % [	- pi over 2 , ~pi over 2  ] % and ad-
       just is:

       %0%	for normal-angle in the	range %	[ 0 , ~pi over 2  ]%
       %pi%	for normal-angle in the	range %	[ pi over 2 , ~{3 pi} over 2  ]%
       %2 pi%	for normal-angle in the	range %	[ {3 pi} over 2	, ~2 pi	 ]%

       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 intersect, 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	end-
       point and an equivalent counterclockwise	extent,	except as it affects

       If the last point in one	arc coincides with the first point in the fol-
       lowing 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 hori-
       zontal or vertical line can be drawn.  Angles are computed 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 components: foreground, background, tile,	stipple, tile-
       stipple-x-origin, tile-stipple-y-origin,	dash-offset, and dash-list.

       XDrawArc	and XDrawArcs can generate BadDrawable,	BadGC, and BadMatch

       The XArc	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
       coordinates and sizes out of the	16-bit ranges, because the protocol
       only has	16-bit fields for these	values.

		 A value for a Drawable	argument does not name a defined Win-
		 dow or	Pixmap.

       BadGC	 A value for a GContext	argument does not name a defined GCon-

       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

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

X Version 11			 libX11	1.6.5			   XDrawArc(3)


Want to link to this manual page? Use this URL:

home | help