int XWMGeometry(display, screen, user_geom, def_geom, bwidth, hints, x_return, y_return,
width_return, height_return, gravity_return)
Display *display;
int screen;
char *user_geom;
char *def_geom;
unsigned int bwidth;
XSizeHints *hints;
int *x_return, *y_return;
int *width_return;
int *height_return;
int *gravity_return;
[=][<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>]
各フィールドはこの関数の引き数に対応する。 (<> で囲んだものは整数、[] で囲んだものは省略可能、{} で囲んだも のは「どれか1つの選択」を意味する。 実際の文字列には括弧が現われてはならないので注意すること。) 文字列のエンコーディングがホストポータブル文字エンコーディングでない場合の 結果は実装依存である。
関数 XParseGeometry は、4 つの値(width, height, xoffset, yoffset)のうち実際に文字列中で 設定されているものと、x, y の値が負でないかどうかを示すビットマスク を返す。 伝統的には、-0 と +0 は異なる値である。ユーザは「画面の右端あるいは下 端からの相対座標」を指定する必要があるからである。 見つかったそれぞれの値に対して、対応する引き数が更新される。 見つからなかった値については、引き数は変更されないままである。 ビットは XValue, YValue, WidthValue, HeightValue, XNegative, YNegative で表現される。これは <X11/Xutil.h> で定義されている。 値のうちのいずれかか符号のうちのいずれかが文字列中に現われていれば、このビットは 必ず設定される。
この関数が XValue フラグか YValue フラグを返した場合、クライアントは要求された位置にウィンドウを配置すべ きである。
The 関数 XWMGeometry は、ユーザやこの関数を呼び出したプログラムが指定した何らかのジオメトリ 情報( XParseGeometry で使用されるフォーマット)をサイズヒント(普通は WM_NORMAL_HINTS に格納 されているヒント)と結びつけ、ウィンドウを記述する位置、サイズ、gravity 値 (NorthWestGravity, NorthEastGravity, SouthEastGravity, SouthWestGravity のいずれか)を返す。 XSizeHints 構造体に基本サイズが設定されていない場合には、最小サイズが設定されてい ればこれを使用する。 そうでない場合には、基本サイズは 0 とされる。 ヒント構造体に最小サイズが設定されていない場合は、基本サイズが使用され る。 この関数は( XParseGeometry が返す形式の)マスク値を返す。 この値は、どの値がユーザ指定であるか、ウィンドウの位置は画面右端や下端か らの相対座標であるかどうかを示す。 これらの座標は既に、x_return, y_return の値として処理されている点に注 意すること。
また、不正なジオメトリを指定すると高さや幅として 0 が返される場合が ある点に注意すること。 関数を呼ぶ時には、ヒントを直接更新するためにヒントの win_gravity フィールドのアドレスを渡してもよい。