NAME

XDrawLine, XDrawLines, XDrawSegments, XSegment - draw lines, polygons, and line structure

SYNTAX

int XDrawLine(Display *_d_i_s_p_l_a_y, Drawable _d, GC _g_c, int _x_1, int _y_1, int _x_2, int _y_2); int XDrawLines(Display *_d_i_s_p_l_a_y, Drawable _d, GC _g_c, XPoint *_p_o_i_n_t_s, int _n_p_o_i_n_t_s, int _m_o_d_e); int XDrawSegments(Display *_d_i_s_p_l_a_y, Drawable _d, GC _g_c, XSegment *_s_e_g_m_e_n_t_s, int _n_s_e_g_m_e_n_t_s);

ARGUMENTS

_d Specifies the drawable.
_d_i_s_p_l_a_y Specifies the connection to the X server.
_g_c Specifies the GC.
_m_o_d_e Specifies the coordinate mode.
You can pass _C_o_o_r_d_M_o_d_e_O_r_i_g_i_n or _C_o_o_r_d_M_o_d_e_P_r_e_v_i_o_u_s.
_n_p_o_i_n_t_s Specifies the number of points in the array.
_n_s_e_g_m_e_n_t_s Specifies the number of segments in the array.
_p_o_i_n_t_s Specifies an array of points.
_s_e_g_m_e_n_t_s Specifies an array of segments.
_x_1
_y_1
_x_2
_y_2 Specify the points (x1, y1) and (x2, y2) to be connected.

DESCRIPTION

The _X_D_r_a_w_L_i_n_e 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, _X_D_r_a_w_L_i_n_e does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times.

The _X_D_r_a_w_L_i_n_e_s function uses the components of the specified GC to draw npoints-1 lines between each pair of points (point[i], point[i+1]) in the array of _X_P_o_i_n_t structures. It draws the lines in the order listed in the array. The lines join correctly at all intermediate points, and if the first and last points coincide, the first and last lines also join correctly. For any given line, _X_D_r_a_w_L_i_n_e_s does not draw a pixel more than once. If thin (zero line-width) lines intersect, the intersecting pixels are drawn multiple times. If wide lines intersect, the intersecting pixels are drawn only once, as though the entire _P_o_l_y_L_i_n_e protocol request were a single, filled shape. _C_o_o_r_d_M_o_d_e_O_r_i_g_i_n treats all coordinates as relative to the origin, and _C_o_o_r_d_M_o_d_e_P_r_e_v_i_o_u_s treats all coordinates after the first as relative to the previous point.

The _X_D_r_a_w_S_e_g_m_e_n_t_s function draws multiple, unconnected lines. For each segment, _X_D_r_a_w_S_e_g_m_e_n_t_s draws a line between (x1, y1) and (x2, y2). It draws the lines in the order listed in the array of _X_S_e_g_m_e_n_t structures and does not perform joining at coincident endpoints. For any given line, _X_D_r_a_w_S_e_g_m_e_n_t_s does not draw a pixel more than once. If lines intersect, the intersecting pixels are drawn multiple times.

All three functions 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. The _X_D_r_a_w_L_i_n_e_s function also uses the join-style GC component. All three functions 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_L_i_n_e, _X_D_r_a_w_L_i_n_e_s, and _X_D_r_a_w_S_e_g_m_e_n_t_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. _X_D_r_a_w_L_i_n_e_s can also generate a _B_a_d_V_a_l_u_e error.

STRUCTURES

The _X_S_e_g_m_e_n_t structure contains:


typedef struct {
     short x1, y1, x2, y2;
} XSegment;


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

_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.
_B_a_d_V_a_l_u_e
Some numeric value falls outside the range of values accepted by the request. Unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. Any argument defined as a set of alternatives can generate this error.

SEE ALSO

XDrawArc(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