* blaライブラリのメモ -(by [[K]], 2018.05.07) ** (0) -blaライブラリは、Basic-Likeライブラリのadvanceバージョンのこと。現バージョンはWindows用のみ。 -初心者向けの使いやすさよりも、ウィンドウを複数持つ仕組みの方に力点を置いている。 -とりあえずライブラリとしては最大16個のウィンドウを管理できる。 -bla.cを修正すればもっと増やせる。 -作者は川合。 -Essenではグラフィックを簡単に扱えるようにしたいので、blaライブラリを使う。 -あとEssenはマルチウィンドウ環境にしたい。メインウィンドウで実行して、サブウィンドウにはプロンプトがあり、そこで動作中のプログラムの変数のprintなどができるとか。 **(1) -#include "bla.h"して使う。Windows版の場合、リンク時は-lgdi32が必要。 -bla_openWin(xsiz, ysiz, title) --xsiz, ysizはウィンドウの描画可能域のサイズ。titleは文字列。 --titleについては、呼び出し時に内部ワークエリアへタイトルをコピーするので、呼び出し後に文字列が破壊されても問題ない。 --[返値] bla_Window * 型のハンドルを返す。リソース不足によりウィンドウのオープンが失敗した時は、NULLを返す。 --なおこの関数によって開かれたウィンドウは、アプリがCtrl-Cなどで強制終了した場合や単にexitなどで終了した場合のどちらでも、勝手に閉じられてリソースをOSに返す。つまりウィンドウを消したくなければアプリは終了してはいけない。 --なお、ユーザがウィンドウを勝手に閉じてしまう場合はありうる。その場合、win->phase==2になるので、それを検出して対処することはできる。この場合リソースはまだ解放されていないので、closeWinする必要がある(もしくはアプリを終了してしまえばリソースは解放される)。 -bla_closeWin(win) --ウィンドウを閉じる。リソースも解放される。 --[返値] この関数はvoidなので何も返さない。 -bla_exit(code) --codeはint。アプリを終了する。 --この関数で終了すると、最も互換性の問題が少ないはず。 --[返値] この関数はそもそも帰ってこない。 -bla_flushAll(win) --winはハンドル。描画バッファの内容を確実に画面に反映させる。 --[返値] この関数はvoidなので何も返さない。 -bla_leapFlushAll(win, t) --tはミリ秒。描画バッファの内容を過負荷にならない頻度で画面に反映させる。 --過負荷になるかどうかは、前回の反映からどのくらいの時間が経っているかで判定する。 --具体的には、前回描画時刻からtミリ秒以上経っていればflushAllする。 --t=0の場合は、無条件にflushAllする。 --ループの中でflushする場合とかに使える。 --[返値] この関数はvoidなので何も返さない。 -bla_wait(msec) --ミリ秒単位のwait。WindowsならSleep関数を使えばいいのだけど、それだと他のOSに移植するときに困難になるので、blaがラッピング関数を提供している。 --[返値] この関数はvoidなので何も返さない。 -bla_rgb(r, g, b) --256階調のRGB値から色番号を生成する。これもOS依存を解消するためのもの。異なる色が同じ値にマッピングされることは十分にありうる。 --[返値] intで色番号を返す。 -bla_setPix(win, x, y, c) --ウィンドウの描画域内の1画素の色を設定する。xやyに画面外の値を設定しないことを想定しているので注意(blaは上級者向けなので、安全よりも速度を優先している)。 --[返値] この関数はvoidなので何も返さない。 * こめんと欄 #comment