XDrawLines(display, d, gc, points, npoints, mode)
Display *display;
Drawable d;
GC gc;
XPoint *points;
int npoints;
int mode;
XDrawSegments(display, d, gc, segments, nsegments)
Display *display;
Drawable d;
GC gc;
XSegment *segments;
int nsegments;
関数 XDrawLines は、指定した GC のコンポーネントを使い、 XPoint 構造体の配列が示す点の組 (point[i], point[i+1]) を結ぶ npoints-1 個の 線を描く。 この関数は配列に入っている順に線を描画する。 中間の点全てにおいて線分は正しく接続され、最初の点と最後の点が一致して いれば最初と最後の点も正しく接続される。 与えられた任意の線について、 XDrawLines は1つのピクセルを2度以上描画しない。 細い(line-width が 0 の)線が交差している場合、交差している点は複数回 描画される。 幅を持つ線が交差している場合は、交差しているピクセルは1度だけ描画される。 つまり、あたかも全体の PolyLine プロトコルリクエストが単一の、塗りつぶしに対するものであるかのように処 理される。 CoordModeOrigin の場合は全ての座標値は原点からの相対座標となり、 CoordModePrevious の場合には、最初の点より後の座標は全て前の点からの相対座標となる。
XDrawSegments 関数は複数の、接続されていない線を描画する。 各線分に対して、 XDrawSegments は点 (x1, y1) と (x2, y2) を結ぶ線を描く。 この関数は XSegment 構造体の配列に入っている順に線を描画する。一致する端点の接続は行わない。 ある線について、 XDrawSegments は1つのピクセルを1度しか描画しない。 線が交差している場合は、交差しているピクセルは複数回描画される。
これら3つの関数が使う GC コンポーネントは以下である。 function, plane-mask, line-width, line-style, cap-style, fill-style, subwindow-mode, clip-x-origin, clip-y-origin, clip-mask. 関数 XDrawLines は、GC の join-style コンポーネントも使用する。 これら3つの関数は、以下の GC モード依存のコンポーネントも使用する。 foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dash-list.
XDrawLine, XDrawLines, XDrawSegments はエラー BadDrawable, BadGC, BadMatch を起こすことがある。 XDrawLines はさらに BadValue も起こすことがある。
typedef struct { short x1, y1, x2, y2; } XSegment;
全ての x, y メンバは符号付き整数である。 width, height メンバは16ビットの符号無し整数である。 プロトコルではこれらの値は16ビットのフィールドしか持たないので、16ビッ トの範囲を越える座標やサイズを生成しないよう注意しなければならない。