はじめに とは は「究極の簡単さ」を目指して作り上げた簡素なグラフィックスライブラリです. 言語か から呼出す事ができ, の関数群を , のサブルーチン群を と呼び,機能的にはほぼ 相当のグラフィックス機能を持ちます.とにかく 「簡単」に使えて, 「 ビットマシンの のような楽しさ」をこれからプログラミングを始める方々に 伝えることができれば,と考えて作成したもので,初等プログラミング教育に良い道具となる事でしょう. また, は 関連のライブラリは しか使っていませんから,インストールも容易 です. ユーザ関数の簡単さは常識破りです.画面サイズだけを引数とする「たった つの関数」を呼ぶだけで, !" 上でウィンドゥを開いて,即グラフィックス関数を扱うことができます.ウィンドゥが隠れた場 合の再描画はライブラリ側がやってくれますから,ユーザはめんどうなイベントを気にせず,描画関数を並 べるだけで簡単に絵を描くことができます.数値計算のコードに若干の描画関数を挟み込んで,デバッグ 時など,必要な時だけ計算させながらその様子をモニターする,といった事も容易です.任意のサイズで 複数のグラフィックス用ウィンドゥをオープンし,# ビットでのカラー指定が可能な線$ 点$ 多角形$ 円など の描画,フォントセットの描画 半角・全角混在の文字列もそのまま描画可能,数値計算の可視化に必要 な種々の矢印の描画,カラーバーの生成 約 %& 種類,# ビット画像の転送,関数 入力読み込み の ' を使ったキー ()に相当,関数 を使ったマウス・キー入力読み込み, レイヤ機能 *& の +, の プレーンに相当 によるスムーズなアニメーションが可能です. もうおわかりかと思いますが,# ビットカラーが使えて,アニメーションができるとなれば,数値計算 の可視化に必要な基本要素は十分に整っているというわけです.あとは,ユーザのプログラミング次第で, いくらでも派手な画像を作る事が可能です. 5-. コマンドを通して多くのフォーマットに画像を連続して保 存するための関数を用意しているため,大量のコマ数の画像ファイルの生成が瞬時に行え,26 アニメーショ ンや 0/-2 ムービーの作成も簡単です. 商用の サーバ 例えば 78 や の 端末 のように複数の +781 を持つ サーバにも対応し,デ フォルトが 7-8! でも では 8- +781 でウィンドゥを開くようになって います.8 のワークステーションのように商用 サーバ97-8! +781 なアプリケーションをベースと また, -./0 ,012-,1234 の 3 した環境でもスムーズに導入できます. 言語を使おう このライブラリを作り始めた当初は, のパーソナルコンピュータ・*& 上で動作する「 」という ',カルコンプコンパチブルのグラフィックスサブルーチンが扱える コ ンパイラと互換となるように作成していました.格好悪い「」という名前はこの が由来です.しかし現在では, は廃れた言語となってしまいました.ソフトウェア開発の主流 は,柔軟性に富む ,99です.また,数値計算の分野では,いまだに が多く使われているよ うですが,コーディングレベルでのアルゴリズムの考案を伴った新しいスキームの開発は, の 言語仕様では難しいと予測されます *: という新しい がありますが,大半の利用者 の頭脳は ;; から進化していないので, ;; が実質の言語仕様になっていると思われ ます.数値計算技術の未来は,,99が支えていくことでしょう. も から使った方が,いくつかの点において好都合です もちろん, は で書いています. の関数には, では使えないいくつかの便利な機能があります.今, プログラミングを始めたばかりの方々は, 言語をターゲットにする事をお勧めします. では,有名なウィンドゥマネージャである 6.-.-/, !",14- の本格的なアプレットがき わめて簡単に作成できます. の拡張関数で,アプレット用に初期化するように設定すると,ドック に入れるためのウィンドゥ属性をライブラリ側で設定します.例えば,デジタル時計程度のものであれば, わずか数十行で作れてしまうほどの簡単さを提供しています. 編 の標準関数一覧 22-.!7/1< 6 サーバの情報 !-/.=$ 画面サイズ を取得する 2/任意のサイズのグラフィックス用ウィンドゥを開く 237任意のグラフィックス用ウィンドゥを閉じる 237-1 すべてのグラフィックス用ウィンドゥを閉じ, サーバと断線する 27-.23 ウィンドゥのバックグラウンドカラー 23 での色 を指定する 27-.!- ウィンドゥのホーダーと色を指定する " 10ウィンドゥのタイトルを変更する " !" 座標系の変更 1<- レイヤの設定を行う 3/<1<- レイヤのコピーを行う -"/描画色 > 色 の変更 -"3 描画色の変更 サーバの持つ色を直接指定 -"23 描画色の変更 -!$-- $8- の輝度を指定 014-3 変数からカラーを生成する カラーバー生成 .3 端末画面の消去 23 グラフィックス用ウィンドゥの消去 /7-. 点の描画 直線の描画 33中心座標,半径を与えて円を描く !1"13 円の中心,半径,始点,終点の角度を与えて円弧を描く ?13 円の中心,半径,始点,終点の角度を与えて円弧を塗り潰す !1"-3. 長方形の描画 ?-3. 長方形の領域を塗り潰す ?/< 多角形を塗り潰す !1"1" 種々の矢印の描画 !1"7. 文字列の描画 27-.6 .7-. フォントセット 日本語フォント の指定 !1"7<0 個のシンボルの描画 /8.02# バッファに用意した画像をウィンドゥに一括転送する 715-02 画像をコンバータ -./0$012-,1234 を通してファイルに保存する 22-.3= キーボードから 文字入力があるまで待ち,入力された文字を返す 22-.:/-77 マウスのボタンクリック,キーボード入力があるまで待ち,その情報を返す 07--/ ミリ秒単位で実行を延期する % % % %# %% %> %; % %* %& % % % %# %% %> %; % %* %& % % % %# %% %> %; % %* %& % % % の拡張関数一覧 27-. .11..8.-7 27-. .123 27-. .1!- 27-. .1/17-2-0-.< 27-. .1" 102- -1.-3 2/- での各ウィンドゥ属性を指定する 2/- での背景カラーを指定する 2/- でのウィンドゥのボーダーを指定する :$< の値を含む文字列から 2/- でのウィンドゥ出現座標を設定する 2/- でのウィンドゥ名$ アイコン名$ リソース名$ クラス名を指定する 変数からカラーを生成する コントラスト ブライトネス γ補正等が可能 > > > ># >% >> 基本的な使用方法 ソースの冒頭で, と宣言します. 標準関数と同じように の関数を使ってソースを書き,コンパイルは コマンド を用います. 例 描画速度をアップする方法 関数 %* と 関数 %& とを使って,描画関数では常に裏画面に描きましょ う.描き終わったら,裏画面を表画面にコピーする 関数 か,裏画面と表画面とを切り替え ます 関数.このようにする事で,かなり描画速度が改善されます. # の標準関数リファレンス 機 能 サーバの情報 !-/.=,画面サイズ を取得する サーバに接続し,!-/.=,画面サイズを調べます. は でウィンドゥをオープンした時に使わ れる !-/.= 値 ピクセルに何ビット使っているか,すなわち 7-8!:%> 色カラー,8-: >%%> 色カラー,8-:>;; 万色カラー といった値が代入されます. $ はそれぞれ サーバの画面のピクセルサイズが代入されます. つの引数 , $ それぞれについて値を取り出す必要がない場合は, !"" を与えてもかまいません. 関数の返り値は, サーバへの接続が成功した場合は #,失敗した場合は帰り値は となります. 関数 使用例 %* を使用する時は,必ず !-/.= 値を調べるようにします. $ %&' !""' !"" ( 機 能 任意のサイズのグラフィックス画面を開く ), ) にはそれぞれ横方向,縦方向のドット数を指定します.返り値には で使用する, ウィンドゥ番号が返ってきます. 使用例 $ ##'## ( 機 能 グラフィックス用ウィンドゥを閉じる で指定されたウィンドゥを閉じます. 使用例 ( 機 能 すべてのグラフィックス用ウィンドゥを閉じ, サーバと断つ すべてのウィンドゥを閉じ, サーバと断線します. 使用例 ( 機 能 ウィンドゥの背景色を変更する で指定されたウィンドゥの背景色 関数 %> で初期化される色 を変更します. % $8- で指 には サーバの * に設定されている色か,+##%%+のように,> 進数の -!$-定します. 使用例 * '++ ( は 系の なら などにあります. % 機 能 ウィンドゥのホーダーと色を指定する で指定されたウィンドゥのボーダー幅とボーダーカラーを変更します.この関数でのボーダーの指定 は, * 関数 > で ,-.//01. のウィンドゥ属性を指定した時だけ機能します. 使用例 *''++ ( ! 機 能 ウィンドゥのタイトルを変更する で開いたウィンドゥはデフォルトではユーザの実行ファイル名がウィンドゥのタイトルとして 設定されますが,このタイトルは自由に変更できます.最初の引数 はウィンドゥ番号で, つめの引数 % 以降は % 関数の引数と同じ形式のフォーマットです.使用例のように,変数の値を表 示するような使い方もあります. 返り値は設定したウィンドゥタイトルの文字列の長さです. 使用例 '+ギコ $2% $2%+'' ( " # # # # 機 能 座標系の変更 で指定したウィンドゥの座標系を変更します 実際のグラフィックスエリアの大きさが変わるわけで はありません.グラフィックス画面の座標は,デフォルトでは左下が ##' ## で右上が )#' )# になっています. 関数でこの座標系を左下を ' ,右上を ' に変更で きます. 下の使用例では,左上を &&$ 使用例 ' &&,右下を ;**&$ %**& に変更します. ##' 344#' 544#' ## ( $ 機 能 レイヤの設定をする ではグラフィックス用ウィンドゥ毎に 枚のレイヤを持ち,表示するレイヤと書き込むレイヤを 独立に指定できます. にはウィンドウ番号を指定し, には表示するレイヤ番号, には書き込む レイヤ番号を # か で指定します. 現在表示しているレイヤに対して $$ の場合に 連続して描画関数を実行すると,良い描画パ フォーマンスが得られません.高速な描画が必要な場合には,現在表示していないレイヤに対して描画し, 最後に表示レイヤを 関数で切り替えるか, 関数 示レイヤにコピーするようにします. デフォルトでは '#'# の状態となっています. 使用例 '#' ( > %& で描画レイヤの画像を表 % 機 能 レイヤのコピーをする のウィンドウ番号の,レイヤ の画像をレイヤ にそのままコピーします.このコピーは 瞬時に行われるため,アニメーションの再生に使うことができます. 使用例 ''# ( 機 能 描画色の変更 で指定したウィンドゥでの描画色を変更します. と色との関係は以下の通りです. #@黒 @白 @赤 6@緑 @青 3@シアン @マゼンタ 5@黄 @A01< 4@1< #@-!# @2-- # @8-# 6@3<1 # @012- .1# 3@<-"# -!#,2-- #…の # のつく色は,暗い赤,暗い緑…となっています. デフォルトでは,白が指定されています. 使用例 ' ( 機 能 描画色の変更 で指定したウィンドゥでの描画色を変更します. % には サーバの * に設定され ている色か,+##%%+のように,> 進数の -!$-- $8- で指定します. 使用例 '+-+ ( 機 能 描画色の変更 で指定したウィンドゥでの描画色を変更します.' '* にはそれぞれ -!$-- 階の整数 &∼%% で指定します. 使用例 $8- の輝度を %> 段 *'33'5'# ( & # # # 機 能 変数からカラーを生成する カラーバー生成 変数 の値を使って,$ $* それぞれに %> 段階の -!$--!$8- のカラーを生成します.変数の最 小,最大は $ で指定します.この関数で得た,$ $* の値は * 関数 % にその まま与えて使う事ができます. 返り値は が $ の範囲内にあった場合は # を返し, 未満であれば を, を越え ていれば, を返します. はカラーパターンの番号で,以下に示す約 %& 種類のカラーパターンが利用できます.174 8/9: 等 はマクロで,実際の値は & から始まる整数です.詳細は, を見てください. 以下は ?.7 ビューア A* コンパチのカラーパターンです. は 系の なら などにあります. ; 174;8/9: 174;/.1 174;8/.. 174;<"!. 174;9 174;< 174;<< 174;=. 174;0 174;90>7# 174;7"7 174;=.9? 174;@,," 174;/90 <,A 174;7?9 19/1 174;7?90/@97. 174;@,",/ 以下は可視化ソフトウェア A コンパチのカラーパターンです. 01";<;A;"0 .9/ 01";<"!.;A=0?. 01";8/ ;/.1;<"!;A=? 01";/.1;?.B>./9?!/. 01";<"!.;8/.. ;/.1;:."",A 01";7?1;89BB9;00 01";>/07B 01";/.1;>!/>". 01";8/.. ;A=0?.;"0 .9/ 01";/8 ;A=?;.C>, . ?09" 01";8/.. ;>0 D 01";<"!.;/.1 01";;".-." 01";/90 <,A 01";7?.>7 01";7?./ ;7>.@09" 01";=9E. 01";<"!.;>97?.";/.1 01";>97?."7 01";=!.;79?;"08=? .77; 01";=!.;79?;"08=? .77; 01";=!.;79?;-9"!.; 01";=!.;79?;-9"!.; 01";>!/>".;/.1;A0?=;7?/0>.7 01";<.9@= 01";B9@;7?:". 01";.,7;9 01";.,7;< 01";=9/1@9 1: 01"; 9?!/. 01";,@.9 01";>.>>./B0 ? 01";>"97B9 01";<"!.;/.1 01";/90 <,A 01";<"!.;A9-.7 01";-9"@9 , 01";A9-.7 01";/90 <,A 01";;/90 <,A 01";,/<0?;-0.A./;@,",/ 01";,/<0?;-0.A./;8/9: 使用例 F174;7"7'G;'G;'G'&'& '&* ( 機 能 端末のクリア 端末をクリアし,カーソルの位置をホームポジションに戻します. 使用例 ( 機 能 で指定したグラフィックス用ウィンドゥをクリア で指定したグラフィックス用ウィンドゥを * 関数 > あるいは * 関数 %% で指定した色で,ウィンドゥをクリアします. * 関数, * 関数での指定がない場合の色は黒となっています. 使用例 ( * ! # # 機 能 点の描画 で指定したウィンドゥに点を描画します. グラフィックス画面の座標は,デフォルトでは左下が ##' ## で右上が )#' )# になっています.この座標は 関数 使用例 ' % で変更が可能です. ' ( " # # 機 能 直線の描画 で指定したウィンドゥに直線を描画します. に >. 1,A を指定すると以前 関数が呼ばれ た点から,:$< へ直線を引きます. に >. !> を指定すると :$< を 関数の初期位置に設定し ます.$>. 1,A でペンを下ろして描画,$>. !> でペンを上げて移動と考えるとわかりやすいで しょう. また,B>7.? の場合は 使用例 ' :$< に点を描き,ペンの位置が更新されます. ' '>. 1,A ( $ # # # # 機 能 中心座標,半径を与えて円弧を描く で指定したウィンドゥに,' を中心に横方向の半径 ,縦方向の半径 の円を描き ます. 使用例 '3##'##'6##'## ( % # # # # # # 機 能 円の中心,半径,始点,終点の角度を与えて円弧を描く で指定したウィンドゥに,' を中心に横方向の半径 ,縦方向の半径 の円弧を描 きます. は開始角, は終了角で,度で与えます. は円弧を描く方向で で左廻り, で右 廻りとなります. 使用例 '3##'##'6##'##'##'5##' ( ' # # # # # # 機 能 円の中心,半径,始点,終点の角度を与えて円弧を塗り潰す で指定したウィンドゥで,' を中心に横方向の半径 ,縦方向の半径 のの円弧を 塗り潰します. は開始角, は終了角で,度で与えます. は円弧を描く方向で で左廻り, で右廻りとなります. 使用例 %'3##'##'6##'##'##'5##' & ( # # # # 機 能 長方形の描画 で指定したウィンドゥに,頂点 ' から正の方向に幅 ,高さ の長方形を描きます. 使用例 '3##'##'6##'## ( ' # # # # 機 能 長方形の領域を塗り潰す で指定したウィンドゥで,頂点 ' から正の方向に幅 ,高さ の長方形の領域を塗り潰します. 使用例 %'3##'##'6##'## ( ' # () # () 機 能 多角形を塗り潰す で指定したウィンドゥで,多角形の領域を塗り潰します., は 個の実数の一次元配列で,H#I∼ HI,H#I∼HI に多角形の各点の座標を入れておきます. は塗り潰す時の形状で通常は # を,凸 多角形の時は を指定します. 使用例 %'''3'# ( # # # # # # %*+ 機 能 種々の型の矢印を描く で指定したウィンドゥに ' から ' に向かって矢印を描きます.矢印の形状は以下の図の 通りで, と は実数で指定します. が #∼ の場合には $ はドット数を, が #∼ の場合には $ は矢印の長さに対する割合で ##∼# の値を指定します. j=1 (xt,yt) s w (xs,ys) i=0, 10 i=1, 11 i=2, 12 j=2 j=3 j=4 j=5 j=6 j=7 B での矢印の描画例 使用例 ' #' #' ' '#6'#' ( # # # 機 能 文字列の描画 で指定したウィンドゥに,文字列を座標 ' から描きます. ) は文字の大きさで,ドット単位 で指定します. は文字列の回転を指定する引数ですが,現バージョンでは機能しません.文字列は % に与えますが,この引数以降は % 関数の引数と同様のフォーマットになっていますの で,使用例のように変数の値などを描く事もできます. 文字のサイズ ) は ∼ の範囲で指定できます. ) と実際のフォントとの関係は以下の表のよう になっています.この場合,文字は半角英数字のみ描画できます. バイト文字 漢字 を描画する場合は, ) には J, ?7.? を指定します.この場合のフォントの指定は, % 関数 %; を利用します. % でのフォント指定がない場合は,デフォル トの # ドットのフォントセットで描画されます. この関数の返り値は描いた文字列の長さです. ∼5 6 @ %; @ ; ∼3 @ % @ ; # 4 ∼4 @ >* @ > #∼ #∼6 使用例 ' ' ''#'+G G$2%+'G ( 使用例 ' ' 'J, ?7.?'#'+日本語の描画も ,DK+ ( @ > & @ & & @ > @ # ! 機 能 フォントセット 日本語フォント の指定 で指定したウィンドゥで描くフォントセットを指定します.文字の描画は 関数を利用し ます. フォントセット名は % 以降で指定します. % 以降は % 関数の引数と同一の フォーマットになっているため,文字を拡大・縮小する時など,使用例のように引数を与えると大変便利 です. 返り値は, % 以降で指定したフォントセットが取得できた場合は #,代替フォントで取得でき た場合は ,フォントセットの取得に失敗した場合は となります. 使用例 %$ 使用例 % '+F 2+'% ) ( % '+*G 34'+ +%+ ( " 機 能 センターシンボルの描画 で指定したウィンドゥにセンターシンボルを座標 ' に描きます. ) はシンボルの大きさでドッ ト単位, でシンボルの種類を指定します. とシンボルの関係は,だいたい次のようなものとなっています. @・ @+ 6@+ × @○ 3@× @Y 5@△ @□ 4@▽ #@◇ 使用例 ' ' '' ( $ , # # , , 機 能 バッファに用意した画像をウィンドウに一括転送する で指定したウィンドゥの座標 $ に *% に用意した,幅 ,高さ の画像を一括転送し ます. バッファ*% には,&$8-$-- $-! の順に # つずつ,水平方向に走査しながら画像の上から下へ用意し ます *%H#I$####,*%HI$*H#I,*%HI$ H#I,*%H6I$H#I,といった具合いです.バッ ファには ####∼##%% の範囲の輝度を与えておきます. なお サーバの !-/.= が > 以上でない場合は何もせず,返り値は となります.それ以外の場合は # を返します. サーバの !-/.= は 使用例 % 関数 % で調べる事ができます. ' ' '#'##'*%% ( % # # # # 機 能 画像をコンバータ -./0$012-,1234 を通してファイルに保存する ウィンドウ番号 ,レイヤ番号 の ' から ' の範囲をコンバータ -./0$012-,1234 を通してファイルに保存します.G には //0 形式から各画像フォーマットに変換するコンバータのコマ ンドラインを指定します.例えば, -./0 を利用して / 2 形式に保存する場合は,+ +とします. 012-,1234 を利用する場合は,+G+とします.もちろん,オプションスイッチも含める事もでき, + #3+,あるいは+G E0>+ といった指定も可能です.次の は減 色パラメータで,$$ チャンネルあたりの色の段階数を指定します. は簡単な図形では くらいで 十分ですが,多くの色を使っている場合は最大値の 3 を指定してください. ファイル名は % 以降で指定します. % 以降は % 関数の引数と同一のフォー マットになっているため,使用例のようにファイル名に変数の値を含む,といった事も可能です.このよう にすると動画作成時に大変便利です. //0 から他の画像フォーマットに変換する -./0 のコマンドの例を挙げておきます.各コンバータの 使用方法に関しては端末から コンバータ名 とタイプする事で調べることができます.012-,1234 の 3 5-. コマンドを利用する場合は,ファイル名のサフィックス ドット以降の文字列,例えばL など から保存フォーマットが決定されます. 画像フォーマット ! "#$ % & ' " () %* )% + &# ,-./0. $# 1 )) )# " " 10 &$# )2 () )* () )* % )% 00 3445 # " 6 7 2 2" コンバータ名 画像フォーマット コンバータ名 &' % $ 8 1$ )& ' 9 $ 2 * * 5*)65 " ) 7 ) #$ ) $ !%6 " " " " $ 2 : &; $ 2 00 , , もちろん,コンバータはすでにインストールされている必要があり,インストールされていない場合は指 定できません .ここに挙げた以外のコンバータも,標準入力から //0 形式で入力し,標準出力から変換 データを出力するものであれば使用する事ができます. コンバータを通さずに直接 //0 形式で保存する場合は G には++と指定してください.ただし,//0 形式は非圧縮のテキストデータなので,巨大なファイルとなります. この関数では サーバから画像データを転送し,保存するわけですが,ネットワークが遅かったりする と非常に時間がかかります.その事を考慮して では子プロセスを起動して,バックグラウンドで サーバからの画像の転送・ディスクへの書き込みを行うようにしています.したがってユーザプログラム は G ( の後すぐに他の作業ができるようになります.ただし,この子プロセスが終わるまでは サーバでの描画等ができないので,もし G ( のすぐ後に 画像の転送・保存が完了するまで待たされる事になります. の描画関数などを呼んだ場合は なお, G を使っている場合は プログラムは必ず 関数 %# を呼んでから終了する ようにしてください. 返り値は,子プロセスの起動に失敗した場合は,それ以外の場合は # となります. 使用例 G / '#'##'##'64#'644#'+ +'3'+ 2 +' ( 2 形式に保存する例です.26 形式の場合は G は+ %+ にします. は , は などで配布さ れています. # 使用例 G '#'##'##'64#'644#'+ +'3'+% + ( 使用例 G '#'##'##'64#'644#'+G E0>+'3'+% + ( 7.3/. 形式に保存する例です. -./0 の では 8 - 2.= 圧縮 可逆圧縮 をサポートして います.上記のように「」をつける事で画質を損うことなくファイルサイズを小さくできます. 012-,1234 では 8 - 2.= の他,C,C使用例 などのアルゴリズムでより効率良く圧縮した ビットマップイメージを 7.73/. -5- ファイルに埋め込む事ができます.ただし,012-,1234 の 7.73/. -5- の出力は % 以降で改悪され,一般的な 7.73/. インタープリタ !- 7.73/. など では読めません.012-,1234 の利用をお勧めします. 機 能 キーボードから 文字入力があるまで待ち,入力された文字を返す で指定したウィンドゥにキー入力があるまで待ち,入力されたらその文字コードを返します.端末か らの 文字入力 % と似ていますが, つのキー入力があるとすぐに関数から戻る 改行まで待 たない という点と,&:&&∼&:&6,&:&;6 の「特殊キー」と「.9アルファベットキー」の入力を拾う点 が異っています. 次の表で > 進の文字コードを知る事ができます.イタリック体の数字が > 進 桁の上位を表します. . 0 . L ) O < , ! ! - + " = > ? @ * # $ 6$ → F ' ← ↑ ↓ 1 G 9 " A 5 B $ C D E 0 < , - + = > ? @ H I 6 ( * ; % & M ! 2 8 N [ \ ] $ ' " # P Q R 7 4 { | } 例えば, 「1」は J K ^ $% &:&>, 「」は &:&# となります. &:&&∼&:&1 の中にはいくつか特殊キーが含まれていますが,この区間は「.9アルファベットキー」 のコードと共有となります.例えば, 「134/13-」と「.9D」のコードはどちらも &:&& となります. &:&&∼&:&1 で空白になっている個所は, 「.9アルファベットキー」にのみコードが割り当てられてい ます. 使用例 F$ ( , # # 機 能 マウスからのボタンクリック,キーボードからの入力があるまで待ち,その情報を返す で指定したウィンドゥでマウスのボタンクリック,キータイプがあるまで待ち,入力があれば,その 情報を返します. この関数の返り値はマウスのボタンクリックの場合は <> ,キーボードからの入力の場合は D> となります. マウスのボタンクリックの場合,* にはクリックされたボタンの番号 ''6'…,クリックされ た時のウィンドゥ 上でのマウスポインタの座標が, に代入されます. キー入力の場合は,キーコードが* に返ります.キーコードは と同一です. 使用例 $ '&*'&'& ( % 関数 % の返り値 , 機 能 ミリ秒単位で実行を延期する ミリ秒の間,プログラムの実行をなにもせずに待ちます.アニメーション速度の調整に利用できます. 使用例 ## ( の拡張関数リファレンス 以下でとりあげる関数は,より細かい制御を行なったりするためのもので,中級者以上向けのやや 言語 に習熟していないと利用が難しい関数もあります.なお,これらの関数はそれぞれに対応する のサブルーチンは用意していません. , # 機 能 2/- での各ウィンドゥ属性を指定する これから 関数で開くウィンドゥの各種属性を指定します. * 関数で 一旦ある属性を指定すると,以降 関数で開くウィンドゥすべてにその指定が反映されます. % には . 9<".有効 か 1079<".無効 を指定し, には以下に示す各種属性を指定します. ,-.//01. における 5-!--!-3. 属性を指定します.5-!--!-3. 属性で開いたウィンドゥは,ウィ ンドゥマネージャの介入をうけず,ウィンドゥに枠がつきません.また,ウィンドゥを開いた時は常に 最前面に表示されます.このモードはアプリケーションのバナー表示などに用いられる事があります. 9!?,/.1/9A ウィンドウが他のウィンドゥによって隠され,露出した時の再描画を子プロセスが自動でおこないま す.デフォルトではこの属性は . 9<". になっています.時計アプリケーションのように,ある周期で 必ず再描画するプログラムではこの属性を 1079<". にするとメモリ使用量が抑えることができます. 1,@D9>> 6.-.-/, !",14- のアプレットとなるための各種設定をおこないます. 使用例 * . 9<".'1,@D9>> ( 機 能 2/- での背景カラーを指定する 関数 %> で初期化される色 を指定し * に設定されている色か,+##%%+のように,> 進数の これから 関数で開くウィンドゥの背景色 ます. % には サーバの -!$-- $8- で指定します. 使用例 * ++ ( は 系の なら などにあります. > 機 能 2/- でのウィンドゥのボーダーを指定する これから 関数で開くウィンドゥのボーダー 枠 の幅をカラーを指定します.引数 には ボーダーの幅をドット単位で指定し,負の値を指定した場合には設定を変更しません. % にば ボーダーの色を指定し, !"" の場合には設定変更をおこないません. のデフォルトでは ボーダー幅は #,ボーダーカラーは <F を設定しています. 一般的に,ウィンドゥのボーダーはウィンドゥマネージャによって再設定されるので,ここで設定した 値は無効になります.ただし,5-!--!-3. 属性なウィンドゥの場合は,この設定が反映されます. 5-!--!-3. 属性については, * 関数 > の解説を参照してください. 使用例 *'+A+ ( 機 能 :$< の値を含む文字列から 2/- でのウィンドゥの出現座標を設定する これから 関数で開くウィンドゥの出現位置を文字列 % から決定します. のクライア ントでは標準的な に続くコマンドオプション,例えば +M####+ ような文字列を % に与えることができます. 使用例のようにすると,整数値を与えることもできます. 使用例 +2M2M+'6#'# ( 機 能 2/- でのウィンドゥ名,アイコン名,リソース名,クラス名を指定する これから 関数で開くウィンドゥのウィンドゥ名,アイコン名,リソース名,クラス名を引数 ,, , で指定します. デフォルトでは,ウィンドゥ名はアイコン名はユーザプログラムのコマンド名から決定されます.それぞ れの引数に !"" を与えると,それぞれをデフォルトの設定に戻します. 使用例 +9@F+'+9@F+'+F+'+9@F+ ( , # # # 機 能 変数からカラーを生成する コントラスト,ブライトネス,γ補正などが可能 変数 の値を使って,$ $* それぞれに %> 段階の -!$--!$8- のカラーを生成します.変数の最 小,最大は $ で指定します.この関数で得た,$ $* の値は * 関数 % にその まま与えて使う事ができます. 返り値は が $ の範囲内にあった場合は # を返し, 未満であれば を, を越え ていれば, を返します. 現在の では,構造体 は次のようなメンバ構成になっていますが,将来拡張 する可能性がありますので,変数宣言時に初期値を代入するコードは書かない事をお勧めします. ; ! !!!! ! ! " はカラーパターンの番号で,詳細は,F 関数 %# をご覧ください. % は,コントラスト ,ブライトネス * ,ガンマ補正 ,カラーセパレーショ ンレベル G,ユーザ関数 %,のどれを有効にするかを示すためのフラグです. フラグ 対応するメンバ 解説 @ /.-./7. @> @, ?/97? @> </08=? .77 @> 89BB9 @> 7.>".-." @> J! @?0, * G % カラーパターンをデータ の大小と逆にする コントラスト制御を有効化.# ブライトネス制御を有効化.# * ガンマ補正を有効化.# カラーセパレーションレベルを有効化. G ユーザ関数呼出しを有効化. G を使うと,リニアに変化するカラーをデジタイズできます.例えば,174 8/9: ではリニアに黒 から白へ変化しますが, G$# に設定しておくと,& 色を使って段階的に変化するようになります. % は が処理の最後に実行するユーザ関数です.% の引数はそれぞれ, を ,1:B&$, B&& で標準化した値,,-!$-- $8- の値 と 8. となっています.この 部分は のソースを見て理解できる方のみご利用ください. 使用例 ; ( $ 174;/90 <,A ( % $ @>;@, ?/97? N @>;</08=? .77 N @>;89BB9 ( $ # ( * $ ## ( $ # ( O &')')')G'&;'&; '&;* ( 編 のサブルーチン一覧 -./00 標準サブルーチン 22-.!7/1< 6 サーバの情報 !-/.=$ 画面サイズ を取得する 2/任意のサイズのグラフィックス用ウィンドゥを開く 237任意のグラフィックス用ウィンドゥを閉じる 237-1 すべてのグラフィックス用ウィンドゥを閉じ, サーバと断線する 27-.23 ウィンドゥのバックグラウンドカラー 23 での色 を指定する -"" !" 座標系の変更 1<- レイヤの設定を行う 3/<1<- レイヤのコピーを行う -"/- 3 描画色 > 色 の変更 -"3 描画色の変更 サーバの持つ色を直接指定 -"23 描画色の変更 -!$-- $8- の輝度を指定 014-3 変数からカラーを生成する カラーバー生成 .3 端末画面の消去 23 グラフィックス用ウィンドゥの消去 /7-. 点の描画 直線・点の描画 !1"33 中心座標と半径を与えて円を描く !1"13 円の中心,半径,始点,終点の角度を与えて円弧を描く ?13 円の中心,半径,始点,終点の角度を与えて円弧を塗り潰す !1"-3. 長方形の描画 ?-3. 長方形の領域を塗り潰す ?/< 多角形を塗り潰す !1"1" 種々の矢印の描画 !1"7. 文字列の描画 27-.6 .7-. フォントセット 日本語フォント の指定 !1"7<0 個のシンボルの描画 !1" 80 実数の値を描く /8.02# 整数配列に用意した画像をウィンドゥに一括転送する 715-02 画像をコンバータ -./0$012-,1234 を通してファイルに保存する 22-.3= キーボードから 文字入力があるまで待ち,入力された文字を返す 22-.:/-77 マウスのボタンクリック,キーボード入力があるまで待ち,その情報を返す 7-" 互換サブルーチンで,どのウィンドゥにアクセスするか指定する * # # # ## #% #> #; # #* #& # # # ## #% #> #; # #* #& # # # ## #% #> #; # #* #& # # カルコンプ互換サブルーチン =-. × -.. ドットのグラフィックス用ウィンドゥを開く 座標系の変更 描画色の変更 $$ 端末画面の消去 $7 グラフィックス画面の消去 直線・点の描画 $ 円の中心,半径,始点,終点の角度を与えて円弧を描く $$0 中心座標と半径を与えて円を描く # 種々の矢印の描画 文字列または 0 個のシンボルの描画 実数の値を描く Ü,1+10 Ü,1+1< Ü,1+1, Ü,1+1Ü,1+1+ Ü,1+1= Ü,1+1> Ü,1+1? Ü,1+1@ Ü,1+10. Ü,1+100 補助サブルーチン 07--/ 7 1 .3 > 1 80- かどうか調べる > 実数型変数を文字列に変換する > ミリ秒単位で実行を延期する 実数型変数が非数 . 基本的な使用方法 ソースについての特別な注意はありません.ソースを書いたら,コンパイルは コマンドを用います. 例 % 描画速度をアップする方法 1<- サブルーチン #; と 3/<1<- サブルーチン # とを使って,描画サブルーチンでは常に 裏画面に描きましょう.描き終わったら,裏画面を表画面にコピーする 3/<1<- サブルーチン か,裏画 面と表画面とを切り替えます 1<- サブルーチン.このようにする事で,かなり描画速度が改善されます. 標準サブルーチンのリファレンス 機 能 サーバの情報 !-/.=,画面サイズ を取得する サーバに接続し,!-/.=,画面サイズを調べます. には でウィンドゥをオープンし !-/.= 値 ピクセルに何ビット使っているか,すなわち 7-8!:%> 色カラー, 8-:>%%> 色カラー,8-:>;; 万色カラー といった値が返ってきます., には,それぞれ サーバの画面のピクセルサイズが返ります.なお, サーバへの接続が失敗し た時に使われる た場合は には が返ってきます. # を 31 する時は,必ず !-/.= 値を調べるようにします. 使用例 %'' 機 能 任意のサイズのグラフィックス画面を開く & 任意のサイズのウィンドゥを開きます. ), ) にはそれぞれ横方向,縦方向のドット数 整数 を指定します. には 内部で使用する,ウィンドゥ番号 整数 が返ってきます. を呼ぶ と,このウィンドゥ番号には, 側で生成されたウィンドゥ番号が設定されるため,ユーザが に値を代入しておく必要はありません.この取得したウィンドゥ番号は のグラフィックス描画サ ブルーチンに渡します. 互換サブルーチンでどのウィンドゥにアクセスするかは,このウィンドゥ番号 をサブルーチン # で指定します. 使用例 ##'##' 機 能 グラフィックス用ウィンドゥを閉じる で指定されたウィンドゥを閉じます. 使用例 機 能 すべてのグラフィックス用ウィンドゥを閉じ, サーバと断つ すべてのウィンドゥを閉じ, サーバと断線します. 使用例 機 能 ウィンドゥの背景色を変更する で指定されたウィンドゥの背景色 サブルーチンで初期化される色 を変更します. には サーバの * に設定されている色を指定し,P<Q#P のように必ず最後にQ# を入れ ます.また,P##%%Q#P のように,> 進数の -!$-- $8- での指定も可能です. 使用例 * 'PQ#P ( 機 能 座標系の変更 で指定したウィンドゥの座標系を変更します 実際のグラフィックスエリアの大きさが変わるわけで はありません.グラフィックス画面の座標は,デフォルトでは左下が ##' ## で右上が )#' )# になっています. サブルーチンでこの座標系を左下を ' ,右上を ' に変更できます. 下の使用例では,左上を &&$ 使用例 &&,右下を ;**&$ %**& に変更します. ' ##' 344#' 544#' ## は 系の なら などにあります. ! 機 能 レイヤの設定をする ではグラフィックス用ウィンドゥ毎に 枚のレイヤを持ち,表示するレイヤと書き込むレイヤ を独立に指定できます. にはウィンドウ番号を指定し, には表示するレイヤ番号, には書き込 むレイヤ番号を # か の整数で指定します. なお,現在表示しているレイヤに対して $ の場合に 連続して描画サブルーチンを実行すると, 良い描画パフォーマンスが得られません.高速な描画が必要な場合には,現在表示していないレイヤに対し て描画し,最後に表示レイヤを サブルーチンで切り替えるか, サブルーチン # で 描画レイヤの画像を表示レイヤにコピーするようにします. デフォルトでは '#'# の状態となっています. 使用例 '#' " 機 能 レイヤのコピーをする のウィンドウ番号の,レイヤ の画像をレイヤ にそのままコピーします.このコピーは 瞬時に行われるため,アニメーションの再生に使うことができます. 使用例 ''# $ 機 能 描画色の変更 で指定したウィンドゥでの描画色を変更します. 3 と色との関係は以下の通りです. #@黒 @白 @赤 6@緑 @青 3@シアン @マゼンタ 5@黄 @A01< 4@1< #@-!# @2-- # @8-# 6@3<1 # @012- .1# 3@<-"# -!#,2-- #…の # のつく色は,暗い赤,暗い緑…となっています. デフォルトでは,白が指定されています. 使用例 ' % 機 能 描画色の変更 で指定したウィンドゥでの描画色を変更します. には サーバの * に設定されてい る色を指定し,P<Q#P のように必ず最後にQ# を入れます.また,P##%%Q#P のように,> 進数の -!$-- $8- での指定も可能です. 使用例 'P-Q#P 機 能 描画色の変更 は 系の なら などにあります. で指定したウィンドゥでの描画色を変更します.' '* にはそれぞれ -!$-- 段階の整数 &∼%% で指定します. 使用例 $8- の輝度を %> *'33'5'# & 機 能 変数からカラーを生成する カラーバー生成 変数 の値を使って,$ $* それぞれに %> 段階の -!$--!$8- のカラーを生成します.変数 の最小,最大は $ で指定します.このサブルーチンで得た,$ $* の値は * サブ ルーチン # にそのまま与えて使う事ができます. はカラーパターンの番号で,以下に示す約 %& 種類のカラーパターンが利用できます. 以下は ?.7 ビューア A* コンパチのカラーパターンです. # 6 3 5 4 # 6 3 以下は可視化ソフトウェア A コンパチのカラーパターンです. 5 4 # 6 3 5 4 6# 6 6 66 6 63 6 65 6 64 # 6 3 5 4 3# 3 3 36 3 33 3 35 3 使用例 F#'G;'G;'G'' '* # 機 能 端末のクリア 端末をクリアし,カーソルの位置をホームポジションに戻します. 使用例 機 能 で指定したグラフィックス用ウィンドゥをクリア * サブルーチン #% で指定した色で,ウィンドゥをクリアします. * での指 定がない場合の色は黒となっています. 使用例 機 能 点の描画 で指定したウィンドゥに点を描画します. グラフィックス画面の座標は,デフォルトでは左下が ##' ## で右上が )#' )# になっています.この座標は サブルーチン 使用例 #> で変更が可能です. '' 機 能 直線,点の描画 で指定したウィンドゥに直線を描画します. に を指定すると以前 サブルーチンが呼ばれ た点から,:2$<2 へ直線を引きます. に 6 を指定すると :2$<2 を サブルーチンの初期位置に設 定します.$ でペンを下ろして描画,$6 でペンを上げて移動と考えるとわかりやすいでしょう. また,$ の場合は :2$<2 に点を描き,ペンの位置が更新されます. , は実数型の引数です. 使用例 ''' ! 機 能 中心座標と半径を与えて円を描く で指定したウィンドゥに,' を中心に横方向の半径 ,縦方向の半径 の円を描き ます. 使用例 '3##'##'6##'## " 機 能 円の中心,半径,始点,終点の角度を与えて円弧を描く % で指定したウィンドゥに,' を中心に横方向の半径 ,縦方向の半径 の円弧を描 きます. は開始角, は終了角で,度で与えます. は円弧を描く方向で で左廻り, で右 廻りとなります. 使用例 '3##'##'6##'##'##'5##' $ ' 機 能 円の中心,半径,始点,終点の角度を与えて円弧を塗り潰す で指定したウィンドゥで,' を中心に横方向の半径 ,縦方向の半径 の円弧を塗 り潰します. は開始角, は終了角で,度で与えます. は円弧を描く方向で で左廻り, で右廻りとなります. 使用例 %'3##'##'6##'##'##'5##' % 機 能 長方形の描画 で指定したウィンドゥに,頂点 ' から正の方向に幅 ,高さ の長方形を描きます. 使用例 '3##'##'6##'## ' 機 能 長方形の領域を塗り潰す で指定したウィンドゥで,頂点 ' から正の方向に幅 ,高さ の長方形の領域を塗り潰します. 使用例 %'3##'##'6##'## ' 機 能 多角形を塗り潰す で指定したウィンドゥで,多角形の領域を塗り潰します., は 個の実数の一次元配列で,∼ ,∼ に多角形の各点の座標を入れておきます. は塗り潰す時の形状で通常は # を,凸多角 形の時は を指定します. 使用例 %'''3'# %*+ 機 能 種々の型の矢印を描く で指定したウィンドゥに ' から ' に向かって矢印を描きます.矢印の形状は以下の図の 通りで, と は実数で指定します. が #∼ の場合には $ はドット数を, が #∼ の場合には $ は矢印の長さに対する割合で ##∼# の値を指定します. > j=1 j=2 j=3 j=4 j=5 j=6 j=7 i=0, 10 (xt,yt) s i=1, 11 w i=2, 12 (xs,ys) B での矢印の描画例 使用例 '#'#'''#6'#' 機 能 文字列の描画 で指定したウィンドゥに,文字列を座標 ' から描きます. ) は文字の大きさで,ドット単位 の実数で指定します. に文字列を, には文字列の長さ 整数 を与えます.文字列 の最終文字 が終端文字 Q# であれば, に実際の文字列長のかわりに を与えてもかまいません. は文字列 の回転を指定する実数の引数ですが,現バージョンでは機能しません. 文字のサイズ ) は ∼ の範囲で指定できます. ) と実際のフォントとの関係は以下の表のよう になっています.この場合,文字は半角英数字のみ描画できます. バイト文字 漢字 を描画する場合は, ) には ## を指定します.この場合のフォントの指定は, % サブルーチン #% を利用します. % でのフォント指定がなされていない場合 は,デフォルトの # ドットのフォントセットで描画されます. ∼5 6 @ %; @ ; ∼3 @ % @ ; # 4 ∼4 @ >* @ > ; #∼ #∼6 @ > & @ & & @ > @ # 使用例 '''#'P= P'##' 使用例 '''##'P 日本語の描画も ,DKQ#P'##' , 機 能 フォントセット 日本語フォント の指定 で指定したウィンドゥで描くフォントセットを指定します.文字の描画は サブルーチン ## を利用します. フォントセット名は % で指定します.% の最終文字は Q# 終端文字 でなければなりません. 最後の引数 には,フォントセットの取得状況を示す整数値が代入されます.% で指定した フォントセットが取得できた場合は #,代替フォントで取得できた場合は ,フォントセットの取得に失敗 した場合は が に返ってきます. 使用例 % 'P%Q#P' 機 能 センターシンボルの描画 で指定したウィンドゥにセンターシンボルを座標 ' に描きます. ) はシンボルの大きさで ドット単位の実数, でシンボルの種類 整数 を指定します. とシンボルの関係は,だいたい次のようなものとなっています. @・ @+ 6@+ × @○ 3@× @Y 5@△ @□ 4@▽ #@◇ なお, , は実数型の引数です. 使用例 '''#' ! , 機 能 変数の値を描く で指定したウィンドゥに実数型変数 G の値を座標 ' から描きます. ) は文字列の大きさで, ドット単位の実数で指定します. は表示する小数点の桁数で,整数値を与えます. は文字列の回転 を指定する実数の引数ですが,現バージョンでは機能しません. 使用例 '''#''##'6 " , , 機 能 整数配列に用意した画像をウィンドウに一括転送する で指定したウィンドゥの座標 $ に *% に用意した,幅 ,高さ の画像を一括転送します. 整数配列 *% には,8-$-- $-! の順に つずつ,水平方向に走査しながら画像の上から下へ用意 します *%$<,*%$8,*%6$/,といった具合いです.配列には #∼33 の範囲の輝度を与えておきます. なお サーバの !-/.= が 以下の場合はこのサブルーチンは使用できません 正常に動作しません. サーバの !-/.= はサブルーチン 使用例 % # で調べる事ができます. '''#'##'*%% $ 機 能 画像をコンバータ -./0$012-,1234 を通してファイルに保存する ウィンドウ番号 ,レイヤ番号 の ' から ' の範囲をコンバータ -./0$012-,1234 を通してファイルに保存します.ファイル名は % で指定し,P Q#P のように必ず最後にQ#終端 文字 を入れます. に正の整数,例えば B を指定すると,実際のファイル名は のように数 字がつき, が負の場合は数字はつかずにそのままのファイル名で保存します.G には //0 形式から各画像 フォーマットに変換するコンバータのコマンドラインを指定します.例えば, -./0 を利用して / 2 形式に保 存する場合は,P Q#P とします.012-,1234 を利用する場合は,PGQ#P とします.もちろん, オプションスイッチも含める事もでき,P #3Q#P,あるいはPG E0>Q#P といった指定も可能です.最後の は減色パラメータで,$$ チャンネルあたりの色の段階数を整数 で指定します. は簡単な図形では くらいで十分ですが,多くの色を使っている場合は最大値の 3 を 指定してください. //0 から他の画像フォーマットに変換する -./0 のコマンドの例を挙げておきます.各コンバータの 使用方法に関しては端末から コンバータ名 とタイプする事で調べることができます.012-,1234 の 3 5-. コマンドを利用する場合は,ファイル名のサフィックス ドット以降の文字列,例えばL , , など から保存フォーマットが決定されます. 画像フォーマット ! "#$ % & ' " () %* )% + &# ,-./0. $# 1 )) )# " " 10 &$# )2 () )* () )* % )% 00 3445 # " 6 7 2 2" コンバータ名 画像フォーマット &' % $ 8 1$ )& ' 9 $ 2 * * 5*)65 " ) 7 ) #$ ) $ !%6 " " " " $ 2 : &; $ 2 00 コンバータ名 もちろん,コンバータはすでにインストールされている必要があり,インストールされていない場合は指 定できません .ここに挙げた以外のコンバータも,標準入力から //0 形式で入力し,標準出力から変換 データを出力するものであれば使用する事ができます. コンバータを通さずに直接 //0 形式で保存する場合は G にはPQ#P と指定してください.ただし,//0 形式は非圧縮のテキストデータなので,巨大なファイルとなります. このサブルーチンでは サーバから画像データを転送し,保存するわけですが,ネットワークが遅かっ たりすると非常に時間がかかります.その事を考慮して では子プロセスを起動して,バックグラ ウンドで サーバからの画像の転送・ディスクへの書き込みを行うようにしています.したがってプログ ラムは G … の後すぐに他の作業ができるようになります.ただし,この子プロセスが終わ は , は などで配布さ れています. * るまでは サーバでの描画等ができないので,もし G … のすぐ後に の描画サブ ルーチンなどを呼んだ場合は画像の転送・保存が完了するまで待たされる事になります. なお, G を使っている場合は プログラムは必ず ## を 31 してから終了する よう にしてください. 使用例 G '#'##'##'64#'644#'P Q#P''P Q#P'3 %Q#P にします. / 2 形式に保存する例です.26 形式の場合は G はP 使用例 !#!#$#!#$#!%&$#!&&$#!'$ (#'!)!' ) )(#'!*+% 使用例 !#!#$#!#$#!%&$#!&&$#!'$ *(#'!)!' ) ,-.(#'!*+% 7.3/. 形式に保存する例です. -./0 の では 8 - 2.= 圧縮 可逆圧縮 をサポートして います.上記のように「」をつける事で画質を損うことなく,ファイルサイズを小さくする事ができ ます. 012-,1234 では 8 - 2.= の他,C,C などのアルゴリズムでより効率良く圧縮したビットマッ プイメージを 7.73/. -5- ファイルに埋め込む事ができます.最後の使用例は C 圧縮を用いた 7.73/. -5- の ファイルを生成する例です.ただし,012-,1234 の 7.73/. -5- の出力 は % 以降で改悪され,一般的な 7.73/. インタープリタ !- 7.73/. など では読めません. 012-,1234 の利用をお勧めします. % & 機 能 キーボードから 文字入力があるまで待ち,入力された文字を返す で指定したウィンドゥにキー入力があるまで待ち,入力されたらその文字コード F整数 を返し ます. 以下が > 進の文字コード表です.イタリック体の数字が > 進 桁の上位を表します.例えば, 「1」は EF>F, 「」は EF#F となります. . . L ) O 0 < , ! ! - + " = > ? @ * # $ 6$ → F ' ← ↑ ↓ 1 G 9 " A 5 B $ C D E 0 < , - + = > ? @ H I 6 ( * ; % & M ! 2 8 N [ \ ] $ ' " # P Q R 7 4 { | } J K ^ $% EF&F∼EFF の中にはいくつか特殊キーが含まれていますが,この区間は「.9アルファベットキー」の EF&F となります.EF&F ∼EFF で空白になっている個所は, 「.9アルファベットキー」にのみコードが割り当てられています. コードと共有となります.例えば, 「134/13-」と「.9D」のコードはどちらも 使用例 'F , 機 能 マウスからのボタンクリック,キーボードからの入力があるまで待ち,その情報を返す で指定したウィンドゥでマウスのボタンクリック,キータイプがあるまで待ち,入力があればその情 報,,*, , を返します. & マウスのボタンクリックがあった場合, には が代入され,キーボードからの入力の場合は が 代入されます. マウスのボタンクリックの場合,* にはクリックされたボタンの番号 ''6'…,クリックされ た時のウィンドゥ 上でのマウスポインタの座標が , に代入されます. キー入力の場合は,キーコードが * に返ります.このキーコードは サブルーチン #& の F と同一です. 使用例 ''*'' 機 能 描画するウィンドゥを指定する 互換サブルーチンでどのウィンドゥにアクセスするかを指定します. には ンドゥ番号を指定します.なお,カルコンプ互換ルーチンの # で得た,ウィ % で開いたウィンドゥの番号は # となります.デフォルトは # です. 使用例 カルコンプ互換サブルーチンのリファレンス とコンパチブルなサブルーチン群です. や他の ',カルコンプ互換 の から移行する場合以外は,必要としないと思われます. 機 能 グラフィックス用ウィンドウを開く このサブルーチンを呼ぶことで,グラフィックス用ウィンドウを開きます.グラフィックスエリア ウィ ンドゥサイズ は >#& × #&& ドットです.グラフィックスエリアを任意にとりたい場合や複数のウィンドウ を開きたい場合は を使用してください. なお,サブルーチン で呼び出した でのウィンドゥ番号は & となります 標準 サブルーチンのウィンドウ番号 には # を指定します. 使用例 機 能 座標系の変更 グラフィックス画面の座標は,デフォルトでは左下が ##' ##,右上が 64#' 644# になってい ます. サブルーチンでこの座標系を左下を ' ,右上を ' に変更できます. 下の使用例では,左上を &&$ 使用例 &&,右下を >*&$ **& に変更します. ##' 644#' 64#' ## 機 能 描画色の変更 /. などでの描画色を変更します. 3 と色との関係は以下の通りです. #@黒 @白 @赤 6@緑 @青 3@シアン @マゼンタ 5@黄 @A01< 4@1< #@-!# @2-- # @8-# 6@3<1 # @012- .1# 3@<-"# -!#,2-- #…の # のつく色は,暗い赤,暗い緑…となっています. デフォルトでは,白が指定されています. 使用例 互換性 ∼% の色は本家 では使用できません. 機 能 端末のクリア 端末をクリアし,カーソルの位置をホームポジションに戻します. 使用例 機 能 グラフィックス画面をクリア 使用例 機 能 直線,点の描画 に を指定すると以前 が呼ばれた点から,:2$<2 へ直線を引きます. に 6 を指定する と :2$<2 を /. サブルーチンの初期位置に設定します.$ でペンを下ろして描画,$6 でペン を上げて移動と考えるとわかりやすいでしょう. また,B の場合は :2$<2 に点を描き,ペンの位置を更新します. , は実数型の引数です. 使用例 '' 互換性 B は本家 では使用できません. ! 機 能 円の中心,半径,始点,終点の角度を与えて円弧を描く ' を中心に半径 の円弧を描きます. は開始角, は終了角で,度で与えます. は円弧を描く方向で で左廻り, で右廻りとなります. 使用例 3##'##'6##'##'5##' " 機 能 中心座標と半径を与えて円を描く ' を中心に半径 の円を描きます. 使用例 3##'##'6## $ %*+ 機 能 種々の型の矢印を描く ' から ' に向かって矢印を描きます.矢印の形状は以下の図の通りで, と は実数で指 定します. が #∼ の場合には $ はドット数を, が #∼ の場合には $ は矢印の長さに対する割合 で ##∼# の値を指定します. j=1 (xt,yt) s w j=3 j=4 j=5 j=6 j=7 i=1, 11 i=2, 12 (xs,ys) 使用例 j=2 i=0, 10 #'#'''#6'#' 互換性 B#∼ は本家 では使用できません.本家 では の 指定によって実際に描画される矢印の先端の大きさが変化しますが, では変化しません. % 機 能 文字列,センターシンボルの描画 文字列またはセンターシンボルを座標 ' に描きます. ) は文字列・シンボルの大きさで,ドッ ト単位の実数で指定します.文字列を描く場合は に文字列の長さ 整数 を, に文字列を与えま す.センターシンボルを描く場合は に を指定し, にシンボルの番号 ∼# の整数を与えます. 文字のサイズ ) は ∼ の範囲で指定できます. ) と実際のフォントとの関係は以下のようになっ ています.文字は半角英数字ならすべて描画できる上,本家 より綺麗です. ∼5 6 @ %; @ ; ∼3 @ % @ ; # 4 ∼4 @ >* @ > #∼ #∼6 @ > & @ & & @ > @ # とシンボルの関係は,だいたい次のようなものとなっています. @・ @+ 6@+ × @○ 3@× @Y 5@△ @□ 4@▽ #@◇ なお,このサブルーチンは # 番目の引数に,文字列型と整数型の両方をとります.この * を使って 1 2 が出てきます. この 1 2 はかなり目障りなので,本家 でコンパイルしない場合は, 標準サ ブルーチン 文字列を描く$ シンボルを描く の使用を推奨します. 文字列,シンボルの両方を描くように作成されたソースでは,コンパイルすると 使用例 *''#'P= P'##' *''#''##' 互換性 本家 では の指定によって実際に描画されるシンボルの大きさが変化し ますが, では変化しません. # より大きい文字サイズは × # ドットフォント固定となります.アルファベットの小文字と一部の 記号は本家 では出力できません. は文字列の回転を指定する実数の引数ですが,現 バージョンでは機能しません. , 機 能 変数の値を描く 実数型変数 G の値を座標 ' から描きます. ) は文字列の大きさで,ドット単位の実数で指定し ます. は表示する小数点の桁数で,整数値を与えます. 使用例 *''#''##'6 互換性 # より大きい文字サイズは × # ドットフォント固定となります. は文字列の回転を 指定する実数の引数ですが,現バージョンでは機能しません. 機 能 ダミーのサブルーチン 互換性 これらのサブルーチンは機能しません. のソースをそのままコンパイルできる ように,これらのサブルーチンは形だけ残してあります. 補助サブルーチンのリファレンス の不便さを少しでも解消するように用意したサブルーチンです. 機 能 ミリ秒単位で実行を延期する ミリ秒の間,プログラムの実行をなにもせずに待ちます. には *** までの整数を指定します.アニ メーション速度の調整に利用できます. 使用例 ## # 機 能 実数型変数を非数 . 1 80- かどうか調べる 実数型変数 G を非数かどうかを調べ,非数なら % に & 以外の整数値を返します. 使用例 '% 機 能 実数型変数を文字列に変換する 実数型変数 G を小数点 桁まで文字列に変換し,区切り文字P#P を最後に付け足して文字型変数 に 格納します. は で確保されている文字数を指定します. には に文字列を格納した時に余った 文字数 整数値 を返し,この値が負の場合は で確保されている文字数が足りなかった事を示します. 使用例 ''#' ' #
© Copyright 2024 Paperzz