Version 0.99.9b
Copyright (C) 1998 - 2003 Tamaribuchi, Tsuguhiro
本ライブラリでは, ウィンドウをオープンすると仮想的な長方形の「用紙」がメモリー上に用意されて, 適当なルーチンをコールすることによって, 図形オブジェクトがその「用紙」に描画されます。 「用紙」 のサイズは原則としてオープン時に決定され, 一般には,実際に出力されるデスプレィ画面の分解能や "プリント用紙" のサイズとは無関係です. 「用紙」がデスプレィ画面やプリンタに出力される際には, ビュー(表示)モードに応じて, その「用紙」 をそれぞれのデバイスにマッピングします. 用紙上で実際に描画を行う長方形の領域を「ビューポート」と呼びます。 ユーザーはビューポートの左下と右上の点の座標を与えることで任意の座標系を定義することができ,この座標系を「ワールド座標系」と呼びます。 本ライブラリのほとんどのルーチンではこの「ワールド座標系」を用います. 「用紙」上にビューポートを設定するには「規格化論理座標系」を使います。 規格化論理座標系は,描画図形の縦横比を一定にしたまま,用紙の短い方の辺の長さを1に規格化した座標系で,原点は「用紙」の左下隅とられます。 規格化論理座標系では,「用紙」 が横長の場合の右上隅の座標は (W/H, 1.0) になります。 ここで,W と H は「用紙」の幅と高さ(ピクセル単位)です。 「用紙」に固定された,「用紙」の左上隅を原点,u 軸と v 軸をそれぞれ右向きと下向きにとった座標系を「論理デバイス座標系」(LDC) と呼び,内部で利用されます。 「論理デバイス座標系」の単位はプリンタに出力するときの1ピクセルに対応しています.
下の説明の Fortran に関する部分については全て大文字が使われていますが,Fortran では識別子(変数名やサブルーチン名など)の大文字と小文字は区別されませんので,当然上の一覧のように小文字を使うことができます。これにたいして,C 言語では区別されますので注意してください。 この一覧を見てわかるようにFortran 言語用のサブルーチン(及び関数)と C 言語用の関数は 1:1 に対応しています。詳細は各サブルーチンや関数についての下の記述を参照して使用してください。
GWT で始まるルーチン群はタートル・グラフィクスのためのものです。それぞれに対応して,GWDT で始まるルーチン群が利用可能で,GWDTxxxxx は GWTxxxxx の倍精度版です。 つまり,GWDTxxxxx を使う場合には,本マニュアルの対応する GWTxxxxx の記述で,REAL を REAL*8 または DOUBLE PRECISION (FORTRAN の場合)に,また,float をすべて double (C または C++ の場合)に読みかえる必要があります。 これらのルーチン群は再描画のための座標情報(以下参照)をワールド座標として,実数 (GWTxxxxx) または倍精度実数 (GWDTxxxxx) で保持するので,相対座標による描画でも誤差の蓄積がほとんど生じません。
最後の 8 個のサブルーチン(#138〜#145)は Calcomp 系のサブルーチンを使用したプログラム用に,最低限の互換性確保のために用意されたコマンド群です。ただし,これらについては対応する C の関数はありません。
タートル・グラフィクスや Calcomp 系のルーチン群もすべて,内部的には GW***** のコマンド群と同等なので,それらを混在して利用しても何等問題ありません。 なお,'n' 欄の数字は各ルーチンの機能に対応するオブジェクト(図形データ)の数を示します. 保存されたオブジェクトは再描画に使用され, gwsaveas/GWsaveas と gwload/GWload でファイルに保存したりファイルから復元することができます.
以下では,[F] は Fortarn での定義部,[C] は C での定義部を表しています。 Fortran サブルーチンにおける第一引数 IRTN はリターン・コードで,とくに断られていないかぎり,失敗のときは 0,成功すれば 0 でない値が返ります。また,C の各関数の戻り値は IRTN と同じです.C の場合には,GWsize を除いて,出力変数に指定されているポインタ型の引数は,不要の場合に NULL とすることができます。
関数名からの検索には「索引」が利用できます。
[F] SUBROUTINE GWINIT(IRTN)
INTEGER IRTN
[C] int GWinit(void);
(説明) ライブラリの初期化を行う。この際,メイン(フレーム)・ウィンドウが開かれてい なければ,grwnd.exe をオプションなしで実行し,開く。アプリケーション内で2度 以上の呼び出しを行っても無視されるだけで実害はない。 次の GWinitx(-1,-1,-1,-1,-1,-1,-1,-1,-1) と同じ。 GWopen の呼び出し時に,必要なら自動的に呼び出されるので通常は省略可。[F] SUBROUTINE GWINITX(IRTN, IRB, IX, IY, IW, IH, MA, MM, MZ, ND)
INTEGER IRTN, IRB, IX, IY, IW, IH, MA, MM, MZ, ND
[C] int GWinitx(int IRB, int IX, int IY, int IW, int IH, int MA, int MM,
int MZ, int ND);
(説明) ライブラリの初期化を行い,メイン(フレーム)・ウィンドウが開かれていなければ grwnd.exe を引数リストの並びに対応したオプションで実行し,開く。アプリケー ション内で2度以上の呼び出しを行っても無視されるだけで実害はない。引数の値が 負の場合には対応するコマンドライン・オプションは生成されない。 GWopen の呼び出し時に,必要なら GWinitx(-1,-1,-1,-1,-1,-1,-1,-1) が自動的に 呼び出されるので,オプション指定を行う場合を除いて省略可。 (入力変数) IRB = O*32 + L*16 + I*8 + R*4 + B*2 + T*1 + 65536*(o*32 + l*16 + i*8 + r*4 + b*2 + t*1) O = 1[0] 終了時にウィンドウを閉じる [閉じない] L = 1[0] プリンタのランドスケープ(用紙横置き)・モード ON [OFF] I = 1[0] 確認モード ON [OFF] R = 1[0] ステータスバー表示 ON [OFF] B = 1[0] バッファリング・モード ON [OFF] T = 1[0] 保存モード ON [OFF] [l, i,... は,それぞれ上の L, I,... の設定項目に対応するマスクビット (0 または 1)で,マスクビットが 1 の設定項目は無視される] IX, IY = フレームの左上隅のスクリーン座標 (ピクセル値) IW, IH = フレームの幅と高さ (ピクセル値) MA = ウィンドウの配置モード番号 (MA = 1..4)。 GWarrange(MA) と同等。 MM = フレームの表示モード番号 (MM = 0..14)。 GWshowfr(MM) と同等。 MZ = フレームの表示順モード番号 (MZ = 1..4)。 GWshowfr(MZ+10) と同等。 ND = 印刷時などに仮定される解像度(dpi 値) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWOPEN(IRTN, NW)
INTEGER IRTN, NW
[C] int GWopen(int NW);
(説明) 次の GWopenx で IW = 0, IH = 0, IFC = -1, IBC = -1, M = -1, FN = ''(NULL) と 指定したのと同じ。[F] SUBROUTINE GWOPENX(IRTN, NW, IW, IH, IFC, IBC, M, FN)
INTEGER IRTN, NW, IW, IH, IFC, IBC, M
CHARACTER FN*(*)
[C] int GWopenx(int NW, int IW, int IH, int IFC, int IBC, int M, char *FN);
(説明) NW > 0 の場合には,指定された番号 NW、ファイル名 FN のウィンドウを開く。 NW = 0 の場合は使われていないウィンドウ番号を使用する。この際,未使用のメ イン(フレーム)・ウィンドウが見つからなければ,GWINIT を呼び出して初期化を行 う。すでに 'ジョイン' (GWJOIN 参照) に成功している場合には NW と FN の指定は 無視される。IW と IH には用紙の幅と高さを 0.1mm 単位で指定する。内部的には, 指定された(あるいは省略値の)幅と高さ,および印刷時などに仮定される解像度( GWinitx 参照)をもとにバッファ用ビットマップ・サイズ等が決定される。IFC と IBC は前景色と背景色の初期値を論理色番号で指定する。どちらも,負の値が設定さ れた場合には省略値が用いられる。 なお,背景色 IBC の指定には Windows 標準パ レットと相対 COLORREF 値しか指定できない(GWcolor 参照)。 M (0..10) はオープン 時のウィンドウの表示状態 (GWshowwn 参照)。 (入力変数) NW = ウィンドウ番号 (0,1,2,3,...) IW = 用紙の幅 (0 の場合、プリンターの省略値が使用される) IH = 用紙の高さ (0 の場合、プリンターの省略値が使用される) IFC = 前景色の初期値(論理色番号: GWCOLOR 参照)。省略値は 0 (黒) IBC = 背景色の初期値(論理色番号: GWCOLOR 参照)。省略値は 19 (白) M = オープン時のウィンドウの表示状態 (< 0 の場合は省略値) FN = グラフィクス・データを保存する場合のデフォルトのファイル名 (出力変数) IRTN = 実際に開かれたウィンドウ番号 ( > 0 ), 失敗のときは 0
[F] SUBROUTINE GWQUIT(IRTN)
INTEGER IRTN
[C] int GWquit(void);
(説明) 終了ダイアログを表示し,応答を待ってから,アプリケーションが開いたすべての ウィンドウを閉じて、終了処理を行う。他に開かれているウィンドウが無い場合には メイン(フレーム)・ウィンドウも閉じる。次の GWquitx(1) と同じ。[F] SUBROUTINE GWQUITX(IRTN, MQ)
INTEGER IRTN, MQ
[C] int GWquitx(int MQ);
(説明) アプリケーションが開いたすべてのウィンドウを閉じ、終了処理を行う。引数の値に よって終了ダイアログの制御を行う。 (入力変数) MQ = 0 : 終了ダイアログを出さずに直ちに終了処理を行う。 他: 終了ダイアログを表示してから,入力を待って終了処理を行う。 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWLEAVE(IRTN)
INTEGER IRTN
[C] int GWleave(void);
(説明) ウィンドウを閉じないで、終了処理を行う。 (入力変数) なし (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWJOIN(IRTN, NW, IN, IS, JND)
INTEGER IRTN, NW, IN, IS
CHARACTER JND*(*)
[C] int GWjoin(int NW, int IN, int IS, char *JND);
(説明) 入力パラメータ (NW, IN) で指定されたウィンドウに接続して追加描画を行うための 初期化(ジョイン)を行う。入力パラメータ IN でメイン・ウィンドウ(GrWnd)番 号を,NW でウィンドウ番号(GWopen 参照)を指定する。本ルーチンは GWinit[x] や GWopen[x] よりも先に呼び出されなければならない。 GWinit[x] や GWopen[x] が呼び出された時点で本設定が有効となり,NW, IN のどちらの入力パラメータにつ いても 0 が指定された場合には,対応するウィンドウで最初にみつかったものが使 われ,存在しない場合は新たに開く。'ジョイン'先のウィンドウの情報は変数 JND で受け取ることができる。'ジョイン'可能かどうかを知るだけの場合は IS に 0 を 設定すればよい。この場合,出力変数の設定だけで'ジョイン'動作は行われないの で,'ジョイン'したい場合には IS に 0 でない値を設定して本ルーチンをもう一度 呼び出す必要がある。 注意:単一のウィンドウに複数のアプリケーションが'ジョイン'した場合の結果につ いては保証されない。 (入力変数) NW = ウィンドウ番号 (0,1,2,3,...) IN = メイン・ウィンドウ(GrWnd)番号 (0,1,2,3,...) (出力変数) JND = 'ジョイン'に成功した場合は,メイン・ウィンドウ番号,ウィンドウ番号,ア プリケーション名をカンマで区切った文字列。失敗した場合は空の文字列。 IRTN = 実際に開かれたウィンドウ番号 ( > 0 ), 失敗のときは 0
[F] SUBROUTINE GWRESET(IRTN)
INTEGER IRTN
[C] int GWreset(void);
(説明) 現在のウィンドウの各種パラメータをデフォルト値に戻す。 (入力変数) なし (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWCLOSE(IRTN, NW)
INTEGER IRTN, NW
[C] int GWclose(int NW);
(説明) 指定したグラフィクス・ウィンドウを閉じる。 (入力変数) NW > 0: 指定した番号のウィンドウをクローズする = 0: カレント・ウィンドウをクローズする < 0: アプリケーションが開いたすべてのウィンドウを閉じる (出力変数) IRTN = カレント・ウィンドウ番号,開かれているウィンドウが無ければ 0
[F] SUBROUTINE GWINDOW(IRTN, X1,Y1,X2,Y2)
INTEGER IRTN
REAL X1,Y1,X2,Y2
[C] int GWindow(float X1, float Y1, float X2, float Y2);
(説明) ビューポート左下の点と右上の点の座標をワールド座標で与えることによりワール ド座標系を設定する。デフォルトでは用紙のサイズは左下を原点に, (X1, Y1, X2, Y2) = (0.0, 0.0, 640.0, 640.0/U2*V2) に設定されている.(U2,V2) は.規格化論理座標系によるビューポートの右上の点 の座標。X1 = X2 かつ Y1 != Y2 の場合には, ビューポート下辺中央の点のワール ド座標が (X1, Y1),ビューポートのワールド座標系での高さが | Y2 - Y1 | の,ア スペクト比(縦横のスケール比)が 1:1 の座標系が設定される。同様に,X1 != X2 かつ Y1 = Y2 の場合には,横幅に合わせたアスペクト比が 1:1 の座標系が設定され る。 X1 = X2 かつ Y1 = Y2 の場合には,ワールド座標系は論理デバイス座標系と同 じになる。 (入力変数) X1 = ビューポート左下の X 座標(ワールド座標系) Y1 = ビューポート左下の Y 座標(ワールド座標系) X2 = ビューポート右上の X 座標(ワールド座標系) Y2 = ビューポート右上の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETWN(IRTN, X1,Y1,X2,Y2)
INTEGER IRTN
REAL X1,Y1,X2,Y2
[C] int GWgetwn(float *X1, float *Y1, float *X2, float *Y2);
(説明) 現在のワールド座標系を取得する(GWINDOW 参照)。 (入力変数) なし (出力変数) X1 = ビューポート左下の X 座標(ワールド座標系) Y1 = ビューポート左下の Y 座標(ワールド座標系) X2 = ビューポート右上の X 座標(ワールド座標系) Y2 = ビューポート右上の Y 座標(ワールド座標系) IRTN = リターン・コード
[F] SUBROUTINE GWVPORT(IRTN, U1,V1,U2,V2)
INTEGER IRTN
REAL U1,V1,U2,V2
[C] int GWvport(float U1, float V1, float U2, float V2);
(説明) 規格化論理座標系でビューポートを設定する。規格化論理座標系とは,用紙のアス ペクト比(縦横比)を保ったまま,用紙の幅(W)と高さ(H)の短い方を 1 に規格化した 座標系のこと。U1 = U2,または,V1 = V2 を指定した場合には用紙全体にビュー ポートが設定される。 (入力変数) U1 = ビューポート左下の X 座標 (規格化論理座標系) V1 = ビューポート左下の Y 座標 (規格化論理座標系) U2 = ビューポート右上の X 座標 (規格化論理座標系) V2 = ビューポート右上の Y 座標 (規格化論理座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPORT(IRTN, X1,Y1,X2,Y2)
INTEGER IRTN
REAL X1,Y1,X2,Y2
[C] int GWport(float X1, float Y1, float X2, float Y2);
(説明) ワールド座標系でビューポートを設定する。X1 = X2,または,Y1 = Y2 を指定した 場合には用紙全体にビューポートが設定される。ワールド座標系を変化させないため には,引き続き GWINDOW(IRTN, X1,Y1,X2,Y2) を呼び出す必要がある。 (入力変数) X1 = ビューポート左下の X 座標 (ワールド座標系) Y1 = ビューポート左下の Y 座標 (ワールド座標系) X2 = ビューポート右上の X 座標 (ワールド座標系) Y2 = ビューポート右上の Y 座標 (ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETVP(IRTN, U1,V1,U2,V2)
INTEGER IRTN
REAL U1,V1,U2,V2
[C] int GWgetvp(float *U1, float *V1, float *U2, float *V2);
(説明) 現在のビューポートを取得する(GWVPORT 参照)。 (入力変数) なし (出力変数) U1 = ビューポート左下の X 座標 (規格化論理座標系) V1 = ビューポート左下の Y 座標 (規格化論理座標系) U2 = ビューポート右上の X 座標 (規格化論理座標系) V2 = ビューポート右上の Y 座標 (規格化論理座標系) IRTN = リターン・コード
[F] SUBROUTINE GWSAVEVP(IRTN, IVP)
INTEGER IRTN, IVP
[C] int GWsavevp(int IVP);
(説明) 現在のビューポート情報を指定したビューポート番号で保存する。保存されたビュー ポート情報は GWselvp で呼び出すことができる。 (入力変数) IVP = ビューポート番号 ( > 0 ) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSELVP(IRTN, IVP)
INTEGER IRTN, IVP
[C] int GWselvp(int IVP);
(説明) ビューポートを選択する。指定されたビューポート番号 IVP が未定義の場合は何も しない。 成功すると,ビューポートと対応するワールド座標系が復元される。 ビューポート番号 IVP = 0 にはデフォルトの設定が保存されている。 (入力変数) IVP = ビューポート番号 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWFIRST(IRTN)
INTEGER IRTN
[C] int GWfirst(void);
(説明) このアプリケーションがオープンした最初のウィンドウの番号を取得する。 (入力変数) なし (出力変数) IRTN = 最初のウィンドウのウィンドウ番号, 失敗のときは 0
[F] SUBROUTINE GWNEXT(IRTN, NW)
INTEGER IRTN, NW
[C] int GWnext(int NW);
(説明) 指定したウィンドウの次にオープンしたウィンドウの番号を取得する。 オープンされているすべてのウィンドウの番号を取得するには、最初に GWfirst を呼んでから、0 が返されるまで GWnext を繰り返し呼べばよい。C の場合にウィン ドウ番号 NW を更新するには NW = GWnext(NW); として,関数の戻り値を明示的に NW に代入しなくてはならない。 (入力変数) ウィンドウ番号 (出力変数) IRTN = 次のウィンドウのウィンドウ番号,失敗したときは 0
[F] SUBROUTINE GWSELECT(IRTN, NW)
INTEGER IRTN, NW
[C] int GWselect(int NW);
(説明) 指定されたウィンドウ番号のウィンドウをカレント・ウィンドウに設定する。 (入力変数) NW = ウィンドウ番号 (1,2,3,...) (出力変数) IRTN = カレント・ウィンドウ番号
[F] SUBROUTINE GWSHOWWN(IRTN, NW, IS)
INTEGER IRTN, NW, IS
[C] int GWshowwn(int NW, int IS);
(説明) 指定されたウィンドウ番号のウィンドウの表示状態を設定する。カレント・ウィンド ウは変更されない。NW = 0 の場合はカレント・ウィンドウが指定される。 (入力変数) NW = ウィンドウ番号 (0,1,2,3,...) IS = 0: ウィンドウを非表示にし、他のウィンドウをアクティブにします。 1: ウィンドウを最大化します。 2: ウィンドウを最小化し、Z 順位が次のトップレベルウィンドウをアクティブ にします。 3: ウィンドウをアクティブにし、表示します。ウィンドウが最小化されていた り最大化されていたりすると、元の位置とサイズに戻ります。 4: ウィンドウをアクティブにして、現在の位置とサイズで表示します。 5: ウィンドウをアクティブにして、最大化します。 6: ウィンドウをアクティブにして、最小化します。 7: ウィンドウを最小化します。アクティブなウィンドウは、アクティブな状態 を維持します。非アクティブなウィンドウは、非アクティブなままです。 8: ウィンドウを現在の状態で表示します。アクティブなウィンドウはアクティ ブな状態を維持します。 9: ウィンドウを直前の位置とサイズで表示します。アクティブなウィンドウは アクティブな状態を維持します。 10: ウィンドウをアクティブにして、表示します。ウィンドウが最小化または最 大化されているときは、位置とサイズを元に戻します。 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSHOWFR(IRTN, IS)
INTEGER IRTN, IS
[C] int GWshowfr(int IS);
(説明) フレーム(枠)の表示状態を設定する。 (入力変数) IS = 0: フレームを非表示にし、他のフレームをアクティブにします(HIDE) 1: フレームを最大化します(MAXIMIZE) 2: フレームを最小化し、Z 順位が次のトップレベルフレームをアクティブ にします(MINIMIZE) 3: フレームをアクティブにし、表示します。フレームが最小化されていた り最大化されていたりすると、元の位置とサイズに戻ります(RESTORE) 4: フレームをアクティブにして、現在の位置とサイズで表示します(SHOW) 5: フレームをアクティブにして、最大化します(SHOWMAXIMIZED) 6: フレームをアクティブにして、最小化します(SHOWMINIMIZED) 7: フレームを最小化します。アクティブなフレームは、アクティブな状態 を維持します。非アクティブなフレームは、非アクティブなままです (SHOWMINNOACTIVE) 8: フレームを現在の状態で表示します。アクティブなフレームはアクティ ブな状態を維持します(SHOWNA) 9: フレームを直前の位置とサイズで表示します。アクティブなフレームは アクティブな状態を維持します(SHOWNOACTIVATE) 10: フレームをアクティブにして、表示します。フレームが最小化または最 大化されているときは、位置とサイズを元に戻します(SHOWNORMAL) 11: フレームを最前面に置く(TOPMOST) 12: フレームを最前面の次に置く(NOTOPMOST) 13: フレームを一番上に置く(TOP) 14: フレームを一番下に置く(BOTTOM) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWARRANGE(IRTN, M)
INTEGER IRTN, M
[C] int GWarrange(int M);
(説明) メイン(フレーム)・ウィンドウ内のクライアント・ウィンドウを再配置する。 メニュー・バーの[ウィンドウ] から指定するのと同じ (M < 5 の場合)。 (入力変数) M = 1: 重ねて表示 2: 縦に並べて表示 3: 横に並べて表示 4: アイコンの整列 5: カレント・ウィンドウをアクティブにする 6: カレント・ウィンドウを最大化する 7: カレント・ウィンドウを元のサイズに戻す 8: カレント・ウィンドウを破棄する (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWLDCPOS(IRTN, X, Y, IU, IV)
REAL X, Y
INTEGER IRTN, IU, IV
[C] int GWldcpos(float X, float Y, int *IU, int *IV);
(説明) ワールド座標 (X, Y) から論理デバイス座標 [IU, IV] へ変換する。論理デバイス 座標系は「用紙」に固定された座標系で,「用紙」の左上を原点 [0,0],右下を [W-1,H-1] とした座標系。ここで W と H は「用紙」の幅と高さ(プリンタのピク セル単位)。 (入力変数) X = X 座標(ワールド座標系) Y = Y 座標(ワールド座標系) (出力変数) IU = U 座標(論理デバイス座標系) IV = V 座標(論理デバイス座標系) IRTN = リターン・コード
[F] SUBROUTINE GWLDCSIZ(IRTN, W, H, IU, IV)
REAL X, Y
INTEGER IRTN, IU, IV
[C] int GWldcsiz(float W, float H, int *IU, int *IV);
(説明) ワールド座標系での幅 W と高さ H を論理デバイス座標系へ変換する。 (入力変数) X = ワールド座標系での幅 Y = ワールド座標系での高さ (出力変数) IU = 論理デバイス座標系での幅 IV = 論理デバイス座標系での高さ IRTN = リターン・コード
[F] SUBROUTINE GWPXLSIZ(IRTN, W, H)
REAL X, Y
[C] int GWpxlsiz(float *W, float *H);
(説明) 使用中のディスプレイ上の1ピクセルに対応するワールド座標系での幅 W と高さ H の現在値を取得する。得られる値は現在の表示ウィンドウのサイズや表示モードに 依存する。 (入力変数) なし (出力変数) X = ワールド座標系での幅 Y = ワールド座標系での高さ IRTN = リターン・コード
[F] SUBROUTINE GWSETPEN(IRTN, IPC, IPS, IPW, MX)
INTEGER IRTN, IPC, IPS, IPW, MX
[C] int GWsetpen(int IPC, int IPS, int IPW, int MX);
(説明) カレント・ウィンドウで使用するペンの色,線種,線幅,混合モードを指定する。 実線(IPS=1)以外の線種を使用する場合は線幅は1に設定される。混合モードによ り,ペンやブラシの色と、すでに描かれている線などとの色の混合方法を定める。 MX > 15 の場合は MX-16 の値をそのまま "2元 ROP コード[W]" として使用する。 原則として、値が負であればその項目は変更されないが,IPC については -1 以外の 負の値には特別の意味があるので注意。すべての入力変数が -1 の場合にはペン位置 が初期化される(GWLINE2 参照)。 (入力変数) IPC = 論理色番号 -1 の場合は変更されない その他の場合については GWCOLOR の項参照。 IPS = 線種 0: 透明(NULL) 1: 実線(SOLID) 2: 破線(DASH) 3: 点線(DOT) 4: 1点鎖線(DASHDOT) 5: 2点鎖線(DASHDOTDOT) IPW = 線幅を論理デバイス座標系で指定する。0 を指定するとデバイスによらず 1 ピクセル幅になる。 MX = 混合モード 0: NOP 1: BLACK 2: WHITE 3: NOT 4: COPYPEN 5: MASKPEN 6: MERGEPEN 7: XORPEN 8: NOTCOPYPEN 9: NOTMASKPEN 10: NOTMERGEPEN 11: NOTXORPEN 12: MASKNOTPEN 13: MASKPENNOT 14: MERGENOTPEN 15: MERGEPENNOT (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETPEN(IRTN, IPC, IPS, IPW, MX)
INTEGER IRTN, IPC, IPS, IPW, MX
[C] int GWgetpen(int *IPC, int *IPS, int *IPW, int *MX);
(説明) カレント・ウィンドウで使用しているペンの論理色番号,線種,線幅,混合モードを 取得する。 (入力変数) なし (出力変数) IPC = 論理色番号 IPS = 線種 IPW = 線幅 MX = 混合モード IRTN = リターン・コード
[F] SUBROUTINE GWSETBRS(IRTN, IBC, IBS, IBH)
INTEGER IRTN, IBC, IBS, IBH
[C] int GWsetbrs(int IBC, int IBS, int IBH);
(説明) カレント・ウィンドウで使用するブラシの色,種類,ハッチパターンを指定する。 設定値が負であればその項目は変更されない。IBC の場合には -1 以外の負の数値に は別の意味があるので注意。 (入力変数) IBC = 論理色番号 -1 の場合は変更されない その他の場合については GWCOLOR の項参照。 IBS = 0: NULLBRUSH 中空のブラシ 1: SOLIDBRUSH 純色のブラシ 2: HATCHED ハッチ ブラシ 3: BSPATTERN パターン ブラシ(予定) 4: DIBPATTERN パターン ブラシ(予定) 5: DIBPATTERNPT パターン ブラシ(予定) IBH = 1: HORIZONTAL 水平のハッチ 2: VERTICAL 垂直のハッチ 3: FDIAGONAL 左上から右下への 45 度のハッチ 4: BDIAGONAL 左下から右上への 45 度のハッチ 5: CROSS 水平、垂直の格子状のハッチ 6: DIAGCROSS 45 度の格子状のハッチ (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETBRS(IRTN, IBC, IBS, IBH)
INTEGER IRTN, IBC, IBS, IBH
[C] int GWgetbrs(int *IBC, int *IBS, int *IBH);
(説明) カレント・ウィンドウで使用しているブラシの色,種類,ハッチパターンを取得する。 パラメターの意味は GWSETBRS を参照。 (入力変数) なし (出力変数) IBC = 論理色番号 IBS = ブラシの種類 IPW = ハッチパターン IRTN = リターン・コード
[F] SUBROUTINE GWSETTXT(IRTN, H, A, IO, K, KB, FACE)
INTEGER IRTN, IO, K, KB
REAL H, A
CHARACTER FACE*(*)
[C] int GWsettxt(float H, float A, int IO, int K, int KB, char *FACE);
(説明) テキスト用フォントの属性を設定する。使用可能なフォントは TrueType フォントの み。フォント名が空白の場合はデフォールト名または前回使用されたフォントが使わ れる。フォント名が '*' の場合や、設定した属性でフォントの生成に失敗した場合 には,フォント・ダイアログが呼び出される。 (入力変数) H = フォントの高さ(ワールド座標系) 0 の場合はデフォールト値を使う 負の場合は現在の値を使う A = フォントの傾き角(deg/360,反時計回り; |A| < 1.0) |A| >= 1.0 の場合は現在の値を使う IO = 基準点の位置を指定する = 0: 中央 = 1: 左下 (デフォルト) = 2: 右下 = 3: 右上 = 4: 左上 = 5: 左 = 6: 下 = 7: 右 = 8: 上 K = 文字の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う KB = 文字の背景色の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う = -100: 透明(default) FACE = TrueType フォント名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETTXT(IRTN, W, H, X, Y, TXT)
INTEGER IRTN
REAL W, H, X, Y
CHARACTER TXT*(*)
[C] int GWgettxt(float *W, float *H, float *X, float *Y, char *TXT);
(説明) 文字列のワールド座標系での幅と高さをを取得する。 (入力変数) W = 文字列の幅(ワールド座標系) H = 文字列の高さ(ワールド座標系) X = 基準点のオフセットのX座標(ワールド座標系) Y = 基準点のオフセットのY座標(ワールド座標系) TXT = 文字列 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPUTTXT(IRTN, X, Y, TXT)
INTEGER IRTN
REAL X, Y
CHARACTER TXT*(*)
[C] int GWputtxt(float X, float Y, char *TXT);
(説明) グラフィクス・ウィンドウ上に文字列を出力する。フォントの種類は GWSETTXT または,メニューバーの [Options] => [Font] で変更可。文字列の幅は内容とフォ ントの種類に依存するため設定できない。例えば GWFMAX() を使うなどして,文字 列の左下の点の座標に,用紙 (GWINDOW 参照) の範囲から大きく外れた点を指定す ると,文字列はその前の出力文字列の直後に出力される。 (入力変数) X = 基準点の X 座標(ワールド座標系) Y = 基準点の Y 座標(ワールド座標系) TXT = 出力文字列 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSETSYM(IRTN, H, A, IO, K, KB, FACE)
INTEGER IRTN, IO, K, KB
REAL H, A
CHARACTER FACE*(*)
[C] int GWsetsym(float H, float A, int IO, int K, int KB, char *FACE);
(説明) 記号フォントの属性を設定する。使用可能なフォントは TrueType フォントのみ。 フォント名が空白の場合はデフォールト名または前回使用されたフォントが使わ れる。設定した属性でフォントの生成に失敗した場合には,フォント・ダイアログが 呼び出される。 (入力変数) H = フォントの高さ(ワールド座標系) 0 の場合はデフォールト値を使う 負の場合は現在の値を使う A = フォントの傾き角(deg/360,反時計回り; |A| < 1.0) |A| >= 1.0 の場合は現在の値を使う IO = 基準点の位置を指定する = 0: 中央 (デフォルト) = 1: 左下 = 2: 右下 = 3: 右上 = 4: 左上 = 5: 左 = 6: 下 = 7: 右 = 8: 上 K = 文字の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う KB = 文字の背景色の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う = -100: 透明(default) FACE = TrueType フォント名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETSYM(IRTN, W, H, IC)
INTEGER IRTN, IC
REAL W, H
[C] int GWgetsym(float *W, float *H, int IC);
(説明) 記号のワールド座標系での幅と高さをを取得する。 (入力変数) W = 記号の幅(ワールド座標系) H = 記号の高さ(ワールド座標系) IC = 記号コード(0〜255) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPUTSYM(IRTN, X, Y, IC)
INTEGER IRTN, IC
REAL X, Y
[C] int GWputsym(float X, float Y, int IC);
(説明) グラフィクス・ウィンドウ上に記号を出力する。記号の属性は GWSETSYM または, メニューバーの [Options] => [Symbol] で変更可。デフォルトの記号フォントとし ては Windowsの TrueType フォント "WingDings" が使用される。 (入力変数) X = 記号の中心点の X 座標(ワールド座標系) Y = 記号の中心点の Y 座標(ワールド座標系) IC = 記号コード(0〜255) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSETMSG(IRTN, TXT)
INTEGER IRTN
CHARACTER TXT*(*)
[C] int GWsetmsg(char *TXT);
(説明) ステータスバーにメッセージを表示する。 (入力変数) TXT = メッセージの文字列 (出力変数) IRTN = リターン・コード
[F] INTEGER FUNCTION MSGBOX(TXT)
CHARACTER TXT*(*)
[C] int GWmsgbox(char *TXT);
(説明) メッセージボックスを表示し,どのボタンが押されたかの値を得る。 (入力変数) TXT = メッセージの文字列 (出力変数) なし (返される値) 1: YES ボタンが押された場合 -1: NO ボタンが押された場合 0: その他
[F] SUBROUTINE GWGETPOS(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWgetpos(float *X, float *Y);
(説明) 現在のペン位置 (X, Y) をワールド座標系で返す。 (入力変数) なし (出力変数) X = 点の X 座標(ワールド座標系) Y = 点の Y 座標(ワールド座標系) IRTN = リターン・コード
[F] SUBROUTINE GWMOVE2(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWmove2(float X, float Y);
(説明) ワールド座標系の (X, Y) にペンを移動する。何も描かれない。 (入力変数) X = 点の X 座標(ワールド座標系) Y = 点の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWLINE2(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWline2(float X, float Y);
(説明) 現在のペン (GWSETPEN 参照) を使って,現在のペン位置と指定されたワールド座標 系の点 (X, Y) を結ぶ直線を描き,ペン位置を更新する。ペン位置が未定義(初期状 態)の場合は,ペン位置を更新するだけで直線は描かれない。ペン位置は GWSETPEN で初期化できる。 (入力変数) X = 点の X 座標(ワールド座標系) Y = 点の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWLINE(IRTN, X1, Y1, X2, Y2)
INTEGER IRTN
REAL X1, Y1, X2, Y2
[C] int GWline(float X1, float Y1, float X2, float Y2);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の (X1, Y1) と (X2, Y2) を直線で結ぶ。 (入力変数) X1 = 始点の X 座標(ワールド座標系) Y1 = 始点の Y 座標(ワールド座標系) X2 = 終点の X 座標(ワールド座標系) Y2 = 終点の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWRECT(IRTN, X1, Y1, X2, Y2)
INTEGER IRTN
REAL X1, Y1, X2, Y2
[C] int GWrect(float X1, float Y1, float X2, float Y2);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形を描く。このとき現在のブラシ (GWSETBRS 参照) で 内部が塗られる。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSRECT(IRTN, X1, Y1, X2, Y2, K)
INTEGER IRTN, K
REAL X1, Y1, X2, Y2
[C] int GWsrect(float X1, float Y1, float X2, float Y2, int K);
(説明) ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形の内部を 論理色番号 K で塗りつぶす。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) K = 論理色番号 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWRRECT(IRTN, X1, Y1, X2, Y2, W, H)
INTEGER IRTN
REAL X1, Y1, X2, Y2, W, H
[C] int GWrrect(float X1, float Y1, float X2, float Y2, float W, float H);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形に内接する角の丸い四角形を描く。 このとき現在の ブラシ (GWSETBRS 参照) で内部が塗られる。丸い角を描くための楕円の幅と高さは (W, H) で指定する。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) W = 角の楕円の幅(ワールド座標系) H = 角の楕円の高さ(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWELLIPSE(IRTN, X1, Y1, X2, Y2)
INTEGER IRTN
REAL X1, Y1, X2, Y2
[C] int GWellipse(float X1, float Y1, float X2, float Y2);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形に内接する楕円を描く。このとき現在のブラシ (GWSETBRS 参照) で内部が塗られる。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWARC(IRTN, X1, Y1, X2, Y2, A, AW)
INTEGER IRTN
REAL X1, Y1, X2, Y2, A, AW
[C] int GWarc(float X1, float Y1, float X2, float Y2, float A, float AW);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形に内接する楕円の弧を描く。塗りつぶしは行わな い。弧は,角度の単位を "度/360" とし,反時計回りを正にとって,水平方向から 測った角度が A の点から,角度が A + AW の点まで描画される。A と AW について は,値が -1.0 以下の場合にはデフォルト値が用いられる。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) A = 弧の描画開始角(deg/360; デフォルト値は 0.0) AW = 弧の角度幅(deg/360; デフォルト値は 1.0) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWCHORD(IRTN, X1, Y1, X2, Y2, A, AW)
INTEGER IRTN
REAL X1, Y1, X2, Y2, A, AW
[C] int GWchord(float X1, float Y1, float X2, float Y2, float A, float AW);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形に内接する楕円の弧とその両端を結ぶ弦を描く。こ のとき現在のブラシ (GWSETBRS 参照) で内部が塗られる。弧は,角度の単位を "度/360" とし,反時計回りを正にとって,水平方向から測った角度が A の点から, 角度が A + AW の点まで描画される。A と AW については,値が -1.0 以下の場合に はデフォルト値が用いられる。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) A = 弧の描画開始角(deg/360; デフォルト値は 0.0) AW = 弧の角度幅(deg/360; デフォルト値は 1.0) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPIE(IRTN, X1, Y1, X2, Y2, A, AW)
INTEGER IRTN
REAL X1, Y1, X2, Y2, A, AW
[C] int GWpie(float X1, float Y1, float X2, float Y2, float A, float AW);
(説明) 現在のペン (GWSETPEN 参照) を使って,ワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角線とする四角形に内接する扇形を反時計回りに描く。このとき現在 のブラシ (GWSETBRS 参照) で内部が塗られる。扇形は、楕円の弧と、2 つの端点そ れぞれから楕円の中心に引いた直線から構成される図形。弧は,角度の単位を "度/360" とし,反時計回りを正にとって,水平方向から測った角度が A の点から, 角度が A + AW の点まで描画される。A と AW については,値が -1.0 以下の場合に はデフォルト値が用いられる。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) A = 弧の描画開始角(deg/360; デフォルト値は 0.0) AW = 弧の角度幅(deg/360; デフォルト値は 1.0) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPLOT1(IRTN, M, N, P1, PN, S, O, A, B, ARRY)
INTEGER IRTN, M, N
REAL P1, PN, S, O, A, B, ARRY(N)
[C] int GWplot1(int M, int N, float P1, float PN, float S, float O,
float A, float B, float *ARRY);
(説明) 1次元配列 ARRY の先頭から |N| 個のデータについて線形変換を行ったものを M で 指定された形式で等間隔にプロットする。プロットされる i 番目 (i = 1..|N|) の 点の (x,y) 座標(ワールド座標)は FORTRAN の場合, (P1 + (i - 1)*(PN - P1)/(N - 1), A*ARRY(i)+B) (N > 0) あるいは (A*ARRY(i)+B, P1 + (i - 1)*(PN - P1)/(- N - 1)) (N < 0) となる。C の場合は ARRY(i) を ARRY[i-1] に読み替える必要がある。 (入力変数) M = プロット形式 = -1: 現在のペンを使った折れ線グラフ = -2(-3): 現在のペンを使った線状垂直(水平)棒グラフ = -4(-5): 現在のブラシを使った垂直(水平)棒グラフ(幅は S) = -6(-7): 現在のペンと現在のブラシを使った垂直(水平)棒グラフ(幅は S) = 0: 現在のマークを使った'マーク列'(高さは S) > 0: コンボ番号 M のコンボ(作成時の大きさ)を使った'コンボ列' |N| = プロットする配列要素数 ( > 1: 折れ線グラフの場合)。N > 0 の場合には A*ARRY(i)+B を y 座標として扱い,N < 0 の場合には x 座標として扱う。 P1 = 最初の点の x または y 座標(ワールド座標) PN = 最後の点の x または y 座標(ワールド座標) S = 棒グラフの棒の幅あるいはマークの大きさ(ワールド座標) O = M < -1 の場合:棒グラフの場合の基線の座標(ワールド座標) M > 0 の場合:コンボの IOF (GWPUTCMB 参照) パラメータ A = 線形変換の係数 B = 線形変換の付加定数 ARRY = プロットする1次元配列 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPOLYGON(IRTN, POINTS, N, MF)
INTEGER IRTN, N, MF
REAL POINTS(2,N)
[C] int GWpolygon(float *POINTS, int N, int MF);
(説明) 現在のペン (GWSETPEN 参照) を使って,N 個の頂点からなる多角形を,i (= 1..N) 番目の頂点の座標を (POINTS(1,i), POINTS(2,i)) で与えて描く([F])。このとき現 在のブラシ (GWSETBRS 参照) を用い,指定された塗りつぶしモードで内部が塗られ る。[C] の場合には,ポインタ POINTS が指すメモリー領域は連続的で, *(POINTS + 2*i - 2) と *(POINTS + 2*i - 1) のそれぞれに,i (= 1..N) 番目の頂 点の x, y 座標が格納されていなければならない。 (入力変数) POINTS(1,i) = i 番目の頂点の x 座標 (i = 1..N) POINTS(2,i) = i 番目の頂点の y 座標 (i = 1..N) N = 頂点数 MF = 塗りつぶしモード 0: Alternate (default) 1: Winding 他: 変更なし (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPOLYLIN(IRTN, POINTS, N)
INTEGER IRTN, N
REAL POINTS(2,N)
[C] int GWpolylin(float *POINTS, int N);
(説明) 現在のペン (GWSETPEN 参照) を使って,N 個の点を結ぶ折れ線を,i (= 1..N) 番目 の頂点の座標を (POINTS(1,i), POINTS(2,i)) で与えて描く([F])。図形が閉じてい ても塗りつぶしは行われない。C の場合の点列の座標の与え方については GWPOLYGON 参照。 (入力変数) POINTS(1,i) = i 番目の点の x 座標 (i = 1..N) POINTS(2,i) = i 番目の点の y 座標 (i = 1..N) N = 点の数 ( > 1 ) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWBEZIER(IRTN, POINTS, N)
INTEGER IRTN, N
REAL POINTS(2,N)
[C] int GWbezier(float *POINTS, int N);
(説明) 現在のペン (GWSETPEN 参照) を使って,ベジエ スプラインを描画する。塗りつぶ しは行われない。引数 POINTS に指定された終了点と制御点を使って 3 次ベジエス プラインを描画する。最初のスプラインは、最初の点から 4 番目の点まで描画され る。2 番目の点と 3 番目の点は、制御点として使う。その後に続く一連のスプラ インはそれぞれ 3 つの点を必要とする。直前のスプラインの終了点を開始点として 使い,連続した次の 2 点を制御点,3 番目の点を終了点として使う。したがって, スプライン・セグメント数が n の場合,N = 3*n+1 個のデータ点を与えなければな らない。C の場合の点列の座標の与え方については GWPOLYGON 参照。 (入力変数) POINTS(1,i) = i 番目の点の x 座標 (i = 1..N) POINTS(2,i) = i 番目の点の y 座標 (i = 1..N) N = 点の数 ( 3 の倍数 + 1 ) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWFLOOD(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWflood(float X, float Y);
(説明) (X,Y) で指定された塗りつぶし開始点から,開始点を含み,開始点と異なる色を境界 とする領域内部を現在のブラシで塗りつぶす [このルーチンは非常に低速で,多くの プリンタはこの機能をサポートしていないので,できるだけ使わない方がよい]。 (入力変数) X = 塗りつぶし開始点の X 座標(ワールド座標系) Y = 塗りつぶし開始点の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWCLEAR(IRTN, K)
INTEGER IRTN, K
[C] int GWclear(int K);
(説明) 指定された色で現在のビューポートをを塗りつぶす。 (入力変数) K = 論理色番号(GWCOLOR の項参照) -1 の場合は画面消去とともにすべてのオブジェクトもメモリから消去する (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSETMRK(IRTN, MT, S, K, KB, MX)
INTEGER IRTN, MT, K, KB, MX
REAL S
[C] int GWsetmrk(int MT, float S, int K, int KB, int MX);
(説明) マーク番号 MT(0-6),大きさ S(ワールド座標系),マークの論理色番号 K,マークの 背景色の論理色番号 KB,混合モード MX を指定する。 MX > 15 の場合は (MX-16) の値をそのまま "binary raster-operation code[W]" として使用する。K, KB を除 いて,入力パラメータの値が負であれば対応する属性は変更されない。MT が 0 の 場合は,大きさが S(ピクセル)の点が指定され,この場合,描画されるマークの 大きさはビュー(表示)モードに影響されない。 (入力変数) MT = 0: 点 1: ■ 2: + 3: × 4: +と×を重ねあわせたもの 5: □ 6: ○ その他: 変更しない S = ドットの大きさ(ピクセル値) = マークの高さ(ワールド座標系) > 0.0 K = マークの論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う KB = マークの背景色の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う = -100: 透明(default) MX = マークの混合モード( GWSETPEN の項参照) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPUTMRK(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWputmrk(float X, float Y);
(説明) GWSETMRK で設定されたマークを位置 (X,Y) に描画する。マークを構成する線の描 画には現在のペン (GWSETPEN 参照) が使われる。 (入力変数) X = マーク中心点の X 座標(ワールド座標系) Y = マーク中心点の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETMRK(IRTN, MT, S, K, KB, MX)
INTEGER IRTN, MT, K, KB, MX
REAL S
[C] int GWgetmrk(int *MT, float *S, int *K, int *KB, int *MX);
(説明) 現在のマーク番号,マークサイズ,マークとマーク背景色の論理色番号,混合モード を取得する。 (入力変数) なし (出力変数) MT = マーク番号 S = マークサイズ(高さをワールド座標系で指定する) K = マークの論理色番号(GWCOLOR の項参照) KB = マークの背景色の論理色番号(GWCOLOR の項参照) MX = マークの混合モード( GWSETPEN の項参照) IRTN = リターン・コード
[F] SUBROUTINE GWSETXFRM(IRTN, XFRM)
INTEGER IRTN
REAL XFRM(6)
[C] int GWsetxfrm(float *XFRM);
(説明) 変換行列を設定する。変換行列はビットマップやマークの回転や変形に使用され, 変換前のワールド座標の点 (x, y) が x' = XFRM(1) + XFRM(2) * x + XFRM(3) * y y' = XFRM(4) + XFRM(5) * x + XFRM(6) * y により (x', y') に変換される。この機能は Windows 9x/Me では正常に動作しない。 (入力変数) XFRM = 変換行列の各成分 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETXFRM(IRTN, XFRM)
INTEGER IRTN
REAL XFRM(6)
[C] int GWgetxfrm(float *XFRM);
(説明) 現在の変換行列の成分を取得する。変換行列はビットマップやマークの回転や変形 に使用される(GWGETXFRM 参照)。 (入力変数) なし (出力変数) XFRM = 変換行列の各成分(GWGETXFRM 参照) IRTN = リターン・コード
[F] SUBROUTINE GWSETRGN(IRTN, X1, Y1, X2, Y2, M)
INTEGER IRTN, M
REAL X1, Y1, X2, Y2
[C] int GWsetrgn(float X1, float Y1, float X2, float Y2, int M);
(説明) 現在のクリッピング領域とワールド座標系の点1 (X1, Y1) と点2 (X2, Y2) を対角 とする四角形を M で指定されるモードで結合し,新たなクリッピング領域とする。 M < 0 または M > 4 で,X1 = X2 または Y1 = Y2 の場合には,クリッピングは解除 される。 (入力変数) X1 = 点1の X 座標(ワールド座標系) Y1 = 点1の Y 座標(ワールド座標系) X2 = 点2の X 座標(ワールド座標系) Y2 = 点2の Y 座標(ワールド座標系) M = 1: AND 2: OR 3: DIFF 4: XOR 他: COPY (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSETPXL(IRTN, X, Y, K)
INTEGER IRTN, K
REAL X, Y
[C] int GWsetpxl(float X, float Y, int K);
(説明) (X,Y) で指定された点のピクセルに論理色番号 (GWCOLOR 参照) を設定する。 (入力変数) X = 点の X 座標(ワールド座標系) Y = 点の Y 座標(ワールド座標系) K = 論理色番号 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETPXL(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWgetpxl(float X, float Y);
(説明) (X,Y) で指定された点の論理色番号 (GWCOLOR 参照) を取得する。 (入力変数) X = 点の X 座標(ワールド座標系) Y = 点の Y 座標(ワールド座標系) (出力変数) IRTN = 論理色番号 (成功した場合) = -1 (失敗の場合)
[F] SUBROUTINE GWCOLOR(IRTN, K, IDST)
INTEGER IRTN, K, IDST
[C] int GWcolor(int K, int IDST);
(説明) 論理色番号 K で指定された色を IDST に設定する。K = -1 の場合は「色の設定」ダ イアログボックスで選ばれた色が設定される。論理色番号とは,以下に定義されてい る各色に対応づけられた番号のこと。 [論理色番号]: 意味 0..19 : Windows 標準パレット 0 : 黒 1 : 栗色 2 : 暗い緑 3 : オリーブ 4 : 濃紺 5 : 紫 6 : 緑青 7 : 灰色 8 : 明るい緑 9 : 薄い水色 10 : 薄い灰色 11 : 青灰色 12 : 濃い灰色 13 : 赤 14 : 緑 15 : 黄 16 : 青 17 : 赤紫 18 : 水色 19 : 白 20..35 : 「色の設定」ダイアログボックスの「作成した色」(0..15) 0x02000000 ..0x02ffffff : 相対 COLORREF 値 -1 : 「色の設定」ダイアログボックスで選択された色 -2 : 現在の前景色 -3 : 現在の背景色 -4 : 現在のペンの色 -5 : 現在のブラシの色 -6 : 現在のマークの色 -7 : 現在のマークの背景色 -8 : 現在のテキストの色 -9 : 現在のテキストの背景色 -10 : 現在の記号の色 -11 : 現在の記号の背景色 -12 : 現在のピクセル色 -100 : 透明 (背景色用) その他 : 「色の設定」ダイアログボックスで選択された色 (入力変数) K = 論理色番号 IDST = 設定先 1: 前景色 2: 背景色 3: ペンの色 4: ブラシの色 5: マークの色 6: マークの背景色 7: テキストの色 8: テキストの背景色 9: 記号の色 10: 記号の背景色 11: ピクセル色 20..35: 「色の設定」ダイアログボックスの「作成した色」(0..15) その他: 設定しない (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETRGB(IRTN, K, IR, IG, IB)
INTEGER IRTN, K, IR, IG, IB
[C] int GWgetrgb(int K, int *IR, int *IG, int *IB);
(説明) 論理色番号 K を三原色 (IR,IG,IB) に変換する。 (入力変数) K = 論理色番号 (出力変数) IR = 色の RED 成分(0-255) IG = 色の GREEN 成分(0-255) IB = 色の BLUE 成分(0-255) IRTN = リターン・コード
[F] INTEGER FUNCTION KRGB(IR, IG, IB)
INTEGER IR, IG, IB
[C] int GWkrgb(int IR, int IG, int IB);
(説明) GWSETPEN や GWSETBRS など,論理色番号の指定が必要な場合に,三原色(IR,IG,IB) から明示的に色を合成したい場合に用いる。IR,IG,IB のすべてが 0 〜 255 の範囲 にある場合には対応する論理色番号を返し,それ以外の場合には「色の設定」ダイア ログボックス開くための番号を返す。論理色番号について詳しくは GWCOLOR の項参 照。 (入力変数) IR = 色の RED 成分(0-255) IG = 色の GREEN 成分(0-255) IB = 色の BLUE 成分(0-255) (出力変数) なし (返される値) 論理色番号( GWCOLOR 参照)
[F] INTEGER FUNCTION KCOLOR(IC)
INTEGER IC
[C] int GWkcolor(int IC);
(説明) COLORREF 値を論理色番号に変換するために使用する。COLORREF 値とは Windows で 使用されている,色の内部表現のこと。詳しくは,Windows 関係の資料参照。 (入力変数) IC = 色の COLORREF 値 (出力変数) なし (返される値) 論理色番号( GWCOLOR 参照)
[F] INTEGER FUNCTION IPALETTE(IP)
INTEGER IP
[C] int GWipalette(int IP);
(説明) GWSETPEN や GWSETBRS など,論理色番号の指定が必要な場合に,Windows パレット 番号を論理色番号に変換するために使用する。内部的には PALETTEINDEX マクロ [W] を call している.インデックス値が IP > 19 の Windows パレットが利用できるか どうかは使用しているディスプレイカードなどシステムに依存するので注意。 (入力変数) IP = 色のWindows パレット番号 (0..255) (出力変数) なし (返される値) 論理色番号( GWCOLOR 参照)
[F] SUBROUTINE GWNCOLOR(IRTN)
INTEGER IRTN
[C] int GWncolor(void);
(説明) 利用可能な色パレット数 = (最終パレット番号+1) を取得する。このバージョンで は利用可能な色パレット数は 36 で固定。パレット番号 0..19 は Windows の標準色 パレットで,設定値は変更できない(0 = 黒, 19 = 白)。パレット番号 20..35 は色 の設定」ダイアログボックスで変更可(GWCOLOR の項参照)。 (入力変数) なし (出力変数) IRTN = 36 = (最終パレット番号+1)
[F] SUBROUTINE GWSAVECC(IRTN, FN)
INTEGER IRTN
CHARACTER FN*(*)
[C] int GWsavecc(char *FN);
(説明) カスタムカラーをファイルに保存する。 (入力変数) FN = ファイル名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWLOADCC(IRTN, FN)
INTEGER IRTN
CHARACTER FN*(*)
[C] int GWloadcc(char *FN);
(説明) カスタムカラーをファイルから復元する。カスタムカラーが格納されているファイル の書式は,各行について COLORREF 値を 0x02XXXXXX の形で指定したもの 16 行から なる(XXXXXX は 16 進数 6 桁)。GWSAVECC で作成したものはそのまま読むことがで きる。 (入力変数) FN = ファイル名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSYSCLR(IRTN, IDX)
INTEGER IRTN, IDX
[C] int GWsysclr(int IDX);
(説明) IDX で指定された色情報 (CORORREF 値) を取得する。詳しくは Win32 API について の説明がある資料で, GetSysColor() の項目を参照してください。 (入力変数) IDX = 0: SCROLLBAR 1: BACKGROUND 2: ACTIVECAPTION 3: INACTIVECAPTION 4: MENU 5: WINDOW 6: WINDOWFRAME 7: MENUTEXT 8: WINDOWTEXT 9: CAPTIONTEXT 10: ACTIVEBORDER 11: INACTIVEBORDER 12: APPWORKSPACE 13: HIGHLIGHT 14: HIGHLIGHTTEXT 15: BTNFACE 16: BTNSHADOW 17: GRAYTEXT 18: BTNTEXT 19: INACTIVECAPTIONTEXT 20: BTNHIGHLIGHT (出力変数) IRTN = CORORREF 値 (Windows 関係の資料参照)
[F] SUBROUTINE GWCAPPNT(IRTN, X, Y, TEXT)
INTEGER IRTN
REAL X, Y
CHARACTER TEXT*(*)
[C] int GWcappnt(float *X, float *Y, char *TEXT);
(説明) マウスの左ボタンが押されるまで待ち,その点の座標と論理色番号 ( GWCOLOR 参照) を返す。 (入力変数) TEXT = ステータスバーに表示する文字列 (出力変数) IRTN = 論理色番号 (-1: 失敗の場合) X = マウスの左ボタンが押された点の X 座標(ワールド座標系) Y = マウスの左ボタンが押された点の Y 座標(ワールド座標系)
[F] SUBROUTINE GWCAPVEC(IRTN, X1, Y1, X2, Y2, TEXT)
INTEGER IRTN
REAL X1, Y1, X2, Y2
CHARACTER TEXT*(*)
[C] int GWcapvec(float X1, float Y1, float *X2, float *Y2, char *TEXT);
(説明) ベクトルの始点を与えて,マウスのボタンが押されるまで待ち,その点の座標を返 す。終点が確定するまで,始点と現在のマウスポインタを結ぶ線分が表示される。 (入力変数) TEXT = ステータスバーに表示する文字列 X1 = 始点の X 座標(ワールド座標系) Y1 = 始点の Y 座標(ワールド座標系) (出力変数) IRTN = 1: マウスの左ボタンが押された場合 = 2: マウスの右ボタンが押された場合 <= 0: その他 X2 = 終点の X 座標(ワールド座標系) Y2 = 終点の Y 座標(ワールド座標系) IRTN = リターン・コード
[F] SUBROUTINE GWCAPLIN(IRTN, X1, Y1, X2, Y2, TEXT)
INTEGER IRTN
REAL X1, Y1, X2, Y2
CHARACTER TEXT*(*)
[C] int GWcaplin(float *X1, float *Y1, float *X2, float *Y2, char *TEXT);
(説明) マウスがドラッグされるまで待ち,ドラッグ開始点と終了点の座標を返す。ドラッグ 中はドラッグ開始点と現在のマウスポインタを結ぶ線分が表示される。また,ドラッ グ中に右ボタンを押せばドラッグのやり直しができる。 (入力変数) TEXT = ステータスバーに表示する文字列 (出力変数) IRTN > 0: 正常終了 <= 0: キャンセル,他 X1 = ドラッグ開始点の X 座標(ワールド座標系) Y1 = ドラッグ開始点の Y 座標(ワールド座標系) X2 = ドラッグ終了点の X 座標(ワールド座標系) Y2 = ドラッグ終了点の Y 座標(ワールド座標系) IRTN = リターン・コード
[F] SUBROUTINE GWCAPRECT(IRTN, X1, Y1, X2, Y2, TEXT)
INTEGER IRTN
REAL X1, Y1, X2, Y2
CHARACTER TEXT*(*)
[C] int GWcaprect(float *X1, float *Y1, float *X2, float *Y2, char *TEXT);
(説明) マウスがドラッグされ,右ボタンが押されるまで待ち,ドラッグ開始点と終了点の 座標を返す。マウスをドラッグすると矩形領域が示されるが,右ボタンが押される までは確定しないので,矩形の隅をドラッグすることで選択領域を変更できる。 また,ドラッグ中に右ボタンを押せばドラッグのやり直しができる。 (入力変数) TEXT = ステータスバーに表示する文字列 (出力変数) IRTN != 0: 正常終了 = 0: キャンセル,他 X1 = ドラッグ開始点の X 座標(ワールド座標系) Y1 = ドラッグ開始点の Y 座標(ワールド座標系) X2 = ドラッグ終了点の X 座標(ワールド座標系) Y2 = ドラッグ終了点の Y 座標(ワールド座標系) IRTN = リターン・コード
[F] SUBROUTINE GWLOADBMP(IRTN, NB, FN)
INTEGER IRTN, NB
CHARACTER FN*(*)
[C] int GWloadbmp(int NB, char *FN);
(説明) ビットマップファイル(*.bmp)を読み込み,ビットマップ番号 NB に登録する。一旦 登録されたビットマップはビットマップ番号により何度でも利用することができる。 ビットマップの登録数に上限は設けていないないが,上限はメモリー等,システム・ リーソースの量に依存する。システム・リーソースを使い切ったときの動作につい てはほとんどチェックを行っていないので要注意。 (入力変数) NB = ビットマップ番号(1〜): 読み込んだビットマップを保存する配列の要素番号。 NB = 0 とすると未使用の配列要素が使われる。 FN = ビットマップファイル名(ビットマップファイルは実行ファイルと同じディレ クトリに置くか,フルパスで指定しなければならない) (出力変数) IRTN = 実際にビットマップを保存した配列要素番号。失敗したときは 0 を返す。
[F] SUBROUTINE GWSAVEBMP(IRTN, NB, FN)
INTEGER IRTN, NB
CHARACTER FN*(*)
[C] int GWsavebmp(int NB, char *FN);
(説明) 番号 NB のビットマップをファイルに保存する。 (入力変数) NB = ビットマップ番号 FN = ビットマップファイル名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWMAKEBMP(IRTN, NB, IW, IH, IBC, IBITS)
INTEGER IRTN, NB, IW, IH, IBITS(*)
[C] int GWmakebmp(int NB, int IW, int IH, int IBC, int *IBITS);
(説明) 配列 IBITS に格納されているビットマップ・データによりビットマップを作成し, ビットマップ番号NB に登録する。IBC に不正な値を設定した場合にはデフォルト値 が使用される. (入力変数) NB = ビットマップ番号(1〜): 作成したビットマップを保存する配列の要素番号。 NB = 0 とすると未使用の配列要素が使われる。 IW = ビットマップの幅(ピクセル) IH = ビットマップの高さ(ピクセル) IBC = ピクセルあたりの最大の色数(ビット長) = 1: モノクロ(1ビット) = 4: 16色(4ビット) = 8: 256色(8ビット:デフォルト) = 16: 2^16色(16ビット) = 24: 2^24色(24ビット) = 32: 2^32色(32ビット) IBITS = ビットマップ・データ ビットマップの左上を原点[0,0]として,位置[i,j]のピクセルの論理色番号を IBITS(i+IW*j+1) : [F} IBITS[i+IW*j] : [C] に設定する(i = 0 〜 IW-1,j = 0 〜 IH-1). (出力変数) IRTN = 実際にビットマップを保存した配列要素番号。失敗したときは 0 を返す。
[F] SUBROUTINE GWFNT2BMP(IRTN, NB, IW, IH, IU, IV, TEXT)
INTEGER IRTN, NB, IW, IH, IC, IU, IV
CHARACTER TEXT*(*)
[C] int GWfnt2bmp(int NB, int IW, int IH, int IU, int IV, char *TEXT);
(説明) 現在のフォントを使って文字列からモノクロ・ビットマップを作成する。作成された ビットマップはビットマップ番号NB に登録される。 (入力変数) NB = ビットマップ番号(1〜): 作成したビットマップを保存する配列の要素番号。 NB = 0 とすると未使用の配列要素が使われる。 IW = ビットマップの幅(ピクセル) IH = ビットマップの高さ(ピクセル) IU = 基準点のオフセットのu座標(ピクセル) IV = 基準点のオフセットのv座標(ピクセル) TEXT = 文字列 (出力変数) IRTN = 実際にビットマップを保存した配列要素番号。失敗したときは 0 を返す。
[F] SUBROUTINE GWSETBMP(IRTN, NB, W, H, MX, ITR, IOF)
INTEGER IRTN, NB, MX, ITR, IOF
REAL W, H
[C] int GWsetbmp(int NB, float W, float H, int MX, int ITR, int IOF);
(説明) NB で指定された登録済みビットマップの描画時の属性を設定する。メニューバー の [Edit] -> [Import Clipboard] で取り込んだビットマップは 0 番に登録され ている。W = H = 0 の場合は登録時のサイズが論理デバイス座標系で仮定される。 ビットマップ混合モード MX は現在のブラシ、転送元のビットマップ、転送先の ビットマップを組み合わせて出力操作の色を生成する方法を定義する。MX > 15 の 場合は MX - 16 の値を "ternary raster-operation code" として使用する。 ITR > 0 の場合には ITR で指定された色が透明になる。IOF では基準点をどこに 置くかを指定する。パラメタの値が負の場合は,対応する属性は変更されない。 (入力変数) NB = 使用するビットマップ番号。 W = 画面上のビットマップの幅(ワールド座標系)。 H = 画面上のビットマップの高さ(ワールド座標系)。 MX = 0 ... 15 : ビットマップ混合モード(以下参照)。 > 15 : (MX - 16) = "ternary raster-operation code[W]" ITR = 透明モードフラグ = 0: 不透明モード(ビットマップは矩形で表示される) = 1: 白を透明色とする(デフォルト) > 1: 透明色の論理色番号値 + 2 (例. 2 => 黒) IOF = 基準点の位置を指定する = 0: 中央 (デフォルト) = 1: 左下 = 2: 右下 = 3: 右上 = 4: 左上 = 5: 左 = 6: 下 = 7: 右 = 8: 上 (ビットマップ混合モード) 0: INVERTNOT = source XOR (NOT dest) 転送先ビットマップを反転し、その結果と転送元ビットマップを論理 XOR 演算子で結合します。 1: SRCCOPY = source 同上 2: SRCPAINT = source OR dest 転送先ビットマップのピクセルと転送元ビットマップを論理 OR 演算子で 結合します。 3: SRCAND = source AND dest 転送元のビットマップと転送先ビットマップのピクセルを論理 AND 演算子 で結合します。 4: SRCINVERT= source XOR dest 転送先ビットマップのピクセルと転送元ビットマップを論理 XOR 演算子で 結合します。 5: SRCERASE = source AND (NOT dest ) 転送先ビットマップを反転し、その結果と転送元ビットマップを論理 AND 演算子で結合します。 6: NOTSRCCOPY = (NOT source) 反転した転送元ビットマップを転送先ビットマップにコピーします。 7: NOTSRCERASE = (NOT src) AND (NOT dest) 転送元ビットマップと転送先ビットマップを論理 OR 演算子で結合した結 果を反転します。 8: MERGECOPY = (source AND pattern) パターン ビットマップと転送元ビットマップを論理 AND 演算子で結合し ます。 9: MERGEPAINT = (NOT source) OR dest 反転した転送元ビットマップと転送先ビットマップを論理 OR 演算子で結 合します。 10: PATCOPY = pattern パターン ビットマップを転送先ビットマップにコピーします。 11: PATPAINT = DPSnoo 反転した転送元ビットマップとパターン ビットマップを論理 OR 演算子で 結合します。さらに、この操作で得たものと転送先ビットマップを論理 OR 演算子で結合します。 12: PATINVERT = pattern XOR dest パターン ビットマップと転送先ビットマップを論理 XOR 演算子で結合しま す。 13: DSTINVERT = (NOT dest) 転送先のビットマップを反転します。 14: BLACKNESS = BLACK すべての出力を黒にします。 15: WHITENESS = WHITE すべての出力を白にします。 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETBMP(IRTN, NB, W, H, IW, IH, IB, MAXNB, FN)
INTEGER IRTN, NB, IW, IH, NC, MAXNB
CHARACTER FN*(*)
REAL W, H
[C] int GWgetbmp(int NB, float *W, float *H, int *IW, int *IH,
int *NC, int *MAXNB, char *FN, int l);
(説明) 登録済みビットマップの属性を取得する。 (入力変数) NB = 属性を取得したいビットマップ番号。0 はクリップボードをインポートした場 合([Edit] => [Import Clipboard])にビットマップが保存される番号。 l = char 変数 FN の長さ ([C]) (出力変数) W = ビットマップの幅をワールド座標に換算したもの。 H = ビットマップの高さをワールド座標に換算したもの。 IW = ビットマップの幅(ビット)。 IH = ビットマップの高さ(ビット)。 IB = ビットマップの各ピクセルを定義するビット数。失敗した場合は 0。 MAXNB = 登録済みビットマップ番号の最大値。 FN = ビットマップファイル名。 FN == NULL ([C]) または FN の長さが十分でない 場合は無視される。 IRTN = リターン・コード
[F] SUBROUTINE GWPUTBMP(IRTN, NB, X, Y, IBK)
INTEGER IRTN, NB, IBK
REAL X, Y
[C] int GWputbmp(int NB, float X, float Y, int IBK);
(説明) 指定された登録済みビットマップ NB を位置 (X, Y) に描画する。ビットマップの 属性は GWSETBMP で設定する。IBK は背景をどのように扱うかを指定する。 描画の前に背景を保存し,次の描画の前に保存されていた背景を復元,つまり, 描画されていたビットマップを消去すれば簡単なアニメーションを実現することが できる。IBK のデフォルト値は 1 で,描画のみを行う。 (入力変数) NB = 使用するビットマップ番号。 X = ビットマップ基準点の X 座標(ワールド座標系)。 Y = ビットマップ基準点の Y 座標(ワールド座標系)。 IBK = R*4 + S*2 + D*1 R = 1(0): 描画の前に背景の復元を行う(行わない) S = 1(0): 描画の前に背景の保存を行う(行わない) D = 1(0): 描画を行う(行わない) 例) IBK = 7: 復元(消去) > 保存 > 描画を行う IBK = 4: 復元(消去)のみを行う (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWCOPYBMP(IRTN, NB1, NB2)
INTEGER IRTN, NB1, NB2
[C] int GWcopybmp(int NB1, int NB2);
(説明) ビットマップ番号 NB1 (0 〜 MAXNB)に登録されているビットマップをビットマップ 番号 NB2 に再登録する。 (入力変数) NB1 = 登録元のビットマップ番号 NB2 = 登録先のビットマップ番号。NB = 0 とすると未使用の配列要素が使われる。 (出力変数) IRTN = 実際に登録されたビットマップ番号。
[F] SUBROUTINE GWDELBMP(IRTN, NM)
INTEGER IRTN, NM
[C] int GWdelbmp(int NM);
(説明) ビットマップ番号 NM (1 〜 MAXNM) のビットマップの登録を削除する。指定された ビットマップ番号が未使用の場合は何もしない。 (入力変数) NM = 削除するビットマップの番号 (出力変数) IRTN = 実際に削除されたビットマップの番号 (>0)。削除しなかった場合は 0。
[F] SUBROUTINE GWCAPIMG(IRTN, NB, X1, Y1, X2, Y2)
INTEGER IRTN, NB
REAL X1, Y1, X2, Y2
[C] int GWcapimg(int NB, float X1, float Y1, float X2, float Y2);
(説明) (X1,Y1)-(X2,Y2) で指定された矩形領域をビットマップとして,ビットマップ番号 NB に登録する。指定された矩形領域の面積が 0 の場合には,現在のウィンドウ全 体が仮定される。 (入力変数) NB = ビットマップ番号(1〜): 読み込んだビットマップを保存する配列の要素番号。 NB = 0 とすると未使用の配列要素が使われる。 X1 = 矩形の角の点の X 座標(ワールド座標系) Y1 = 矩形の角の点の Y 座標(ワールド座標系) X2 = 点(X1, Y1)と対角となる点の X 座標(ワールド座標系) Y2 = 点(X1, Y1)と対角となる点の Y 座標(ワールド座標系) (出力変数) IRTN = 実際にビットマップを保存した配列要素番号。失敗したときは 0 を返す。
[F] SUBROUTINE GWCLIPIMG(IRTN, X1, Y1, X2, Y2)
INTEGER IRTN
REAL X1, Y1, X2, Y2
[C] int GWclipimg(float X1, float Y1, float X2, float Y2);
(説明) (X1,Y1)-(X2,Y2) で指定された矩形領域をクリップボードへコピーする。クリップ ボードへコピーされた図形はビットマップ番号 0 にも保存される。指定された矩形 領域の面積が 0 の場合には,現在のウィンドウ全体が仮定される。 (入力変数) X1 = 矩形の角の点の X 座標(ワールド座標系) Y1 = 矩形の角の点の Y 座標(ワールド座標系) X2 = 点(X1, Y1)と対角となる点の X 座標(ワールド座標系) Y2 = 点(X1, Y1)と対角となる点の Y 座標(ワールド座標系) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWLOADCMB(IRTN, NM, FN)
INTEGER IRTN, NM
CHARACTER FN*(*)
[C] int GWloadcmb(int NM, char *FN);
(説明) コンボ・ファイルからコンボを読み込んで,コンボ番号 NM に登録する。コンボとは 一組の描画オブジェクトのことで,作成されたコンボは大きさを変えて画面に何度で も描画したり,ファイルに保存することができる。コンボ・ファイルはコンボを構成 する描画オブジェクトを拡張メタファイルと同じファイル形式で保存したもので,デ フォルトの拡張子には拡張メタファイルと同じ .emf が用いられる。一旦登録された コンボはそのコンボ番号を指定することにより何度でも利用することができる。コン ボの登録数に上限は設けていないないが,上限はメモリー等,システム・リーソース の量に依存する。システム・リーソースを使い切ったときの動作についてはほとんど チェックを行っていないので要注意。 (入力変数) NM = コンボ番号(1〜): 読み込んだコンボを保存する配列の要素番号。 NM = 0 とすると未使用の配列要素が使われる。 FN = コンボ・ファイル名(コンボ・ファイルは実行ファイルと同じディレクトリに置 くか,フルパスで指定しなければならない) (出力変数) IRTN = コンボが登録された配列要素の番号。失敗したときは 0 を返す。
[F] SUBROUTINE GWSAVECMB(IRTN, NM, FN)
INTEGER IRTN, NM
CHARACTER FN*(*)
[C] int GWsavecmb(int NM, char *FN);
(説明) 番号 NM のコンボをコンボ・ファイルに保存する。 (入力変数) NM = コンボ番号 FN = コンボ・ファイル名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWCMBMRK(IRTN, NM, MT, S, K, KB, MX)
INTEGER IRTN, NM, MT, K, KB, MX
REAL S
[C] int GWcmbmrk(int NM, int MT, float S, int K, int KB, int MX);
(説明) マーク番号 MT(0-6),大きさ S(ワールド座標系),マークの論理色番号 K,マークの 背景色の論理色番号 KB,混合モード MX で指定されたマーク (GWSETMRK の項参照) をコンボとしてコンボ番号 NM に登録する。マーク属性 (GWSETMRK の項参照) は変 化しない。MT, S, K, KB, MX に不正な値が指定された場合にはマークの現在値が使 われる.NM = 0 または,指定したコンボ番号 NM のコンボが使われているときには, 未使用の番号が使われる。 (入力変数) NM = 登録を希望するコンボ番号 MT = 0: 点 1: ■ 2: + 3: × 4: +と×を重ねあわせたもの 5: □ 6: ○ S = マークの高さ(ワールド座標系) >= 0.0 K = マークの論理色番号(GWCOLOR の項参照) -1 の場合はマークの現在値 KB = マークの背景色の論理色番号(GWCOLOR の項参照) -1 の場合はマークの現在値 MX = マークの混合モード(GWSETPEN の項参照) (出力変数) IRTN = 実際に登録されたコンボ番号。失敗したときは 0 を返す
[F] SUBROUTINE GWBEGINCMB(IRTN, NM, W, H)
INTEGER IRTN, NM
REAL W, H
[C] int GWbegincmb(int NM, float W, float H);
(説明) コンボの作成を開始し,コンボ番号 NM を予約する。コンボとは一組の描画オブ ジェクトのことで,作成されたコンボは大きさを変えて画面に何度でも描画したり, ファイルに保存することができる。予約したコンボは GWENDCMB で作成を終了する までは使用できない。GWBEGINCMB と GWENDCMB の呼び出しの間に実行された描画命 令がすべてコンボへ組み込まれ,その間画面には何も描画されない。 (入力変数) NM = コンボ番号(1〜): コンボを保存する配列の要素番号。 NM = 0 とすると未使用の配列要素が使われる。 W = コンボの幅( > 0: ワールド座標) H = コンボの高さ( > 0: ワールド座標) (出力変数) IRTN = 予約したコンボの配列要素番号。失敗したときは 0 を返す。
[F] SUBROUTINE GWENDCMB(IRTN)
INTEGER IRTN
[C] int GWendcmb(void);
(説明) コンボへの描画を終了し,コンボを使用可能にする。 (入力変数) なし (出力変数) IRTN = 作成したコンボの配列要素番号 (>0)。失敗したときは 0 を返す。
[F] SUBROUTINE GWPUTCMB(IRTN, NM, X, Y, W, H, IOF)
INTEGER IRTN, NM, IOF
REAL X, Y, W, H
[C] int GWputcmb(int NM, float X, float Y, float W, float H, int IOF);
(説明) 指定された登録済みコンボ NM を位置 (X, Y) に,幅 W,高さ H で描画す る。W = 0.0 または H = 0.0 の場合には作成時の大きさで描画される。IOF には (X, Y) で指定する基準点をどこに置くかを指定する。 (入力変数) NM = コンボ番号。 X = 基準点の X 座標(ワールド座標系)。 Y = 基準点の Y 座標(ワールド座標系)。 W = 画面上の幅(ワールド座標系)。 H = 画面上の高さ(ワールド座標系)。 IOF = 基準点の位置を指定する = 0: 中央 (デフォルト) = 1: 左下 = 2: 右下 = 3: 右上 = 4: 左上 = 5: 左 = 6: 下 = 7: 右 = 8: 上 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWGETCMB(IRTN, NM, W, H, W0, H0, MAXNM, FN)
INTEGER IRTN, NM, MAXNM
CHARACTER FN*(*)
REAL W, H, W0, H0
[C] int GWgetcmb(int NM, float *W, float *H, float *W0, float *H0,
int *MAXNM, char *FN, int l);
(説明) 登録済みコンボの属性を取得する。NM に未登録,あるいは不正なコンボ番号が指定 された場合には MAXNM だけに有効な値が返る。 (入力変数) NM = 属性を取得したいコンボの番号 (>0)。 l = char 変数 FN の長さ ([C]) (出力変数) W = 描画時のコンボの幅(ワールド座標)。 H = 描画時のコンボの高さ(ワールド座標)。 W0 = メタファイルとしての幅(mm)。 H0 = メタファイルとしての高さ(mm)。 MAXNM = 登録済みコンボ番号の最大値。 FN = メタファイル名。 FN == NULL ([C]) または FN の長さが十分でない場合は 無視される。 IRTN = リターン・コード
[F] SUBROUTINE GWCOPYCMB(IRTN, NM1, NM2)
INTEGER IRTN, NM1, NM2
[C] int GWcopycmb(int NM1, int NM2);
(説明) コンボ番号 NM1 (0 〜 MAXNM)に登録されているコンボをコンボ番号 NM2 に再登録 する。 (入力変数) NM1 = 登録元のコンボ番号 NM2 = 登録先のコンボ番号。NM = 0 とすると未使用の配列要素が使われる。 (出力変数) IRTN = 実際に登録されたコンボ番号。
[F] SUBROUTINE GWDELCMB(IRTN, NM)
INTEGER IRTN, NM
[C] int GWdelcmb(int NM);
(説明) コンボ番号 NM (0 〜 MAXNM) のコンボの登録を削除する。指定されたコンボ番号が 未使用の場合は何もしない。 (入力変数) NM = 削除するコンボの番号 (出力変数) IRTN = 実際に削除されたコンボの番号。
[F] SUBROUTINE GWINPUT(IRTN, TITLE, TXT)
INTEGER IRTN
CHARACTER TITLE*(*), TXT*(*)
[C] int GWinput(char *TITLE, char *TXT, int l);
(説明) キーボードから文字列を入力するためのダイアログを開く。 (入力変数) TITLE = タイトルバーに表示する文字列 l = 文字変数 TXT の長さ ([C]) (出力変数) IRTN = 文字列の長さ(バイト) TXT = 文字列(入力の終了はリターンキー)
[F] SUBROUTINE GWFILEDLG(IRTN, FN)
INTEGER IRTN
CHARACTER FN*(*)
[C] int GWfiledlg(char *FN, int l);
(説明) 「ファイル名の取得」ダイアログボックスを開いてファイル名を取得する。ダイア ログボックスで指定したファイル名(形式は処理系に依存する)の長さが文字(列) 変数 FN の長さを超える場合には失敗し,FN は変化しない。 (入力変数) FN = 初期値として用いるファイル名 l = 文字変数 FN の長さ ([C]) (出力変数) IRTN > 0: 取得したファイル名の長さ < 0: -(ダイアログボックスで指定したファイル名の長さ > l) = 0: 他の失敗 FN = 取得したファイル名 (成功した場合)
[F] SUBROUTINE GWLOAD(IRTN, IC, FN)
INTEGER IRTN
CHARACTER FN*(*)
[C] int GWload(int IC, char *FN);
(説明) 保存ファイル(*.gwd)を読み込み,描画する。ファイル名 FN で指定されたファイル が見つからない場合はファイル名取得のダイアログボックスを開く。パラメータ IC の値により動作が異なる。縮尺を調整しないときには,保存時の(デバイスに依存し た) 縮尺で現ウィンドウに追加書きされるので,保存時と異なる環境で読み込む場 合などには注意が必要。 (入力変数) IC = 0: 縮尺を調整しないで追加書きする。内部パラメタは復元しない。 = 1: 縮尺を調整して追加書きする(内部パラメタは復元しない) = 2: 縮尺を調整しないで追加書きし,内部パラメタを復元する 他: 縮尺を調整して追加書きし,内部パラメタを復元する FN = 保存ファイル名(ファイルは実行ファイルと同じディレクトリに置くか,フル パスで指定しなければならない) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSAVEAS(IRTN, MF, MV, IW, IH, FN)
INTEGER IRTN, MF, MV, IW, IH
CHARACTER FN*(*)
[C] int GWsaveas(int MF, int MV, int IW, int IH, char *FN);
(説明) 図形データを,入力パラメータ MF で指定したファイル形式でファイルに保存する。 ファイル名を指定する入力パラメータ FN の長さが 0 ( FN == NULL [C]) の場合に は,ファイル名取得のダイアログボックスを開く。MF に 0 または 負,あるいは他 の無効な値が設定された場合には,ファイル名の拡張子によりファイル形式が決定 される。ファイル名の拡張子からもファイル形式が決定できない場合には GrWin 固 有のファイル形式(GWD ファイル形式)が仮定され,必要ならば拡張子 '.gwd' が付 けられる。ビュー(表示)モードを指定する入力パラメータ MV と,保存ファイルの 幅と高さを与える入力パラメータ IW,IH の値により表示範囲やアスペクト比が変 化するので注意。整数型の入力パラメータの値が 0 の場合にはデフォルト値が使わ れる。IW または IH に負の値が設定された場合にはそれぞれの向きが反転する。こ のルーチンは保存モード(GWMODE 参照)が on の場合に正常に動作する。 (入力変数) MF = ファイル形式 (拡張子, 幅と高さの単位) = 1: GWD ファイル ('.gwd', なし) = 2: 拡張メタファイル ('.emf', 0.01 mm) = 3: ビットマップ ('.bmp', ピクセル) MV = ビューモード 1: ビットマップ 2: 等方的 3: フィット 4: 全体 5: 現在のビューポート IW = 幅 (単位は MF の項参照) IH = 高さ(単位は MF の項参照) FN = ファイル名 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWPRINT(IRTN, IW, MV)
INTEGER IRTN, IW, MV
[C] int GWprint(int IW, int MV);
(説明) IW で指定されたウィンドウを印刷する。IW = 0 の場合はカレント・ウィンドウを 印刷する。IW < 0 の場合にはアプリケーションが開いたすべてのウィンドウを印刷 する。MV には印刷時のビュー(表示)モードを指定する。IW < 0 の場合にはカレン ト・ウィンドウの現在のビュー(表示)モード(GWVWMOD 参照)が仮定される。この ルーチンは保存モード(GWMODE 参照)が on の場合に正常に動作する。 (入力変数) IW = 印刷するウィンドウのウィンドウ番号。 MV = ビューモード 1: ビットマップ 2: 等方的 3: フィット 4: 全体 5: 現在のウィンドウ全体 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSETOGN(IRTN, ISRC, IDST)
INTEGER IRTN, ISRC, IDST
[C] int GWsetogn(int ISRC, int IDST);
(オブジェクト・グループ番号について) オブジェクト・グループ番号 (OGN) とは各描画オブジェクト(図形要素)を分類する ために用意されたオブジェクトの属性の一つで,OGN が負のオブジェクトは描画が保 留され,内部バッファ(FB:フラッシュ・バッファ)に保存される。計算時間のかか る複雑な図形の構築時など描画を保留しておき,OGN の符号を正に変更することによ り描画の保留を一気に解除して,高速な描画を行うことができる。これをフラッシュ 描画と呼ぶ。また,保存モード(GWMODE 参照)がオンの場合には,オブジェクトは 描画後にメモリに保存(シリアライズ)され,OGN はこれら保存オブジェクトの選択 的な消去 (GWERASE 参照) などのためにも参照される。デフォルトの OGN は 1 に セットされている(OGN = 0 はシステムで使用される)。なお,保存モード(GWMODE 参照)がオフの場合には,描画後にオブジェクトは消去されるので,OGN は FB 内の 保存オブジェクトに対してだけ有効。|OGN| は 32767 以下でなければならない。 (説明) ISRC != 0 の場合には OGN が ISRC に等しい保存オブジェクトの OGN が IDST に変 更され,OGN の値が ISRC に等しい保存オブジェクトの数が IRTN に返される。この とき,OGN が正から負に変更されると対応するオブジェクトは保留状態に戻されて画 面から消える。反対に,負から正に変更されると保留状態が解除され,フラッシュ描 画が行われる。OGN を 0 に変更するとそれらはシステム設定用オブジェクトとして, 以後消去できなくなる。ISRC = 0,IDST != 0 の場合には,それ以降に描画されるオ ブジェクトの OGN が IDST で指定された値に設定され,現在のオブジェクトの総数 が IRTN に返される。ISRC = IDST = 0 の場合には OGN は変更されず,現在の OGN が IRTN に返される。 ISRC IDST : 動作 : 出力値 ------------+---------------------------+-------------------------- + ! 0 : 保護 : 保護されたオブジェクト数 + = + : 何もしない : 保存オブジェクト中で OGN が ISRC に 等しいものの総数 + ! + : 保存オブジェクトのOGN変更 : OGNが変更されたオブジェクト数 + = - : ISRCを隠す : 隠されたオブジェクト数 + ! - : ISRCをIDSTに変更後,隠す : 隠されたオブジェクト数 - ! 0 : フラッシュ描画後に保護 : 保護されたオブジェクト数 - = + : フラッシュ描画 : フラッシュ描画されたオブジェクト数 - ! + : フラッシュ描画後OGNを変更 : フラッシュ描画されたオブジェクト数 - = - : 何もしない : FB 中で OGN が -ISRC に等しいオブ ジェクトの数 - ! - : FB内でISRCをIDSTに結合する: 結合されたオブジェクト数 0 = 0 : 何もしない : 現在の OGN 0 ! +/- : 現在のOGNを変更する : 保存オブジェクト数 [ 記号 '=','!' は ISRC と IDST の絶対値が等しいかそうでないかを表す。] (入力変数) ISRC != 0: 既存オブジェクトの OGN (= ISRC) を IDST に変更する = 0: 以降の OGN を IDST (!= 0) とする IDST = セットする OGN (出力変数) IRTN = OGN の値が ISRC に等しい既存オブジェクトの数 (ISRC != 0 の場合) = 現在のオブジェクトの総数 (ISRC = 0, IDST != 0 の場合) = 現在の OGN (ISRC = IDST = 0 の場合) < 0 失敗の場合
[F] SUBROUTINE GWANCHOR(IRTN, N)
INTEGER IRTN, N
[C] int GWanchor(int N);
(説明) アンカーの設定と除去を行う。アンカーとはオブジェクト・グループ番号 (OGN) が 0 の何もしないオブジェクトであり,主に,GWFLUSH や GWERASE と組み合わせて, それまでに描画したオブジェクトの保護に用いる。デフォルトでは,保護されたオブ ジェクトは背景として高速再描画に使用される。各アンカーはオブジェクトの先頭か ら何番目のアンカーかによるアンカー番号で識別される。保存モード(GWMODE 参照) が off の場合,アンカーはオブジェクトとしての意味を失い,背景の保存のためだけ に使われる。 (入力変数) N > 0: オブジェクトの最後尾にアンカーを加える。N の値が現在のアンカー数に等 しい場合には,直前のアンカーが取り除かれて,アンカー数は変化しない。 < 0: オブジェクトの最後尾から |N| 個のアンカーを取り除く。 = 0: すべてのアンカーを取り除く。 (出力変数) IRTN > 0: 現在のアンカー数 == 0: アンカーの追加に失敗 < 0: -(取り除くことのできなかったアンカー数)
[F] SUBROUTINE GWSETBK(IRTN, N)
INTEGER IRTN, N
[C] int GWsetbk(int N);
(説明) アンカー番号 N ( > 0 ) のアンカーを背景アンカーに設定する。N = 0 の場合には 背景モードを解除する (アンカーは削除されない)。N < 0 を指定した場合には, 現在の背景アンカー番号やアンカー数の問い合わせを行う。 (入力変数) N > 0: アンカー番号 N のアンカーを背景アンカーに設定する。指定した番号の アンカーが存在しない場合には何もしない。 = 0: 背景を使用しない = -1: 背景アンカー番号の問い合わせ < -1: アンカー数の問い合わせ (出力変数) IRTN >= 0: 現在の背景のアンカー番号 (N >= -1) またはアンカーの総数 (N < -1) < 0: エラー
[F] SUBROUTINE GWERASE(IRTN, N, LRF)
INTEGER IRTN, N, LRF
[C] int GWerase(int N, int LRF);
(説明) N > 0 の場合には,オブジェクト・グループ番号 (GWSETOGN 参照) の絶対値が N に 等しいすべてのオブジェクト(図形要素)をメモリーから消去する。N = 0 の場合はカ レント・ウィンドウ内のすべてのオブジェクトを消去,また,N < 0 の場合には最後 の abs(N) 個以下のオブジェクトが消去される。LRF が 0 でない場合には,消去さ れたオブジェクトに対応する図形が画面上からも直ちに消去されるが,LRF = 0 の場 合には呼び出し後も画面は変化せず,再描画の際に結果が反映される。なお,消去は 最後のオブジェクトから順に行われ,OGN が 0 のオブジェクトに達した場合にはそ こで終了する。このルーチンは保存モード(GWMODE 参照)が on の場合に正常に動 作する。 (入力変数) N > 0: 消去するオブジェクトの OGN の絶対値 = 0: カレント・ウィンドウの消去 < 0: 最後の abs(N) 個のオブジェクトの消去 LRF = 再描画フラグ(0 のとき再描画を行わない) (出力変数) IRTN = 実際に消去されたオブジェクトの総数
[F] SUBROUTINE GWFLUSH(IRTN, N)
INTEGER IRTN, N
[C] int GWflush(int N);
(説明) N > 0 の場合は,OGN (GWSETOGN 参照) が -N に等しいすべてのオブジェクト(図形 要素) の OGN の符号を正に変更してフラッシュ描画を行う。N < 0 の場合には OGN の絶対値が N に等しいオブジェクトの OGN の符号をすべて反転し,OGN が負に なったオブジェクトを取り除く。これにより,絶対値が同じで符号が異なるオブジェ クトの表示の切り替えが行われる。N = 0 の場合はオブジェクト・グループ番号 が負のオブジェクトの符号を反転し,フラッシュ描画を行う。IRTN には描画された オブジェクトの総数を返す。このルーチンを使用する場合は保存モード(GWMODE 参 照)が on にセットされていなければならない。 (入力変数) N > 0: OGN = -N のオブジェクトをフラッシュ描画 < 0: 消去(OGN = -N)+フラッシュ描画(OGN = N) = 0: 描画を保留していたすべてのオブジェクトのフラッシュ描画 (出力変数) IRTN = 描画されたオブジェクトの総数
[F] SUBROUTINE GWREFRESH(IRTN)
INTEGER IRTN
[C] int GWrefresh(void);
(説明) カレント・ウィンドウを再描画する。メニューバー の [ビュー] -> [再描画] と 同じ。このルーチンは保存モード(GWMODE 参照)が on の場合に正常に動作する。 (入力変数) なし (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWVWMOD(IRTN, M)
INTEGER IRTN, M
[C] int GWvwmod(int M);
(説明) カレント・ウィンドウのビュー(表示)モードの設定/問い合わせを行う。 ウィンドウ が開いていない場合にはデフォルトのビューモードの設定/問い合わせを行う。デ フォルトのビューモードはウィンドウのオープン時(GWopen 参照)に参照される。 (入力変数) M = 1: ビットマップ 2: 等方的 3: フィット 4: 全体 5: 拡大(現在のビューポートへ:設定時) 他: 問い合わせ (出力変数) IRTN = カレント・ウィンドウのビュー(表示)モード(入力変数の項目参照, 0: 失敗)
[F] SUBROUTINE GWMODE(IRTN, MD, M)
INTEGER IRTN, MD, M
[C] int GWmode(int MD, int M);
(説明) 各種モード(以下参照)の設定/解除/問い合わせを行う。モードの種別と設定モード を MD と M で指定する. 1. 保存: 保存モードが on の場合には図形オブジェクトは描画後にメモリに保存 (シリアライズ)され,再描画やファイルへの保存,印刷時等に再利用される。 保存モードが off の場合,図形オブジェクトは描画後に削除される。保存モード の解除によりメモリー使用量が抑制されるが,そのときに描画されたオブジェク トのファイルへの保存や印刷は制限されるので注意。デフォルトでは on。 2. バッファリング: バッファリングを行うと,現在の画面と同じ分解能の「用紙」 が内部的にビットマップとして用意され,画面への再描画が高速化される。画面 の縮尺によっては大量のメモリーを消費する。デフォールトでは on 。 3. ステータス・バーの表示: ステータス・バーとはメイン(フレーム)・ウィンドウ 最下部のバーのことで,各種状態が表示される。描画を高速に行いたい場合はス テータス・バーを表示表示しないほうがよい。デフォルトでは on。 4. 確認: さまざまな場面で,警告や注意を促すダイアログボックスを表示する。 デフォルトでは off。 5. ランドスケープ: 印刷時に用紙を横置き(ランドスケープ)に設定する。 デフォルトでは on。 6. ウィンドウを開いたまま終了: GWQUIT の呼び出したとき,ウィンドウを開いた まま終了する。デフォルトでは off。 7. ビットマップの埋め込み: gwd ファイルにビットマップを埋め込む。このモードを off にすればビットマップ・ファイルを取り出すことができる。デフォルトでは on。 (入力変数) MD = 1 : 保存 2 : バッファリング 3 : ステータスバーの表示 4 : 確認 5 : ランドスケープ 6 : ウィンドウを開いたまま終了 7 : ビットマップの埋め込み 他 : 無効 M = 0 : 解除 (off) する > 0 : 設定 (on) する < 0 : 問い合わせのみ (出力変数) IRTN = 0 : 解除 (off) されている 1 : 設定 (on) されている -1 : エラー
[F] SUBROUTINE GWKYBRD(IRTN, ICH, NCNT, IFLG, M)
INTEGER IRTN, ICH, NCNT, IFLG, M
[C] int GWkybrd(int *ICH, int *NCNT, int *IFLG, int M);
(説明) アクティブなウィンドウでのキーボード情報を取得する。呼出時の M の値により動 作が異なる(以下参照)。変化がなかった(IRTN = 0)とき,ICH, NCNT, IFLG の各引数 の値は変化しない。 (入力変数) M = 0 キーボード情報を取得して直ちに制御を戻す 1 非システムキー(文字キーなど)が押され,そのコードの ASCII コードへの 変換が終了するまで待つ. 2 どれかキーが押されるまで待つ 3 どれかキーが放されるまで待つ その他 キーが押されているときはそのキーが放されるまで待ち,呼び出されたとき のキーボード情報返す.キーが押されていなかったときは直ちに制御を戻す (出力変数) IRTN = キーが押されていればそのキーの仮想コード(押されていないとき 0) ICH = 最後に押された非システムキー(文字キーなど)の文字コード NCNT = キーを押し続けたときのキー操作の回数 IFLG = フラグ。意味のあるビットは以下の通り: 0-7 スキャン コード (OEM 依存の値) 8 ファンクション キーや数字キーパッド上のキーなど,拡張キーの場 合は 1 11-12 Windows 内部で使用 13 Alt キーを押した状態でほかのキーを押した場合は 1,それ以外は 0 14 直前にキーが押されていた場合は 1,離されていた場合は 0 15 変換状態 (キーを離している場合は 1,押されている場合は 0)
[F] SUBROUTINE GWMOUSE(IRTN, IRB, X, Y)
INTEGER IRTN, IRB
REAL X, Y
[C] int GWmouse(int *IRB, float *X, float *Y);
(説明) カレント・ウィンドウでのマウス情報を取得する。 (入力変数) なし (出力変数) IRTN = 左ボタンの状態 (押されていないとき 0) IRB = 右ボタンの状態 (押されていないとき 0) X = マウス・ポインタの X 座標(ワールド座標系) Y = マウス・ポインタの Y 座標(ワールド座標系)
[F] SUBROUTINE GWTIMER(IRTN, MS, N)
INTEGER IRTN, MS, N
[C] int GWtimer(int MS, int N);
(説明) N != 0 の場合はインターバルタイマーを起動する。N == 0 の場合にはインターバル タイマーを停止する。インターバルタイマーを起動すると一定の時間間隔 MS (ミリ 秒単位) でタイマー・イベントが発生する。タイマー・イベントが発生したかどうか は GWEVENT で取得する。N > 0 の場合には N 回のタイマー・イベントを発生した 後,タイマーは停止する。 (入力変数) MS = タイマー・イベントを発生する時間間隔(ミリ秒単位) N > 0: インターバルタイマーを起動し,タイマー・イベントを N 回発生する < 0: インターバルタイマーの起動 == 0: インターバルタイマーの停止 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWEVENT(IRTN, X, Y)
INTEGER IRTN
REAL X, Y
[C] int GWevent(float *X, float *Y);
(説明) カレント・ウィンドウのイベント状態を取得する。イベント状態は,インターバルタ イマーの設定時間が経過したり,キーボードのボタンやマウスボタンが押されると, その時点のマウスカーソルの位置とともにセットされ,本ルーチンの呼び出しがある まで保持される。本ルーチンの呼び出し後,イベント状態はリセットされる。 (入力変数) なし (出力変数) IRTN: イベント種別 > 0: 押されたキーの仮想コード = -1: マウスの左ボタンが押された = -2: マウスの右ボタンが押された = -3: タイマー・イベントが発生した(GWTIMER 参照) X = マウス・ポインタの X 座標(ワールド座標系) Y = マウス・ポインタの Y 座標(ワールド座標系)
[F] SUBROUTINE GWIDLE(IRTN, ICH, X, Y, MSEC)
INTEGER IRTN, ICH, MSEC
REAL X, Y
[C] int GWidle(int *ICH, float *X, float *y, int MSEC);
(説明) キーボードから文字が入力されるかマウスボタンが押されるまで,あるいは指定した 時間が経過するまでアイドリング状態にする。アイドリング中はアプリケーションに 制御が戻らないので,その間,アプリケーションは停止する。マウスによる座標入力 やキーボード入力を待つ場合,あるいは,アプリケーションの実行を中断して印刷や 画面モードの変更など,メニュー操作を行う場合に利用できる。IRTN にはアイドリン グ状態の経過時間が返る。アイドリング状態ではカーソルキーでマウスポインタを移 動することができる。 (入力変数) MSEC = アイドリング時間の上限(ミリ秒単位)。0 または負の値を指定すると 5 分 に設定される。 (出力変数) IRTN = アイドリング経過時間(ミリ秒単位) ICH > 0: 押されたキーの文字コード(ASCII) = 0: アイドリング時間の上限に達した場合 -1: マウスの左ボタンが押された場合 -2: マウスの右ボタンが押された場合 X = マウス・ポインタの X 座標(ワールド座標系) Y = マウス・ポインタの Y 座標(ワールド座標系)
[F] SUBROUTINE GWIDLE2(IRTN, ICH, X, Y, MSEC)
INTEGER IRTN, ICH, MSEC
REAL X, Y
[C] int GWidle2(int *ICH, float *X, float *y, int MSEC);
(説明) 入力パラメータ MSEC により,アイドリング時間の上限を内部時計による時刻 (GWSLEEP2 参照) で指定する点と,IRTN に返る値が経過時間ではなく,リーターン 時の内部時計の時刻である点を除いて GWIDLE と同じ。内部時計の初期化は GWSLEEP2 で行うことができる。
[F] SUBROUTINE GWSLEEP(IRTN, MS)
INTEGER IRTN, MS
[C] int GWsleep(int MS);
(説明) ミリ (1/1000) 秒単位で実行を停止する。 (入力変数) MS = 実行を停止する時間(ミリ秒単位) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSLEEP2(IRTN, MS)
INTEGER IRTN, MS
[C] int GWsleep2(int MS);
(説明) 指定した時刻に達するまで実行を停止する。時刻 ( > 0, ミリ秒単位) の計測は各 ウィンドウごとに用意された内部時計によって行われる。入力変数 MS に 0 または 負の数値を指定した場合には,内部時計の時刻が |MS| に初期化され,直ちに制御 が戻される (実行を停止しない)。また,MS に現在の内部時計の時刻より前の時刻 ( > 0) が指定された場合にも直ちに制御が戻される。内部時計はウィンドウのオー プン時に 0 に初期化される。内部時計の時刻は GWCTIME で取得できる。 (入力変数) MS > 0: 実行再開の予定時刻 (ミリ秒単位) <= 0: 内部時計を |MS| の値に初期化する (出力変数) IRTN = 呼び出し時の内部時計の時刻 (ミリ秒単位)
[F] SUBROUTINE GWCTIME(IRTN)
INTEGER IRTN
[C] int GWctime(void);
(説明) ウィンドウごとに用意された内部時計の現在時刻 (ミリ秒単位) を取得する。 (入力変数) なし (出力変数) IRTN = 現在時刻 (ミリ秒単位)
[F] SUBROUTINE GWPAUSE(IRTN, TXT)
INTEGER IRTN
CHARACTER TXT*(*)
[C] int GWpause(char *TXT);
(説明) メッセージボックスを表示し,ボタンが押されるまで待つ。 (入力変数) TXT = メッセージの文字列 (出力変数) IRTN = リターン・コード
[F] SUBROUTINE GWSIZE(IRTN, N, IW, IH)
INTEGER IRTN, N, IX, IY
[C] int GWsize(int N, int *IW, int *IH);
(説明) 各種サイズや位置の取得/設定を行う。ただし,N > 0 の場合は取得,N < 0 の場 合は設定を行う。ただし,*印のついた項目は変更できない。フレーム・サイズの 設定時に IW = IH = 0 を指定すると現在のウィンドウにフレームをフィットさせ る。各位置は指定したウィンドウの左上隅の,対応する親ウィンドウの左上隅から 測った相対座標。画面サイズのみは,GWOPEN(X) や GWINIT(X) の呼び出しによる 本ライブラリの初期化前にも取得できる。 (入力変数) |N| = 1: 「用紙」サイズ (ピクセル) *2: 画面サイズ (ピクセル) 3: フレーム(枠)・サイズ (ピクセル) 4: フレーム(枠)位置 (ピクセル) / 画面内 5: ウィンドウ(ビュー)・サイズ (ピクセル) 6: ウィンドウ(ビュー)位置 (ピクセル) / フレーム内 7: ビューポート・サイズ (ピクセル) 8: ビューポート位置 (ピクセル) / ビュー内 9: デフォルトの「用紙」サイズ (ピクセル) 10: 印刷時などに仮定される解像度 (DPI) 11: 印刷時のマージン (0.1 mm 単位) *12: プリンタの用紙サイズ (0.1 mm 単位) *13: プリンタの解像度 (DPI) > 13: 未定義 (入力変数: N < 0 の場合) IW = 幅 IH = 高さ (出力変数: N > 0 の場合) IW = 幅 IH = 高さ IRTN = リターン・コード
[F] REAL FUNCTION GWASPECT(N)
[C] float GWaspect(int N);
(説明) 各種アスペクト比を取得する。例えば, [ビットマップ] または [等方的]のビュー・ モードで真円を描くには,仮に, AR = GWASPECT(-1) とすると,縦横比(ワールド座 標系)が 1:AR の楕円を描けば良い。 (入力変数) N = アスペクト比の種類 (出力変数) なし (返される値) N = 1: 設定されている「用紙」サイズのアスペクト比 2: ウィンドウ・サイズのアスペクト比 3: フレーム(枠)・サイズのアスペクト比 4: 画面サイズのアスペクト比 5: プリンタの解像度(DPI)のアスペクト比 6: プリンタの用紙サイズのアスペクト比 7: 現在のビューポート・サイズ(ピクセル値)のアスペクト比 その他: 真円(や正方形)を描くためのアスペクト比 または,エラー・コード ( <= 0 )
[F] REAL FUNCTION GWFMAX()
[C] float GWfmax(void);
(説明) 浮動小数点数の最大値を返す。 (入力変数) なし (出力変数) なし (返される値) 浮動小数点数の最大値
[F] SUBROUTINE GWVERSION(IRTN,IS,STR)
INTEGER IRTN, IS
CHARACTER STR*(*)
[C] int GWversion(int IS, char *STR, int l);
(説明) ライブラリ・ファイルに埋め込まれているバージョン番号などの文字列を取得する。 このルーチンは本ライブラリの初期化前にも呼び出し可. (入力変数) IS = 文字列の種別 0: 取得可能な文字列の個数を文字列で STR に返す. 1: カンマ(',')で区切られたバージョン番号.それぞれ数値が大きいほど, バージョン新しいことを表す. 2: 適合する grwnd.exe のバージョン番号 3: 作成日時 4: 著作権表示 5: ビルド番号 l = 文字(列)変数 STR の長さ (出力変数) IRTN > 取得可能な文字列の個数(現在の版では 5 ) = 0: 無効な番号が指定されたとき = - (取得しようとした文字列の長さ) < 0: 失敗のとき STR = 取得文字列
[F] INTEGER FUNCTION KBHIT()
[C] int kbhit(void);
(説明) コンソール画面で押されているキーのコードを返す。何も押されていなければ 0 を 返す。gwkybrd 参照。 (入力変数) なし (出力変数) なし (戻り値) キー・コード(キーが押されていなければ 0)
[F] INTEGER FUNCTION KBGETCH(N)
INTEGER N
[C] int kbgetch(int N);
(説明) コンソール上で1バイトのキー・コードを取得する。キーが押されていなければ押さ れるまで待つ。 内部的には C の getch() または getche() を呼び出している。 (入力変数) N = 0: エコーしない <> 0: エコーする (出力変数) なし (戻り値) 取得したキー・コード
[F] SUBROUTINE GWTSPAWN(IRTN, IT, IS, M)
INTEGER IRTN, IT, IS, M
[C] int GWTspawn(int IT, int IS, int M);
(説明) タートル・グラフィクスのためのタートル(亀)を生成する。タートルが動くとその軌 跡が描画される。描画オブジェクトとしては,ペン,マーク,記号,ビットマップ, コンボの何れかを使用できる。タートルは何匹でも生成することができ,各タートル はその番号 (IT),描画オブジェクトの種別 (IS),および,現在の位置と進行方向を 属性として持つ。IT > 0 の場合には,指定された番号 IT のタートルを生成する。 すでに指定された番号のタートルが存在する場合には何もしない。IT = 0 の場合は 使われていないタートル番号を使用する。描画オブジェクトの種別は入力変数 IS で 指定する。入力変数 M の意味は IS により異なる。描画オブジェクトがペン,マー ク,記号の何れかの場合には,デフォルトでその論理色番号が,'(タートル番号) mod 18 + 1'に設定される。生成に成功した場合,IRTN には実際に生成したタートル の番号を返し,現在のタートル番号に実際に生成したタートルの番号を設定する。 IS < 0 の場合は描画オブジェクトとして現在のペン (GWSETPEN 参照) が設定され る。生成直後には,現在の位置として現在のペン位置 (GWLINE2 参照) が設定され, 進行方向は右向きに設定される。 (入力変数) IT = タートル番号 IS = 描画オブジェクトの種別 (M の意味) = 1: ペン (ペンの論理色番号) = 2: マーク (マークの論理色番号) = 3:* 記号 (記号の論理色番号) = 4:* ビットマップ (ビットマップ番号) = 5:* コンボ (コンボ番号) (注:* は未サポート) (出力変数) IRTN = 実際に生成したタートルの番号 ( > 0 ), 失敗のときは 0
[F] SUBROUTINE GWTTURN(IRTN, IT, DA)
INTEGER IRTN, IT
REAL DA
[F] SUBROUTINE GWDTTURN(IRTN, IT, DA)
INTEGER IRTN, IT
REAL*8 DA
[C] int GWTturn(int IT, float DA);
[C] int GWDTturn(int IT, double DA);
(説明) タートル番号 IT > 0 のタートルの現在の進行方向を DA だけ変化させる。 (入力変数) IT = タートル番号 ( > 0 ) DA = タートルの向きの変化 (x 軸から反時計回りに測った角度(°)/360) (出力変数) IRTN > 0: 属性が変更された場合 ( タートル番号 ) = 0: 失敗,または属性が変更されなかった場合
[F] SUBROUTINE GWTFORWARD(IRTN, IT, D)
INTEGER IRTN, IT
REAL D
[F] SUBROUTINE GWDTFORWARD(IRTN, IT, D)
INTEGER IRTN, IT
REAL*8 D
[C] int GWTforward(int IT, float D);
[C] int GWDTforward(int IT, double D);
(説明) タートル番号 |IT| のタートルを現在位置から現在の進行方向へ距離 |D|(ワールド 座標系)移動し,IT > 0 の場合は直線を描画する。D < 0 の場合には現在の進行方 向と逆向に進む。現在位置を (x, y),進行方向を A (角度/360) としたとき,終点 の座標は (x + D*cos(2*pi*A), y + D*sin(2*pi*A)) で算出される ( pi は円周率 )。したがって,ワールド座標系 ( GWINDOW 参照 ) が 等方的に設定されていない場合には,画面上の進行方向の角度が A で指定したものと 異なってしまうので要注意。 (入力変数) |IT| = タートル番号 |D| = タートルの移動距離 ( ワールド座標系 ) (出力変数) IRTN > 0: 成功 ( タートル番号 ) = 0: 失敗
[F] SUBROUTINE GWTSHIFT(IRTN, IT, DX, DY)
INTEGER IRTN, IT
REAL DX, DY
[F] SUBROUTINE GWDTSHIFT(IRTN, IT, DX, DY)
INTEGER IRTN, IT
REAL*8 DX, DY
[C] int GWTshift(int IT, float DX, float DY);
[C] int GWDTshift(int IT, double DX, double DY);
(説明) タートル番号 |IT| のタートルを現在位置から x 方向に DX,y 方向に DY 移動 (変位)し,IT > 0 の場合は直線を描画する。 (入力変数) |IT| = タートル番号 DX = 変位の X 成分(ワールド座標系) DY = 変位の Y 成分(ワールド座標系) (出力変数) IRTN > 0: 成功 ( タートル番号 ) = 0: 失敗
[F] SUBROUTINE GWTMOVE2(IRTN, IT, X, Y)
INTEGER IRTN, IT
REAL X, Y
[F] SUBROUTINE GWDTMOVE2(IRTN, IT, X, Y)
INTEGER IRTN, IT
REAL*8 X, Y
[C] int GWTmove2(int IT, float X, float Y);
[C] int GWDTmove2(int IT, double X, double Y);
(説明) タートル番号 |IT| のタートルを現在位置から点 (X, Y) へ移動し,IT > 0 の場合 は直線を描画する。 (入力変数) |IT| = タートル番号 X = 終点の X 座標(ワールド座標系) Y = 終点の Y 座標(ワールド座標系) (出力変数) IRTN > 0: 成功 ( タートル番号 ) = 0: 失敗
[F] SUBROUTINE GWTCLONE(IRTN, IT1, IT2)
INTEGER IRTN, IT1, IT2
[C] int GWTclone(int IT1, int IT2);
(説明) タートル番号 IT1 > 0 のタートルをタートル番号 IT2 にコピーする(複製を作る)。 番号 IT1 のタートルが存在しないか,番号 IT2 のタートルが既に存在する場合には 失敗し,何もしない。IT2 = 0 を指定した場合には空いているタートル番号を使う。 成功した場合には,現在のタートル番号をコピー先のタートル番号に設定する。 (入力変数) IT1 = コピー元のタートル番号 ( > 0 ) IT2 = コピー先のタートル番号 ( >= 0 ) (出力変数) IRTN = 生成されたタートルの番号 ( > 0 ), 失敗のときは 0
[F] SUBROUTINE GWTREMOVE(IRTN, IT)
INTEGER IRTN, IT
[C] int GWTremove(int IT);
(説明) タートル番号 IT > 0 のタートルを取り除く。指定された番号のタートルが存在しな い場合には何もしない。 (入力変数) IT = タートル番号 (出力変数) IRTN = 取り除いたタートルの番号 ( > 0 ), 失敗のときは 0
[F] SUBROUTINE GWTSETPOS(IRTN, IT, X, Y)
INTEGER IRTN, IT
REAL X, Y
[F] SUBROUTINE GWDTSETPOS(IRTN, IT, X, Y)
INTEGER IRTN, IT
REAL*8 X, Y
[C] int GWTsetpos(int IT, float X, float Y);
[C] int GWDTsetpos(int IT, double X, double Y);
(説明) タートル番号 IT > 0 のタートルの位置を設定する。このとき描画は行われない。 (入力変数) IT = タートル番号 ( > 0 ) X = タートル位置の X 座標(ワールド座標系) Y = タートル位置の Y 座標(ワールド座標系) (出力変数) IRTN > 0: 成功( タートル番号 ) = 0: 失敗
[F] SUBROUTINE GWTGETPOS(IRTN, IT, X, Y)
INTEGER IRTN, IT
REAL X, Y
[F] SUBROUTINE GWDTGETPOS(IRTN, IT, X, Y)
INTEGER IRTN, IT
REAL*8 X, Y
[C] int GWTgetpos(int IT, float *X, float *Y);
[C] int GWDTgetpos(int IT, double *X, double *Y);
(説明) タートル番号 IT > 0 のタートルの現在の位置をワールド座標系で返す。 (入力変数) IT = タートル番号 ( > 0 ) (出力変数) X = タートル位置の X 座標(ワールド座標系) Y = タートル位置の Y 座標(ワールド座標系) IRTN > 0: 成功( タートル番号 ) = 0: 失敗
[F] SUBROUTINE GWTSETDIR(IRTN, IT, A)
INTEGER IRTN, IT
REAL A
[F] SUBROUTINE GWDTSETDIR(IRTN, IT, A)
INTEGER IRTN, IT
REAL*8 A
[C] int GWTsetdir(int IT, float A);
[C] int GWDTsetdir(int IT, double A);
(説明) タートル番号 IT > 0 のタートルの進行方向を設定する。 (入力変数) IT = タートル番号 ( > 0 ) A = タートルの進行方向 (x 軸から反時計回りに測った角/360) |A| >= 1.0 の場合は現在の値を使う (出力変数) IRTN > 0: 属性が変更された場合 ( タートル番号 ) = 0: 失敗,または属性が変更されなかった場合
[F] SUBROUTINE GWTGETDIR(IRTN, IT, A)
INTEGER IRTN, IT
REAL A
[F] SUBROUTINE GWDTGETDIR(IRTN, IT, A)
INTEGER IRTN, IT
REAL*8 A
[C] int GWTgetdir(int IT, float *A);
[C] int GWDTgetdir(int IT, double *A);
(説明) タートル番号 IT > 0 のタートルの現在の進行方向を取得する。 (入力変数) IT = タートル番号 ( > 0 ) (出力変数) A = タートルの向き (x 軸から反時計回りに測った角/360) IRTN > 0: 属性が変更された場合 ( タートル番号 ) = 0: 失敗,または属性が変更されなかった場合
[F] SUBROUTINE GWTSETCOL(IRTN, IT, IPC)
INTEGER IRTN, IT, IPC
[C] int GWTsetcol(int IT, int IPC);
(説明) タートル番号 IT > 0 のタートルの色を設定する。 (入力変数) IT = タートル番号 ( > 0 ) IPC = 論理色番号 (GWCOLOR 参照) (出力変数) IRTN > 0: 属性が変更された場合 ( タートル番号 ) = 0: 失敗,または属性が変更されなかった場合
[F] SUBROUTINE GWTGETCOL(IPC, IT)
INTEGER IPC, IT
[C] int GWTgetcol(int IT);
(説明) タートル番号 IT > 0 のタートルの色を取得する。 (入力変数) IT = タートル番号 ( > 0 ) (出力変数) IPC <> -1: 論理色番号 (GWCOLOR 参照) = -1: 失敗
[F] SUBROUTINE GWTSETPEN(IRTN, IT, IPC, IPS, IPW)
INTEGER IRTN, IT, IPC, IPS, IPW
[C] int GWTsetpen(int IT, int IPC, int IPS, int IPW);
(説明) タートル番号 IT > 0 のタートルのペンを設定する。 (入力変数) IT = タートル番号 ( > 0 ) IPC = 論理色番号 (GWCOLOR 参照) IPS = 線種 (GWCOLOR 参照) IPW = 線幅 (GWCOLOR 参照) (出力変数) IRTN > 0: 属性が変更された場合 ( タートル番号 ) = 0: 失敗,または属性が変更されなかった場合
[F] SUBROUTINE GWTSETMRK(IRTN, IT, MT, S, K, KS, KB, MX)
INTEGER IRTN, IT, MT, K, KS, KB, MX
REAL S
[F] SUBROUTINE GWDTSETMRK(IRTN, IT, MT, S, K, KS, KB, MX)
INTEGER IRTN, IT, MT, K, KS, KB, MX
REAL*8 S
[C] int GWTsetmrk(int IT, int MT, float S, int K, int KS, int KB, int MX);
[C] int GWDTsetmrk(int IT, int MT, double S, int K, int KS, int KB, int MX);
(説明) マーク番号 MT(0-6),大きさ S(ワールド座標系),マークの論理色番号 K,マークの 背景色の論理色番号 KB,混合モード MX を指定する。 MX > 15 の場合は (MX-16) の値をそのまま "binary raster-operation code[W]" として使用する。K, KB を除 いて,入力パラメータの値が負であれば対応する属性は変更されない。MT が 0 の 場合は,大きさが S(ピクセル)の点が指定され,この場合,描画されるマークの 大きさはビュー(表示)モードに影響されない。 (入力変数) IT = タートル番号 ( > 0 ) MT = 0: 点 1: ■ 2: + 3: × 4: +と×を重ねあわせたもの 5: □ 6: ○ その他: 変更しない S = ドットの大きさ(ピクセル値) = マークの高さ(ワールド座標系) > 0.0 K = マーク(ペン)の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う KS = マーク内部(ブラシ)の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う KB = マークの背景色の論理色番号(GWCOLOR の項参照) -1 の場合は現在値を使う = -100: 透明(default) MX = マークの混合モード( GWSETPEN の項参照) (出力変数) IRTN = リターン・コード
[F] SUBROUTINE PLOTS(X, Y, LD)
[C] なし
(説明) GrWin ライブラリの初期化の後,グラフィクス・ウィンドウをオープンする。 [参考] CALL GWOPEN(NW,0) (入力変数) X = ペンの初期位置の X 座標(ワールド座標系) Y = ペンの初期位置の Y 座標(ワールド座標系) LD = 互換性のためのダミー (出力変数) なし
[F] SUBROUTINE PLOTE(MQ)
[C] なし
(説明) 開かれている全てのウィンドウを閉じ,GrWin ライブラリの終了処理を行う。 [参考] CALL GWQUIT (入力変数) MQ = 0 : コンソール・ウィンドウに終了プロンプト '>' を表示する。 1 : 終了ダイアログを表示する。 他: 終了プロンプトを出さずに直ちに終了処理を行う。 (出力変数) なし
[F] SUBROUTINE PLOT(X, Y, IP)
REAL X, Y
INTEGER IP
[C] なし
(説明) ワールド座標系で指定された点 (X, Y) までペンを移動する。 [参考] CALL GWLINE2(X, Y) CALL GWMOVE2(X, Y) (入力変数) X = 移動先のペン位置の X 座標(ワールド座標系) Y = 移動先のペン位置の Y 座標(ワールド座標系) IP = ±2: ペンを下げたまま移動する。つまり直線を描く。 ±3: ペンを上げたまま移動する。つまり何も描かない。 999: 終了処理を行う(PLOTE と同じ)。 < 0: ワールド座標系を平行移動して,移動後の点を新たに座標原点にする。 (出力変数) なし
[F] SUBROUTINE WINDOW(XL, YT, XR, YB)
REAL XL, YT, XR, YB
[C] なし
(説明) 画面の左辺の x 座標,上辺の y 座標,右辺の x 座標,下辺の y 座標をワールド座 標で与えることによりワールド座標系を設定する。 GWINDOW とは引数の並びの順序 が違うので注意。 [参考] CALL GWINDOW(XL, YB, XR, YT) (入力変数) XL = 左辺の x 座標(ワールド座標系) YT = 上辺の y 座標(ワールド座標系) XR = 右辺の x 座標(ワールド座標系) YB = 下辺の y 座標(ワールド座標系) (出力変数) なし
[F] SUBROUTINE NEWPEN(IPC)
INTEGER IPC
[C] なし
(説明) ペンの論理色番号を設定する。 [参考] GWSETPEN(IPC, -1, -1, -1) (入力変数) IPC = 論理色番号 -1 の場合は変更されない その他の場合については GWCOLOR の項参照。 (出力変数) なし
[F] SUBROUTINE SYMBOL(X, Y, H, TXT, A, NC)
REAL X, Y, H, A
CHARACTER TXT*(*)
INTEGER NC
[C] なし
(説明) ワールド座標系で指定された点 (X, Y) に文字列を表示する。 [参考] CALL GWSETTXT(H, A, -1, -1, -1, ' ') CALL GWPUTTXT(X, Y, TXT) (入力変数) X = 最初の文字の左下の点の X 座標(ワールド座標系) Y = 最初の文字の左下の点の Y 座標(ワールド座標系) H = フォントの高さ(ワールド座標系) 0 の場合はデフォールト値を使う 負の場合は現在の値を使う TXT = 表示する文字列 A = フォントの傾き角(deg,反時計回り) NC = 文字列の長さ。 0 または負の場合は TXT のすべての文字を表示する。 (出力変数) なし
[F] SUBROUTINE NUMBER(X, Y, H, D, A, ND)
REAL X, Y, H, D, A
INTEGER ND
[C] なし
(説明) ワールド座標系で指定された点 (X, Y) に数字を表示する。変換方法を指定できる。 [参考] WRITE(TXT, *) N CALL GWSETTXT(H, A, -1, -1, -1, ' ') CALL GWPUTTXT(X, Y, TXT) (入力変数) X = 最初の文字の左下の点の X 座標(ワールド座標系) Y = 最初の文字の左下の点の Y 座標(ワールド座標系) H = フォントの高さ(ワールド座標系) 0 の場合はデフォールト値を使う 負の場合は現在の値を使う D = 表示する数値 A = フォントの傾き角(deg,反時計回り) ND > 0: 小数点下の桁数 = 0: 整数部分と小数点を表示 = -1: 整数部分のみ表示 < -1: 整数部分の上位 |ND| 桁のみ表示 (出力変数) なし
[F] SUBROUTINE GCLS(IDMY)
[C] なし
(説明) グラフィクス画面を消去する。 (入力変数) IDMY は互換性のためのダミー変数。 (出力変数) なし