XClearArea | 矩形内を背景で描画 |
---|---|
XClearWindow | ウィンドウ全体を背景で描画 |
XCopyArea | 領域をコピーする |
XCopyPlane | 指定プレーンの範囲をコピー |
点と線の描画 | |
XDrawPoint | 点を描画 |
XDrawPoints | 複数の点を描画 |
XDrawLine | 直線を描画 |
XDrawLines | 連続した直線を描画 |
XDrawSegments | 複数の個別の直線を描画 |
XDrawRectangle | 四角形の線を描画 |
XDrawRectangles | 複数の四角形の線を描画 |
XDrawArc | 円弧を描画 |
XDrawArcs | 複数の円弧を描画 |
塗りつぶし | |
XFillRectangle | 矩形塗りつぶし |
XFillRectangles | 複数の矩形塗りつぶし |
XFillPolygon | 多角形塗りつぶし |
XFillArc | 円弧の塗りつぶし |
XFillArcs | 複数の円弧塗りつぶし |
XClearArea(Display *display, Window w, int x, int y, unsigned int width, unsigned int height, Bool exposures);
ウィンドウの背景ピクセル値または Pixmap を使用して、指定されたウィンドウ内の長方形の領域を描画します。
サブウィンドウモードは実質的に ClipByChildren です (子でクリップ)。
ウィンドウに背景タイルが定義されている場合、子によってクリップされた四角形は、このタイルで埋められます。
ウィンドウの背景が None の場合、ウィンドウの内容は変更されません。
クラスが InputOnly のウィンドウを指定すると、BadMatch エラーが発生します。
サブウィンドウモードは実質的に ClipByChildren です (子でクリップ)。
ウィンドウに背景タイルが定義されている場合、子によってクリップされた四角形は、このタイルで埋められます。
ウィンドウの背景が None の場合、ウィンドウの内容は変更されません。
クラスが InputOnly のウィンドウを指定すると、BadMatch エラーが発生します。
width,height
0 の場合、ウィンドウの幅・高さから x,y 位置を引いた値
exposures
Expose イベントを生成するか。
True の場合、表示されているか、バッキングストアに保持されている四角形の領域に対して、1 つ以上の Expose イベントが生成されます。
True の場合、表示されているか、バッキングストアに保持されている四角形の領域に対して、1 つ以上の Expose イベントが生成されます。
XClearWindow(Display *display, Window w);
ウィンドウ内の領域全体をクリアする。
XClearArea (display, w, 0, 0, 0, 0, False) と同等。
ウィンドウに背景タイルが定義されている場合、長方形は、全ビットが 1 のプレーンマスクと、GXcopy 関数を使用してタイル化されます。
ウィンドウの背景が None の場合、ウィンドウの内容は変更されません。
クラスが InputOnly のウィンドウを指定すると、BadMatch エラーが発生します。
XClearArea (display, w, 0, 0, 0, 0, False) と同等。
ウィンドウに背景タイルが定義されている場合、長方形は、全ビットが 1 のプレーンマスクと、GXcopy 関数を使用してタイル化されます。
ウィンドウの背景が None の場合、ウィンドウの内容は変更されません。
クラスが InputOnly のウィンドウを指定すると、BadMatch エラーが発生します。
XCopyArea(Display *display, Drawable src, Drawable dest, GC gc, int src_x, int src_y, unsigned int width, unsigned int height, int dest_x, int dest_y);
src の指定された四角形を、dest の指定された四角形に結合します。
ドローアブルは同じルートと深さを持たなければなりません。そうしないと、BadMatch エラーが発生します。
src 四角形のウィンドウ領域が隠れている状態で、バッキングストアに保持されていない場合、または src の境界線の外側の領域が指定されている場合、それらの領域はコピーされません。
代わりに、表示されている、またはバッキングストアに保持されている、対応するすべての dst 領域で、次の処理が行われます。
dest が None 以外の背景を持つウィンドウである場合、dest の対応する領域は、その背景でタイル表示されます(全ビットが 1 のプレーンマスクと GXcopy 関数を使用)。
タイリングや、dest がウィンドウか Pixmap かどうかに関係なく、graphics_exposures が True の場合は、対応するすべての dest 領域の GraphicsExpose イベントが生成されます。
graphics_exposures が True なのに、GraphicsExpose イベントが生成されない場合は、NoExpose イベントが生成されます。
次の GC コンポーネントを使用: function、plane_mask、subwindow_mode、graphics_exposures、clip_x_origin、clip_y_origin、clip_mask。
ドローアブルは同じルートと深さを持たなければなりません。そうしないと、BadMatch エラーが発生します。
src 四角形のウィンドウ領域が隠れている状態で、バッキングストアに保持されていない場合、または src の境界線の外側の領域が指定されている場合、それらの領域はコピーされません。
代わりに、表示されている、またはバッキングストアに保持されている、対応するすべての dst 領域で、次の処理が行われます。
dest が None 以外の背景を持つウィンドウである場合、dest の対応する領域は、その背景でタイル表示されます(全ビットが 1 のプレーンマスクと GXcopy 関数を使用)。
タイリングや、dest がウィンドウか Pixmap かどうかに関係なく、graphics_exposures が True の場合は、対応するすべての dest 領域の GraphicsExpose イベントが生成されます。
graphics_exposures が True なのに、GraphicsExpose イベントが生成されない場合は、NoExpose イベントが生成されます。
次の GC コンポーネントを使用: function、plane_mask、subwindow_mode、graphics_exposures、clip_x_origin、clip_y_origin、clip_mask。
XCopyPlane(Display *display, Drawable src, Drawable dest, GC gc, int src_x, int src_y, unsigned int width, unsigned int height, int dest_x, int dest_y, unsigned long plane);
指定された src 四角形の単一ビットプレーンを、指定された GC と組み合わせて使用し、dest の指定された四角形を変更します。
ドローアブルは同じルートを持つ必要がありますが、同じ深さである必要はありません。
ドローアブルのルートが同じでない場合は、BadMatch エラーが発生します。
plane に、1 に設定されたビットが 1 つしか存在せず、プレーンの値が 2 sup n (n は src の深さ) 以上である場合、BadValue エラーが発生します。
事実上、XCopyPlane は、dest の四角形と同じ深さ、src 領域で指定されたサイズの Pixmap を形成します。
これは、GC の前景/背景ピクセルを使用し (src のビットプレーンに 1 に設定されたビットが含まれるすべての前景、src のビットプレーンに 0 に設定されたビットが含まれるすべての背景)、CopyArea プロトコル リクエストと同等の処理が実行されます。
すべて同じ Expose セマンティクスです。
これは、src ビットプレーンの指定された領域を、FillOpaqueStippled の塗りつぶしスタイルを備えた点描として使用して、dest の長方形領域を塗りつぶすことと考えることもできます。
次の GC コンポーネントを使用: function、plane-mask、foreground、background、subwindow-mode、graphics-exposures、clip-x-origin、clip-y-origin、Clip-mask。
ドローアブルは同じルートを持つ必要がありますが、同じ深さである必要はありません。
ドローアブルのルートが同じでない場合は、BadMatch エラーが発生します。
plane に、1 に設定されたビットが 1 つしか存在せず、プレーンの値が 2 sup n (n は src の深さ) 以上である場合、BadValue エラーが発生します。
事実上、XCopyPlane は、dest の四角形と同じ深さ、src 領域で指定されたサイズの Pixmap を形成します。
これは、GC の前景/背景ピクセルを使用し (src のビットプレーンに 1 に設定されたビットが含まれるすべての前景、src のビットプレーンに 0 に設定されたビットが含まれるすべての背景)、CopyArea プロトコル リクエストと同等の処理が実行されます。
すべて同じ Expose セマンティクスです。
これは、src ビットプレーンの指定された領域を、FillOpaqueStippled の塗りつぶしスタイルを備えた点描として使用して、dest の長方形領域を塗りつぶすことと考えることもできます。
次の GC コンポーネントを使用: function、plane-mask、foreground、background、subwindow-mode、graphics-exposures、clip-x-origin、clip-y-origin、Clip-mask。
plane
ビットプレーンを指定します。正確に 1 つのビットを 1 に設定する必要があります。
点と線の描画
XDrawPoint(Display *display, Drawable d, GC gc, int x, int y);
GC の前景ピクセルと function コンポーネントを使用して、単一の点を描画します。
[ function、plane-mask、foreground、subwindow-mode、clip-x-origin、clip-y-origin、clip-mask ]
[ function、plane-mask、foreground、subwindow-mode、clip-x-origin、clip-y-origin、clip-mask ]
XDrawPoints(Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode); typedef struct { short x, y; } XPoint;
配列にリストされている順序で、複数の点を描画します。
points
座標の配列
npoints
座標の数
mode
座標のモード。
CoordModeOrigin: 全ての座標は原点からの相対位置。
CoordModePrevious: 最初の座標以降は、前の点からの相対位置。
CoordModeOrigin: 全ての座標は原点からの相対位置。
CoordModePrevious: 最初の座標以降は、前の点からの相対位置。
XDrawLine(Display *display, Drawable d, GC gc, int x1, int y1, int x2, int y2);
直線を描画する。
一致する終点では、結合は実行されません。
特定の線に対して、1 つのピクセルを複数回描画しません。
線が交差する場合、交差するピクセルが複数回描画されます。
[ function、plane-mask、line-width、line-style、cap-style、fill-style、subwindow-mode、clip-x-origin、clip-y-origin、clip-mask、foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dash-list ]
一致する終点では、結合は実行されません。
特定の線に対して、1 つのピクセルを複数回描画しません。
線が交差する場合、交差するピクセルが複数回描画されます。
[ function、plane-mask、line-width、line-style、cap-style、fill-style、subwindow-mode、clip-x-origin、clip-y-origin、clip-mask、foreground, background, tile, stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, dash-list ]
XDrawLines(Display *display, Drawable d, GC gc, XPoint *points, int npoints, int mode);
[i],[i+1] のペア間で直線を描画する。
線はすべての中間点で正しく結合し、始点と終点が一致する場合は、最初と最後の線も正しく結合します。
特定の線に対して、1 つのピクセルを複数回描画しません。
細い (線幅が 0 の) 線が交差する場合、交差するピクセルが複数回描画されます。
幅の広い線が交差する場合、PolyLine プロトコルリクエスト全体が 1 つの塗りつぶされた形状であるかのように、交差するピクセルは 1 回だけ描画されます。
線はすべての中間点で正しく結合し、始点と終点が一致する場合は、最初と最後の線も正しく結合します。
特定の線に対して、1 つのピクセルを複数回描画しません。
細い (線幅が 0 の) 線が交差する場合、交差するピクセルが複数回描画されます。
幅の広い線が交差する場合、PolyLine プロトコルリクエスト全体が 1 つの塗りつぶされた形状であるかのように、交差するピクセルは 1 回だけ描画されます。
mode
座標のモード。
CoordModeOrigin: 全ての座標は原点からの相対位置。
CoordModePrevious: 最初の座標以降は、前の点からの相対位置。
CoordModeOrigin: 全ての座標は原点からの相対位置。
CoordModePrevious: 最初の座標以降は、前の点からの相対位置。
XDrawSegments(Display *display, Drawable d, GC gc, XSegment *segments, int nsegments); typedef struct { short x1, y1, x2, y2; } XSegment;
複数の接続されていない線を描画します。
各セグメントについて、(x1, y1) と (x2, y2) の間で線を描画します。
配列にリストされている順序で線を描画し、一致する端点での結合は実行しません。
特定のラインに対して 1 つのピクセルを複数回描画しません。
線が交差する場合、交差するピクセルが複数回描画されます。
各セグメントについて、(x1, y1) と (x2, y2) の間で線を描画します。
配列にリストされている順序で線を描画し、一致する端点での結合は実行しません。
特定のラインに対して 1 つのピクセルを複数回描画しません。
線が交差する場合、交差するピクセルが複数回描画されます。
XDrawRectangle(Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height);
四角形の 5 点で PolyLine プロトコルリクエストが指定されているかのように、指定された四角形の輪郭を描画します。
[x,y] [x+幅,y] [x+幅,y+高さ] [x,y+高さ] [x,y]
ピクセルを複数回描画しません。
[x,y] [x+幅,y] [x+幅,y+高さ] [x,y+高さ] [x,y]
ピクセルを複数回描画しません。
XDrawRectangles(Display *display, Drawable d, GC gc, XRectangle rectangles[], int nrectangles); typedef struct { short x, y; unsigned short width, height; } XRectangle;
配列にリストされている順序で四角形を描画します。
長方形が交差する場合、交差するピクセルが複数回描画されます。
長方形が交差する場合、交差するピクセルが複数回描画されます。
XDrawArc(Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height, int angle1, int angle2);
単一の円弧または楕円弧を描画する。
各円弧は、長方形と 2 つの角度によって指定されます。
円または楕円の中心は長方形の中心であり、長軸と短軸は幅と高さで指定されます。
正の角度は反時計回りの動きを示し、負の角度は時計回りの動きを示します。
angle2 の大きさが 360 度より大きい場合、360 度に切り捨てます。
角度は座標系のみに基づいて計算され、アスペクト比は無視されます。
各円弧は、長方形と 2 つの角度によって指定されます。
円または楕円の中心は長方形の中心であり、長軸と短軸は幅と高さで指定されます。
正の角度は反時計回りの動きを示し、負の角度は時計回りの動きを示します。
angle2 の大きさが 360 度より大きい場合、360 度に切り捨てます。
角度は座標系のみに基づいて計算され、アスペクト比は無視されます。
angle1
中心から 3 時の位置を基準とした円弧の開始位置を、度 * 64 の単位で指定します。
angle2
円弧の開始点を基準とした円弧のパスと範囲を、度 * 64 の単位で指定します。
XDrawArcs(Display *display, Drawable d, GC gc, XArc *arcs, int narcs); typedef struct { short x, y; unsigned short width, height; short angle1, angle2; //Degrees * 64 } XArc;
複数の円弧を描画。
1 つの円弧の最後の点が次の円弧の最初の点と一致する場合、2 つの円弧は正しく結合されます。
最初の円弧の最初の点が最後の円弧の最後の点と一致する場合、2 つの円弧は正しく結合されます。
1 つの軸をゼロに指定すると、水平線または垂直線を描画できます。
1 つの円弧の最後の点が次の円弧の最初の点と一致する場合、2 つの円弧は正しく結合されます。
最初の円弧の最初の点が最後の円弧の最後の点と一致する場合、2 つの円弧は正しく結合されます。
1 つの軸をゼロに指定すると、水平線または垂直線を描画できます。
塗りつぶし
XFillRectangle(Display *display, Drawable d, GC gc, int x, int y, unsigned int width, unsigned int height);
四角形の 4 点で FillPolygon プロトコルリクエストが指定されているかのように、指定された四角形を塗りつぶします。
ピクセルを複数回描画しません。
ピクセルを複数回描画しません。
XFillRectangles(Display *display, Drawable d, GC gc, XRectangle *rectangles, int nrectangles);
複数の矩形塗りつぶし
XFillPolygon(Display *display, Drawable d, GC gc, XPoint *points, int npoints, int shape, int mode);
指定されたパスで閉じられた領域を塗りつぶします。
リストの最後の点が最初の点と一致しない場合、パスは自動的に閉じられます。
領域のピクセルを複数回描画しません。
指定された形状に応じて、次のことが発生します。
GC の塗りつぶしルールは、自己交差するポリゴンの塗りつぶし動作を制御します。
リストの最後の点が最初の点と一致しない場合、パスは自動的に閉じられます。
領域のピクセルを複数回描画しません。
指定された形状に応じて、次のことが発生します。
- 形状が複雑な場合、パスが自己交差する可能性があります。パス内の連続した一致点は自己交差として扱われないことに注意してください。
- 形状が凸の場合、多角形内のすべての点のペアについて、それらを接続する線分はパスと交差しません。
クライアントが知っている場合は、Convex を指定するとパフォーマンスが向上する可能性があります。
凸でないパスに Convex を指定した場合、グラフィックスの結果は不定になります。 - 形状が非凸の場合、パスは自己交差しませんが、形状は完全に凸ではありません。
クライアントが知っている場合は、Complex ではなく Nonconvex を指定するとパフォーマンスが向上する可能性があります。
自己交差パスに非凸を指定した場合、グラフィックスの結果は不定になります。
GC の塗りつぶしルールは、自己交差するポリゴンの塗りつぶし動作を制御します。
shape
形状がわかっている場合、指定するとパフォーマンスが向上する。
Complex: 複雑
Convex: 凸
Nonconvex: 非凸
Complex: 複雑
Convex: 凸
Nonconvex: 非凸
mode
座標のモード。
CoordModeOrigin: 全ての座標は原点からの相対位置。
CoordModePrevious: 最初の座標以降は、前の点からの相対位置。
CoordModeOrigin: 全ての座標は原点からの相対位置。
CoordModePrevious: 最初の座標以降は、前の点からの相対位置。