Sprite Window System

プチコン4向けのウィンドウシステムです。ウィンドウはスプライトによって実現されます。よって全てのウィンドウはスプライト内部変数を持つことができます。これを利用し、一つのWindowを一つのオブジェクトと見做してそのWindowのやり取りでさまざまな動作を実現することができます。
(SmileBASICはスプライト指向型言語だとかなんとか)

UIKit

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領域を解放する。