Display GC: X-Windows Lab
Display GC: X-Windows Lab
Display GC: X-Windows Lab
XDrawLine
Syntax
Display *display;
Drawable d;
GC gc;
int x1, y1, x2, y2;
Arguments
display Specifies the connection to the X server.
d Specifies the drawable.
gc Specifies the GC.
x1 y1x2 y2 Specify the points (x1, y1) and (x2, y2) to be connected.
Description
The XDrawLine() function uses the components of the specified GC to draw a line between the
specified set of points (x1, y1) and (x2, y2). It does not perform joining at coincident endpoints.
For any given line, XDrawLine() does not draw a pixel more than once. If lines intersect, the
intersecting pixels are drawn multiple times.
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.
Some argument or pair of arguments has the correct type and range but fails to
BadMatch
match in some other way required by the request.
XDrawPoint
32
X-Windows Lab
Syntax
XDrawPoint(display, d, gc, x, y)
Display *display;
Drawable d;
GC gc;
int x, y;
Arguments
Description
The XDrawPoint() function uses the foreground pixel and function components of the GC to
draw a single point into the specified drawable;
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.
Some argument or pair of arguments has the correct type and range but fails to
BadMatch
match in some other way required by the request.
XDrawRectangle
Syntax
33
X-Windows Lab
Arguments
Description
The XDrawRectangle() function draws the outlines of the specified rectangle as if a five-point
PolyLine protocol request were specified for the rectangle:
For the specified rectangle, this function does not draw a pixel more than once.
This function uses 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. It also uses
these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-
origin, tile-stipple-y-origin, dash-offset, and dash-list.
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.
Some argument or pair of arguments has the correct type and range but fails
BadMatch
match in some other way required by the request.
XDrawArc
Syntax
34
X-Windows Lab
Arguments
Description
XDrawArc() draws a single circular or elliptical arc. The 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, XDrawArc() 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 / 2 , y + height / 2 ], and the infinitely thin path describing the entire circle
or ellipse intersects the horizontal axis at [ x, y + height / 2 ] and [ x + width , y + height / 2 ] and
intersects the vertical axis at [ x + width / 2, y ] and [ x + width / 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/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
35
X-Windows Lab
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 follows:
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 / 2 , pi / 2 ] and adjust
is:
For any given arc, XDrawArc() does 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() does 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 following 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 system and ignore the aspect ratio.
This function uses 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. It also uses
these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-
origin, tile-stipple-y-origin, dash-offset, and dash-list.
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.
Some argument or pair of arguments has the correct type and range but fails to
BadMatch
match in some other way required by the request.
36