このセクションでは位置とそのウィンドウを報告する関数を説明します。これらの関数のほとんどはウィンドウのフレームのネイティブ位置の原点から相対的な位置を報告します(フレームのジオメトリーを参照)。いくつかの関数はウィンドウのフレームのディスプレイの原点から相対的な位置を報告します。いずれのケースにおいても原点は座標 (0, 0)をもち、X座標とY座標はそれぞれ右方向と下方向で増加します。
以下の関数ではX座標とY座標は整数の文字単位(行数と列数)で報告されます。グラフィカルなディスプレイ上での“行”と“列”はそれぞれ、そのフレームのデフォルトフォントにより指定されるデフォルト文字の高さと幅に対応します(フレームのフォントを参照)。
この関数はwindow端の座標のリストをリターンする。windowが省略またはnil
の場合のデフォルトは選択されたウィンドウ。
リターン値は(left top right
bottom)
という形式をもつ。リストの要素は順にそのウィンドウにより占有される最左列のX座標、最上行のY座標、最右列より1列右のX座標、最下行より1行下のY座標。
これらは装飾すべてを含んだウィンドウの実際の端であることに注意。テキスト端末ではそのウィンドウの右に隣接するウィンドウがあれば、ウィンドウの右端にはそのウィンドウと隣接するウィンドウの間のセパレーターラインが含まれる。
オプション引数bodyがnil
なら、それはwindowの総サイズに対応する端をリターンすることを意味する。bodyが非nil
ならwindowのボディーの端をリターンすることを意味する。bodyが非nil
ならwindowには生きたウィンドウを指定しなければならない。
オプション引数absoluteがnil
なら、それはwindowのフレームのネイティブ位置に相対的な端のリターンを意味する。absoluteが非nil
ならwindowのディスプレイの原点(0,
0)からの相対座標のリターンを意味する。非グラフィカルなシステムではこの引数に効果はない。
オプション引数pixelwiseがnil
なら、それはwindowのフレームのデフォルト文字の幅と高さの単位で座標をリターンすることを意味する。pixelwiseが非nil
ならピクセル単位で座標をリターンすることを意味する。rightとbottomで指定されるピクセルはこれらの端の外側であることに注意。absoluteが非nil
なら、pixelwiseも暗黙に非nil
となる。
この関数はwindowのボディーの端をリターンする(ウィンドウのサイズを参照)。(window-body-edges window)
の呼び出しは(window-edges window
t)
(上記参照)の呼び出しと等価。
以下の関数は一連のフレーム相対座標(frame-relative coordinates)からウィンドウへの関連付けに使用できます:
この関数はframeのネイティブ位置(フレームのジオメトリーを参照)から相対的に、デフォルト文字単位(フレームのフォントを参照)で与えられる座標xとyにある生きたウィンドウをリターンする。
その位置にウィンドウがなければリターン値はnil
。frameが省略またはnil
の場合のデフォルトは選択されたフレーム。
この関数はウィンドウwindowがフレーム相対座標coordinatesを占有するかどうかをチェックして、もしそうならウィンドウのどの部分かをチェックする。windowは生きたウィンドウであること。
coordinatesは(x
.
y)
という形式のコンスセルであること。ここでxとyはwindowのフレームのネイティブ位置(フレームのジオメトリーを参照)から相対的に、デフォルト文字サイズ(フレームのフォントを参照)の単位で与えられる。
指定された位置にウィンドウが存在しなければリターン値はnil
。それ以外ではリターン値は以下のいずれか:
(relx . rely)
その座標はwindow内にある。数値relxとrelyは指定された位置にたいする、ウィンドウ左上隅を原点に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-p
はwindowのあるフレームを使用するので引数としてフレームを要求しない。
以下の関数は文字単位ではなくピクセル単位でウィンドウ位置をリターンします。主にグラフィカルなディスプレイで有用ですがテキスト端末上でも呼び出すことができ、その場合は各文字の占めるスクリーン領域が1ピクセルとなります。
この関数はwindow端にたいするピクセル座標のリストをリターンする。(window-pixel-edges
window)
の呼び出しは、(window-edges window nil nil t)
(上記参照)の呼び出しと等価。
この関数はwindowのボディー端をピクセルでリターンする。(window-body-pixel-edges
window)
の呼び出しは、(window-edges window t nil t)
(上記参照)の呼び出しと等価。
以下の関数はフレーム原点ではなく、ディスプレイ画面(display screen)の原点に相対的なウィンドウ位置をピクセルでリターンします。
この関数はwindowのフレームのディスプレイの(0,
0)にある原点から相対的なwindowのピクセル座標をリターンする。(window-absolute-pixel-edges)
の呼び出しは(window-edges
window nil t t)
の呼び出しと等価。上記を参照のこと。
この関数は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))))
グラフィカルな端末では上記フォームは選択されたウィンドウのポイントにあるグリフ左上隅にマウスカーソルを“ワープ”させる。この方法で計算される位置は、そこにツールチップウィンドウを表示するためにも使用できる。
以下の関数はウィンドウ内で可視なバッファー位置のスクリーン座標をリターンします。
バッファー位置positionがウィンドウwindow内で可視なら、この関数はpositionにあるグリフの左上隅のディスプレイ座標をリターンする。リターン値はwindowのディスプレイ原点(0,
0)から相対的な、X座標とY座標からなるコンスセル。window内でpositionが不可視ならnil
をリターンする。
windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。positionのデフォルトはwindowのwindow-point
の値。
これは選択されたウィンドウ内のポイント位置へのマウスポインターの移動は、以下のような記述で足りることを意味する:
(let ((position (window-absolute-pixel-position))) (set-mouse-absolute-pixel-position (car position) (cdr position)))
以下の関数はそのウィンドウに表示するテキストを変換することなくウィンドウに内接する最大の矩形をリターンします。
この関数は指定死windowに内接する空の最大の矩形のディメンションをリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。
リターン値はwindowのテキスト領域の空スペース(テキストを何も表示していないスペース)に内接可能な最大矩形の幅、Y座標の開始と終了からなる3要素のリスト。このような矩形はwindowのテキスト領域の右エッジで終端されるとみなされるので、この関数はX座標をリターンしない。空のスペースが見つからなければリターン値はnil
。
オプション引数countが非nil
なら、それはリターンする矩形の最大数を指定する。これはリターン値が最大の矩形が1つ目になるような矩形(3要素のリスト)のリストであることを意味する。countはコンスセルでもよく、この場合にはCARがリターンする矩形数、CDRが非nil
ならリターンされるすべての矩形が互いに素でなければならないことを示す。
オプション引数min-widthとmin-heightが非nil
なら、リターンされる矩形の最小の幅と高さを指定する。
オプション引数positions非nil
なら、それはリターンされる矩形がカバーしなければならない最上のピクセル位置がCAR、最下のピクセル位置がCDRであるようなコンスセル。これらの位置はwindowのテキスト領域の開始から計測される。
オプション引数leftが非nil
なら、それはリターン値がテキストを右から左に表示するバッファーに適していることを意味する。この場合にはリターンされる矩形はすべてwindowのテキスト領域の左端から開始するとみなされる。
この関数はwindow-lines-pixel-dimensions
(表示されるテキストのサイズを参照)を通じてwindowのグリフマトリクスの各行のディメンションを取得する必要があることに注意。したがってこの関数はwindowのグリフマトリクスが最新でなければnil
をリターンするかもしれない。