GrWin グラフィクス・ライブラリ Version 0.99.9b Copyright (C) 1998 - 2003 Tamaribuchi, Tsuguhiro tamari@spdg1.sci.shizuoka.ac.jp http://spdg1.sci.shizuoka.ac.jp/grwinlib/ サブルーチンと関数の一覧 # Fortran C 機 能 n 1. gwinit GWinit 初期化0 1. gwinitx GWinitx 初期化0 2. gwopen GWopen ウィンドウのオープン1 2. gwopenx GWopenx ウィンドウのオープン1 3. gwquit GWquit 終了0 3. gwquitx GWquitx 終了0 4. gwleave GWleave ウィンドウを閉じないで終了0 5. gwjoin GWjoin ジョイン(追加描画の開始)0,2 6. gwreset GWreset パラメータの再初期化1 7. gwclose GWclose ウィンドウのクローズ0 8. gwindow GWindow ワールド座標系の設定0 9. gwgetwn GWgetwn ワールド座標系の取得0 10. gwvport GWvport ビューポートの設定0 11. gwport GWport ビューポートの設定(ワールド座標系)0 12. gwgetvp GWgetvp ビューポートの取得0 13. gwsavevp GWsavevp ビューポート情報の保存0 14. gwselvp GWselvp ビューポートの選択0 15. gwfirst GWfirst 最初のウィンドウ0 16. gwnext GWnext 次のウィンドウ0 17. gwselect GWselect ウィンドウを選択0 18. gwshowwn GWshowwn ウィンドウの表示状態を設定0 19. gwshowfr GWshowfr フレームの表示状態を設定0 20. gwarrange GWarrange ウィンドウの配置0 21. gwldcpos GWldcpos 論理デバイス座標系での位置座標の取得0 22. gwldcsiz GWldcsiz 論理デバイス座標系でのサイズの取得0 23. gwpxlsiz GWpxlsiz ピクセル・サイズの取得0 24. gwsetpen GWsetpen ペンの指定1 25. gwgetpen GWgetpen ペン属性の取得0 26. gwsetbrs GWsetbrs ブラシの指定1 27. gwgetbrs GWgetbrs ブラシ属性の取得0 28. gwsettxt GWsettxt テキスト用フォントの設定1 29. gwgettxt GWgettxt 文字列サイズの取得0 30. gwputtxt GWputtxt 文字列(テキスト)の描画1 31. gwsetsym GWsetsym 記号フォントの設定1 32. gwgetsym GWgetsym 記号のサイズ取得0 33. gwputsym GWputsym 記号の出力1 34. gwsetmsg GWsetmsg メッセージの表示0 35. msgbox* GWmsgbox メッセージボックス0 36. gwgetpos GWgetpos ペン位置0 37. gwmove2 GWmove2 ペンの移動1 38. gwline2 GWline2 指定した点までの直線1 39. gwline GWline 2点を結ぶ直線2 40. gwrect GWrect 四角形の描画1 41. gwsrect GWsrect 塗りつぶされた四角形の描画1 42. gwrrect GWrrect 角の丸い四角形の描画1 43. gwellipse GWellipse 楕円の描画1 44. gwarc GWarc 弧の描画1 45. gwchord GWchord 閉じた弧の描画1 46. gwpie GWpie 扇形の描画1 47. gwplot1 GWplot1 1次元配列のプロットx 48. gwpolygon GWpolygon 多角形の描画1 49. gwpolylin GWpolylin 折れ線の描画1 50. gwbezier GWbezier ベジエ スプラインの描画1 51. gwflood GWflood 閉領域の塗りつぶし1 52. gwclear GWclear ウィンドウ画面の消去1 53. gwsetmrk GWsetmrk マークの指定1 54. gwputmrk GWputmrk マーク描画1 55. gwgetmrk GWgetmrk マーク属性の取得0 56. gwsetxfrm GWsetxfrm 変換行列の設定1 57. gwgetxfrm GWgetxfrm 変換行列の取得0 58. gwsetrgn GWsetrgn クリッピング領域の設定1 59. gwsetpxl GWsetpxl ピクセルの設定1 60. gwgetpxl GWgetpxl ピクセルの論理色番号の取得0 61. gwcolor GWcolor 色の設定1 62. gwgetrgb GWgetrgb 論理色番号をRGB(三原色)に変換0 63. krgb* GWkrgb RGB(三原色)から論理色番号への変換0 64. kcolor* GWkcolor 絶対 COLORREF 値から論理色番号への変換0 65. ipalette* GWipalette Windows パレット番号から論理色番号への変換0 66. gwncolor GWncolor 利用可能な色パレット数の取得0 67. gwsavecc GWsavecc カスタムカラーの保存0 68. gwloadcc GWloadcc カスタムカラーの復元0 69. gwsysclr GWsysclr システムに設定されている色情報の取得0 70. gwcappnt GWcappnt マウスによる点座標の取得0 71. gwcapvec GWcapvec マウスによるベクトルの取得0 72. gwcaplin GWcaplin マウスによる線分座標の取得0 73. gwcaprect GWcaprect マウスによる矩形座標の取得0 74. gwloadbmp GWloadbmp ビットマップファイルの読み込み0 75. gwsavebmp GWsavebmp ビットマップファイルの保存0 76. gwmakebmp GWmakebmp ビットマップの作成0 77. gwfnt2bmp GWfnt2bmp フォントからビットマップへの変換0 78. gwsetbmp GWsetbmp ビットマップの属性設定0 79. gwgetbmp GWgetbmp ビットマップの属性取得0 80. gwputbmp GWputbmp ビットマップの描画1 81. gwcopybmp GWcopybmp 保存ビットマップのコピー登録0 82. gwdelbmp GWdelbmp ビットマップの登録削除0 83. gwcapimg GWcapimg 矩形領域の取り込み0 84. gwclipimg GWclipimg 矩形領域のクリップボードへのコピー0 85. gwloadcmb GWloadcmb コンボ・ファイルの読み込み0 86. gwsavecmb GWsavecmb コンボをフィルに保存0 87. gwcmbmrk GWcmbmrk マークをコンボとして作成0 88. gwbegincmb GWbegincmb コンボの作成開始0 89. gwendcmb GWendcmb コンボの作成終了0 90. gwputcmb GWputcmb コンボの描画1 91. gwgetcmb GWgetcmb コンボの属性取得0 92. gwcopycmb GWcopycmb 保存コンボのコピー登録0 93. gwdelcmb GWdelcmb コンボの登録削除0 94. gwinput GWinput 文字列の入力0 95. gwfiledlg GWfiledlg ダイアログボックスによるファイル名の取得0 96. gwload GWload データの読み込み0 97. gwsaveas GWsaveas データの保存0 98. gwprint GWprint 印刷0 99. gwsetogn GWsetogn オブジェクト・グループ番号の設定0 100. gwanchor GWanchor アンカー1,-x 101. gwsetbk GWsetbk 背景の設定x 102. gwerase GWerase 図形の消去-x 103. gwflush GWflush フラッシュ描画-x 104. gwrefresh GWrefresh 画面の再描画0 105. gwvwmod GWvwmod ビューモード0 106. gwmode GWmode モード設定と問い合わせ0 107. gwkybrd GWkybrd キーボード・ステータス0 108. gwmouse GWmouse マウス0 109. gwtimer GWtimer インターバル・タイマー0 110. gwevent GWevent イベント状態の取得0 111. gwidle GWidle アイドリング0 112. gwidle2 GWidle2 アイドリング 20 113. gwsleep GWsleep スリープ1 114. gwsleep2 GWsleep2 スリープ 21 115. gwctime GWctime 現在時刻の取得0 116. gwpause GWpause ポーズ0 117. gwsize GWsize 各種サイズの取得/設定0 118. gwaspect* GWaspect アスペクト比の取得0 119. gwfmax* GWfmax 浮動小数点数の最大値0 120. gwversion GWversion バージョン番号の取得0 121. kbhit* kbhit コンソール・キーボード0 122. kbgetch* kbgetch コンソールでのキー・コードの取得0 123. gwtspawn GWTspawn タートル:生成0 124. gwdtturn GWTturn タートル:進行方向の変更1 124. gwdtturn GWDTturn タートル:進行方向の変更1 125. gwdtforward GWTforward タートル:前進1 125. gwdtforward GWDTforward タートル:前進1 126. gwdtshift GWTshift タートル:相対移動1 126. gwdtshift GWDTshift タートル:相対移動1 127. gwdtmove2 GWTmove2 タートル:指定点への移動1 127. gwdtmove2 GWDTmove2 タートル:指定点への移動1 128. gwtclone GWTclone タートルを複製する0 129. gwtremove GWTremove タートルを取り除く0 130. gwdtsetpos GWTsetpos タートル位置設定1 130. gwdtsetpos GWDTsetpos タートル位置設定1 131. gwdtgetpos GWTgetpos タートル位置の取得0 131. gwdtgetpos GWDTgetpos タートル位置の取得0 132. gwdtsetdir GWTsetdir タートル:進行方向の設定1 132. gwdtsetdir GWDTsetdir タートル:進行方向の設定1 133. gwdtgetdir GWTgetdir タートル:進行方向の取得0 133. gwdtgetdir GWDTgetdir タートル:進行方向の取得0 134. gwtsetcol GWTsetcol タートル:色の設定1 135. gwtgetcol GWTgetcol タートル:色の取得1 136. gwtsetpen GWTsetpen タートル:ペンの設定1 137. gwdtsetmrk GWTsetmrk タートル:マーク設定1 137. gwdtsetmrk GWDTsetmrk タートル:マーク設定1 138. plots なし 初期化(Calcomp 系コマンド)0 139. plote なし 終了(Calcomp 系コマンド)0 140. plot なし ペンの移動/直線の描画(Calcomp 系コマンド)1 141. window なし ワールド座標系の設定(Calcomp 系コマンド)0 142. newpen なし ペンの色(Calcomp 系コマンド)1 143. symbol なし 文字列の表示(Calcomp 系コマンド)1 144. number なし 数値の表示(Calcomp 系コマンド)2 145. gcls なし グラフィクス画面消去(Calcomp 系コマンド)0 本ライブラリでは,ウィンドウをオープンすると仮想的な長方形の「用紙」がメモリー 上に用意されて,適当なルーチンをコールすることによって,図形オブジェクトがその 「用紙」に描画されます。「用紙」 のサイズは原則としてオープン時に決定され, 一 般には,実際に出力されるデスプレィ画面の分解能や "プリント用紙" のサイズとは無 関係です.「用紙」がデスプレィ画面やプリンタに出力される際には,ビュー(表示)モ ードに応じて,その「用紙」 をそれぞれのデバイスにマッピングします.用紙上で実 際に描画を行う長方形の領域を「ビューポート」と呼びます。ユーザーはビューポート の左下と右上の点の座標を与えることで任意の座標系を定義することができ,この座標 系を「ワールド座標系」と呼びます。本ライブラリのほとんどのルーチンではこの「ワ ールド座標系」を用います.「用紙」上にビューポートを設定するには「規格化論理座 標系」を使います。規格化論理座標系は,描画図形の縦横比を一定にしたまま,用紙の 短い方の辺の長さを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 とすることができます。 関数名からの検索には「索引」が利用できます。 GrWin ライブラリ・ルーチン 1. 初期化 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 2. ウィンドウのオープン ----------------------------------------------------------------------------- [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 [TOC] [INDEX] 3. 終了 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 4. ウィンドウを閉じないで終了 ----------------------------------------------------------------------------- [F] SUBROUTINE GWLEAVE(IRTN) INTEGER IRTN [C] int GWleave(void); ----------------------------------------------------------------------------- (説明) ウィンドウを閉じないで、終了処理を行う。 (入力変数) なし (出力変数) IRTN = リターン・コード [TOC] [INDEX] 5. ジョイン(追加描画の開始) ----------------------------------------------------------------------------- [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 [TOC] [INDEX] 6. パラメータの再初期化 ----------------------------------------------------------------------------- [F] SUBROUTINE GWRESET(IRTN) INTEGER IRTN [C] int GWreset(void); ----------------------------------------------------------------------------- (説明) 現在のウィンドウの各種パラメータをデフォルト値に戻す。 (入力変数) なし (出力変数) IRTN = リターン・コード [TOC] [INDEX] 7. ウィンドウのクローズ ----------------------------------------------------------------------------- [F] SUBROUTINE GWCLOSE(IRTN, NW) INTEGER IRTN, NW [C] int GWclose(int NW); ----------------------------------------------------------------------------- (説明) 指定したグラフィクス・ウィンドウを閉じる。 (入力変数) NW > 0: 指定した番号のウィンドウをクローズする = 0: カレント・ウィンドウをクローズする < 0: アプリケーションが開いたすべてのウィンドウを閉じる (出力変数) IRTN = カレント・ウィンドウ番号,開かれているウィンドウが無ければ 0 [TOC] [INDEX] 8. ワールド座標系の設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 9. ワールド座標系の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 10. ビューポートの設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 11. ビューポートの設定(ワールド座標系) ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 12. ビューポートの取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 13. ビューポート情報の保存 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSAVEVP(IRTN, IVP) INTEGER IRTN, IVP [C] int GWsavevp(int IVP); ----------------------------------------------------------------------------- (説明) 現在のビューポート情報を指定したビューポート番号で保存する。保存されたビュー ポート情報は GWselvp で呼び出すことができる。 (入力変数) IVP = ビューポート番号 ( > 0 ) (出力変数) IRTN = リターン・コード [TOC] [INDEX] 14. ビューポートの選択 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSELVP(IRTN, IVP) INTEGER IRTN, IVP [C] int GWselvp(int IVP); ----------------------------------------------------------------------------- (説明) ビューポートを選択する。指定されたビューポート番号 IVP が未定義の場合は何も しない。 成功すると,ビューポートと対応するワールド座標系が復元される。 ビューポート番号 IVP = 0 にはデフォルトの設定が保存されている。 (入力変数) IVP = ビューポート番号 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 15. 最初のウィンドウ ----------------------------------------------------------------------------- [F] SUBROUTINE GWFIRST(IRTN) INTEGER IRTN [C] int GWfirst(void); ----------------------------------------------------------------------------- (説明) このアプリケーションがオープンした最初のウィンドウの番号を取得する。 (入力変数) なし (出力変数) IRTN = 最初のウィンドウのウィンドウ番号, 失敗のときは 0 [TOC] [INDEX] 16. 次のウィンドウ ----------------------------------------------------------------------------- [F] SUBROUTINE GWNEXT(IRTN, NW) INTEGER IRTN, NW [C] int GWnext(int NW); ----------------------------------------------------------------------------- (説明) 指定したウィンドウの次にオープンしたウィンドウの番号を取得する。 オープンされているすべてのウィンドウの番号を取得するには、最初に GWfirst を呼んでから、0 が返されるまで GWnext を繰り返し呼べばよい。C の場合にウィン ドウ番号 NW を更新するには NW = GWnext(NW); として,関数の戻り値を明示的に NW に代入しなくてはならない。 (入力変数) ウィンドウ番号 (出力変数) IRTN = 次のウィンドウのウィンドウ番号,失敗したときは 0 [TOC] [INDEX] 17. ウィンドウを選択 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSELECT(IRTN, NW) INTEGER IRTN, NW [C] int GWselect(int NW); ----------------------------------------------------------------------------- (説明) 指定されたウィンドウ番号のウィンドウをカレント・ウィンドウに設定する。 (入力変数) NW = ウィンドウ番号 (1,2,3,...) (出力変数) IRTN = カレント・ウィンドウ番号 [TOC] [INDEX] 18. ウィンドウの表示状態を設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 19. フレームの表示状態を設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 20. ウィンドウの配置 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 21. 論理デバイス座標系での位置座標の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 22. 論理デバイス座標系でのサイズの取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 23. ピクセル・サイズの取得 ----------------------------------------------------------------------------- [F] SUBROUTINE GWPXLSIZ(IRTN, W, H) REAL X, Y [C] int GWpxlsiz(float *W, float *H); ----------------------------------------------------------------------------- (説明) 使用中のディスプレイ上の1ピクセルに対応するワールド座標系での幅 W と高さ H の現在値を取得する。得られる値は現在の表示ウィンドウのサイズや表示モードに 依存する。 (入力変数) なし (出力変数) X = ワールド座標系での幅 Y = ワールド座標系での高さ IRTN = リターン・コード [TOC] [INDEX] 24. ペンの指定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 25. ペン属性の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 26. ブラシの指定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 27. ブラシ属性の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 28. テキスト用フォントの設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 29. 文字列サイズの取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 30. 文字列(テキスト)の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 31. 記号フォントの設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 32. 記号のサイズ取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 33. 記号の出力 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 34. メッセージの表示 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSETMSG(IRTN, TXT) INTEGER IRTN CHARACTER TXT*(*) [C] int GWsetmsg(char *TXT); ----------------------------------------------------------------------------- (説明) ステータスバーにメッセージを表示する。 (入力変数) TXT = メッセージの文字列 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 35. メッセージボックス ----------------------------------------------------------------------------- [F] INTEGER FUNCTION MSGBOX(TXT) CHARACTER TXT*(*) [C] int GWmsgbox(char *TXT); ----------------------------------------------------------------------------- (説明) メッセージボックスを表示し,どのボタンが押されたかの値を得る。 (入力変数) TXT = メッセージの文字列 (出力変数) なし (返される値) 1: YES ボタンが押された場合 -1: NO ボタンが押された場合 0: その他 [TOC] [INDEX] 36. ペン位置 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 37. ペンの移動 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 38. 指定した点までの直線 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 39. 2点を結ぶ直線 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 40. 四角形の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 41. 塗りつぶされた四角形の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 42. 角の丸い四角形の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 43. 楕円の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 44. 弧の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 45. 閉じた弧の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 46. 扇形の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 47. 1次元配列のプロット ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 48. 多角形の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 49. 折れ線の描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 50. ベジエ スプラインの描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 51. 閉領域の塗りつぶし ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 52. ウィンドウ画面の消去 ----------------------------------------------------------------------------- [F] SUBROUTINE GWCLEAR(IRTN, K) INTEGER IRTN, K [C] int GWclear(int K); ----------------------------------------------------------------------------- (説明) 指定された色で現在のビューポートをを塗りつぶす。 (入力変数) K = 論理色番号(GWCOLOR の項参照) -1 の場合は画面消去とともにすべてのオブジェクトもメモリから消去する (出力変数) IRTN = リターン・コード [TOC] [INDEX] 53. マークの指定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 54. マーク描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 55. マーク属性の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 56. 変換行列の設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 57. 変換行列の取得 ----------------------------------------------------------------------------- [F] SUBROUTINE GWGETXFRM(IRTN, XFRM) INTEGER IRTN REAL XFRM(6) [C] int GWgetxfrm(float *XFRM); ----------------------------------------------------------------------------- (説明) 現在の変換行列の成分を取得する。変換行列はビットマップやマークの回転や変形 に使用される(GWGETXFRM 参照)。 (入力変数) なし (出力変数) XFRM = 変換行列の各成分(GWGETXFRM 参照) IRTN = リターン・コード [TOC] [INDEX] 58. クリッピング領域の設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 59. ピクセルの設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 60. ピクセルの論理色番号の取得 ----------------------------------------------------------------------------- [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 (失敗の場合) [TOC] [INDEX] 61. 色の設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 62. 論理色番号をRGB(三原色)に変換 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 63. RGB(三原色)から論理色番号への変換 ----------------------------------------------------------------------------- [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 参照) [TOC] [INDEX] 64. 絶対 COLORREF 値から論理色番号への変換 ----------------------------------------------------------------------------- [F] INTEGER FUNCTION KCOLOR(IC) INTEGER IC [C] int GWkcolor(int IC); ----------------------------------------------------------------------------- (説明) COLORREF 値を論理色番号に変換するために使用する。COLORREF 値とは Windows で 使用されている,色の内部表現のこと。詳しくは,Windows 関係の資料参照。 (入力変数) IC = 色の COLORREF 値 (出力変数) なし (返される値) 論理色番号( GWCOLOR 参照) [TOC] [INDEX] 65. Windows パレット番号から論理色番号への変換 ----------------------------------------------------------------------------- [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 参照) [TOC] [INDEX] 66. 利用可能な色パレット数の取得 ----------------------------------------------------------------------------- [F] SUBROUTINE GWNCOLOR(IRTN) INTEGER IRTN [C] int GWncolor(void); ----------------------------------------------------------------------------- (説明) 利用可能な色パレット数 = (最終パレット番号+1) を取得する。このバージョンで は利用可能な色パレット数は 36 で固定。パレット番号 0..19 は Windows の標準色 パレットで,設定値は変更できない(0 = 黒, 19 = 白)。パレット番号 20..35 は色 の設定」ダイアログボックスで変更可(GWCOLOR の項参照)。 (入力変数) なし (出力変数) IRTN = 36 = (最終パレット番号+1) [TOC] [INDEX] 67. カスタムカラーの保存 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSAVECC(IRTN, FN) INTEGER IRTN CHARACTER FN*(*) [C] int GWsavecc(char *FN); ----------------------------------------------------------------------------- (説明) カスタムカラーをファイルに保存する。 (入力変数) FN = ファイル名 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 68. カスタムカラーの復元 ----------------------------------------------------------------------------- [F] SUBROUTINE GWLOADCC(IRTN, FN) INTEGER IRTN CHARACTER FN*(*) [C] int GWloadcc(char *FN); ----------------------------------------------------------------------------- (説明) カスタムカラーをファイルから復元する。カスタムカラーが格納されているファイル の書式は,各行について COLORREF 値を 0x02XXXXXX の形で指定したもの 16 行から なる(XXXXXX は 16 進数 6 桁)。GWSAVECC で作成したものはそのまま読むことがで きる。 (入力変数) FN = ファイル名 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 69. システムに設定されている色情報の取得 ----------------------------------------------------------------------------- [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 関係の資料参照) [TOC] [INDEX] 70. マウスによる点座標の取得 ----------------------------------------------------------------------------- [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 座標(ワールド座標系) [TOC] [INDEX] 71. マウスによるベクトルの取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 72. マウスによる線分座標の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 73. マウスによる矩形座標の取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 74. ビットマップファイルの読み込み ----------------------------------------------------------------------------- [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 を返す。 [TOC] [INDEX] 75. ビットマップファイルの保存 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSAVEBMP(IRTN, NB, FN) INTEGER IRTN, NB CHARACTER FN*(*) [C] int GWsavebmp(int NB, char *FN); ----------------------------------------------------------------------------- (説明) 番号 NB のビットマップをファイルに保存する。 (入力変数) NB = ビットマップ番号 FN = ビットマップファイル名 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 76. ビットマップの作成 ----------------------------------------------------------------------------- [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 を返す。 [TOC] [INDEX] 77. フォントからビットマップへの変換 ----------------------------------------------------------------------------- [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 を返す。 [TOC] [INDEX] 78. ビットマップの属性設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 79. ビットマップの属性取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 80. ビットマップの描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 81. 保存ビットマップのコピー登録 ----------------------------------------------------------------------------- [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 = 実際に登録されたビットマップ番号。 [TOC] [INDEX] 82. ビットマップの登録削除 ----------------------------------------------------------------------------- [F] SUBROUTINE GWDELBMP(IRTN, NM) INTEGER IRTN, NM [C] int GWdelbmp(int NM); ----------------------------------------------------------------------------- (説明) ビットマップ番号 NM (1 〜 MAXNM) のビットマップの登録を削除する。指定された ビットマップ番号が未使用の場合は何もしない。 (入力変数) NM = 削除するビットマップの番号 (出力変数) IRTN = 実際に削除されたビットマップの番号 (>0)。削除しなかった場合は 0。 [TOC] [INDEX] 83. 矩形領域の取り込み ----------------------------------------------------------------------------- [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 を返す。 [TOC] [INDEX] 84. 矩形領域のクリップボードへのコピー ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 85. コンボ・ファイルの読み込み ----------------------------------------------------------------------------- [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 を返す。 [TOC] [INDEX] 86. コンボをフィルに保存 ----------------------------------------------------------------------------- [F] SUBROUTINE GWSAVECMB(IRTN, NM, FN) INTEGER IRTN, NM CHARACTER FN*(*) [C] int GWsavecmb(int NM, char *FN); ----------------------------------------------------------------------------- (説明) 番号 NM のコンボをコンボ・ファイルに保存する。 (入力変数) NM = コンボ番号 FN = コンボ・ファイル名 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 87. マークをコンボとして作成 ----------------------------------------------------------------------------- [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 を返す [TOC] [INDEX] 88. コンボの作成開始 ----------------------------------------------------------------------------- [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 を返す。 [TOC] [INDEX] 89. コンボの作成終了 ----------------------------------------------------------------------------- [F] SUBROUTINE GWENDCMB(IRTN) INTEGER IRTN [C] int GWendcmb(void); ----------------------------------------------------------------------------- (説明) コンボへの描画を終了し,コンボを使用可能にする。 (入力変数) なし (出力変数) IRTN = 作成したコンボの配列要素番号 (>0)。失敗したときは 0 を返す。 [TOC] [INDEX] 90. コンボの描画 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 91. コンボの属性取得 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 92. 保存コンボのコピー登録 ----------------------------------------------------------------------------- [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 = 実際に登録されたコンボ番号。 [TOC] [INDEX] 93. コンボの登録削除 ----------------------------------------------------------------------------- [F] SUBROUTINE GWDELCMB(IRTN, NM) INTEGER IRTN, NM [C] int GWdelcmb(int NM); ----------------------------------------------------------------------------- (説明) コンボ番号 NM (0 〜 MAXNM) のコンボの登録を削除する。指定されたコンボ番号が 未使用の場合は何もしない。 (入力変数) NM = 削除するコンボの番号 (出力変数) IRTN = 実際に削除されたコンボの番号。 [TOC] [INDEX] 94. 文字列の入力 ----------------------------------------------------------------------------- [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 = 文字列(入力の終了はリターンキー) [TOC] [INDEX] 95. ダイアログボックスによるファイル名の取得 ----------------------------------------------------------------------------- [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 = 取得したファイル名 (成功した場合) [TOC] [INDEX] 96. データの読み込み ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 97. データの保存 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 98. 印刷 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 99. オブジェクト・グループ番号の設定 ----------------------------------------------------------------------------- [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 失敗の場合 [TOC] [INDEX] 100. アンカー ----------------------------------------------------------------------------- [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: -(取り除くことのできなかったアンカー数) [TOC] [INDEX] 101. 背景の設定 ----------------------------------------------------------------------------- [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: エラー [TOC] [INDEX] 102. 図形の消去 ----------------------------------------------------------------------------- [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 = 実際に消去されたオブジェクトの総数 [TOC] [INDEX] 103. フラッシュ描画 ----------------------------------------------------------------------------- [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 = 描画されたオブジェクトの総数 [TOC] [INDEX] 104. 画面の再描画 ----------------------------------------------------------------------------- [F] SUBROUTINE GWREFRESH(IRTN) INTEGER IRTN [C] int GWrefresh(void); ----------------------------------------------------------------------------- (説明) カレント・ウィンドウを再描画する。メニューバー の [ビュー] -> [再描画] と 同じ。このルーチンは保存モード(GWMODE 参照)が on の場合に正常に動作する。 (入力変数) なし (出力変数) IRTN = リターン・コード [TOC] [INDEX] 105. ビューモード ----------------------------------------------------------------------------- [F] SUBROUTINE GWVWMOD(IRTN, M) INTEGER IRTN, M [C] int GWvwmod(int M); ----------------------------------------------------------------------------- (説明) カレント・ウィンドウのビュー(表示)モードの設定/問い合わせを行う。 ウィンドウ が開いていない場合にはデフォルトのビューモードの設定/問い合わせを行う。デ フォルトのビューモードはウィンドウのオープン時(GWopen 参照)に参照される。 (入力変数) M = 1: ビットマップ 2: 等方的 3: フィット 4: 全体 5: 拡大(現在のビューポートへ:設定時) 他: 問い合わせ (出力変数) IRTN = カレント・ウィンドウのビュー(表示)モード(入力変数の項目参照, 0: 失敗) [TOC] [INDEX] 106. モード設定と問い合わせ ----------------------------------------------------------------------------- [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 : エラー [TOC] [INDEX] 107. キーボード・ステータス ----------------------------------------------------------------------------- [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) [TOC] [INDEX] 108. マウス ----------------------------------------------------------------------------- [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 座標(ワールド座標系) [TOC] [INDEX] 109. インターバル・タイマー ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 110. イベント状態の取得 ----------------------------------------------------------------------------- [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 座標(ワールド座標系) [TOC] [INDEX] 111. アイドリング ----------------------------------------------------------------------------- [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 座標(ワールド座標系) [TOC] [INDEX] 112. アイドリング 2 ----------------------------------------------------------------------------- [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 で行うことができる。 [TOC] [INDEX] 113. スリープ ----------------------------------------------------------------------------- [F] SUBROUTINE GWSLEEP(IRTN, MS) INTEGER IRTN, MS [C] int GWsleep(int MS); ----------------------------------------------------------------------------- (説明) ミリ (1/1000) 秒単位で実行を停止する。 (入力変数) MS = 実行を停止する時間(ミリ秒単位) (出力変数) IRTN = リターン・コード [TOC] [INDEX] 114. スリープ 2 ----------------------------------------------------------------------------- [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 = 呼び出し時の内部時計の時刻 (ミリ秒単位) [TOC] [INDEX] 115. 現在時刻の取得 ----------------------------------------------------------------------------- [F] SUBROUTINE GWCTIME(IRTN) INTEGER IRTN [C] int GWctime(void); ----------------------------------------------------------------------------- (説明) ウィンドウごとに用意された内部時計の現在時刻 (ミリ秒単位) を取得する。 (入力変数) なし (出力変数) IRTN = 現在時刻 (ミリ秒単位) [TOC] [INDEX] 116. ポーズ ----------------------------------------------------------------------------- [F] SUBROUTINE GWPAUSE(IRTN, TXT) INTEGER IRTN CHARACTER TXT*(*) [C] int GWpause(char *TXT); ----------------------------------------------------------------------------- (説明) メッセージボックスを表示し,ボタンが押されるまで待つ。 (入力変数) TXT = メッセージの文字列 (出力変数) IRTN = リターン・コード [TOC] [INDEX] 117. 各種サイズの取得/設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 118. アスペクト比の取得 ----------------------------------------------------------------------------- [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 ) [TOC] [INDEX] 119. 浮動小数点数の最大値 ----------------------------------------------------------------------------- [F] REAL FUNCTION GWFMAX() [C] float GWfmax(void); ----------------------------------------------------------------------------- (説明) 浮動小数点数の最大値を返す。 (入力変数) なし (出力変数) なし (返される値) 浮動小数点数の最大値 [TOC] [INDEX] 120. バージョン番号の取得 ----------------------------------------------------------------------------- [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 = 取得文字列 [TOC] [INDEX] 121. コンソール・キーボード ----------------------------------------------------------------------------- [F] INTEGER FUNCTION KBHIT() [C] int kbhit(void); ----------------------------------------------------------------------------- (説明) コンソール画面で押されているキーのコードを返す。何も押されていなければ 0 を 返す。gwkybrd 参照。 (入力変数) なし (出力変数) なし (戻り値) キー・コード(キーが押されていなければ 0) [TOC] [INDEX] 122. コンソールでのキー・コードの取得 ----------------------------------------------------------------------------- [F] INTEGER FUNCTION KBGETCH(N) INTEGER N [C] int kbgetch(int N); ----------------------------------------------------------------------------- (説明) コンソール上で1バイトのキー・コードを取得する。キーが押されていなければ押さ れるまで待つ。 内部的には C の getch() または getche() を呼び出している。 (入力変数) N = 0: エコーしない <> 0: エコーする (出力変数) なし (戻り値) 取得したキー・コード [TOC] [INDEX] 123. タートル:生成 ----------------------------------------------------------------------------- [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 [TOC] [INDEX] 124. タートル:進行方向の変更 ----------------------------------------------------------------------------- [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: 失敗,または属性が変更されなかった場合 [TOC] [INDEX] 125. タートル:前進 ----------------------------------------------------------------------------- [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: 失敗 [TOC] [INDEX] 126. タートル:相対移動 ----------------------------------------------------------------------------- [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: 失敗 [TOC] [INDEX] 127. タートル:指定点への移動 ----------------------------------------------------------------------------- [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: 失敗 [TOC] [INDEX] 128. タートルを複製する ----------------------------------------------------------------------------- [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 [TOC] [INDEX] 129. タートルを取り除く ----------------------------------------------------------------------------- [F] SUBROUTINE GWTREMOVE(IRTN, IT) INTEGER IRTN, IT [C] int GWTremove(int IT); ----------------------------------------------------------------------------- (説明) タートル番号 IT > 0 のタートルを取り除く。指定された番号のタートルが存在しな い場合には何もしない。 (入力変数) IT = タートル番号 (出力変数) IRTN = 取り除いたタートルの番号 ( > 0 ), 失敗のときは 0 [TOC] [INDEX] 130. タートル位置設定 ----------------------------------------------------------------------------- [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: 失敗 [TOC] [INDEX] 131. タートル位置の取得 ----------------------------------------------------------------------------- [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: 失敗 [TOC] [INDEX] 132. タートル:進行方向の設定 ----------------------------------------------------------------------------- [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: 失敗,または属性が変更されなかった場合 [TOC] [INDEX] 133. タートル:進行方向の取得 ----------------------------------------------------------------------------- [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: 失敗,または属性が変更されなかった場合 [TOC] [INDEX] 134. タートル:色の設定 ----------------------------------------------------------------------------- [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: 失敗,または属性が変更されなかった場合 [TOC] [INDEX] 135. タートル:色の取得 ----------------------------------------------------------------------------- [F] SUBROUTINE GWTGETCOL(IPC, IT) INTEGER IPC, IT [C] int GWTgetcol(int IT); ----------------------------------------------------------------------------- (説明) タートル番号 IT > 0 のタートルの色を取得する。 (入力変数) IT = タートル番号 ( > 0 ) (出力変数) IPC <> -1: 論理色番号 (GWCOLOR 参照) = -1: 失敗 [TOC] [INDEX] 136. タートル:ペンの設定 ----------------------------------------------------------------------------- [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: 失敗,または属性が変更されなかった場合 [TOC] [INDEX] 137. タートル:マーク設定 ----------------------------------------------------------------------------- [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 = リターン・コード [TOC] [INDEX] 138. 初期化(Calcomp 系コマンド) ----------------------------------------------------------------------------- [F] SUBROUTINE PLOTS(X, Y, LD) [C] なし ----------------------------------------------------------------------------- (説明) GrWin ライブラリの初期化の後,グラフィクス・ウィンドウをオープンする。 [参考] CALL GWOPEN(NW,0) (入力変数) X = ペンの初期位置の X 座標(ワールド座標系) Y = ペンの初期位置の Y 座標(ワールド座標系) LD = 互換性のためのダミー (出力変数) なし [TOC] [INDEX] 139. 終了(Calcomp 系コマンド) ----------------------------------------------------------------------------- [F] SUBROUTINE PLOTE(MQ) [C] なし ----------------------------------------------------------------------------- (説明) 開かれている全てのウィンドウを閉じ,GrWin ライブラリの終了処理を行う。 [参考] CALL GWQUIT (入力変数) MQ = 0 : コンソール・ウィンドウに終了プロンプト '>' を表示する。 1 : 終了ダイアログを表示する。 他: 終了プロンプトを出さずに直ちに終了処理を行う。 (出力変数) なし [TOC] [INDEX] 140. ペンの移動/直線の描画(Calcomp 系コマンド) ----------------------------------------------------------------------------- [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: ワールド座標系を平行移動して,移動後の点を新たに座標原点にする。 (出力変数) なし [TOC] [INDEX] 141. ワールド座標系の設定(Calcomp 系コマンド) ----------------------------------------------------------------------------- [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 座標(ワールド座標系) (出力変数) なし [TOC] [INDEX] 142. ペンの色(Calcomp 系コマンド) ----------------------------------------------------------------------------- [F] SUBROUTINE NEWPEN(IPC) INTEGER IPC [C] なし ----------------------------------------------------------------------------- (説明) ペンの論理色番号を設定する。 [参考] GWSETPEN(IPC, -1, -1, -1) (入力変数) IPC = 論理色番号 -1 の場合は変更されない その他の場合については GWCOLOR の項参照。 (出力変数) なし [TOC] [INDEX] 143. 文字列の表示(Calcomp 系コマンド) ----------------------------------------------------------------------------- [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 のすべての文字を表示する。 (出力変数) なし [TOC] [INDEX] 144. 数値の表示(Calcomp 系コマンド) ----------------------------------------------------------------------------- [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| 桁のみ表示 (出力変数) なし [TOC] [INDEX] 145. グラフィクス画面消去(Calcomp 系コマンド) ----------------------------------------------------------------------------- [F] SUBROUTINE GCLS(IDMY) [C] なし ----------------------------------------------------------------------------- (説明) グラフィクス画面を消去する。 (入力変数) IDMY は互換性のためのダミー変数。 (出力変数) なし [TOC] [INDEX] 索引 Fortran C 機 能 # gcls なし グラフィクス画面消去(Calcomp 系コマンド) 145. gwanchor GWanchor アンカー 100. gwarc GWarc 弧の描画 44. gwarrange GWarrange ウィンドウの配置 20. gwaspect* GWaspect アスペクト比の取得 118. gwbegincmb GWbegincmb コンボの作成開始 88. gwbezier GWbezier ベジエ スプラインの描画 50. gwcapimg GWcapimg 矩形領域の取り込み 83. gwcaplin GWcaplin マウスによる線分座標の取得 72. gwcappnt GWcappnt マウスによる点座標の取得 70. gwcaprect GWcaprect マウスによる矩形座標の取得 73. gwcapvec GWcapvec マウスによるベクトルの取得 71. gwchord GWchord 閉じた弧の描画 45. gwclear GWclear ウィンドウ画面の消去 52. gwclipimg GWclipimg 矩形領域のクリップボードへのコピー 84. gwclose GWclose ウィンドウのクローズ 7. gwcmbmrk GWcmbmrk マークをコンボとして作成 87. gwcolor GWcolor 色の設定 61. gwcopybmp GWcopybmp 保存ビットマップのコピー登録 81. gwcopycmb GWcopycmb 保存コンボのコピー登録 92. gwctime GWctime 現在時刻の取得 115. gwdelbmp GWdelbmp ビットマップの登録削除 82. gwdelcmb GWdelcmb コンボの登録削除 93. gwdtforward GWDTforward タートル:前進 125. gwdtforward GWTforward タートル:前進 125. gwdtgetdir GWDTgetdir タートル:進行方向の取得 133. gwdtgetdir GWTgetdir タートル:進行方向の取得 133. gwdtgetpos GWDTgetpos タートル位置の取得 131. gwdtgetpos GWTgetpos タートル位置の取得 131. gwdtmove2 GWDTmove2 タートル:指定点への移動 127. gwdtmove2 GWTmove2 タートル:指定点への移動 127. gwdtsetdir GWDTsetdir タートル:進行方向の設定 132. gwdtsetdir GWTsetdir タートル:進行方向の設定 132. gwdtsetmrk GWDTsetmrk タートル:マーク設定 137. gwdtsetmrk GWTsetmrk タートル:マーク設定 137. gwdtsetpos GWDTsetpos タートル位置設定 130. gwdtsetpos GWTsetpos タートル位置設定 130. gwdtshift GWDTshift タートル:相対移動 126. gwdtshift GWTshift タートル:相対移動 126. gwdtturn GWDTturn タートル:進行方向の変更 124. gwdtturn GWTturn タートル:進行方向の変更 124. gwellipse GWellipse 楕円の描画 43. gwendcmb GWendcmb コンボの作成終了 89. gwerase GWerase 図形の消去 102. gwevent GWevent イベント状態の取得 110. gwfiledlg GWfiledlg ダイアログボックスによるファイル名の取得 95. gwfirst GWfirst 最初のウィンドウ 15. gwflood GWflood 閉領域の塗りつぶし 51. gwflush GWflush フラッシュ描画 103. gwfmax* GWfmax 浮動小数点数の最大値 119. gwfnt2bmp GWfnt2bmp フォントからビットマップへの変換 77. gwgetbmp GWgetbmp ビットマップの属性取得 79. gwgetbrs GWgetbrs ブラシ属性の取得 27. gwgetcmb GWgetcmb コンボの属性取得 91. gwgetmrk GWgetmrk マーク属性の取得 55. gwgetpen GWgetpen ペン属性の取得 25. gwgetpos GWgetpos ペン位置 36. gwgetpxl GWgetpxl ピクセルの論理色番号の取得 60. gwgetrgb GWgetrgb 論理色番号をRGB(三原色)に変換 62. gwgetsym GWgetsym 記号のサイズ取得 32. gwgettxt GWgettxt 文字列サイズの取得 29. gwgetvp GWgetvp ビューポートの取得 12. gwgetwn GWgetwn ワールド座標系の取得 9. gwgetxfrm GWgetxfrm 変換行列の取得 57. gwidle2 GWidle2 アイドリング 2 112. gwidle GWidle アイドリング 111. gwindow GWindow ワールド座標系の設定 8. gwinit GWinit 初期化 1. gwinitx GWinitx 初期化 1. gwinput GWinput 文字列の入力 94. gwjoin GWjoin ジョイン(追加描画の開始) 5. gwkybrd GWkybrd キーボード・ステータス 107. gwldcpos GWldcpos 論理デバイス座標系での位置座標の取得 21. gwldcsiz GWldcsiz 論理デバイス座標系でのサイズの取得 22. gwleave GWleave ウィンドウを閉じないで終了 4. gwline2 GWline2 指定した点までの直線 38. gwline GWline 2点を結ぶ直線 39. gwload GWload データの読み込み 96. gwloadbmp GWloadbmp ビットマップファイルの読み込み 74. gwloadcc GWloadcc カスタムカラーの復元 68. gwloadcmb GWloadcmb コンボ・ファイルの読み込み 85. gwmakebmp GWmakebmp ビットマップの作成 76. gwmode GWmode モード設定と問い合わせ 106. gwmouse GWmouse マウス 108. gwmove2 GWmove2 ペンの移動 37. gwncolor GWncolor 利用可能な色パレット数の取得 66. gwnext GWnext 次のウィンドウ 16. gwopen GWopen ウィンドウのオープン 2. gwopenx GWopenx ウィンドウのオープン 2. gwpause GWpause ポーズ 116. gwpie GWpie 扇形の描画 46. gwplot1 GWplot1 1次元配列のプロット 47. gwpolygon GWpolygon 多角形の描画 48. gwpolylin GWpolylin 折れ線の描画 49. gwport GWport ビューポートの設定(ワールド座標系) 11. gwprint GWprint 印刷 98. gwputbmp GWputbmp ビットマップの描画 80. gwputcmb GWputcmb コンボの描画 90. gwputmrk GWputmrk マーク描画 54. gwputsym GWputsym 記号の出力 33. gwputtxt GWputtxt 文字列(テキスト)の描画 30. gwpxlsiz GWpxlsiz ピクセル・サイズの取得 23. gwquit GWquit 終了 3. gwquitx GWquitx 終了 3. gwrect GWrect 四角形の描画 40. gwrefresh GWrefresh 画面の再描画 104. gwreset GWreset パラメータの再初期化 6. gwrrect GWrrect 角の丸い四角形の描画 42. gwsaveas GWsaveas データの保存 97. gwsavebmp GWsavebmp ビットマップファイルの保存 75. gwsavecc GWsavecc カスタムカラーの保存 67. gwsavecmb GWsavecmb コンボをフィルに保存 86. gwsavevp GWsavevp ビューポート情報の保存 13. gwselect GWselect ウィンドウを選択 17. gwselvp GWselvp ビューポートの選択 14. gwsetbk GWsetbk 背景の設定 101. gwsetbmp GWsetbmp ビットマップの属性設定 78. gwsetbrs GWsetbrs ブラシの指定 26. gwsetmrk GWsetmrk マークの指定 53. gwsetmsg GWsetmsg メッセージの表示 34. gwsetogn GWsetogn オブジェクト・グループ番号の設定 99. gwsetpen GWsetpen ペンの指定 24. gwsetpxl GWsetpxl ピクセルの設定 59. gwsetrgn GWsetrgn クリッピング領域の設定 58. gwsetsym GWsetsym 記号フォントの設定 31. gwsettxt GWsettxt テキスト用フォントの設定 28. gwsetxfrm GWsetxfrm 変換行列の設定 56. gwshowfr GWshowfr フレームの表示状態を設定 19. gwshowwn GWshowwn ウィンドウの表示状態を設定 18. gwsize GWsize 各種サイズの取得/設定 117. gwsleep2 GWsleep2 スリープ 2 114. gwsleep GWsleep スリープ 113. gwsrect GWsrect 塗りつぶされた四角形の描画 41. gwsysclr GWsysclr システムに設定されている色情報の取得 69. gwtclone GWTclone タートルを複製する 128. gwtgetcol GWTgetcol タートル:色の取得 135. gwtimer GWtimer インターバル・タイマー 109. gwtremove GWTremove タートルを取り除く 129. gwtsetcol GWTsetcol タートル:色の設定 134. gwtsetpen GWTsetpen タートル:ペンの設定 136. gwtspawn GWTspawn タートル:生成 123. gwversion GWversion バージョン番号の取得 120. gwvport GWvport ビューポートの設定 10. gwvwmod GWvwmod ビューモード 105. ipalette* GWipalette Windows パレット番号から論理色番号への変換 65. kbgetch* kbgetch コンソールでのキー・コードの取得 122. kbhit* kbhit コンソール・キーボード 121. kcolor* GWkcolor 絶対 COLORREF 値から論理色番号への変換 64. krgb* GWkrgb RGB(三原色)から論理色番号への変換 63. msgbox* GWmsgbox メッセージボックス 35. newpen なし ペンの色(Calcomp 系コマンド) 142. number なし 数値の表示(Calcomp 系コマンド) 144. plot なし ペンの移動/直線の描画(Calcomp 系コマンド) 140. plote なし 終了(Calcomp 系コマンド) 139. plots なし 初期化(Calcomp 系コマンド) 138. symbol なし 文字列の表示(Calcomp 系コマンド) 143. window なし ワールド座標系の設定(Calcomp 系コマンド) 141. ----------------------------------------------------------------------------- 最終更新日 2003/6/28