Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Display GC: X-Windows Lab

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 5

X-Windows Lab

Functions Used in Program 5

XDrawLine

Syntax

XDrawLine(display, d, gc, x1, y1, x2, y2)

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.

XDrawLine() use these GC components: function, plane-mask, line-width, line-style, cap-style,


fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and clip-mask. XDrawLine() also uses
these GC mode-dependent components: foreground, background, tile, stipple, tile-stipple-x-
origin, tile-stipple-y-origin, dash-offset, and dash-list.

XDrawLine(), can generate BadDrawable , BadGC , and BadMatch errors.

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

display Specifies the connection to the X server.


d Specifies the drawable.
gc Specifies the GC.
x
Specify the x and y coordinates where you want the point drawn.
y

Description

The XDrawPoint() function uses the foreground pixel and function components of the GC to
draw a single point into the specified drawable;

This function uses these GC components: function, plane-mask, foreground, subwindow-mode,


clip-x-origin, clip-y-origin, and clip-mask.

XDrawPoint() can generate BadDrawable , BadGC , and BadMatch errors.

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

XDrawRectangle(display, d, gc, x, y, width, height)


Display *display;
Drawable d;
GC gc;
int x, y;
unsigned int width, height;

Arguments

display Specifies the connection to the X server.


d Specifies the drawable.
gc Specifies the GC.
x
Specify the x and y coordinates, which specify the upper-left corner of the rectangle.
y
width
Specify the width and height, which specify the dimensions of the rectangle.
height

Description

The XDrawRectangle() function draws the outlines of the specified rectangle as if a five-point
PolyLine protocol request were specified for the rectangle:

[x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y]

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.

XDrawRectangle() can generate BadDrawable , BadGC , and BadMatch errors.

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

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;

Arguments

display Specifies the connection to the X server.


d Specifies the drawable.
gc Specifies the GC.
x .ns
Specify the x and y coordinates, which are relative to the origin of the drawable and
y
specify the upper-left corner of the bounding rectangle.
width
Specify the width and height, which are the major and minor axes of the arc.
height
Specifies the start of the arc relative to the three-o'clock position from the center, in units
angle1
of degrees * 64.
Specifies the path and extent of the arc relative to the start of the arc, in units of degrees *
angle2
64.

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:

skewed-angle = atan ( tan ( normal-angle ) * width / height ) + 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 / 2 , pi / 2 ] and adjust
is:

0 for normal-angle in the range [ 0, pi / 2 ]


pi for normal-angle in the range [ pi / 2 , 3 pi / 2 ]
2 pi for normal-angle in the range [ 3 pi / 2 , 2 pi ]

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.

XDrawArc() can generate BadDrawable , BadGC , and BadMatch errors.

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

You might also like