Xwindow




Xobject [クラス]


  :super   geometry:viewsurface 

:slots


すべてのXwindowに関連するクラスの共通のスーパークラスである。 現在、スロットもメソッドも定義されていない。



Xdrawable [クラス]


  :super   Xobject 

:slots (drawable ; drawable ID
gcon ; this drawable's default graphic context object
bg-color ; background color
width height ; horizontal and vertical dimensions in dots


Xdrawableは、線分や文字列のようなグラフィックオブジェクト を描くための四角領域を定義する。 Xdrawableは、xwindowやxpixmapのための共通メソッド を定義するための抽象クラスであり、 このクラスのインスタンスは何の効果も持っていない。


:init id [メソッド]

idは、このdrawableのIDとしてdrawableスロットに設定される。 新しいGC(graphic context)が生成され、このdrawableオブジェクトの デフォルトGCとしてgconに設定される。


:drawable [メソッド]
drawable IDを返す。


:flush [メソッド]
Xlibのバッファに保有されるコマンドを掃き出す。


:geometry [メソッド]
7つの幾何学属性のリストを返す。 そのリストは、root-window-id, x座標, y座標, 幅, 高さ, 枠線の幅, visualの深さである。


:height [メソッド]

このXdrawableの高さ(y軸方向のドット数)を返す。


:width [メソッド]
このXdrawableの幅(x軸方向のドット数)を返す。


:gc &rest newgc [メソッド]
もし、newgcが与えられない場合、現在のGCオブジェクトを返す。 もし、newgcgcontextのインスタンスなら、 このXdrawablegcに設定する。 そうでなければ、newgcはメッセージとみなされ、 現在のgcに送られる。


:pos [メソッド]
このXdrawableの位置を示す整数ベクトルを返す。 位置は親windowの相対位置としていつも定義され、 windowマネージャの仲介のもとにルートwindowの直接の子windowとして 生成されたwindowは、ルートwindowの本当の位置に関わらず、環境の タイトルwindowの固定座標を返す。


:x [メソッド]
このXdrawableの親windowとの相対的な現在のx座標を返す。


:y [メソッド]
このXdrawableの親windowとの相対的な現在のy座標を返す。


:copy-from drw [メソッド]
drwは、他のdrawableオブジェクト(Xwindowまたはpixmap)である。 drwの内容がこのXdrawableにコピーされる。


Figure: 描画の基本
\begin{figure}\begin{center}
\epsfile{file=fig/xdraw.ps,height=6cm}
\end{center}
\end{figure}

:point x y &optional (gc gccon) [メソッド]

$ (x, y)$の位置にオプションのgcで点を描く。


:line x1 y1 x2 y2 &optional (gc gcon) [メソッド]
(x1,y1)から(x2,y2)へオプションのgcを用いて 線分を描く。x1, y1, x2, y2は整数でなければならない。


:rectangle x y width height &optional (gc gcon) [メソッド]
(x,y)を中心としてwidthの幅とheightの高さを持つ 四角形を描く。


:arc x y width height angle1 angle2 &optional (gc gcon) [メソッド]
(x,y)を中心としてwidthの幅とheightの高さを持つ 四角形に内接する楕円の円弧を描く。angle1が始まりの角度を示し、 angle2が終わりの角度を示す。これらの角度の単位はラジアンである。


:fill-rectangle x y width height &optional (gc gcon) [メソッド]
四角領域を埋める。


:fill-arc x y width height angle1 angle2 &optional (gc gcon) [メソッド]
円弧の中を埋める。


:string x y str &optional (gc gcon) [メソッド]
(x,y)の位置から文字列strを表示する。背景は、書かない。


:image-string x y str &optional (gc gcon) [メソッド]
文字列strを表示する。文字列は、背景色で満たされる。


:getimage &key :x :y :width :height (:mask #ffffffff) (:format 2) [メソッド]
serverからximageを取り、ピクセルデータを文字列として返す。 serverから送られるピクセルデータは、一端 Xlibのximage構造に蓄積される。 その後、行毎に文字列にコピーされる。 ximage構造は、自動的に破壊される。 :getimageにより得られた画像文字列は、pixel-imageを作るために 使用できる。また、[*]節に書かれているようにpbmフォーマットのファイルに 書き込むことができる。


:putimage image &key :src-x :src-y :dst-x :dst-y :width :height ((:gc g) gc) [メソッド]
このXdrawableの指定された位置にimageを表示する。 imageは、文字列あるいはximage構造へのアドレスポインターである。


:draw-line from to [メソッド]
:lineメソッドと同じである。 他のviewsurfaceクラスとの互換性を提供できる。


:line-width &optional dots [メソッド]
このXdrawableのデフォルトGCの線の幅を設定する。 :gc :line-widthメッセージの使用を推薦する。


:line-style &optional dash [メソッド]
このXdrawableのデフォルトGCの線スタイルを設定する。 :gc :line-styleの使用が好まれる。


:color &optional c [メソッド]
このXdrawableの色を設定する。


:clear [メソッド]
全画面を消去する。この関数は、:clear-areaを呼び出す。


:clear-area &key :x :y :width :height :gc [メソッド]
:fill-rectangleメソッドを用いて四角領域を消去する。



Xpixmap [クラス]


  :super   Xdrawable 

:slots


pixmapは、画像バッファあるいは背景のパターンとしてしばしば用いられる drawableである。xwindowと異なり、xwindowにコピーされるまで pixmap自身を見ることはできないし、pixmapはどんなイベントも発生しない。


:init id [メソッド]

このpixmapを初期化する。


:create &key (:width 500) (:height 500) (:depth 1) (:gc *defaultgc*) [メソッド]
デフォルトGCとして:gcを持つ、width$ \times$heightのpixmapを作成する。


:create-from-bitmap-file fname [メソッド]
fileで指定されるbitmapファイルからpixmapを作る。


:write-to-bitmap-file fname [メソッド]
このpixmapの内容をfnameで指定されるbitmapファイルに書き込む。 このファイルは、:create-from-bitmap-fileメソッドで pixmapを作り、読み戻すことができる。


:destroy [メソッド]
このpixmapを破壊し、X resourceを開放する。



Xwindow [クラス]


  :super   Xdrawable 

:slots (parent subwindows backing-store)


Xwindowは、画面の見える四角領域を定義する。 これは、text-windowやグラフィックオブジェクトを描くためのcanvas だけでなく、windowというよりはむしろグラフィックオブジェクトのような たくさんのpanel-itemscroll-barsからも継承される。



\begin{emtabbing}
{\bf :create}
\it\&key ( \= (:parent *root*) \\lq  [メソッド...
...\> :event-mask (:key :button :enterLeave :configure :motion)
\rm
\end{emtabbing}

xwindow生成し、初期化する。 :parentが与えられたとき、このwindowは:parentの子windowとして 生成され、:parentsubwindowsリストに蓄積される。 :x, :y, :size, :width, :height:border-widthは、このwindow の位置と寸法を決定する。 :save-under:backing-storeは、windowが再マップされたときに 生じるXserverの行動を制御する。 :backing-store:notUseful, :WhenMapped, :Alwaysのどれかであるが、 :save-underはTあるいはNILである。 :backing-pixmapがTのとき、このwindowと同じサイズのpixmapがEuslispにより 生成され、もしXserverがbacking-storeの容量を持っていない場合は、 backing-storeとして蓄積される。 :border:backgroundは、border_pixelbackground_pixel属性をそれぞれ指定する。 もし、panelの中のpanel-buttonとしてたくさんの小さなwindowを 作成するような場合で、このwindowが生成後にすぐ表示されるべきでないならば、 :mapはNILにセットされなければならない。 :titleは、windowのタイトルバーに現れるwindowのタイトルである。 :nameは、このwindowのplistに蓄積されるwindowの名前であり、 プリンタにより表示される名前である。 このwindowへのXのイベントは、:event-maskによって決定される。 それはビットで構成されるevent-maskの整数表現あるいは次のsymbolのリスト である。 :key, :button, :enterLeave, :motion:configure。 もし、もっと正確な制御が必要ならば、次のsymbolをそれぞれのイベントに 指定することができる。:keyPress, :keyRelease, :ButtonPress, :ButtonRelease, :EnterWindow, :LeaveWindow, :PointerMotion, :PointerMotionHint, :ButtonMotion, :KeyMapState,
:Exposure, :VisibilityChange,
:StructureNotify, :ResezeRedirect, :SubstructureNotify,
:SubstructureRedirect,
:FocusChange, :PropertyChange, :ColormapChange
:OwnerGrabButton:keyは、:keyPress:KeyReleaseの両方が指定でき、 :buttonは、:ButtonPress:ButtonReleaseの両方が指定できる。 サーバからイベントが送られてきたとき、window-main-loopは、 そのイベント構造を解析し、:KeyPress, :KeyRelease, :buttonPress, :ButtonRelease, :EnterNotify, :LeaveNotify, :MotionNotify, :ConfigureNotify メッセージをそのイベントが発生したwindowに送る。


:map [メソッド]

このXwindowとその子windowを全て表示する。


:unmap [メソッド]
このXwindowをとその子windowを全て非表示にする。


:selectinput event-mask [メソッド]
event-maskは、整数かあるいはイベントマスクsymbolのリストである。 ビットが1となっているかあるいはevent-maskリスト に列挙されているイベントは、それぞれこのwindowに通知される。


:destroy [メソッド]
このXwindowを破壊し、X resourceを開放する。 windowオブジェクトは、ガーベージコレクトされないため、 *xwindow**xwindow-hash-tab*の中の一致するエントリも削除される。 全ての子windowも:destroyを送ることにより削除する。 このwindowは、親windowの子windowのリストから削除される。 drawableIDは、NILに設定される。


:parent [メソッド]
親windowオブジェクトを返す。


:subwindows [メソッド]
全ての子windowのリストを返す。 子windowは、もっとも最近作られたものがリストの最初である。 このwindowの直接の子windowだけがリストされ、子windowの子windowは リストされない。


:associate child [メソッド]
このwindowの子windowとしてchild windowを登録する。


:dissociate child [メソッド]
子windowのリストからchild windowを削除する。


:title title [メソッド]

このwindowのタイトル名を変更する。そのタイトル名はXserverに送られるため、 一旦蓄積され、window managerによって表示される。


:attributes [メソッド]

このwindowの属性を表現する整数ベクトルを返す。


:visual [メソッド]
このXwindowのvisual resource IDを返す。


:screen [メソッド]
このXwindowのscreen resource IDを返す。


:root [メソッド]
root window IDを返す。


:location [メソッド]

このwindowのxとy座標を記述する2次元の整数ベクトルを返す。


:depth [メソッド]
このwindowの深さ(カラープレーンの数)を返す。


:size [メソッド]
このwindowのサイズ(高さと幅)を返す。


:colormap [メソッド]
このwindowのcolormap resource IDを返す。


:move newx newy [メソッド]
このwindowの位置を(newx,newy)に変更する。 位置は、親windowの相対位置で与えられる。


:resize width height [メソッド]
このwindowのサイズを変更する。 たぶん、大きさのパラメータがクライアント側のXlibに中にキャッシュされるため、 :resizeの直後に:geometryメッセージを 送ると誤った(古い)結果を返す。


:raise [メソッド]
このwindowを前面に持ってくる。


:lower [メソッド]
このwindowを後ろに置く。


:background pixel [メソッド]
背景のピクセル値(カラーマップのインデックス)をpixelに変更する。 pixel値は、bg-colorスロットにも保存される。 :clear処理は、現在の背景を指定されたpixelで埋める。


:background-pixmap pixmap [メソッド]

背景のpixmap値をpixmapに変更する。


:border pixel [メソッド]
このwindowの枠線の色をpixelに設定する。


:set-colormap cmap [メソッド]
colormapを設定する。


:clear [メソッド]
このXwindow内を全て消去する。


:clear-area &key :x :y :width :height [メソッド]
このXwindowの指定された四角領域を消去する。


make-xwindow &rest args [関数]

引き数argsで示されるXwindowを作る。


init-xwindow &optional (display (getenv "DISPLAY")) [関数]
eusxが起動するときに最初に呼び出される関数である。 init-xwindowは、displayで指定されるXserverに接続し、 [*]節に記述されているデフォルト変数を初期化する。 init-xwindowは、デフォルトフォントをロードし、 グローバル変数に設定する。例えば、font-courb12, lucidasans-bold-12など。 このフォントロードは、起動時に時間遅れを引き起こす。 フォントロードの数を減らしたり、ワイルドカード文字"*"を使用せずに 正確なフォント名を指定することにより、その遅れを短くできる。


2016-04-05