Next: , Previous: , Up: ウィンドウ   [Contents][Index]


29.24 座標とウィンドウ

このセクションでは位置とそのウィンドウを報告する関数を説明します。これらの関数のほとんどはウィンドウのフレームのネイティブ位置の原点から相対的な位置を報告します(フレームのジオメトリーを参照)。いくつかの関数はウィンドウのフレームのディスプレイの原点から相対的な位置を報告します。いずれのケースにおいても原点は座標 (0, 0)をもち、X座標とY座標はそれぞれ右方向と下方向で増加します。

以下の関数ではX座標とY座標は整数の文字単位(行数と列数)で報告されます。グラフィカルなディスプレイ上での“行”と“列”はそれぞれ、そのフレームのデフォルトフォントにより指定されるデフォルト文字の高さと幅に対応します(フレームのフォントを参照)。

Function: window-edges &optional window body absolute pixelwise

この関数はwindow端の座標のリストをリターンする。windowが省略またはnilの場合のデフォルトは選択されたウィンドウ。

リターン値は(left top right bottom)という形式をもつ。リストの要素は順にそのウィンドウにより占有される最左列のX座標、最上行のY座標、最右列より1列右のX座標、最下行より1行下のY座標。

これらは装飾すべてを含んだウィンドウの実際の端であることに注意。テキスト端末ではそのウィンドウの右に隣接するウィンドウがあれば、ウィンドウの右端にはそのウィンドウと隣接するウィンドウの間のセパレーターラインが含まれる。

オプション引数bodynilなら、それはwindowの総サイズに対応する端をリターンすることを意味する。bodyが非nilならwindowのボディーの端をリターンすることを意味する。bodyが非nilならwindowには生きたウィンドウを指定しなければならない。

オプション引数absolutenilなら、それはwindowのフレームのネイティブ位置に相対的な端のリターンを意味する。absoluteが非nilならwindowのディスプレーの原点(0, 0)からの相対座標のリターンを意味する。非グラフィカルなシステムではこの引数に効果はない。

オプション引数pixelwisenilなら、それはwindowのフレームのデフォルト文字の幅と高さの単位で座標をリターンすることを意味する。pixelwiseが非nilならピクセル単位で座標をリターンすることを意味する。rightbottomで指定されるピクセルはこれらの端の外側であることに注意。absoluteが非nilなら、pixelwiseも暗黙に非nilとなる。

Function: window-body-edges &optional window

この関数はwindowのボディーの端をリターンする(ウィンドウのサイズを参照)。(window-body-edges window)の呼び出しは(window-edges window t) (上記参照)の呼び出しと等価。

以下の関数は一連のフレーム相対座標(frame-relative coordinates)からウィンドウへの関連付けに使用できます:

Function: window-at x y &optional frame

この関数はframeのネイティブ位置(フレームのジオメトリーを参照)から相対的に、デフォルト文字単位(フレームのフォントを参照)で与えられる座標xyにある生きたウィンドウをリターンする。

その位置にウィンドウがなければリターン値はnilframeが省略またはnilの場合のデフォルトは選択されたフレーム。

Function: coordinates-in-window-p coordinates window

この関数はウィンドウwindowがフレーム相対座標coordinatesを占有するかどうかをチェックして、もしそうならウィンドウのどの部分かをチェックする。windowは生きたウィンドウであること。

coordinates(x . y)という形式のコンスセルであること。ここでxywindowのフレームのネイティブ位置(フレームのジオメトリーを参照)から相対的に、デフォルト文字サイズ(フレームのフォントを参照)の単位で与えられる。

指定された位置にウィンドウが存在しなければリターン値はnil。それ以外ではリターン値は以下のいずれか:

(relx . rely)

その座標はwindow内にある。数値relxrelyは指定された位置にたいする、ウィンドウ左上隅を原点に0から数えたウィンドウ相対座標と等価。

mode-line

その座標はwindowのモードライン内にある。

header-line

その座標はwindowのヘッダーライン内にある。

tab-line

その座標はwindowのタブライン内にある。

right-divider

その座標はwindowと右に隣接するウィンドウを分けるディバイダー内にある。

bottom-divider

その座標はwindowと下にあるウィンドウを分けるディバイダー内にある。

vertical-line

その座標はwindowと右に隣接するウィンドウを分ける垂直ライン内にある。この値はウィンドウにスクロールバーがないときのみ発生し得る。スクロールバー内の位置はこれらの目的にたいしてはウィンドウ外側と判断される。

left-fringe
right-fringe

その座標はウィンドウの左か右のフリンジ内にある。

left-margin
right-margin

その座標はウィンドウの左か右のマージン内にある。

nil

その座標はwindowのいずれの部分でもない。

関数coordinates-in-window-pwindowのあるフレームを使用するので引数としてフレームを要求しない。

以下の関数は文字単位ではなくピクセル単位でウィンドウ位置をリターンします。主にグラフィカルなディスプレイで有用ですがテキスト端末上でも呼び出すことができ、その場合は各文字の占めるスクリーン領域が1ピクセルとなります。

Function: window-pixel-edges &optional window

この関数はwindow端にたいするピクセル座標のリストをリターンする。(window-pixel-edges window)の呼び出しは、(window-edges window nil nil t) (上記参照)の呼び出しと等価。

Function: window-body-pixel-edges &optional window

この関数はwindowのボディー端をピクセルでリターンする。(window-body-pixel-edges window)の呼び出しは、(window-edges window t nil t) (上記参照)の呼び出しと等価。

以下の関数はフレーム原点ではなく、ディスプレイ画面(display screen)の原点に相対的なウィンドウ位置をピクセルでリターンします。

Function: window-absolute-pixel-edges &optional window

この関数はwindowのフレームのディスプレイの(0, 0)にある原点から相対的なwindowのピクセル座標をリターンする。(window-absolute-pixel-edges)の呼び出しは(window-edges window nil t t)の呼び出しと等価。上記を参照のこと。

Function: window-absolute-body-pixel-edges &optional window

この関数はwindowのフレームのディスプレイの(0, 0)にある原点から相対的なwindowのbodyのピクセル座標のリストをリターンする。(window-absolute-body-pixel-edges window)の呼び出しは(window-edges window t t t)の呼び出しと等価。上記を参照のこと。

set-mouse-absolute-pixel-positionと組み合わせることにより、あるウィンドウ内で可視な任意のバッファー位置にマウスポインターを移動するためにこの関数を使用できる。

(let ((edges (window-absolute-body-pixel-edges))
      (position (pos-visible-in-window-p nil nil t)))
  (set-mouse-absolute-pixel-position
   (+ (nth 0 edges) (nth 0 position))
   (+ (nth 1 edges) (nth 1 position))))

グラフィカルな端末では上記フォームは選択されたウィンドウのポイントにあるグリフ左上隅にマウスカーソルを“ワープ”させる。この方法で計算される位置は、そこにツールチップウィンドウを表示するためにも使用できる。

以下の関数はウィンドウ内で可視なバッファー位置のスクリーン座標をリターンします。

Function: window-absolute-pixel-position &optional position window

バッファー位置positionがウィンドウwindow内で可視なら、この関数はpositionにあるグリフの左上隅のディスプレー座標をリターンする。リターン値はwindowのディスプレー原点(0, 0)から相対的な、X座標とY座標からなるコンスセル。window内でpositionが不可視ならnilをリターンする。

windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。positionのデフォルトはwindowwindow-pointの値。

これは選択されたウィンドウ内のポイント位置へのマウスポインターの移動は、以下のような記述で足りることを意味する:

(let ((position (window-absolute-pixel-position)))
  (set-mouse-absolute-pixel-position
   (car position) (cdr position)))

以下の関数はそのウィンドウに表示するテキストを変換することなくウィンドウに内接する最大の矩形をリターンします。

Function: window-largest-empty-rectangle &optional window count min-width min-height positions left

この関数は指定死windowに内接する空の最大の矩形のディメンションをリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。

リターン値はwindowのテキスト領域の空スペース(テキストを何も表示していないスペース)に内接可能な最大矩形の幅、Y座標の開始と終了からなる3要素のリスト。このような矩形はwindowのテキスト領域の右エッジで終端されるとみなされるので、この関数はX座標をリターンしない。空のスペースが見つからなければリターン値はnil

オプション引数countが非nilなら、それはリターンする矩形の最大数を指定する。これはリターン値が最大の矩形が1つ目になるような矩形(3要素のリスト)のリストであることを意味する。countはコンスセルでもよく、この場合にはCARがリターンする矩形数、CDRが非nilならリターンされるすべての矩形が互いに素でなければならないことを示す。

オプション引数min-widthmin-heightが非nilなら、リターンされる矩形の最小の幅と高さを指定する。

オプション引数positionsnilなら、それはリターンされる矩形がカバーしなければならない最上のピクセル位置がCAR、最下のピクセル位置がCDRであるようなコンスセル。これらの位置はwindowのテキスト領域の開始から計測される。

オプション引数leftが非nilなら、それはリターン値がテキストを右から左に表示するバッファーに適していることを意味する。この場合にはリターンされる矩形はすべてwindowのテキスト領域の左端から開始するとみなされる。

この関数はwindow-lines-pixel-dimensions (表示されるテキストのサイズを参照)を通じてwindowのグリフマトリクスの各行のディメンションを取得する必要があることに注意。したがってこの関数はwindowのグリフマトリクスが最新でなければnilをリターンするかもしれない。


Next: マウスによるウィンドウの自動選択, Previous: 水平スクロール, Up: ウィンドウ   [Contents][Index]