GC

XCreateGCGC 作成
XCopyGCGC をコピー
XChangeGCGC の値を変更
XGetGCValuesGC の値を取得
XFreeGCGC を削除
XGContextFromGCGC から GContext ID を取得
XFlushGCGC をフラッシュ
値の変更
XSetState前景色、背景色、function、plane_mask を変更
XSetForeground前景色を変更
XSetBackground背景色を変更
XSetFunctionfunction を変更
XSetPlaneMaskplane_mask を変更
XSetLineAttributes線の属性を変更
XSetDashesダッシュ線をセット
XSetFillStylefill_style をセット
XSetFillRulefill_rule をセット
XQueryBestSize最適なサイズを取得
XQueryBestTile最適なタイルサイズを取得
XQueryBestStipple最適な Stipple サイズを取得
XSetTileタイルをセット
XSetStippleStipple をセット
XSetTSOrigints_{x,y}_origin をセット
XSetFontフォントをセット
XSetClipOriginクリップ原点をセット
XSetClipMaskクリップマスクをセット
XSetClipRectanglesクリップの矩形をセット
XSetArcModearc_mode をセット
XSetSubwindowModesubwindow_mode をセット
XSetGraphicsExposuresgraphics_exposures をセット
Region
XCreateRegion空の Region を作成
XDestroyRegionRegion を破棄
XPolygonRegion多角形領域の Region を作成
XSetRegionRegion をクリップマスクとして GC にセット
XOffsetRegionRegion の位置を相対移動
XShrinkRegionRegion の領域を拡張/縮小
XClipBoxRegion を囲む最小の四角形を返す
XIntersectRegion2つの Region の交差する領域を返す
XUnionRegion2つの Region を結合する
XUnionRectWithRegionRegion と矩形を結合する
XXorRegion2つの Region を XOR した領域を返す
XEmptyRegionRegion が空か
XEqualRegion同じ Region か
XPointInRegion点か Region の領域に含まれるか
XRectInRegionRegion が矩形の範囲内にあるか
GC XCreateGC(Display *display, Drawable d, unsigned long valuemask, XGCValues *values);
グラフィックスコンテキストを作成し、GC を返します。
GC は、指定されたドローアブルと同じルートと深さを持つ、任意の描画先ドローアブルで使用できます。
他のドローアブルと一緒に使用すると、BadMatch エラーが発生します。
XCopyGC(Display *display, GC src, GC dest, unsigned long valuemask);
GC をコピーする。
src と dest は同じルートと深さを持たなければなりません。そうしないと、BadMatch エラーが発生します。
valuemask は、XCreateGC と同様に、コピーする値のマスクを指定します。
XChangeGC(Display *display, GC gc, unsigned long valuemask, XGCValues *values);
指定された GC の valuemask で指定されたコンポーネントを変更します。

clip_mask を変更すると、コンテキスト上の以前の XSetClipRectangles リクエストが上書きされます。
dash_offset または dashes を変更すると、コンテキスト上の以前の XSetDashes リクエストが上書きされます。

コンポーネントが検証および変更される順序は、サーバーによって異なります。
エラーが生成された場合、コンポーネントのサブセットが変更されている可能性があります。
Status XGetGCValues(Display *display, GC gc, unsigned long valuemask, XGCValues *values_return);
指定された GC の valuemask で指定されたコンポーネントを返します。

clip_mask と dashes (GCClipMask と GCDashList) は要求できないことに注意してください。
また、コンポーネントがクライアントによって明示的に設定されていない場合、GCFont、GCtile、GCStipple に対して、無効なリソース ID (3 つの最上位ビットのうち 1 つ以上が 1 に設定されたもの) が返されることにも注意してください。
戻り値
成功時 0 以外。それ以外は 0
XFreeGC(Display *display, GC gc);
指定された GC と、関連するすべてのストレージを破棄します。
GContext XGContextFromGC(GC gc);
GC から GContext ID を取得
void XFlushGC(Display *display, GC gc);
GC の値の変更を強制的に送信する。

Xlib は通常、GC を使ったグラフィックス関数が実際に呼び出されるまで、GC の値の変更はサーバーへ送信されません。
これにより、値の変更を1つのリクエストでまとめて送ることが出来ます。

ただし、状況によっては、クライアントがサーバーへの送信を、明示的に強制する必要がある場合があります。
例としては、拡張インターフェイスがどの GC が使用されるかを知ることができないような方法で、プロトコル拡張が GC を間接的に使用する場合が考えられます。
値の変更
XSetState(Display *display, GC gc, unsigned long foreground, unsigned long background, int function, unsigned long plane_mask);
前景色、背景色、function、plane_mask を変更
XSetForeground(Display *display, GC gc, unsigned long foreground);
前景色を変更
XSetBackground(Display *display, GC gc, unsigned long background);
背景色を変更
XSetFunction(Display *display, GC gc, int function);
function を変更
XSetPlaneMask(Display *display, GC gc, unsigned long plane_mask);
plane_mask を変更
XSetLineAttributes(Display *display, GC gc, unsigned int line_width, int line_style, int cap_style, int join_style);
線の属性を変更
XSetDashes(Display *display, GC gc, int dash_offset, char dash_list[], int n);
指定された GC の破線スタイルの dash_offset とダッシュリスト属性を設定します。

指定されたダッシュリストには、少なくとも 1 つの要素がなければなりません。そうでない場合は、BadValue エラーが発生します。
dump_list の最初の要素と交互の要素 (2 番目、4 番目など) は偶数のダッシュであり、その他は奇数のダッシュです。
各要素はダッシュの長さをピクセル単位で指定します。すべての要素はゼロ以外でなければなりません。そうでない場合は、BadValue エラーが発生します。
奇数長のリストを指定することは、同じリストをそれ自体と連結して偶数長のリストを生成するように指定することと同じです。

dash_offset はパターンのフェーズを定義し、単一のグラフィックスリクエストでパターンが実際に開始されるべきダッシュリスト内のピクセル数を指定します。
ダッシュは結合スタイルと組み合わされたパス要素を通じて連続しますが、結合された線の各シーケンス間のダッシュオフセットにリセットされます。

ダッシュの測定単位は、通常の座標系と同じです。
理想的には、破線の長さは線の傾斜に沿って測定されますが、実装では水平線と垂直線についてのみこの理想に一致する必要があります。
理想的な意味論が成り立たないため、長さを線の長軸に沿って測定することが提案されます。
長軸は、x 軸から -45 〜 +45 度、または 135 〜 225 度の角度で描かれた線の x 軸として定義されます。他のすべての線では、主軸は y 軸です。
XSetFillStyle(Display *display, GC gc, int fill_style);
fill_style をセット
XSetFillRule(Display *display, GC gc, int fill_rule);
fill_rule をセット
Status XQueryBestSize(Display *display, int class, Drawable which_screen, unsigned int width, unsigned int height,
    unsigned int *width_return, unsigned int *height_return);
最適なサイズ、または指定されたサイズに最も近いサイズを返します。
class
CursorShape : which_screen で指定されたスクリーンに完全に表示できる最大サイズ。
TileShape : 最も速くタイリングできるサイズ。
StippleShape : 最も速く点描できるサイズ。
CursorShape : ドローアブルは目的のスクリーンを示します。

TileShape と StippleShape は、which_screen はスクリーンと、場合によってはウィンドウクラスと深さを示します。
InputOnly ウィンドウを TileShape または StippleShape のドローアブルとして使用することはできません。使用しないと、BadMatch エラーが発生します。
Status XQueryBestTile(Display *display, Drawable which_screen, unsigned int width, unsigned int height,
    unsigned int *width_return, unsigned int *height_return);
最適なサイズまたは最も近いサイズ、つまり、which_screen で指定されたスクリーン上で最も速く並べることができるサイズを返します。
ドローアブルはスクリーンを示し、場合によってはウィンドウのクラスと深さを示します。
InputOnly ウィンドウがドローアブルとして使用されている場合、BadMatch エラーが発生します。
Status XQueryBestStipple(Display *display, Drawable which_screen, unsigned int width, unsigned int height,
    unsigned int *width_return, unsigned int *height_return);
最適な Stipple サイズを取得
XSetTile(Display *display, GC gc, Pixmap tile);
タイルをセット
XSetStipple(Display *display, GC gc, Pixmap stipple);
Stipple をセット
XSetTSOrigin(Display *display, GC gc, int ts_x_origin, int ts_y_origin);
ts_{x,y}_origin をセット
XSetFont(Display *display, GC gc, Font font);
フォントをセット
XSetClipOrigin(Display *display, GC gc, int clip_x_origin, int clip_y_origin);
クリップ原点をセット
XSetClipMask(Display *display, GC gc, Pixmap pixmap);
クリップマスクをセット
XSetClipRectangles(Display *display, GC gc, int clip_x_origin, int clip_y_origin, XRectangle rectangles[], int n, int ordering);
指定された GC 内のクリップマスクを、指定された四角形のリストに変更し、クリップの原点を設定します。
出力は四角形内に収まるようにクリップされます。

クリップ原点は、グラフィックスリクエストで指定された描画先ドローアブルの原点を基準として解釈されます。
長方形の座標は、クリップの原点を基準として解釈されます。

四角形は交差しないようにする必要があります。交差する場合、グラフィックスの結果は未定義になります。
四角形のリストが空になる可能性があることに注意してください。これにより、出力が事実上無効になります。
これは、XCreateGC、XChangeGC、XSetClipMask でクリップマスクとして None を渡すことの逆です。
ordering
四角形の順序関係。
これにより、サーバーの動作が高速化される可能性があります。
間違った順序が指定された場合、X サーバーは BadMatch エラーを生成する可能性がありますが、そうする必要はありません。エラーが生成されない場合、グラフィックスの結果は未定義です。

UnSorted : 四角形が任意の順序である。
YSorted : 長方形が Y 原点で減少していないことを意味します。
YXSorted : Y 原点が等しいすべての長方形が X 原点で減少しないという点で、YSorted の順序をさらに制約します。
YXBanded : 考えられるすべての Y 走査線について、その走査線を含むすべての四角形が同一の Y 原点と Y 範囲を持つことを要求することにより、YXSorted をさらに制約します。
XSetArcMode(Display *display, GC gc, int arc_mode);
arc_mode をセット
XSetSubwindowMode(Display *display, GC gc, int subwindow_mode);
subwindow_mode をセット
XSetGraphicsExposures(Display *display, GC gc, Bool graphics_exposures);
graphics_exposures をセット
Region
Region XCreateRegion(void);
空の Region を作成
XDestroyRegion(Region r);
Region を破棄
Region XPolygonRegion(XPoint points[], int n, int fill_rule);
多角形領域の Region を作成
points
多角形の各点
n
点の数
full_rule
EvenOddRule, WindingRule
XSetRegion(Display *display, GC gc, Region r);
GC 内のクリップマスクを指定された Region に設定します。

領域は、ドローアブルの原点を基準にして指定されます。
結果として得られる GC クリップの起点は実装に依存します。
GC に設定した後、その Region を破棄できます。
XOffsetRegion(Region r, int dx, int dy);
Region の位置を相対移動
XShrinkRegion(Region r, int dx, int dy);
正の値を指定すると領域のサイズが縮小し、負の値を指定すると領域が拡大します。
XClipBox(Region r, XRectangle *rect_return);
Region を囲む最小の四角形を返す
XIntersectRegion(Region sra, Region srb, Region dr_return);
2つの Region の交差する領域を返す
XUnionRegion(Region sra, Region srb, Region dr_return);
2つの Region を結合する
XUnionRectWithRegion(XRectangle *rectangle, Region src_region, Region dest_region_return);
Region と矩形を結合する
XXorRegion(Region sra, Region srb, Region dr_return);
2つの Region を XOR した領域を返す
Bool XEmptyRegion(Region r);
Region が空か
Bool XEqualRegion(Region r1, Region r2);
2つの Region が、同じオフセット・サイズ・形状か。
Bool XPointInRegion(Region r, int x, int y);
点か Region の領域に含まれるか
int XRectInRegion(Region r, int x, int y, unsigned int width, unsigned int height);
四角形全体が指定された領域内にある場合は RectangleIn を返し、四角形が完全に指定された領域外にある場合は RectangleOut を返し、四角形の一部が指定された領域内にある場合は RectanglePart を返します。