XDrawLine(3) 線と多角形の描画、線を表す構造体

Other Alias

XDrawLines, XDrawSegments, XSegment

書式

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

      Display *display;

      Drawable d;

      GC gc;

      int x1y1x2y2;

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;

引き数

d
ドロウアブル(drawable)を指定。
display
X サーバへの接続を指定。
gc
GC を指定。
mode
座標モードを指定。 CoordModeOriginCoordModePrevious のいずれかを指定する。
npoints
配列中の点の数を指定。
nsegments
配列中の線分の数を指定。
points
点の配列を指定。
segments
線分の配列を指定。
x1

y1

x2

y2
線で結ばれる点 (x1, y1) と (x2, y2) を指定。

説明

関数 XDrawLine は指定された GC のコンポーネントを使い、指定された点の組 (x1, y1) と (x2, y2) を結ぶ線を描画する。 この関数は一致する端点の接続は行わない。 与えられた任意の線に対して、 XDrawLine は1度だけしか描画を行わない。 線が交差した場合、交点のピクセルは複数回描画される。

関数 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 も起こすことがある。

構造体

XSegment 構造体の内容を示す。

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

全ての x, y メンバは符号付き整数である。 width, height メンバは16ビットの符号無し整数である。 プロトコルではこれらの値は16ビットのフィールドしか持たないので、16ビッ トの範囲を越える座標やサイズを生成しないよう注意しなければならない。

返り値

BadDrawable
引き数 Drawable の値が、定義されている Window や Pixmap を指していない。
BadGC
引き数 GContext の値が、定義されている GContext を指していない。
BadMatch
InputOnly のウィンドウがドロウアブルとして指定された。
BadMatch
引き数や引き数の組は正しい型・範囲を持っているが、そのリクエストが要求する 他の条件に適合できなかった。 BadValue 指定された数値に、リクエストの許容範囲を越えているものがある。引き数に対 して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範 囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが ある。