Sprite Window System
プチコン4向けのウィンドウシステムです。ウィンドウはスプライトによって実現されます。よって全てのウィンドウはスプライト内部変数を持つことができます。これを利用し、一つのWindowを一つのオブジェクトと見做してそのWindowのやり取りでさまざまな動作を実現することができます。
(SmileBASICはスプライト指向型言語だとかなんとか)
API #
初期化関連 #
sws_init #
sws_init bufferPage,width,height
SWSを使用する前には必ずこの命令によって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 window
windowを閉じて削除する。この時、windowに割り当てられたvram領域も解放される。
addChildWindow #
addChildWindow parentWindow,childWindow
parentWindowにchildWindowを子Windowとして追加する。
unlinkWindow #
unlinkWindow window
windowを親Windowから切り離す。
getWindowFrame #
getWindowFrame(window)
windowのFrameを取得する。
moveWindow #
moveWindow window,x,y
windowを位置を変更する。
focusWindow #
focusWindow window
windowにfocusする。
unfocusWindow #
unfocusWindow window
windowのfocus状態を解除する。
isFocused #
isFocused(window)
windowがfocus状態か判定する。
グラフィック関連 #
targetWindow #
targetWindow window
windowのグラフィックへの書き込みを開始する。
updateWindow #
updateWindow window
windowのグラフィックへの書き込みを終了してグラフィック(Windowに割り当てられたvram領域)を更新する。
用例 #
targetWindow window
gcls
gputchrp 10,10,time$(),16,1,1,#C_WHITE
updateWindow window
deallocWindowVram #
deallocWindowVram window
windowに割り当てられたvram領域を解放する。