drawは、SERのテストドライバとして作成した、 簡易ドローツールです。
起動方法は以下の通りです。
形式1:
% draw |
形式2:
% draw データファイル名 |
メニューの各ボタンは、以下の機能があります。
このプログラムのコンパイルには、以下のライブラリが必要です。
配布ディレクトリ以下のdrawディレクトリに移動して、 makeを実行してください。
ライブラリやヘッダファイルのパスをMakefile(Makeobj)中に 無頓着に書いているので、適当に調整してください。
drawのスキーマファイルは、shape.schemaです。
% schemac ./shape.schema |
としてスキーマコンパイラにかけてみてください。
AP向けヘッダファイルshape.hと、内部情報ヘッダファイルshape_i.hが 生成されます(初めからあるけど)。
ヘッダファイルが生成されたら、draw自体をコンパイルします。
適当に絵を描いてみてください。手を休めると、 時々標準出力に"garbage collecting...done"と出力されると思います (3秒以上イベントがないとガベージコレクタが起動するようにしてある)。
(言うまでもないことですが)ガベージコレクションは、 "garbage collecting..."が表示されてから、"done"が 表示されるまでの間に終了しています。
適当に絵を書いて、シリアライズしてみてください。
ファイル名を引数に指定してdrawを起動するか、 deserializeボタンを使用して、 シリアライズしたファイルを読み込んでみてください。
現在のdrawでは色が付けられませんから、図形毎に色を付けられるよう、 データ構造を拡張することを考えます。
スキーマファイル shape.schema 中には、 色に関するデータを保持するための定義がコメントアウトされた形で 入っているので、このコメントを外し、スキーマをカラー化に対応させます。
新しいスキーマファイルをスキーマコンパイラにかけ、 アプリケーション(draw)自体を再コンパイルし、 その後で古いスキーマでセーブしたデータを読み込んでみてください。
(多少の)データ構造の拡張については、SERが自動でデータ変換を 行なうことがわかると思います。
このテストドライバ作成のために、 簡易版のグラフィックライブラリを作成しました。
モジュール名TGK, tinygkディレクトリ以下にあります。 使い方は、include以下の、TGK.hを読んで下さい(^^;