Smirnoffとは、Spirytusの外部ウィンドウ表示システムが余りに使いにくかったため、新たに開発された外部ウィンドウ表示専用のDLLです。
現行バージョンは0.33で、以下のリファレンスに存在する関数でも未実装のモノがまだあるかもしれません。
WindowはCreateWindow関数で作られ、実際に画面上に描画される窓そのものである。これに対して、CreateScreen関数で作られるScreenはそのままでは実際に画面上に描画されず、BitBlt関数を使ってWindowに転送(描画)することによって画面に描画される。これ以外の描画についてはWindowとScreenは完全に互換である。
また、Windowを操作する関数の一部にはScreenに対しては使用することができないものがある。このリファレンスではWindowでもScreenでもよい場合にはDrawingHandle、Windowしか使えない場合にはWindowHandle、Screenのみの場合にはScreenHandleと表記する。
任意のDrawingHandleがWindowHandleなのかScreenHandleなのかを取得するにはGetWindowType関数を用いる。
GDIHandleとは、WindowやScreenに対してどのような色や幅(線の場合)で描画するのかを示す値である。GDIHandleには
の3種類がある。GDIHandleを作成したら、SelectObject関数でDrawingHandleに対して設定することで、そのDrawingHandleでの描画される色などを変えることができる。 また、DrawingHandleに対してPen,Brush,Fontはそれぞれ別々に設定されるので、Penをどう設定しても塗りつぶしの色は変わらないしBrushをどう設定しても線描画の色は変わらない。
なお、任意のGDIHandleがPenなのかBrushなのかFontなのかを取得するにはGetGDIHandleType関数を用いる。
DLLのバージョンが浮動小数で入っている。
false, エラーメッセージ
の2つの値を返す。assertでそのまま拾えばエラーの内容を取得できる
窓を作成する。
Screen(内部描画バッファ)を作成する。
WindowやScreenを破棄する。
窓を移動する
窓の位置を取得する
Windowのサイズを変更する。クライアント領域がwidth*heightになるようにリサイズするので、フチなどを含めた実際のWindowのサイズはコレよりも大きくなる
WindowやScreenのサイズを取得する。取得するのはクライアント領域のサイズなので、Windowの場合は実際のサイズはコレよりも大きくなる DrawingHandle:サイズを取得する窓のハンドル return1:DrawingHandleの横幅 return2:DrawingHandleの高さ
任意のDrawingHandleがWindowなのかScreenなのかを取得する DrawingHandle:調べるDrawingHandle return:Windowならば0、Screenならば1
任意のWindowHandleがフォーカスされているかを取得する。 return:フォーカスされていれば1,それ以外なら0
任意のWindowHandleをフォーカスする
任意のWindowHandleの左上隅から見たマウス座標を取得する return:マウス座標X、マウス座標Ys
ペンを作成する
ブラシを作成する
フォントを作成する。フォントに色情報はないのでDrawTextで指定すること
WindowやScreenに対して、描画に用いるGDIHandleを指定する
指定したGDIHandleを削除する。DrawingHandleに対して設定したまま削除してもOK
GDIHandleの種別(ペンなのかブラシなのか)を取得する
指定したDrawingHandleにおいてstringの文字列の横幅を取得する
指定したDrawingHandleにおいてstringの文字列の高さを取得する
現在作られているGDIHandleの総数を取得する。デバッグ用に。 return:現在作られているGDIHandleの総数
描画関数の座標系はDrawingHandleのクライアント座標、すなわちWindowであればタイトルやフチを含まない部分の左上、Screenであれば左上を原点とする。
長方形の縁を描画(塗りつぶさない) DrawingHandle:描画先のDrawingHandle x:長方形の左端の座標 y:長方形の上端の座標 width:長方形の幅 height:長方形の高さ
長方形を塗りつぶし描画(縁はない) DrawingHandle:描画先のDrawingHandle x:長方形の左端の座標 y:長方形の上端の座標 width:長方形の幅 height:長方形の高さ
文字列を描画 DrawingHandle:描画先のDrawingHandle x:文字列の左端のX座標 y:文字列の上端のY座標 color:文字列の色 string:表示する文字列
線描画のカレントポジションを移動する(_MOVE2Dの同類) DrawingHandle:描画先のDrawingHandle x:移動先のX座標 y:移動先のY座標
直線を描画するとともにカレントポジションを移動する(_LINE2Dの同類) DrawingHandle:描画先のDrawingHandle x:描画先のX座標 y:描画先のY座標
指定したWindowHandleの(x,y)の位置にScreenHandleの内容を転送する