Sprite Window System
プチコン4向けのウィンドウシステムです。ウィンドウはスプライトによって実現されます。よって全てのウィンドウはスプライト内部変数を持つことができます。これを利用し、一つのWindowを一つのオブジェクトと見做してそのWindowのやり取りでさまざまな動作を実現することができます。
(SmileBASICはスプライト指向型言語だとかなんとか)
API#
初期化関連#
sws_init#
sws_init bufferPage,width,heightSWSを使用する前には必ずこの命令によってSWSの初期化を行う必要があります。
SWSではbufferPageに指定されたGRPページに指定したwidth, heightのWindowのグラフィック操作用のバッファを確保します。これはWindow(スプライト)表示のためにvramlibによって確保されるGRP領域と異なり、Windowのグラフィックへの書き込み操作毎に初期化されます。なお、通常はtargetWindow, updateWindowを用いてWindowのグラフィックを操作するため、このバッファ領域について意識する必要はありません。
targetWindow時に各Windowにvramlibによって割り当てられたGRP領域からこのバッファにグラフィックを読み込み、
updateWindow時にこのバッファの内容を各WindowのGRP領域に上書きします。
Window関連#
newWindow#
newWindow(x,y,width,height)新規Windowを作成し、作成したWindowを返却する。
newClearWindow#
newClearWindow(x,y,width,height)新規Windowを作成し、作成したWindowを返却する。ただし、このWindowにはvram領域が割り当てられず、グラフィックを持たない透明なWindowとなる。 (実際は適当な大きさのGRP領域をスプライトの参照画像としているが、スプライトの色を透明にしている。)
closeWindow#
closeWindow windowwindowを閉じて削除する。この時、windowに割り当てられたvram領域も解放される。
addChildWindow#
addChildWindow parentWindow,childWindowparentWindowにchildWindowを子Windowとして追加する。
unlinkWindow#
unlinkWindow windowwindowを親Windowから切り離す。
getWindowFrame#
getWindowFrame(window)windowのFrameを取得する。
moveWindow#
moveWindow window,x,ywindowを位置を変更する。
focusWindow#
focusWindow windowwindowにfocusする。
unfocusWindow#
unfocusWindow windowwindowのfocus状態を解除する。
isFocused#
isFocused(window)windowがfocus状態か判定する。
グラフィック関連#
targetWindow#
targetWindow windowwindowのグラフィックへの書き込みを開始する。
updateWindow#
updateWindow windowwindowのグラフィックへの書き込みを終了してグラフィック(Windowに割り当てられたvram領域)を更新する。
用例#
targetWindow window
gcls
gputchrp 10,10,time$(),16,1,1,#C_WHITE
updateWindow windowdeallocWindowVram#
deallocWindowVram windowwindowに割り当てられたvram領域を解放する。