Status XGetGeometry(display, d, root_return, x_return, y_return, width_return,
height_return, border_width_return, depth_return)
Display *display;
Drawable d;
Window *root_return;
int *x_return, *y_return;
unsigned int *width_return, *height_return;
unsigned int *border_width_return;
unsigned int *depth_return;
XGetWindowAttributes はエラー BadDrawable, BadWindow を起こすことがある。
関数 XGetGeometry はドロウアブルの現在のジオメトリとルートウィンドウを返す。 ドロウアブルのジオメトリは、x, y 座標、幅と高さ、境界の幅、深さを持つ。 これらは引き数リストに記述される。 この関数にクラスが InputOnly であるウィンドウを渡すことは正しい指定である。
typedef struct { int x, y; /* ウィンドウの位置 */ int width, height; /* ウィンドウの幅と高さ */ int border_width; /* ウィンドウの境界幅 */ int depth; /* ウィンドウの深さ */ Visual *visual; /* 対応するビジュアル構造体 */ Window root; /* ウィンドウがあるスクリーンのルートウィンドウ */ int class; /* InputOutput, InputOnly*/ int bit_gravity; /* ビットの gravity 値のうちの1つ */ int win_gravity; /* ウィンドウの gravity 値のうちの1つ */ int backing_store; /* NotUseful, WhenMapped, Always */ unsigned long backing_planes;/* 可能ならば保存されるプレーン */ unsigned long backing_pixel;/* プレーンの復元に使われる値 */ Bool save_under; /* 真偽値。ビットを保存するかどうか */ Colormap colormap; /* ウィンドウに対応するカラーマップ */ Bool map_installed; /* 真偽値。現在カラーマップはインストールされているかどうか */ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */ long all_event_masks; /* クライアント全てが注目しているイベントの集合 */ long your_event_mask; /* 自分自身のイベントマスク */ long do_not_propagate_mask;/* 伝播させないイベントの集合 */ Bool override_redirect; /* override-redirect を示す真偽値 */ Screen *screen; /* 正しいスクリーンへのバックポインタ */ } XWindowAttributes;
x, y メンバには、ウィンドウの左上外側の隅の座標が、原点に対する相対座 標でセットされる。 width, height メンバには、境界を含まないウィンドウ内部のサイズがセット される。 border_width メンバには、ウィンドウの幅のピクセル数がセットされる。 depth メンバにはウィンドウの深さ(つまり、オブジェクトのピクセルごとの ビット数)がセットされる。 visual メンバはスクリーンの対応する Visual 構造体へのポインタである。 root メンバには、このウィンドウがあるスクリーンのルートウィンドウがセッ トされる。 class メンバにはウィンドウのクラスがセットされる。 これは InputOutput と InputOnly のいずれかである。
bit_gravity メンバにはウィンドウの bit gravity 値がセットされる。 これは以下のいずれかである:
ForgetGravity |
EastGravity
|
NorthWestGravity |
SouthWestGravity
|
NorthGravity |
SouthGravity
|
NorthEastGravity |
SouthEastGravity
|
WestGravity |
StaticGravity
|
win_gravity メンバにはウィンドウの window gravity 値がセットされる。 これは以下のいずれかである:
UnmapGravity |
EastGravity
|
NorthWestGravity |
SouthWestGravity
|
NorthGravity |
SouthGravity
|
NorthEastGravity |
SouthEastGravity
|
WestGravity |
StaticGravity
|
For additional information on gravity, see section 3.3.
backing_store メンバは、ウィンドウの内容をどのように保持すべきか指定す る。この値は、 WhenMapped, Always, NotUseful のいずれかである。 backing_planes メンバは、バッキングストアやセーブアンダーで保存しなけ ればならない動的なデータを、ウィンドウのどのビットプレーンが保持するの か指示する(ビットに1をセットする)。 backing_pixel メンバは、backing_planes にセットされていないプレーンで どの値を使用するかを示す。
save_under メンバには True か False がセットされる。 colormap メンバには指定したウィンドウのカラーマップがセットされる。 このメンバの取る値はカラーマップの ID か None である。 map_installed メンバはカラーマップが現在インストールされているかどうか を示す。このメンバの取る値は、 True か False である。 map_state メンバはウィンドウの状態を示し、 IsUnmapped, IsUnviewable, IsViewable のいずれかの値を取る。 IsUnviewable は、そのウィンドウ自体はマップされているが祖先ウィンドウにマップされて いないものがある場合に使用される。
all_event_masks メンバは、そのウィンドウ上で選択しているイベントマスク を全てのクライアントについてビットごとの論理和を取ったものである。 your_event_mask メンバは問い合わせをしたクライアントが選択している全て のイベントマスクの論理和を取ったものである。 do_not_propagate_mask メンバは、伝播してはならないイベントの集合につい てビットごとの論理和を取ったものである。
override_redirect メンバは、このウィンドウがウィンドウ構成の制御を無視 するかどうかを指定する。このメンバの取る値は True か False である。 このメンバが True ならば、ウィンドウマネージャはそのウィンドウを無視すべきである。
screen メンバには、正しいスクリーンを指すバックポインタを与えるスクリー ンへのポインタがセットされる。 これにより、ルートウィンドウのフィールドを使ったループでマッチするフィー ルドを探すことなく、容易にスクリーン情報を取得することができる。