# GrWinC グラフィクス・ライブラリ

## Version 1.0.0

Copyright (C) 1998 - 2011 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
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. | gwpeekbmp | GWpeekbmp | ビットマップ・データの読み出し | 0
78. | gwpokebmp | GWpokebmp | ビットマップ・データの書き込み | 0
79. | gwfnt2bmp | GWfnt2bmp | フォントからビットマップへの変換 | 0
80. | gwsetbmp | GWsetbmp | ビットマップの属性設定 | 0
81. | gwgetbmp | GWgetbmp | ビットマップの属性取得 | 0
82. | gwputbmp | GWputbmp | ビットマップの描画 | 1
83. | gwcopybmp | GWcopybmp | 保存ビットマップのコピー登録 | 0
84. | gwdelbmp | GWdelbmp | ビットマップの登録削除 | 0
85. | gwcapimg | GWcapimg | 矩形領域の取り込み | 0
86. | gwclipimg | GWclipimg | 矩形領域のクリップボードへのコピー | 0
87. | gwloademf | GWloademf | EMFファイルの読み込み | 0
88. | gwsaveemf | GWsaveemf | EMF をフィルに保存 | 0
89. | gwemfmrk | GWemfmrk | マークを EMF として作成 | 0
90. | gwbeginemf | GWbeginemf | EMF の作成開始 | 0
91. | gwendemf | GWendemf | EMFの作成終了 | 0
92. | gwputemf | GWputemf | EMFの描画 | 1
93. | gwgetemf | GWgetemf | EMFの属性取得 | 0
94. | gwcopyemf | GWcopyemf | 保存 EMF のコピー登録 | 0
95. | gwdelemf | GWdelemf | EMFの登録削除 | 0
96. | gwinput | GWinput | 文字列の入力 | 0
97. | gwfiledlg | GWfiledlg | ダイアログボックスによるファイル名の取得 | 0
98. | gwload | GWload | データの読み込み | 0
99. | gwsaveas | GWsaveas | データの保存 | 0
100. | gwprint | GWprint | 印刷 | 0
101. | gwsetogn | GWsetogn | オブジェクト・グループ番号の設定 | 0
102. | gwanchor | GWanchor | アンカー | 1,-x
103. | gwsetbk | GWsetbk | 背景の設定 | x
104. | gwerase | GWerase | 図形の消去 | -x
105. | gwflush | GWflush | フラッシュ描画 | -x
106. | gwrefresh | GWrefresh | 画面の再描画 | 0
107. | gwvwmod | GWvwmod | ビューモード | 0
108. | gwmode | GWmode | モード設定と問い合わせ | 0
109. | gwkybrd | GWkybrd | キーボード・ステータス | 0
110. | gwmouse | GWmouse | マウス | 0
111. | gwtimer | GWtimer | インターバル・タイマー | 0
112. | gwevent | GWevent | イベント状態の取得 | 0
113. | gwidle | GWidle | アイドリング | 0
114. | gwidle2 | GWidle2 | アイドリング 2 | 0
115. | gwsleep | GWsleep | スリープ | 1
116. | gwsleep2 | GWsleep2 | スリープ 2 | 1
117. | gwctime | GWctime | 現在時刻の取得 | 0
118. | gwpause | GWpause | ポーズ | 0
119. | gwsize | GWsize | 各種サイズの取得/設定 | 0
120. | gwaspect* | GWaspect | アスペクト比の取得 | 0
121. | gwfmax* | GWfmax | 浮動小数点数の最大値 | 0
122. | gwversion | GWversion | バージョン番号の取得 | 0
123. | kbhit* | kbhit | コンソール・キーボード | 0
124. | kbgetch* | kbgetch | コンソールでのキー・コードの取得 | 0
125. | gwtspawn | GWTspawn | タートル：生成 | 0
126. | gwdtturn | GWTturn | タートル：進行方向の変更 | 1
126. | gwdtturn | GWDTturn | タートル：進行方向の変更 | 1
127. | gwdtforward | GWTforward | タートル：前進 | 1
127. | gwdtforward | GWDTforward | タートル：前進 | 1
128. | gwdtshift | GWTshift | タートル：相対移動 | 1
128. | gwdtshift | GWDTshift | タートル：相対移動 | 1
129. | gwdtmove2 | GWTmove2 | タートル：指定点への移動 | 1
129. | gwdtmove2 | GWDTmove2 | タートル：指定点への移動 | 1
130. | gwtclone | GWTclone | タートルを複製する | 0
131. | gwtremove | GWTremove | タートルを取り除く | 0
132. | gwdtsetpos | GWTsetpos | タートル位置設定 | 1
132. | gwdtsetpos | GWDTsetpos | タートル位置設定 | 1
133. | gwdtgetpos | GWTgetpos | タートル位置の取得 | 0
133. | gwdtgetpos | GWDTgetpos | タートル位置の取得 | 0
134. | gwdtsetdir | GWTsetdir | タートル：進行方向の設定 | 1
134. | gwdtsetdir | GWDTsetdir | タートル：進行方向の設定 | 1
135. | gwdtgetdir | GWTgetdir | タートル：進行方向の取得 | 0
135. | gwdtgetdir | GWDTgetdir | タートル：進行方向の取得 | 0
136. | gwtsetcol | GWTsetcol | タートル：色の設定 | 1
137. | gwtgetcol | GWTgetcol | タートル：色の取得 | 1
138. | gwtsetpen | GWTsetpen | タートル：ペンの設定 | 1
139. | gwdtsetmrk | GWTsetmrk | タートル：マーク設定 | 1
139. | gwdtsetmrk | GWDTsetmrk | タートル：マーク設定 | 1
140. | plots | なし | 初期化(Calcomp 系コマンド) | 0
141. | plote | なし | 終了(Calcomp 系コマンド) | 0
142. | plot | なし | ペンの移動/直線の描画(Calcomp 系コマンド) | 1
143. | window | なし | ワールド座標系の設定(Calcomp 系コマンド) | 0
144. | newpen | なし | ペンの色(Calcomp 系コマンド) | 1
145. | symbol | なし | 文字列の表示(Calcomp 系コマンド) | 1
146. | number | なし | 数値の表示(Calcomp 系コマンド) | 2
147. | 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 個のサブルーチン(#140〜#147)は Calcomp 系のサブルーチンを使用したプログラム用に，最低限の互換性確保のために用意されたコマンド群です。ただし，これらについては対応する C の関数はありません。

タートル・グラフィクスや Calcomp 系のルーチン群もすべて，内部的には GW***** のコマンド群と同等なので，それらを混在して利用しても何等問題ありません。 なお，'n' 欄の数字は各ルーチンの機能に対応するオブジェクト(図形データ)の数を示します． 保存されたオブジェクトは再描画に使用され， gwsaveas/GWsaveas と gwload/GWload でファイルに保存したりファイルから復元することができます．

以下では，[F] は Fortarn での定義部，[C] は C での定義部を表しています。 Fortran サブルーチンにおける第一引数 IRTN はリターン・コードで，とくに断られていないかぎり，失敗のときは 0，成功すれば 0 でない値が返ります。また，C の各関数の戻り値は IRTN と同じです．C の場合には，GWsize を除いて，出力変数に指定されているポインタ型の引数は，不要の場合に NULL とすることができます。

関数名からの検索には「索引」が利用できます。

## GrWinC ライブラリ・ルーチン

1. 初期化

    [F] SUBROUTINE GWINIT(IRTN)
        INTEGER,INTENT(OUT) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NW, IW, IH, IFC, IBC, M
        CHARACTER,INTENT(IN) ::  FN*(*)

    [C] int GWopenx(int NW, int IW, int IH, int IFC, int IBC, int M, char *FN, int l);
    (説明)
       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 = グラフィクス・データを保存する場合のデフォルトのファイル名
        l = FN に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0 を
    	    指定する。 ([C])
    (出力変数)
     IRTN = 実際に開かれたウィンドウ番号 ( > 0 ), 失敗のときは 0

[TOC] [INDEX]
3. 終了

    [F] SUBROUTINE GWQUIT(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWquit(void);
    (説明)
       終了ダイアログを表示し，応答を待ってから，アプリケーションが開いたすべての
       ウィンドウを閉じて、終了処理を行う。他に開かれているウィンドウが無い場合には
       メイン(フレーム)・ウィンドウも閉じる。次の GWquitx(1) と同じ。

    [F] SUBROUTINE GWQUITX(IRTN, MQ)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: MQ

    [C] int GWquitx(int MQ);
    (説明)
       アプリケーションが開いたすべてのウィンドウを閉じ、終了処理を行う。引数の値に
       よって終了ダイアログの制御を行う。
    (入力変数)
       MQ = 0 :   終了ダイアログを出さずに直ちに終了処理を行う。
            他:   終了ダイアログを表示してから，入力を待って終了処理を行う。
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
4. ウィンドウを閉じないで終了

    [F] SUBROUTINE GWLEAVE(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWleave(void);
    (説明)
       ウィンドウを閉じないで、終了処理を行う。
    (入力変数)
       なし

    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
5. ジョイン（追加描画の開始）

    [F] SUBROUTINE GWJOIN(IRTN, NW, IN, IS, JND)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NW, IN, IS
        CHARACTER :: JND*(*)

    [C] int GWjoin(int NW, int IN, int IS, char *JND, int l);
    (説明)
       入力パラメータ (NW, IN) で指定されたウィンドウに接続して追加描画を行うための
       初期化（ジョイン）を行う。入力パラメータ IN でメイン・ウィンドウ（grwnd.exe）
       番号を，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.exe）番号 (0,1,2,3,...)
        l = 出力用文字列変数 JND のバイト長 ([C])
    (出力変数)
      JND = 'ジョイン'に成功した場合は，メイン・ウィンドウ番号，ウィンドウ番号，ア
            プリケーション名をカンマで区切った文字列。失敗した場合は空の文字列。
     IRTN = 実際に開かれたウィンドウ番号 ( > 0 ), 失敗のときは 0

[TOC] [INDEX]
6. パラメータの再初期化

    [F] SUBROUTINE GWRESET(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWreset(void);
    (説明)
       現在のウィンドウの各種パラメータをデフォルト値に戻す。
    (入力変数)
       なし

    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
7. ウィンドウのクローズ

    [F] SUBROUTINE GWCLOSE(IRTN, NW)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NW

    [C] int GWclose(int NW);
    (説明)
       指定したグラフィクス・ウィンドウを閉じる。
    (入力変数)
       NW > 0: 指定した番号のウィンドウをクローズする
          = 0: カレント・ウィンドウをクローズする
          < 0: アプリケーションが開いたすべてのウィンドウを閉じる
    (出力変数)
     IRTN = カレント・ウィンドウ番号，開かれているウィンドウが無ければ 0

[TOC] [INDEX]
8. ワールド座標系の設定

    [F] SUBROUTINE GWINDOW(IRTN, X1,Y1,X2,Y2)
        INTEGER,INTENT(OUT) :: IRTN
        REAL,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        REAL,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        REAL,INTENT(IN) ::  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,INTENT(OUT) :: IRTN
        REAL,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        REAL,INTENT(OUT) ::  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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IVP

    [C] int GWsavevp(int IVP);
    (説明)
      現在のビューポート情報を指定したビューポート番号で保存する。保存されたビュー
      ポート情報は GWselvp で呼び出すことができる。
    (入力変数)
      IVP = ビューポート番号 ( > 0 )
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
14. ビューポートの選択

    [F] SUBROUTINE GWSELVP(IRTN, IVP)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IVP

    [C] int GWselvp(int IVP);
    (説明)
      ビューポートを選択する。指定されたビューポート番号 IVP が未定義の場合は何も
      しない。  成功すると，ビューポートと対応するワールド座標系が復元される。
      ビューポート番号 IVP = 0 にはデフォルトの設定が保存されている。
    (入力変数)
      IVP = ビューポート番号
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
15. 最初のウィンドウ

    [F] SUBROUTINE GWFIRST(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWfirst(void);
    (説明)
       このアプリケーションがオープンした最初のウィンドウの番号を取得する。

    (入力変数)
       なし
    (出力変数)
     IRTN = 最初のウィンドウのウィンドウ番号, 失敗のときは 0

[TOC] [INDEX]
16. 次のウィンドウ

    [F] SUBROUTINE GWNEXT(IRTN, NW)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NW

    [C] int GWselect(int NW);
    (説明)
       指定されたウィンドウ番号のウィンドウをカレント・ウィンドウに設定する。
    (入力変数)
       NW = ウィンドウ番号 (1,2,3,...)
    (出力変数)
     IRTN = カレント・ウィンドウ番号

[TOC] [INDEX]
18. ウィンドウの表示状態を設定

    [F] SUBROUTINE GWSHOWWN(IRTN, NW, IS)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: 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,INTENT(IN) :: W, H
        INTEGER,INTENT(OUT) :: IRTN, IU, IV

    [C] int GWldcsiz(float W, float H, int *IU, int *IV);
    (説明)
        ワールド座標系での幅 W と高さ H を論理デバイス座標系へ変換する。
    (入力変数)
        W = ワールド座標系での幅
        H = ワールド座標系での高さ
    (出力変数)
       IU = 論理デバイス座標系での幅
       IV = 論理デバイス座標系での高さ
     IRTN = リターン・コード

[TOC] [INDEX]
23. ピクセル・サイズの取得

    [F] SUBROUTINE GWPXLSIZ(IRTN, W, H)
        REAL,INTENT(OUT) :: W, H
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWpxlsiz(float *W, float *H);
    (説明)
        使用中のディスプレイ上の1ピクセルに対応するワールド座標系での幅 W と高さ H
        の現在値を取得する。得られる値は現在の表示ウィンドウのサイズや表示モードに
        依存する。
    (入力変数)
        なし
    (出力変数)
        W = ワールド座標系での幅
        H = ワールド座標系での高さ
     IRTN = リターン・コード

[TOC] [INDEX]
24. ペンの指定

    [F] SUBROUTINE GWSETPEN(IRTN, IPC, IPS, IPW, MX)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IPC, IPS, IPW, MX

    [C] int GWsetpen(int IPC, int IPS, int IPW, int MX);
    (説明)
       カレント・ウィンドウで使用するペンの色，線種，線幅，混合モードを指定する。
       実線(IPS=1)以外の線種を使用する場合は線幅は１に設定される。混合モードによ
       り，ペンやブラシの色と、すでに描かれている線などとの色の混合方法を定める。
       MX > 15 の場合は MX-16 の値をそのまま "２元 ROP コード[W]" として使用する。
       原則として、値が負であればその項目は変更されないが，IPC については -1 以外の
       負の値には特別の意味があるので注意。すべての入力変数が -1 の場合にはペン位置
       が初期化される(GWLINE2 参照)。
    (入力変数)
      IPC = 論理色番号
             -1 の場合は変更されない
             その他の場合については GWCOLOR の項参照。

      IPS = 線種
            0: GWL_NULL       (透明)
            1: GWL_SOLID      (実線)
            2: GWL_DASH       (破線)
            3: GWL_DOT        (点線)
            4: GWL_DASHDOT    (１点鎖線)
            5: GWL_DASHDOTDOT (２点鎖線)

      IPW = 線幅を論理デバイス座標系で指定する。0 を指定するとデバイスによらず
            1 ピクセル幅になる。

       MX = 混合モード
            0:	GWX_NOP
            1:	GWX_BLACK
            2:	GWX_WHITE
            3:	GWX_NOT
            4:	GWX_COPYPEN
            5:	GWX_MASKPEN
            6:	GWX_MERGEPEN
            7:	GWX_XORPEN
            8:	GWX_NOTCOPYPEN
            9:	GWX_NOTMASKPEN
           10:	GWX_NOTMERGEPEN
           11:	GWX_NOTXORPEN
           12:	GWX_MASKNOTPEN
           13:	GWX_MASKPENNOT
           14:	GWX_MERGENOTPEN
           15:	GWX_MERGEPENNOT
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
25. ペン属性の取得

    [F] SUBROUTINE GWGETPEN(IRTN, IPC, IPS, IPW, MX)
        INTEGER,INTENT(OUT) :: 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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IBC, IBS, IBH

    [C] int GWsetbrs(int IBC, int IBS, int IBH);
    (説明)
       カレント・ウィンドウで使用するブラシの色，種類，ハッチパターンを指定する。
       設定値が負であればその項目は変更されない。IBC の場合には -1 以外の負の数値に
       は別の意味があるので注意。
    (入力変数)
      IBC = 論理色番号
             -1 の場合は変更されない
             その他の場合については GWCOLOR の項参照。

      IBS = 0: GWB_NULL           中空のブラシ
            1: GWB_SOLID          純色のブラシ
            2: GWB_HATCHED        ハッチ ブラシ
            3: GWB_BSPATTERN      パターン ブラシ(予定)
            4: GWB_DIBPATTERN     パターン ブラシ(予定)
            5: GWB_DIBPATTERNPT   パターン ブラシ(予定)

      IBH = 0: GWB_NULL           中空のブラシ
            1: GWB_HORIZONTAL     水平のハッチ
            2: GWB_VERTICAL       垂直のハッチ
            3: GWB_FDIAGONAL      左上から右下への 45 度のハッチ
            4: GWB_BDIAGONAL      左下から右上への 45 度のハッチ
            5: GWB_CROSS          水平、垂直の格子状のハッチ
            6: GWB_DIAGCROSS      45 度の格子状のハッチ
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
27. ブラシ属性の取得

    [F] SUBROUTINE GWGETBRS(IRTN, IBC, IBS, IBH)
        INTEGER,INTENT(OUT) :: 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)
        REAL,INTENT(IN) ::  H, A
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IO, K, KB
        CHARACTER,INTENT(IN) ::  FACE*(*)

    [C] int GWsettxt(float H, float A, int IO, int K, int KB, char *FACE, int l);
    (説明)
       テキスト用フォントの属性を設定する。使用可能なフォントは TrueType フォントの
       み。フォント名が空白の場合はデフォールト名または前回使用されたフォントが使わ
       れる。フォント名が '*' の場合や、設定した属性でフォントの生成に失敗した場合
       には，フォント・ダイアログが呼び出される。
    (入力変数)
          H = フォントの高さ(ワールド座標系)
              0 の場合はデフォールト値を使う
              負の場合は現在の値を使う
          A = フォントの傾き角(deg/360，反時計回り; |A| < 1.0)
              |A| >= 1.0 の場合は現在の値を使う
         IO = 基準点の位置を指定する
            = 0: GWO_CENTER      (中央)
            = 1: GWO_BOTTOMLEFT  (左下; デフォルト)
            = 2: GWO_BOTTOMRIGHT (右下)
            = 3: GWO_TOPRIGHT    (右上)
            = 4: GWO_TOPLEFT     (左上)
            = 5: GWO_LEFT        (左)
            = 6: GWO_BOTTOM      (下)
            = 7: GWO_RIGHT       (右)
            = 8: GWO_TOP         (上)
          K = 文字の論理色番号(GWCOLOR の項参照)
              -1 の場合は現在値を使う
         KB = 文字の背景色の論理色番号(GWCOLOR の項参照)
              -1 の場合は現在値を使う
            = -100: 透明(default)
       FACE = TrueType フォント名
          l = FACE に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0 を
    	      指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
29. 文字列サイズの取得

    [F] SUBROUTINE GWGETTXT(IRTN, W, H, X, Y, TXT)
        REAL,INTENT(OUT) :: W, H, X, Y
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TXT*(*)

    [C] int GWgettxt(float *W, float *H, float *X, float *Y, char *TXT, int l);
    (説明)
        文字列のワールド座標系での幅と高さをを取得する。
    (入力変数)
       TXT = 文字列
         l = TXT に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード
         W = 文字列の幅(ワールド座標系)
         H = 文字列の高さ(ワールド座標系)
         X = 基準点のオフセットのX座標(ワールド座標系)
         Y = 基準点のオフセットのY座標(ワールド座標系)

[TOC] [INDEX]
30. 文字列(テキスト)の描画

    [F] SUBROUTINE GWPUTTXT(IRTN, X, Y, TXT)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TXT*(*)

    [C] int GWputtxt(float X, float Y, char *TXT, int l);
    (説明)
        グラフィクス・ウィンドウ上に文字列を出力する。フォントの種類は GWSETTXT
        または，メニューバーの [Options] => [Font] で変更可。文字列の幅は内容とフォ
        ントの種類に依存するため設定できない。例えば GWFMAX() を使うなどして，文字
        列の左下の点の座標に，用紙 (GWINDOW 参照) の範囲から大きく外れた点を指定す
        ると，文字列はその前の出力文字列の直後に出力される。
    (入力変数)
         X = 基準点の X 座標(ワールド座標系)
         Y = 基準点の Y 座標(ワールド座標系)
       TXT = 出力文字列
         l = TXT に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
31. 記号フォントの設定

    [F] SUBROUTINE GWSETSYM(IRTN, H, A, IO, K, KB, FACE)
        REAL,INTENT(IN) :: H, A
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IO, K, KB
        CHARACTER,INTENT(IN) :: FACE*(*)

    [C] int GWsetsym(float H, float A, int IO, int K, int KB, char *FACE, int l);
    (説明)
       記号フォントの属性を設定する。使用可能なフォントは TrueType フォントのみ。
       フォント名が空白の場合はデフォールト名または前回使用されたフォントが使わ
       れる。設定した属性でフォントの生成に失敗した場合には，フォント・ダイアログが
       呼び出される。
    (入力変数)
        H = フォントの高さ(ワールド座標系)
            0 の場合はデフォールト値を使う
            負の場合は現在の値を使う
        A = フォントの傾き角(deg/360，反時計回り; |A| < 1.0)
            |A| >= 1.0 の場合は現在の値を使う
       IO = 基準点の位置を指定する
          = 0: GWO_CENTER      (中央：デフォルト)
          = 1: GWO_BOTTOMLEFT  (左下)
          = 2: GWO_BOTTOMRIGHT (右下)
          = 3: GWO_TOPRIGHT    (右上)
          = 4: GWO_TOPLEFT     (左上)
          = 5: GWO_LEFT        (左)
          = 6: GWO_BOTTOM      (下)
          = 7: GWO_RIGHT       (右)
          = 8: GWO_TOP         (上)
        K = 文字の論理色番号(GWCOLOR の項参照)
            -1 の場合は現在値を使う
       KB = 文字の背景色の論理色番号(GWCOLOR の項参照)
            -1 の場合は現在値を使う
          = -100: 透明(default)
     FACE = TrueType フォント名
        l = FACE に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0 を
            指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
32. 記号のサイズ取得

    [F] SUBROUTINE GWGETSYM(IRTN, W, H, IC)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IC
        REAL,INTENT(OUT) ::  W, H

    [C] int GWgetsym(float *W, float *H, int IC);
    (説明)
        記号のワールド座標系での幅と高さをを取得する。
    (入力変数)
        IC = 記号コード(0〜255)
    (出力変数)
      IRTN = リターン・コード
         W = 記号の幅(ワールド座標系)
         H = 記号の高さ(ワールド座標系)

[TOC] [INDEX]
33. 記号の出力

    [F] SUBROUTINE GWPUTSYM(IRTN, X, Y, IC)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IC

    [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,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TXT*(*)

    [C] int GWsetmsg(char *TXT, int l);
    (説明)
        ステータスバーにメッセージを表示する。
    (入力変数)
       TXT = メッセージの文字列
         l = TXT に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
35. メッセージボックス

    [F] FUNCTION MSGBOX(TXT)
        INTEGER :: MSGBOX
        CHARACTER,INTENT(IN) :: TXT*(*)

    [C] int GWmsgbox(char *TXT, int l);
    (説明)
        メッセージボックスを表示し，どのボタンが押されたかの値を得る。
    (入力変数)
       TXT = メッセージの文字列
         l = TXT に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
       なし
    (返される値)
        1: YES ボタンが押された場合
       -1: NO ボタンが押された場合
        0: その他

[TOC] [INDEX]
36. ペン位置

    [F] SUBROUTINE GWGETPOS(IRTN, X, Y)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWgetpos(float *X, float *Y);
    (説明)
       現在のペン位置 (X, Y) をワールド座標系で返す。
    (入力変数)
       なし
    (出力変数)
        X = 点の X 座標(ワールド座標系)
        Y = 点の Y 座標(ワールド座標系)
     IRTN = リターン・コード

[TOC] [INDEX]
37. ペンの移動

    [F] SUBROUTINE GWMOVE2(IRTN, X, Y)
        INTEGER,INTENT(OUT) :: IRTN
        REAL,INTENT(IN) :: 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)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWline2(float X, float Y);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，現在のペン位置と指定されたワールド座標
       系の点 (X, Y) を結ぶ直線を描き，ペン位置を更新する。ペン位置が未定義(初期状
       態)の場合は，ペン位置を更新するだけで直線は描かれない。ペン位置は GWSETPEN
       で初期化できる。
    (入力変数)
        X = 点の X 座標(ワールド座標系)
        Y = 点の Y 座標(ワールド座標系)
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
39. ２点を結ぶ直線

    [F] SUBROUTINE GWLINE(IRTN, X1, Y1, X2, Y2)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN

    [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)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWrect(float X1, float Y1, float X2, float Y2);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，ワールド座標系の点１ (X1, Y1) と点２
       (X2, Y2) を対角線とする四角形を描く。このとき現在のブラシ (GWSETBRS 参照) で
       内部が塗られる。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の Y 座標(ワールド座標系)
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
41. 塗りつぶされた四角形の描画

    [F] SUBROUTINE GWSRECT(IRTN, X1, Y1, X2, Y2, K)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: K

    [C] int GWsrect(float X1, float Y1, float X2, float Y2, int K);
    (説明)
       ワールド座標系の点１ (X1, Y1) と点２ (X2, Y2) を対角線とする四角形の内部を
       論理色番号 K で塗りつぶす。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の Y 座標(ワールド座標系)
        K = 論理色番号
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
42. 角の丸い四角形の描画

    [F] SUBROUTINE GWRRECT(IRTN, X1, Y1, X2, Y2, W, H)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2, W, H
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWrrect(float X1, float Y1, float X2, float Y2, float W, float H);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，ワールド座標系の点１ (X1, Y1) と点２
       (X2, Y2) を対角線とする四角形に内接する角の丸い四角形を描く。 このとき現在の
       ブラシ (GWSETBRS 参照) で内部が塗られる。丸い角を描くための楕円の幅と高さは
       (W, H) で指定する。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の Y 座標(ワールド座標系)
        W = 角の楕円の幅(ワールド座標系)
        H = 角の楕円の高さ(ワールド座標系)
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
43. 楕円の描画

    [F] SUBROUTINE GWELLIPSE(IRTN, X1, Y1, X2, Y2)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWellipse(float X1, float Y1, float X2, float Y2);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，ワールド座標系の点１ (X1, Y1) と点２
       (X2, Y2) を対角線とする四角形に内接する楕円を描く。このとき現在のブラシ
       (GWSETBRS 参照) で内部が塗られる。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の Y 座標(ワールド座標系)
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
44. 弧の描画

    [F] SUBROUTINE GWARC(IRTN, X1, Y1, X2, Y2, A, AW)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2, A, AW
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWarc(float X1, float Y1, float X2, float Y2, float A, float AW);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，ワールド座標系の点１ (X1, Y1) と点２
       (X2, Y2) を対角線とする四角形に内接する楕円の弧を描く。塗りつぶしは行わな
       い。弧は，角度の単位を "度/360" とし，反時計回りを正にとって，水平方向から
       測った角度が A の点から，角度が A + AW の点まで描画される。A と AW について
       は，値が -1.0 以下の場合にはデフォルト値が用いられる。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の 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)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2, A, AW
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWchord(float X1, float Y1, float X2, float Y2, float A, float AW);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，ワールド座標系の点１ (X1, Y1) と点２
       (X2, Y2) を対角線とする四角形に内接する楕円の弧とその両端を結ぶ弦を描く。こ
       のとき現在のブラシ (GWSETBRS 参照) で内部が塗られる。弧は，角度の単位を
       "度/360" とし，反時計回りを正にとって，水平方向から測った角度が A の点から，
       角度が A + AW の点まで描画される。A と AW については，値が -1.0 以下の場合に
       はデフォルト値が用いられる。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の 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)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2, A, AW
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWpie(float X1, float Y1, float X2, float Y2, float A, float AW);
    (説明)
       現在のペン (GWSETPEN 参照) を使って，ワールド座標系の点１ (X1, Y1) と点２
       (X2, Y2) を対角線とする四角形に内接する扇形を反時計回りに描く。このとき現在
       のブラシ (GWSETBRS 参照) で内部が塗られる。扇形は、楕円の弧と、2 つの端点そ
       れぞれから楕円の中心に引いた直線から構成される図形。弧は，角度の単位を
       "度/360" とし，反時計回りを正にとって，水平方向から測った角度が A の点から，
       角度が A + AW の点まで描画される。A と AW については，値が -1.0 以下の場合に
       はデフォルト値が用いられる。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の 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)
        REAL,INTENT(IN) :: P1, PN, S, O, A, B, ARRY(N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: M, 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 (GWPUTEMF 参照) パラメータ
         A = 線形変換の係数
         B = 線形変換の付加定数
      ARRY = プロットする1次元配列
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
48. 多角形の描画

    [F] SUBROUTINE GWPOLYGON(IRTN, POINTS, N, MF)
        REAL,INTENT(IN) :: POINTS(2,N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: N, MF

    [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)
        REAL,INTENT(IN) :: POINTS(2,N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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)
        REAL,INTENT(IN) :: POINTS(2,N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWflood(float X, float Y);
    (説明)
       (X,Y) で指定された塗りつぶし開始点から，開始点を含み，開始点と異なる色を境界
       とする領域内部を現在のブラシで塗りつぶす [このルーチンは非常に低速で，多くの
       プリンタはこの機能をサポートしていないので，できるだけ使わない方がよい]。
    (入力変数)
       X = 塗りつぶし開始点の X 座標(ワールド座標系)
       Y = 塗りつぶし開始点の Y 座標(ワールド座標系)
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
52. ウィンドウ画面の消去

    [F] SUBROUTINE GWCLEAR(IRTN, K)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: K

    [C] int GWclear(int K);
    (説明)
       指定された色で現在のビューポートをを塗りつぶす。
    (入力変数)
        K = 論理色番号(GWCOLOR の項参照)
            -1 の場合は画面消去とともにすべてのオブジェクトもメモリから消去する
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
53. マークの指定

    [F] SUBROUTINE GWSETMRK(IRTN, MT, S, K, KB, MX)
        REAL,INTENT(IN) :: S
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: MT, K, KB, MX

    [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)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN

    [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)
        REAL,INTENT(OUT) :: S
        INTEGER,INTENT(OUT) :: IRTN, MT, K, KB, MX

    [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)
        REAL,INTENT(IN) :: XFRM(6)
        INTEGER,INTENT(OUT) :: IRTN

    [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)
        REAL,INTENT(OUT) :: XFRM(6)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWgetxfrm(float *XFRM);
    (説明)
       現在の変換行列の成分を取得する。変換行列はビットマップやマークの回転や変形
       に使用される(GWGETXFRM 参照)。
    (入力変数)
       なし
    (出力変数)
       XFRM = 変換行列の各成分(GWGETXFRM 参照)
       IRTN = リターン・コード

[TOC] [INDEX]
58. クリッピング領域の設定

    [F] SUBROUTINE GWSETRGN(IRTN, X1, Y1, X2, Y2, M)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: M

    [C] int GWsetrgn(float X1, float Y1, float X2, float Y2, int M);
    (説明)
       現在のクリッピング領域とワールド座標系の点１ (X1, Y1) と点２ (X2, Y2) を対角
       とする四角形を M で指定されるモードで結合し，新たなクリッピング領域とする。
       M < 0 または M > 4 で，X1 = X2 または Y1 = Y2 の場合には，クリッピングは解除
       される。
    (入力変数)
       X1 = 点１の X 座標(ワールド座標系)
       Y1 = 点１の Y 座標(ワールド座標系)
       X2 = 点２の X 座標(ワールド座標系)
       Y2 = 点２の Y 座標(ワールド座標系)
        M = 1: AND
            2: OR
            3: DIFF
            4: XOR
           他: COPY

    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
59. ピクセルの設定

    [F] SUBROUTINE GWSETPXL(IRTN, X, Y, K)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: K

    [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)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN

    [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,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: K, IDST

    [C] int GWcolor(int K, int IDST);
    (説明)
       論理色番号 K で指定された色を IDST に設定する。K = -1 の場合は「色の設定」ダ
       イアログボックスで選ばれた色が設定される。論理色番号とは，以下に定義されてい
       る各色に対応づけられた番号のこと。

        ［論理色番号］: 意味
                0..19 : Windows 標準パレット
                    0 : GWC_BLACK       (黒)
                    1 : GWC_DARKRED     (栗色)
                    2 : GWC_DARKGREEN   (暗い緑)
                    3 : GWC_DARKYELLOW  (オリーブ)
                    4 : GWC_DARKBLUE    (濃紺)
                    5 : GWC_DARKMAGENTA (紫)
                    6 : GWC_DARKCYAN    (緑青)
                    7 : GWC_LIGHTGRAY   (灰色)
                    8 : GWC_MONEYGREEN  (明るい緑)
                    9 : GWC_SKYBLUE     (薄い水色)
                   10 : GWC_CREAM       (薄い灰色)
                   11 : GWC_MEDIUMGRAY  (青灰色)
                   12 : GWC_DARKGRAY    (濃い灰色)
                   13 : GWC_RED         (赤)
                   14 : GWC_GREEN       (緑)
                   15 : GWC_YELLOW      (黄)
                   16 : GWC_BLUE        (青)
                   17 : GWC_MAGENTA     (赤紫)
                   18 : GWC_CYAN        (水色)
                   19 : GWC_WHITE       (白)
               20..35 : 「色の設定」ダイアログボックスの「作成した色」(0..15)
        0x02000000
         ..0x02ffffff :  相対 COLORREF 値
                   -1 : 「色の設定」ダイアログボックスで選択された色
                   -2 : GWC_FGCOLOR     (現在の前景色)
                   -3 : GWC_BKCOLOR     (現在の背景色)
                   -4 : GWC_PENCOLOR    (現在のペンの色)
                   -5 : GWC_BRUSHCOLOR  (現在のブラシの色)
                   -6 : GWC_MARKCOLOR   (現在のマークの色)
                   -7 : GWC_MARKBKCOLOR (現在のマークの背景色)
                   -8 : GWC_TEXTCOLOR   (現在のテキストの色)
                   -9 : GWC_TEXTBKCOLOR (現在のテキストの背景色)
                  -10 : GWC_SYMCOLOR    (現在の記号の色)
                  -11 : GWC_SYMBKCOLOR  (現在の記号の背景色)
                  -12 : GWC_PXLCOLOR    (現在のピクセル色)
                 -100 : GWC_TRANSPARENT (透明：背景色用)
               その他 : 「色の設定」ダイアログボックスで選択された色
    (入力変数)
           K = 論理色番号
        IDST = 設定先
               1: GWD_FGCOLOR     (前景色)
               2: GWD_BKCOLOR     (背景色)
               3: GWD_PENCOLOR    (ペンの色)
               4: GWD_BRUSHCOLOR  (ブラシの色)
               5: GWD_MARKCOLOR   (マークの色)
               6: GWD_MARKBKCOLOR (マークの背景色)
               7: GWD_TEXTCOLOR   (テキストの色)
               8: GWD_TEXTBKCOLOR (テキストの背景色)
               9: GWD_SYMCOLOR    (記号の色)
              10: GWD_SYMBKCOLOR  (記号の背景色)
              11: GWD_PXLCOLOR    (ピクセル色)
          20..35: 「色の設定」ダイアログボックスの「作成した色」(0..15)
          その他: 設定しない
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
62. 論理色番号をRGB(三原色)に変換

    [F] SUBROUTINE GWGETRGB(IRTN, K, IR, IG, IB)
        INTEGER,INTENT(OUT) :: IRTN, IR, IG, IB
        INTEGER,INTENT(IN) :: K

    [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] FUNCTION KRGB(IR, IG, IB)
        INTEGER KRGB
        INTEGER,INTENT(IN) :: 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] FUNCTION KCOLOR(IC)
        INTEGER KCOLOR
        INTEGER,INTENT(IN) :: IC

    [C] int GWkcolor(int IC);
    (説明)
       COLORREF 値を論理色番号に変換するために使用する。COLORREF 値とは Windows で
       使用されている，色の内部表現のこと。詳しくは，Windows 関係の資料参照。
    (入力変数)
      IC = 色の COLORREF 値
    (出力変数)
       なし
    (返される値)
        論理色番号( GWCOLOR 参照)

[TOC] [INDEX]
65. Windows パレット番号から論理色番号への変換

    [F] FUNCTION IPALETTE(IP)
        INTEGER IPALETTE
        INTEGER,INTENT(IN) :: 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,INTENT(OUT) :: IRTN

    [C] int GWncolor(void);
    (説明)
       利用可能な色パレット数 = (最終パレット番号＋１) を取得する。このバージョンで
       は利用可能な色パレット数は 36 で固定。パレット番号 0..19 は Windows の標準色
       パレットで，設定値は変更できない(0 = 黒, 19 = 白)。パレット番号 20..35 は色
       の設定」ダイアログボックスで変更可(GWCOLOR の項参照)。
    (入力変数)
       なし
    (出力変数)
       IRTN = 36 = (最終パレット番号＋１)

[TOC] [INDEX]
67. カスタムカラーの保存

    [F] SUBROUTINE GWSAVECC(IRTN, FN)
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWsavecc(char *FN, int l);
    (説明)
       カスタムカラーをファイルに保存する。
    (入力変数)
      FN = ファイル名
       l = FN に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
           を指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
68. カスタムカラーの復元

    [F] SUBROUTINE GWLOADCC(IRTN, FN)
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWloadcc(char *FN, int l);
    (説明)
       カスタムカラーをファイルから復元する。カスタムカラーが格納されているファイル
       の書式は，各行について COLORREF 値を 0x02XXXXXX の形で指定したもの 16 行から
       なる(XXXXXX は 16 進数 6 桁)。GWSAVECC で作成したものはそのまま読むことがで
       きる。
    (入力変数)
      FN = ファイル名
       l = FN に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
           を指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
69. システムに設定されている色情報の取得

    [F] SUBROUTINE GWSYSCLR(IRTN, IDX)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IDX

    [C] int GWsysclr(int IDX);
    (説明)
       IDX で指定された色情報 (CORORREF 値) を取得する。詳しくは Win32 API について
       の説明がある資料で， GetSysColor() の項目を参照してください。
    (入力変数)
      IDX = 0: GWS_SCROLLBAR
            1: GWS_BACKGROUND
            2: GWS_ACTIVECAPTION
            3: GWS_INACTIVECAPTION
            4: GWS_MENU
            5: GWS_WINDOW
            6: GWS_WINDOWFRAME
            7: GWS_MENUTEXT
            8: GWS_WINDOWTEXT
            9: GWS_CAPTIONTEXT
           10: GWS_ACTIVEBORDER
           11: GWS_INACTIVEBORDER
           12: GWS_APPWORKSPACE
           13: GWS_HIGHLIGHT
           14: GWS_HIGHLIGHTTEXT
           15: GWS_BTNFACE
           16: GWS_BTNSHADOW
           17: GWS_GRAYTEXT
           18: GWS_BTNTEXT
           19: GWS_INACTIVECAPTIONTEXT
           20: GWS_BTNHIGHLIGHT

    (出力変数)
      IRTN = CORORREF 値 (Windows 関係の資料参照)

[TOC] [INDEX]
70. マウスによる点座標の取得

    [F] SUBROUTINE GWCAPPNT(IRTN, X, Y, TEXT)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TEXT*(*)

    [C] int GWcappnt(float *X, float *Y, char *TEXT, int l);
    (説明)
       マウスの左ボタンが押されるまで待ち，その点の座標と論理色番号 ( GWCOLOR 参照)
       を返す。
    (入力変数)
       TEXT = ステータスバーに表示する文字列
    (出力変数)
     IRTN = 論理色番号 (-1: 失敗の場合)
        X = マウスの左ボタンが押された点の X 座標(ワールド座標系)
        Y = マウスの左ボタンが押された点の Y 座標(ワールド座標系)

[TOC] [INDEX]
71. マウスによるベクトルの取得

    [F] SUBROUTINE GWCAPVEC(IRTN, X1, Y1, X2, Y2, TEXT)
        REAL,INTENT(IN) :: X1, Y1
        REAL,INTENT(OUT) :: X2, Y2
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TEXT*(*)

    [C] int GWcapvec(float X1, float Y1, float *X2, float *Y2, char *TEXT, int l);
    (説明)
       ベクトルの始点を与えて，マウスのボタンが押されるまで待ち，その点の座標を返
       す。終点が確定するまで，始点と現在のマウスポインタを結ぶ線分が表示される。
    (入力変数)
       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)
        REAL,INTENT(OUT) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TEXT*(*)

    [C] int GWcaplin(float *X1, float *Y1, float *X2, float *Y2, char *TEXT, int l);
    (説明)
       マウスがドラッグされるまで待ち，ドラッグ開始点と終了点の座標を返す。ドラッグ
       中はドラッグ開始点と現在のマウスポインタを結ぶ線分が表示される。また，ドラッ
       グ中に右ボタンを押せばドラッグのやり直しができる。
    (入力変数)
       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)
        REAL,INTENT(OUT) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TEXT*(*)

    [C] int GWcaprect(float *X1, float *Y1, float *X2, float *Y2, char *TEXT, int l);
    (説明)
       マウスがドラッグされ，右ボタンが押されるまで待ち，ドラッグ開始点と終了点の
       座標を返す。マウスをドラッグすると矩形領域が示されるが，右ボタンが押される
       までは確定しないので，矩形の隅をドラッグすることで選択領域を変更できる。
       また，ドラッグ中に右ボタンを押せばドラッグのやり直しができる。
    (入力変数)
       TEXT = ステータスバーに表示する文字列
    (出力変数)
     IRTN != 0: 正常終了
           = 0: キャンセル，他
        X1 = ドラッグ開始点の X 座標(ワールド座標系)
        Y1 = ドラッグ開始点の Y 座標(ワールド座標系)
        X2 = ドラッグ終了点の X 座標(ワールド座標系)
        Y2 = ドラッグ終了点の Y 座標(ワールド座標系)
      IRTN = リターン・コード

[TOC] [INDEX]
74. ビットマップファイルの読み込み

    [F] SUBROUTINE GWLOADBMP(IRTN, NB, FN)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWloadbmp(int NB, char *FN, int l);
    (説明)
        ビットマップファイル(*.bmp)を読み込み，ビットマップ番号 NB に登録する。一旦
        登録されたビットマップはビットマップ番号により何度でも利用することができる。
        ビットマップの登録数に上限は設けていないないが,上限はメモリー等，システム・
        リーソースの量に依存する。システム・リーソースを使い切ったときの動作につい
        てはほとんどチェックを行っていないので要注意。
    (入力変数)
        NB = ビットマップ番号(1〜): 読み込んだビットマップを保存する配列の要素番号。
             NB = 0 とすると未使用の配列要素が使われる。
        FN = ビットマップファイル名(ビットマップファイルは実行ファイルと同じディレ
             クトリに置くか，フルパスで指定しなければならない)
         l = FN に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
      IRTN = 実際にビットマップを保存した配列要素番号。失敗したときは 0 を返す。

[TOC] [INDEX]
75. ビットマップファイルの保存

    [F] SUBROUTINE GWSAVEBMP(IRTN, NB, FN)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWsavebmp(int NB, char *FN, int l);
    (説明)
        番号 NB のビットマップをファイルに保存する。
    (入力変数)
        NB = ビットマップ番号
        FN = ビットマップファイル名
         l = FN に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
76. ビットマップの作成

    [F] SUBROUTINE GWMAKEBMP(IRTN, NB, IW, IH, IBC, IBITS)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB, IW, IH, IBC, 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 GWPEEKBMP(IRTN, NB, IXY, LEN, IBC, IBITS)
        INTEGER,INTENT(OUT) :: IRTN, IBC, IBITS(*)
        INTEGER,INTENT(IN) :: NB, IXY, LEN

    [C] int GWpeekbmp(int NB, int IXY, int LEN, int *IBC, int *IBITS);
    (説明)
        登録済みのビットマップのデータを，任意の開始位置からビットマップのラスター
        （行）を右にスキャンして配列に読み出す。
    (入力変数)
        NB = ビットマップ番号(1〜): 対応するビットマップが存在しない場合にはエラーを
             返す。
       IXY = i+IW*j: IWをビットマップの幅，左上を原点[0,0]としたときの，読み出し
             開始位置を[i,j]とする。
       LEN = 読み出されるピクセル数（≦ 配列 IBITS の大きさ）。
    (出力変数)
       IBC = ピクセルあたりの最大の色数(ビット長)
           = 1: モノクロ(1ビット)
           = 4: 16色(4ビット)
           = 8: 256色(8ビット：デフォルト)
           = 16: 2^16色(16ビット)
           = 24: 2^24色(24ビット)
           = 32: 2^32色(32ビット)
     IBITS = 読み出したビットマップ・データ（COLORREF値）
      IRTN = 実際に読み出したピクセル数。失敗したときは 0 を返す。

[TOC] [INDEX]
78. ビットマップ・データの書き込み

    [F] SUBROUTINE GWPOKEBMP(IRTN, NB, IXY, LEN, MX, IBITS)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB, IXY, LEN, MX, IBITS(*)

    [C] int GWpokebmp(int NB, int IXY, int LEN, int MX, int *IBITS);
    (説明)
        配列 IBITS に格納されているビットマップ・データを登録済みビットマップへ書き
        込む。既存ビットマップ・データとの合成方法は混合モード MX で指定する。
    (入力変数)
        NB = ビットマップ番号(1〜): 対応するビットマップが存在しない場合にはエラー
             を返す。
       IXY = i+IW*j: IWをビットマップの幅，左上を原点[0,0]としたときの，書き込み
             開始位置を[i,j]とする。
       LEN = 書き込まれるピクセル数（≦ 配列 IBITS の大きさ）。
        MX = ビットマップ混合モード(GWSETBMP参照)。合成先のビットマップに透明色が
             設定されている場合(GWSETBMP参照)には，ROP3 のパターンビット[P]として，
             合成先のピクセルの色が透明色と同じ場合は 1 を，同じでない場合は 0 が
             使われる。対応する ROP3 コードの下位 16 ビットは無視される。
     IBITS = 書き込むビットマップ・データ（COLORREF値）
    (出力変数)
      IRTN = 実際に書き込んだピクセル数。失敗したときは 0 を返す。

[TOC] [INDEX]
79. フォントからビットマップへの変換

    [F] SUBROUTINE GWFNT2BMP(IRTN, NB, IW, IH, IU, IV, TEXT)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB, IW, IH, IU, IV
        CHARACTER,INTENT(IN) :: TEXT*(*)

    [C] int GWfnt2bmp(int NB, int IW, int IH, int IU, int IV, char *TEXT, int l);
    (説明)
       現在のフォントを使って文字列からモノクロ・ビットマップを作成する。作成された
       ビットマップはビットマップ番号NB に登録される。
    (入力変数)
        NB = ビットマップ番号(1〜): 作成したビットマップを保存する配列の要素番号。
             NB = 0 とすると未使用の配列要素が使われる。
        IW = ビットマップの幅(ピクセル)
        IH = ビットマップの高さ(ピクセル)
        IU = 基準点のオフセットのu座標(ピクセル)
        IV = 基準点のオフセットのv座標(ピクセル)
      TEXT = 文字列
         l = TEXT に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
    (出力変数)
      IRTN = 実際にビットマップを保存した配列要素番号。失敗したときは 0 を返す。

[TOC] [INDEX]
80. ビットマップの属性設定

    [F] SUBROUTINE GWSETBMP(IRTN, NB, W, H, MX, ITR, IOF)
        REAL,INTENT(IN) :: W, H
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB, MX, ITR, IOF

    [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(ROP3)" として使用する。
        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: GWO_CENTER      (中央；デフォルト)
           = 1: GWO_BOTTOMLEFT  (左下)
           = 2: GWO_BOTTOMRIGHT (右下)
           = 3: GWO_TOPRIGHT    (右上)
           = 4: GWO_TOPLEFT     (左上)
           = 5: GWO_LEFT        (左)
           = 6: GWO_BOTTOM      (下)
           = 7: GWO_RIGHT       (右)
           = 8: GWO_TOP         (上)

        (ビットマップ混合モード)
            0: GWY_INVERTNOT = source XOR (NOT dest)
                転送先ビットマップを反転し、その結果と転送元ビットマップを論理 XOR
                演算子で結合します。
            1: GWY_SRCCOPY = source
                同上
            2: GWY_SRCPAINT = source OR dest
                転送先ビットマップのピクセルと転送元ビットマップを論理 OR 演算子で
                結合します。
            3: GWY_SRCAND = source AND dest
                転送元のビットマップと転送先ビットマップのピクセルを論理 AND 演算子
                で結合します。
            4: GWY_SRCINVERT= source XOR dest
                転送先ビットマップのピクセルと転送元ビットマップを論理 XOR 演算子で
                結合します。
            5: GWY_SRCERASE = source AND (NOT dest )
                転送先ビットマップを反転し、その結果と転送元ビットマップを論理 AND
                演算子で結合します。
            6: GWY_NOTSRCCOPY = (NOT source)
                反転した転送元ビットマップを転送先ビットマップにコピーします。
            7: GWY_NOTSRCERASE = (NOT src) AND (NOT dest)
                転送元ビットマップと転送先ビットマップを論理 OR 演算子で結合した結
                果を反転します。
            8: GWY_MERGECOPY = (source AND pattern)
                パターン ビットマップと転送元ビットマップを論理 AND 演算子で結合し
                ます。
            9: GWY_MERGEPAINT = (NOT source) OR dest
                反転した転送元ビットマップと転送先ビットマップを論理 OR 演算子で結
                合します。
           10: GWY_PATCOPY = pattern
               パターン ビットマップを転送先ビットマップにコピーします。
           11: GWY_PATPAINT = DPSnoo
               反転した転送元ビットマップとパターン ビットマップを論理 OR 演算子で
               結合します。さらに、この操作で得たものと転送先ビットマップを論理 OR
               演算子で結合します。
           12: GWY_PATINVERT = pattern XOR dest
               パターン ビットマップと転送先ビットマップを論理 XOR 演算子で結合しま
               す。
           13: GWY_DSTINVERT = (NOT dest)
               転送先のビットマップを反転します。
           14: GWY_BLACKNESS = BLACK
               すべての出力を黒にします。
           15: GWY_WHITENESS = WHITE
               すべての出力を白にします。
    (出力変数)
       IRTN = リターン・コード

[TOC] [INDEX]
81. ビットマップの属性取得

    [F] SUBROUTINE GWGETBMP(IRTN, NB, W, H, IW, IH, IB, MAXNB, FN)
        REAL,INTENT(OUT) :: W, H
        INTEGER,INTENT(OUT) :: IRTN, IW, IH, IB, MAXNB
        INTEGER,INTENT(IN) :: NB
        CHARACTER :: FN*(*)

    [C] int GWgetbmp(int NB, float *W, float *H, int *IW, int *IH,
    		int *NC, int *MAXNB, char *FN, int l);
    (説明)
        登録済みビットマップの属性を取得する。不正なビットマップ番号が指定された場
    	合など，エラーの場合には MAXNB にだけ意味のある値が返される。
    (入力変数)
        NB = 属性を取得したいビットマップ番号。0 はクリップボードをインポートした場
             合([Edit] => [Import Clipboard])にビットマップが保存される番号。
         l = 出力用文字列変数 FN のバイト長 ([C])
    (出力変数)
         W = ビットマップの幅をワールド座標に換算したもの。
         H = ビットマップの高さをワールド座標に換算したもの。
        IW = ビットマップの幅(ビット)。
        IH = ビットマップの高さ(ビット)。
        IB = ビットマップの各ピクセルを定義するビット数。失敗した場合は 0。
     MAXNB = 登録済みビットマップ番号の最大値。
        FN = ビットマップファイル名。 FN == NULL ([C]) または FN の長さが十分でない
             場合は無視される。
      IRTN = リターン・コード

[TOC] [INDEX]
82. ビットマップの描画

    [F] SUBROUTINE GWPUTBMP(IRTN, NB, X, Y, IBK)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB, IBK

    [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]
83. 保存ビットマップのコピー登録

    [F] SUBROUTINE GWCOPYBMP(IRTN, NB1, NB2)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB1, NB2

    [C] int GWcopybmp(int NB1, int NB2);
    (説明)
        ビットマップ番号 NB1 (0 〜 MAXNB)に登録されているビットマップをビットマップ
        番号 NB2 に再登録する。
    (入力変数)
      NB1 = 登録元のビットマップ番号
      NB2 = 登録先のビットマップ番号。NB = 0 とすると未使用の配列要素が使われる。
    (出力変数)
     IRTN = 実際に登録されたビットマップ番号。

[TOC] [INDEX]
84. ビットマップの登録削除

    [F] SUBROUTINE GWDELBMP(IRTN, NM)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM

    [C] int GWdelbmp(int NM);
    (説明)
        ビットマップ番号 NM (1 〜 MAXNM) のビットマップの登録を削除する。指定された
        ビットマップ番号が未使用の場合は何もしない。
    (入力変数)
      NM = 削除するビットマップの番号
    (出力変数)
     IRTN = 実際に削除されたビットマップの番号 (>0)。削除しなかった場合は 0。

[TOC] [INDEX]
85. 矩形領域の取り込み

    [F] SUBROUTINE GWCAPIMG(IRTN, NB, X1, Y1, X2, Y2)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NB

    [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]
86. 矩形領域のクリップボードへのコピー

    [F] SUBROUTINE GWCLIPIMG(IRTN, X1, Y1, X2, Y2)
        REAL,INTENT(IN) :: X1, Y1, X2, Y2
        INTEGER,INTENT(OUT) :: IRTN

    [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]
87. EMFファイルの読み込み

    [F] SUBROUTINE GWLOADEMF(IRTN, NM, FN)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWloademf(int NM, char *FN, int l);
    (説明)
        ファイルからEMF（拡張メタファイル）を読み込んで，EMF番号 NM に登録する。EMF
    	とは Windows 標準のデータ（ファイル）形式の一つで、Windowsの描画命令（GDI）
    	をまとめたもの。Office 製品等、多くの Windows アプリケーションで利用可能。
    	登録されたEMFは大きさを変えて画面に何度でも描画したり，ファイルに保存する
    	こともできる。保存時、EMFの拡張子には .emf が用いられる。EMFの登録数に上限
    	は設けられていないないが，システム・リーソースを使い切ったときの動作につい
    	てはほとんどチェックを行っていないので要注意。
    (入力変数)
        NM = EMF番号(1〜): 読み込んだ EMF を保存する配列の要素番号。
             NM = 0 とすると未使用の配列要素が使われる。
        FN = EMF のファイル名(ファイルは実行ファイルと同じディレクトリに置くか，フル
    	     パスで指定しなければならない)
    (出力変数)
      IRTN = EMF が登録された配列要素の番号。失敗したときは 0 を返す。

[TOC] [INDEX]
88. EMF をフィルに保存

    [F] SUBROUTINE GWSAVEEMF(IRTN, NM, FN)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWsaveemf(int NM, char *FN, int l);
    (説明)
        番号 NM の EMF をファイルに保存する。
    (入力変数)
        NM = EMF番号
        FN = ファイル名
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
89. マークを EMF として作成

    [F] SUBROUTINE GWEMFMRK(IRTN, NM, MT, S, K, KB, MX)
        REAL,INTENT(IN) :: S
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM, MT, K, KB, MX

    [C] int GWemfmrk(int NM, int MT, float S, int K, int KB, int MX);
    (説明)
       マーク番号 MT(0-6)，大きさ S(ワールド座標系)，マークの論理色番号 K，マークの
       背景色の論理色番号 KB，混合モード MX で指定されたマーク (GWSETMRK の項参照)
       を EMF として EMF番号 NM に登録する。マーク属性 (GWSETMRK の項参照) は変
       化しない。MT, S, K, KB, MX に不正な値が指定された場合にはマークの現在値が使
       われる．NM = 0 または，指定した EMF番号 NM の EMF が使われているときには，
       未使用の番号が使われる。
    (入力変数)
       NM = 登録を希望する EMF番号
       MT = 0: 点
            1: ■
            2: ＋
            3: ×
            4: ＋と×を重ねあわせたもの
            5: □
            6: ○
        S = マークの高さ(ワールド座標系) >= 0.0
        K = マークの論理色番号(GWCOLOR の項参照)
            -1 の場合はマークの現在値
       KB = マークの背景色の論理色番号(GWCOLOR の項参照)
            -1 の場合はマークの現在値
       MX = マークの混合モード(GWSETPEN の項参照)
    (出力変数)
     IRTN = 実際に登録された EMF番号。失敗したときは 0 を返す

[TOC] [INDEX]
90. EMF の作成開始

    [F] SUBROUTINE GWBEGINEMF(IRTN, NM, W, H)
        REAL,INTENT(IN) :: W, H
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM

    [C] int GWbeginemf(int NM, float W, float H);
    (説明)
        EMF (拡張メタファイル) の作成を開始し，EMF番号 NM を予約する。EMFは一組の
    	描画オブジェクトのことで，作成されたEMFは大きさを変えて画面に何度でも描画し
    	たり，ファイルに保存することができる。予約したEMFは GWENDEMF で作成を終了す
    	るまでは使用できない。GWBEGINEMF と GWENDEMF の呼び出しの間に実行された描画
    	命令がすべてEMFへ組み込まれ，その間画面には何も描画されない。
    (入力変数)
        NM = EMF番号(1〜): EMFを保存する配列の要素番号。
             NM = 0 とすると未使用の配列要素が使われる。
         W = EMFの幅( > 0: ワールド座標)
         H = EMFの高さ( > 0: ワールド座標)
    (出力変数)
      IRTN = 予約したEMFの配列要素番号。失敗したときは 0 を返す。

[TOC] [INDEX]
91. EMFの作成終了

    [F] SUBROUTINE GWENDEMF(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWendemf(void);
    (説明)
        EMFへの描画を終了し，EMFを使用可能にする。
    (入力変数)
        なし
    (出力変数)
      IRTN = 作成したEMFの配列要素番号 (>0)。失敗したときは 0 を返す。

[TOC] [INDEX]
92. EMFの描画

    [F] SUBROUTINE GWPUTEMF(IRTN, NM, X, Y, W, H, IOF)
        REAL,INTENT(IN) :: X, Y, W, H
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM, IOF

    [C] int GWputemf(int NM, float X, float Y, float W, float H, int IOF);
    (説明)
        指定された登録済みEMF NM を位置 (X, Y) に，幅 W，高さ H で描画す
        る。W = 0.0 または H = 0.0 の場合には作成時の大きさで描画される。IOF には
        (X, Y) で指定する基準点をどこに置くかを指定する。
    (入力変数)
        NM = EMF番号。
         X = 基準点の X 座標(ワールド座標系)。
         Y = 基準点の Y 座標(ワールド座標系)。
         W = 画面上の幅(ワールド座標系)。
         H = 画面上の高さ(ワールド座標系)。
       IOF = 基準点の位置を指定する
           = 0: GWO_CENTER      (中央; デフォルト)
           = 1: GWO_BOTTOMLEFT  (左下)
           = 2: GWO_BOTTOMRIGHT (右下)
           = 3: GWO_TOPRIGHT    (右上)
           = 4: GWO_TOPLEFT     (左上)
           = 5: GWO_LEFT        (左)
           = 6: GWO_BOTTOM      (下)
           = 7: GWO_RIGHT       (右)
           = 8: GWO_TOP         (上)

    (出力変数)
       IRTN = リターン・コード

[TOC] [INDEX]
93. EMFの属性取得

    [F] SUBROUTINE GWGETEMF(IRTN, NM, II, IX1, IY1, IX2, IY2, MAXNM, FN)
        INTEGER,INTENT(OUT) :: IRTN, IX1, IY1, IX2, IY2, MAXNM
        INTEGER,INTENT(IN) :: NM, II
        CHARACTER :: FN*(*)

    [C] int GWgetemf(int NM, int II, int *IX1, int *IY1, int *IX2, int *IY2,
    		int *MAXNM, char *FN, int l);
    (説明)
        登録済みEMFの属性を取得する。NM に未登録，あるいは不正なEMF番号が指定
        された場合には MAXNM だけに有効な値が返る。
    (入力変数)
        NM = 属性を取得したいEMFの番号 (>0)。
         l = 文字列変数 FN のバイト長 ([C])
    (出力変数)
     II = 0 の場合:
         IX1 = 描画領域の幅（デバイス単位）
         IY1 = 描画領域の高さ（デバイス単位）
         IX2 = EMF の幅（0.01 mm 単位）
         IY2 = EMF の高さ（0.01 mm 単位）
     II = 1 の場合:
         IX1 = 参照デバイスの幅（ピクセル単位）
         IY1 = 参照デバイスの高さ（ピクセル単位）
         IX2 = 参照デバイスの幅（mm 単位）
         IY2 = 参照デバイスの高さ（mm 単位）
     II = 2 の場合:
      (IX1, IY1, IX2, IY2) = 描画領域の4角形（デバイス単位）
     II = 3 の場合:
       (IX1, IY1, IX2, IY2) = EMF の全体4角形（0.01 mm 単位）
     MAXNM = 登録済みEMF番号の最大値。
        FN = メタファイル名。 FN == NULL ([C]) または FN の長さが十分でない場合は
        無視される。
      IRTN = リターン・コード

[TOC] [INDEX]
94. 保存 EMF のコピー登録

    [F] SUBROUTINE GWCOPYEMF(IRTN, NM1, NM2)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM1, NM2

    [C] int GWcopyemf(int NM1, int NM2);
    (説明)
         EMF番号 NM1 (0 〜 MAXNM)に登録されている EMF を EMF番号 NM2 に再登録する。
    (入力変数)
      NM1 = 登録元の EMF番号
      NM2 = 登録先の EMF番号。NM = 0 とすると未使用の配列要素が使われる。
    (出力変数)
     IRTN = 実際に登録された EMF番号。

[TOC] [INDEX]
95. EMFの登録削除

    [F] SUBROUTINE GWDELEMF(IRTN, NM)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: NM

    [C] int GWdelemf(int NM);
    (説明)
        EMF番号 NM (0 〜 MAXNM) のEMFの登録を削除する。指定されたEMF番号が
        未使用の場合は何もしない。
    (入力変数)
      NM = 削除するEMFの番号
    (出力変数)
     IRTN = 実際に削除されたEMFの番号。

[TOC] [INDEX]
96. 文字列の入力

    [F] SUBROUTINE GWINPUT(IRTN, TITLE, TXT)
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TITLE*(*)
        CHARACTER,INTENT(OUT) :: TXT*(*)

    [C] int GWinput(char *TITLE, int l1, char *TXT, int l2);
    (説明)
       キーボードから文字列を入力するためのダイアログを開く。
    (入力変数)
     TITLE = タイトルバーに表示する文字列
        l1 = TITLE に文字列バッファを指定した場合はそのバイト長。それ以外の場合は 0
             を指定する。 ([C])
        l2 = 文字列変数 TXT のバイト長 ([C])
    (出力変数)
      IRTN = 入力した文字列のバイト長
       TXT = 文字列(入力の終了はリターンキー)

[TOC] [INDEX]
97. ダイアログボックスによるファイル名の取得

    [F] SUBROUTINE GWFILEDLG(IRTN, FN)
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(INOUT) :: FN*(*)

    [C] int GWfiledlg(char *FN, int l);
    (説明)
        「ファイル名の取得」ダイアログボックスを開いてファイル名を取得する。ダイア
        ログボックスで指定したファイル名（形式は処理系に依存する）の長さが文字(列)
        変数 FN の長さを超える場合には失敗し，FN は変化しない。
    (入力変数)
      FN = 初期値として用いるファイル名
       l = 文字列変数 FN のバイト長 ([C])
    (出力変数)
     IRTN > 0: 取得したファイル名のバイト長
          < 0: -(ダイアログボックスで指定したファイル名のバイト長 > l)
          = 0: 他の失敗
       FN = 取得したファイル名 (成功した場合)

[TOC] [INDEX]
98. データの読み込み

    [F] SUBROUTINE GWLOAD(IRTN, IC, FN)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IC
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWload(int IC, char *FN, int l);
    (説明)
        保存ファイル(*.gwd)を読み込み，描画する。ファイル名 FN で指定されたファイル
        が見つからない場合はファイル名取得のダイアログボックスを開く。パラメータ IC
        の値により動作が異なる。縮尺を調整しないときには，保存時の(デバイスに依存し
        た) 縮尺で現ウィンドウに追加書きされるので，保存時と異なる環境で読み込む場
        合などには注意が必要。
    (入力変数)
        IC = 0: 縮尺を調整しないで追加書きする。内部パラメタは復元しない。
           = 1: 縮尺を調整して追加書きする(内部パラメタは復元しない)
           = 2: 縮尺を調整しないで追加書きし，内部パラメタを復元する
            他: 縮尺を調整して追加書きし，内部パラメタを復元する
        FN = 保存ファイル名(ファイルは実行ファイルと同じディレクトリに置くか，フル
             パスで指定しなければならない)
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
99. データの保存

    [F] SUBROUTINE GWSAVEAS(IRTN, MF, MV, IW, IH, FN)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: MF, MV, IW, IH
        CHARACTER,INTENT(IN) :: FN*(*)

    [C] int GWsaveas(int MF, int MV, int IW, int IH, char *FN, int l);
    (説明)
        図形データを，入力パラメータ MF で指定したファイル形式でファイルに保存する。
        ファイル名を指定する入力パラメータ FN の長さが 0 ( FN == NULL [C]) の場合に
        は，ファイル名取得のダイアログボックスを開く。MF に 0 または 負，あるいは他
        の無効な値が設定された場合には，ファイル名の拡張子によりファイル形式が決定
        される。ファイル名の拡張子からもファイル形式が決定できない場合には <!-BASENAME-> 固
        有のファイル形式（GWD ファイル形式）が仮定され，必要ならば拡張子 '.gwd' が付
        けられる。ビュー(表示)モードを指定する入力パラメータ MV と，保存ファイルの
        幅と高さを与える入力パラメータ IW，IH の値により表示範囲やアスペクト比が変
        化するので注意。整数型の入力パラメータの値が 0 の場合にはデフォルト値が使わ
        れる。IW または IH に負の値が設定された場合にはそれぞれの向きが反転する。こ
        のルーチンは保存モード（GWMODE 参照）が on の場合に正常に動作する。
    (入力変数)
        MF = ファイル形式 (拡張子, 幅と高さの単位)
           = 1: GWF_GWD         GWD ファイル ('.gwd', なし)
           = 2: GWF_EMF         拡張メタファイル ('.emf', 0.01 mm)
           = 3: GWF_BMP         ビットマップ ('.bmp', ピクセル)
           = 4: GWF_EPS         EPS ファイル ('.eps', pt = 1/72")
        MV = ビューモード
             1: GWV_BITMAP      ビットマップ
             2: GWV_ISOTROPIC   等方的
             3: GWV_FIT         フィット
             4: GWV_TOTAL       全体
             5: GWV_ZOOM        現在のビューポート
        IW = 幅 (単位は MF の項参照）
        IH = 高さ（単位は MF の項参照）
        FN = ファイル名
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
100. 印刷

    [F] SUBROUTINE GWPRINT(IRTN, IW, MV)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
101. オブジェクト・グループ番号の設定

    [F] SUBROUTINE GWSETOGN(IRTN, ISRC, IDST)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
102. アンカー

    [F] SUBROUTINE GWANCHOR(IRTN, N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: N

    [C] int GWanchor(int N);
    (説明)
       アンカーの設定と除去を行う。アンカーとはオブジェクト・グループ番号 (OGN) が
       0 の何もしないオブジェクトであり，主に，GWFLUSH や GWERASE と組み合わせて，
       それまでに描画したオブジェクトの保護に用いる。デフォルトでは，保護されたオブ
       ジェクトは背景として高速再描画に使用される。各アンカーはオブジェクトの先頭か
       ら何番目のアンカーかによるアンカー番号で識別される。保存モード（GWMODE 参照）
       が off の場合，アンカーはオブジェクトとしての意味を失い，背景の保存のためだけ
       に使われる。
    (入力変数)
         N > 0: オブジェクトの最後尾にアンカーを加える。N の値が現在のアンカー数に等
                しい場合には，直前のアンカーが取り除かれて，アンカー数は変化しない。
           < 0: オブジェクトの最後尾から |N| 個のアンカーを取り除く。
           = 0: すべてのアンカーを取り除く。
    (出力変数)
     IRTN >  0: 現在のアンカー数
          == 0: アンカーの追加に失敗
          <  0: -(取り除くことのできなかったアンカー数)

[TOC] [INDEX]
103. 背景の設定

    [F] SUBROUTINE GWSETBK(IRTN, N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
104. 図形の消去

    [F] SUBROUTINE GWERASE(IRTN, N, LRF)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
105. フラッシュ描画

    [F] SUBROUTINE GWFLUSH(IRTN, N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
106. 画面の再描画

    [F] SUBROUTINE GWREFRESH(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWrefresh(void);
    (説明)
       カレント・ウィンドウを再描画する。メニューバー の [ビュー] -> [再描画] と
       同じ。このルーチンは保存モード（GWMODE 参照）が on の場合に正常に動作する。
    (入力変数)
        なし
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
107. ビューモード

    [F] SUBROUTINE GWVWMOD(IRTN, M)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: M

    [C] int GWvwmod(int M);
    (説明)
       カレント・ウィンドウのビュー(表示)モードの設定/問い合わせを行う。 ウィンドウ
       が開いていない場合にはデフォルトのビューモードの設定/問い合わせを行う。デ
       フォルトのビューモードはウィンドウのオープン時（GWopen 参照）に参照される。
    (入力変数)
        M = 1: GWV_BITMAP         ビットマップ
            2: GWV_ISOTROPIC      等方的
            3: GWV_FIT            フィット
            4: GWV_TOTAL          全体
            5: GWV_ZOOM           拡大（現在のビューポートへ：設定時）
           他:                    問い合わせ
    (出力変数)
     IRTN = カレント・ウィンドウのビュー(表示)モード(入力変数の項目参照, 0: 失敗)

[TOC] [INDEX]
108. モード設定と問い合わせ

    [F] SUBROUTINE GWMODE(IRTN, MD, M)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
109. キーボード・ステータス

    [F] SUBROUTINE GWKYBRD(IRTN, ICH, NCNT, IFLG, M)
        INTEGER,INTENT(OUT) :: IRTN, ICH, NCNT, IFLG
        INTEGER,INTENT(IN) :: 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]
110. マウス

    [F] SUBROUTINE GWMOUSE(IRTN, IRB, X, Y)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN, IRB

    [C] int GWmouse(int *IRB, float *X, float *Y);
    (説明)
       カレント・ウィンドウでのマウス情報を取得する。
    (入力変数)
       なし
    (出力変数)
     IRTN = 左ボタンの状態 (押されていないとき 0)
      IRB = 右ボタンの状態 (押されていないとき 0)
        X = マウス・ポインタの X 座標(ワールド座標系)
        Y = マウス・ポインタの Y 座標(ワールド座標系)

[TOC] [INDEX]
111. インターバル・タイマー

    [F] SUBROUTINE GWTIMER(IRTN, MS, N)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
112. イベント状態の取得

    [F] SUBROUTINE GWEVENT(IRTN, X, Y)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWevent(float *X, float *Y);
    (説明)
       カレント・ウィンドウのイベント状態を取得する。イベント状態は，インターバルタ
       イマーの設定時間が経過したり，キーボードのボタンやマウスボタンが押されると，
       その時点のマウスカーソルの位置とともにセットされ，本ルーチンの呼び出しがある
       まで保持される。本ルーチンの呼び出し後，イベント状態はリセットされる。
    (入力変数)
       なし
    (出力変数)
      IRTN: イベント種別
           >  0: 押されたキーの仮想コード
           = -1: マウスの左ボタンが押された
           = -2: マウスの右ボタンが押された
           = -3: タイマー・イベントが発生した（GWTIMER 参照）
         X = マウス・ポインタの X 座標(ワールド座標系)
         Y = マウス・ポインタの Y 座標(ワールド座標系)

[TOC] [INDEX]
113. アイドリング

    [F] SUBROUTINE GWIDLE(IRTN, ICH, X, Y, MSEC)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN, ICH
        INTEGER,INTENT(IN) :: MSEC

    [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]
114. アイドリング 2

    [F] SUBROUTINE GWIDLE2(IRTN, ICH, X, Y, MSEC)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN, ICH
        INTEGER,INTENT(IN) :: MSEC

    [C] int GWidle2(int *ICH, float *X, float *y, int MSEC);
    (説明)
       入力パラメータ MSEC により，アイドリング時間の上限を内部時計による時刻
       (GWSLEEP2 参照) で指定する点と，IRTN に返る値が経過時間ではなく，リーターン
       時の内部時計の時刻である点を除いて GWIDLE と同じ。内部時計の初期化は
       GWSLEEP2 で行うことができる。

[TOC] [INDEX]
115. スリープ

    [F] SUBROUTINE GWSLEEP(IRTN, MS)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: MS

    [C] int GWsleep(int MS);
    (説明)
        ミリ (1/1000) 秒単位で実行を停止する。
    (入力変数)
       MS = 実行を停止する時間(ミリ秒単位)
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
116. スリープ 2

    [F] SUBROUTINE GWSLEEP2(IRTN, MS)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: MS

    [C] int GWsleep2(int MS);
    (説明)
        指定した時刻に達するまで実行を停止する。時刻 ( > 0, ミリ秒単位) の計測は各
        ウィンドウごとに用意された内部時計によって行われる。入力変数 MS に 0 または
        負の数値を指定した場合には，内部時計の時刻が |MS| に初期化され，直ちに制御
        が戻される (実行を停止しない)。また，MS に現在の内部時計の時刻より前の時刻
        ( > 0) が指定された場合にも直ちに制御が戻される。内部時計はウィンドウのオー
        プン時に 0 に初期化される。内部時計の時刻は GWCTIME で取得できる。
    (入力変数)
         MS > 0: 実行再開の予定時刻 (ミリ秒単位)
           <= 0: 内部時計を |MS| の値に初期化する
    (出力変数)
      IRTN = 呼び出し時の内部時計の時刻 (ミリ秒単位)

[TOC] [INDEX]
117. 現在時刻の取得

    [F] SUBROUTINE GWCTIME(IRTN)
        INTEGER,INTENT(OUT) :: IRTN

    [C] int GWctime(void);
    (説明)
        ウィンドウごとに用意された内部時計の現在時刻 (ミリ秒単位) を取得する。
    (入力変数)
         なし
    (出力変数)
      IRTN = 現在時刻 (ミリ秒単位)

[TOC] [INDEX]
118. ポーズ

    [F] SUBROUTINE GWPAUSE(IRTN, TXT)
        INTEGER,INTENT(OUT) :: IRTN
        CHARACTER,INTENT(IN) :: TXT*(*)

    [C] int GWpause(char *TXT, int l);
    (説明)
        メッセージボックスを表示し，ボタンが押されるまで待つ。
    (入力変数)
       TXT = メッセージの文字列
    (出力変数)
      IRTN = リターン・コード

[TOC] [INDEX]
119. 各種サイズの取得/設定

    [F] SUBROUTINE GWSIZE(IRTN, N, IW, IH)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER :: IW, IH
        INTEGER,INTENT(IN) :: N

    [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]
120. アスペクト比の取得

    [F] FUNCTION GWASPECT(N)
        REAL :: GWASPECT
        INTEGER,INTENT(IN) :: N

    [C] float GWaspect(int N);
    (説明)
       各種アスペクト比を取得する。例えば, [ビットマップ] または [等方的]のビュー・
       モードで真円を描くには，仮に, AR = GWASPECT(-1) とすると，縦横比(ワールド座
       標系)が 1:AR の楕円を描けば良い。
    (入力変数)
        N = アスペクト比の種類
    (出力変数)
      なし
    (返される値)
        N = 1:  設定されている「用紙」サイズのアスペクト比
            2:  ウィンドウ・サイズのアスペクト比
            3:  フレーム(枠)・サイズのアスペクト比
            4:  画面サイズのアスペクト比
            5:  プリンタの解像度(DPI)のアスペクト比
            6:  プリンタの用紙サイズのアスペクト比
            7:  現在のビューポート・サイズ(ピクセル値)のアスペクト比
       その他:  真円(や正方形)を描くためのアスペクト比
       または，エラー・コード ( <= 0 )

[TOC] [INDEX]
121. 浮動小数点数の最大値

    [F] FUNCTION GWFMAX()
        REAL :: GWFMAX

    [C] float GWfmax(void);
    (説明)
       浮動小数点数の最大値を返す。
    (入力変数)
        なし
    (出力変数)
        なし
    (返される値)
        浮動小数点数の最大値

[TOC] [INDEX]
122. バージョン番号の取得

    [F] SUBROUTINE GWVERSION(IRTN,IS,STR)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IS
        CHARACTER,INTENT(OUT) :: 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]
123. コンソール・キーボード

    [F] FUNCTION KBHIT()
        INTEGER :: KBHIT

    [C] int kbhit(void);
    (説明)
       コンソール画面で押されているキーのコードを返す。何も押されていなければ 0 を
       返す。gwkybrd 参照。
    (入力変数)
       なし
    (出力変数)
       なし
    (戻り値)
       キー・コード（キーが押されていなければ 0）

[TOC] [INDEX]
124. コンソールでのキー・コードの取得

    [F] FUNCTION KBGETCH(N)
        INTEGER :: KBGETCH
        INTEGER,INTENT(IN) :: N

    [C] int kbgetch(int N);
    (説明)
       コンソール上で1バイトのキー・コードを取得する。キーが押されていなければ押さ
       れるまで待つ。 内部的には C の getch() または getche() を呼び出している。
    (入力変数)
       N  = 0: エコーしない
         <> 0: エコーする
    (出力変数)
       なし
    (戻り値)
       取得したキー・コード

[TOC] [INDEX]
125. タートル：生成

    [F] SUBROUTINE GWTSPAWN(IRTN, IT, IS, M)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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:* コンボ (コンボ番号)
        M = IS の項参照

         （注：* は未サポート）
    (出力変数)
     IRTN = 実際に生成したタートルの番号 ( > 0 ), 失敗のときは 0

[TOC] [INDEX]
126. タートル：進行方向の変更

    [F] SUBROUTINE GWTTURN(IRTN, IT, DA)
        REAL,INTENT(IN) :: DA
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTTURN(IRTN, IT, DA)
        REAL(8),INTENT(IN) :: DA
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
127. タートル：前進

    [F] SUBROUTINE GWTFORWARD(IRTN, IT, D)
        REAL,INTENT(IN) :: D
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTFORWARD(IRTN, IT, D)
        REAL(8),INTENT(IN) :: D
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
128. タートル：相対移動

    [F] SUBROUTINE GWTSHIFT(IRTN, IT, DX, DY)
        REAL,INTENT(IN) :: DX, DY
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTSHIFT(IRTN, IT, DX, DY)
        REAL(8),INTENT(IN) :: DX, DY
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
129. タートル：指定点への移動

    [F] SUBROUTINE GWTMOVE2(IRTN, IT, X, Y)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTMOVE2(IRTN, IT, X, Y)
        REAL(8),INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
130. タートルを複製する

    [F] SUBROUTINE GWTCLONE(IRTN, IT1, IT2)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
131. タートルを取り除く

    [F] SUBROUTINE GWTREMOVE(IRTN, IT)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [C] int GWTremove(int IT);
    (説明)
       タートル番号 IT > 0 のタートルを取り除く。指定された番号のタートルが存在しな
       い場合には何もしない。
    (入力変数)
       IT = タートル番号
    (出力変数)
     IRTN = 取り除いたタートルの番号 ( > 0 ), 失敗のときは 0

[TOC] [INDEX]
132. タートル位置設定

    [F] SUBROUTINE GWTSETPOS(IRTN, IT, X, Y)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTSETPOS(IRTN, IT, X, Y)
        REAL(8),INTENT(IN) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
133. タートル位置の取得

    [F] SUBROUTINE GWTGETPOS(IRTN, IT, X, Y)
        REAL,INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTGETPOS(IRTN, IT, X, Y)
        REAL(8),INTENT(OUT) :: X, Y
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
134. タートル：進行方向の設定

    [F] SUBROUTINE GWTSETDIR(IRTN, IT, A)
        REAL,INTENT(IN) :: A
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTSETDIR(IRTN, IT, A)
        REAL(8),INTENT(IN) :: A
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
135. タートル：進行方向の取得

    [F] SUBROUTINE GWTGETDIR(IRTN, IT, A)
        REAL,INTENT(OUT) :: A
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [F] SUBROUTINE GWDTGETDIR(IRTN, IT, A)
        REAL(8),INTENT(OUT) :: A
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT

    [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]
136. タートル：色の設定

    [F] SUBROUTINE GWTSETCOL(IRTN, IT, IPC)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT, IPC

    [C] int GWTsetcol(int IT, int IPC);
    (説明)
       タートル番号 IT > 0 のタートルの色を設定する。
    (入力変数)
       IT = タートル番号 ( > 0 )
      IPC = 論理色番号 (GWCOLOR 参照)
    (出力変数)
     IRTN > 0： 属性が変更された場合 ( タートル番号 )
          = 0： 失敗，または属性が変更されなかった場合

[TOC] [INDEX]
137. タートル：色の取得

    [F] SUBROUTINE GWTGETCOL(IPC, IT)
        INTEGER,INTENT(OUT) :: IPC
        INTEGER,INTENT(IN) :: IT

    [C] int GWTgetcol(int IT);
    (説明)
       タートル番号 IT > 0 のタートルの色を取得する。
    (入力変数)
       IT = タートル番号 ( > 0 )
    (出力変数)
      IPC <> -1： 論理色番号 (GWCOLOR 参照)
           = -1： 失敗

[TOC] [INDEX]
138. タートル：ペンの設定

    [F] SUBROUTINE GWTSETPEN(IRTN, IT, IPC, IPS, IPW)
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: 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]
139. タートル：マーク設定

    [F] SUBROUTINE GWTSETMRK(IRTN, IT, MT, S, K, KS, KB, MX)
        REAL,INTENT(IN) :: S
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT, MT, K, KS, KB, MX

    [F] SUBROUTINE GWDTSETMRK(IRTN, IT, MT, S, K, KS, KB, MX)
        REAL(8),INTENT(IN) :: S
        INTEGER,INTENT(OUT) :: IRTN
        INTEGER,INTENT(IN) :: IT, MT, K, KS, KB, MX

    [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: GWM_DOT         (点)
            1: GWM_SOLIDSQUARE (■)
            2: GWM_PLUS        (＋)
            3: GWM_TIMES       (×)
            4: GWM_ASTERISK    (＋と×を重ねあわせたもの)
            5: GWM_SQUARE      (□)
            6: GWM_CIRCLE      (○)
            その他:  変更しない
        S = ドットの大きさ(ピクセル値)
          = マークの高さ(ワールド座標系) > 0.0
        K = マーク（ペン）の論理色番号(GWCOLOR の項参照)
            -1 の場合は現在値を使う
       KS = マーク内部（ブラシ）の論理色番号(GWCOLOR の項参照)
            -1 の場合は現在値を使う
       KB = マークの背景色の論理色番号(GWCOLOR の項参照)
            -1 の場合は現在値を使う
          = -100: 透明(default)
       MX = マークの混合モード( GWSETPEN の項参照)
    (出力変数)
     IRTN = リターン・コード

[TOC] [INDEX]
140. 初期化(Calcomp 系コマンド)

    [F] SUBROUTINE PLOTS(X, Y, LD)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(IN) :: LD

    [C] なし
    (説明)
       <!-BASENAME-> ライブラリの初期化の後，グラフィクス・ウィンドウをオープンする。

          ［参考］ CALL GWOPEN(NW,0)
    (入力変数)
        X = ペンの初期位置の X 座標(ワールド座標系)
        Y = ペンの初期位置の Y 座標(ワールド座標系)
       LD = 互換性のためのダミー
    (出力変数)
      なし

[TOC] [INDEX]
141. 終了(Calcomp 系コマンド)

    [F] SUBROUTINE PLOTE(MQ)
        INTEGER,INTENT(IN) :: MQ

    [C] なし
    (説明)
          開かれている全てのウィンドウを閉じ，<!-BASENAME-> ライブラリの終了処理を行う。

          ［参考］ CALL GWQUIT
    (入力変数)
       MQ = 0 :   コンソール・ウィンドウに終了プロンプト '>' を表示する。
            1 :   終了ダイアログを表示する。
            他:   終了プロンプトを出さずに直ちに終了処理を行う。
    (出力変数)
      なし

[TOC] [INDEX]
142. ペンの移動/直線の描画(Calcomp 系コマンド)

    [F] SUBROUTINE PLOT(X, Y, IP)
        REAL,INTENT(IN) :: X, Y
        INTEGER,INTENT(IN) :: IP

    [C] なし
    (説明)
        ワールド座標系で指定された点 (X, Y) までペンを移動する。

        ［参考］ CALL GWLINE2(X, Y)
                 CALL GWMOVE2(X, Y)
    (入力変数)
        X = 移動先のペン位置の X 座標(ワールド座標系)
        Y = 移動先のペン位置の Y 座標(ワールド座標系)
       IP = ±2: ペンを下げたまま移動する。つまり直線を描く。
            ±3: ペンを上げたまま移動する。つまり何も描かない。
            999: 終了処理を行う(PLOTE と同じ)。
          <   0: ワールド座標系を平行移動して，移動後の点を新たに座標原点にする。
    (出力変数)
      なし

[TOC] [INDEX]
143. ワールド座標系の設定(Calcomp 系コマンド)

    [F] SUBROUTINE WINDOW(XL, YT, XR, YB)
        REAL,INTENT(IN) :: 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]
144. ペンの色(Calcomp 系コマンド)

    [F] SUBROUTINE NEWPEN(IPC)
        INTEGER,INTENT(IN) :: IPC

    [C] なし
    (説明)
        ペンの論理色番号を設定する。

        ［参考］ GWSETPEN(IPC, -1, -1, -1)
    (入力変数)
      IPC = 論理色番号
             -1 の場合は変更されない
             その他の場合については GWCOLOR の項参照。
    (出力変数)
      なし

[TOC] [INDEX]
145. 文字列の表示(Calcomp 系コマンド)

    [F] SUBROUTINE SYMBOL(X, Y, H, TXT, A, NC)
        REAL,INTENT(IN) :: X, Y, H, A
        CHARACTER,INTENT(IN) :: TXT*(*)
        INTEGER,INTENT(IN) :: 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 = 出力文字数 < 128。 0 または負の場合は TXT のすべての文字を表示する。
    (出力変数)
      なし

[TOC] [INDEX]
146. 数値の表示(Calcomp 系コマンド)

    [F] SUBROUTINE NUMBER(X, Y, H, D, A, ND)
        REAL,INTENT(IN) :: X, Y, H, D, A
        INTEGER,INTENT(IN) :: 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]
147. グラフィクス画面消去(Calcomp 系コマンド)

    [F] SUBROUTINE GCLS(IDMY)
        INTEGER,INTENT(IN) :: IDMY

    [C] なし
    (説明)
       グラフィクス画面を消去する。
    (入力変数)
       IDMY は互換性のためのダミー変数。
    (出力変数)
      なし

[TOC] [INDEX]

## 索引

Fortran | C | 機 能 | #
--- | --- | --- | ---
gcls | なし | グラフィクス画面消去(Calcomp 系コマンド) | 147.
gwanchor | GWanchor | アンカー | 102.
gwarc | GWarc | 弧の描画 | 44.
gwarrange | GWarrange | ウィンドウの配置 | 20.
gwaspect* | GWaspect | アスペクト比の取得 | 120.
gwbeginemf | GWbeginemf | EMF の作成開始 | 90.
gwbezier | GWbezier | ベジエ スプラインの描画 | 50.
gwcapimg | GWcapimg | 矩形領域の取り込み | 85.
gwcaplin | GWcaplin | マウスによる線分座標の取得 | 72.
gwcappnt | GWcappnt | マウスによる点座標の取得 | 70.
gwcaprect | GWcaprect | マウスによる矩形座標の取得 | 73.
gwcapvec | GWcapvec | マウスによるベクトルの取得 | 71.
gwchord | GWchord | 閉じた弧の描画 | 45.
gwclear | GWclear | ウィンドウ画面の消去 | 52.
gwclipimg | GWclipimg | 矩形領域のクリップボードへのコピー | 86.
gwclose | GWclose | ウィンドウのクローズ | 7.
gwcolor | GWcolor | 色の設定 | 61.
gwcopybmp | GWcopybmp | 保存ビットマップのコピー登録 | 83.
gwcopyemf | GWcopyemf | 保存 EMF のコピー登録 | 94.
gwctime | GWctime | 現在時刻の取得 | 117.
gwdelbmp | GWdelbmp | ビットマップの登録削除 | 84.
gwdelemf | GWdelemf | EMFの登録削除 | 95.
gwdtforward | GWDTforward | タートル：前進 | 127.
gwdtforward | GWTforward | タートル：前進 | 127.
gwdtgetdir | GWDTgetdir | タートル：進行方向の取得 | 135.
gwdtgetdir | GWTgetdir | タートル：進行方向の取得 | 135.
gwdtgetpos | GWDTgetpos | タートル位置の取得 | 133.
gwdtgetpos | GWTgetpos | タートル位置の取得 | 133.
gwdtmove2 | GWDTmove2 | タートル：指定点への移動 | 129.
gwdtmove2 | GWTmove2 | タートル：指定点への移動 | 129.
gwdtsetdir | GWDTsetdir | タートル：進行方向の設定 | 134.
gwdtsetdir | GWTsetdir | タートル：進行方向の設定 | 134.
gwdtsetmrk | GWDTsetmrk | タートル：マーク設定 | 139.
gwdtsetmrk | GWTsetmrk | タートル：マーク設定 | 139.
gwdtsetpos | GWDTsetpos | タートル位置設定 | 132.
gwdtsetpos | GWTsetpos | タートル位置設定 | 132.
gwdtshift | GWDTshift | タートル：相対移動 | 128.
gwdtshift | GWTshift | タートル：相対移動 | 128.
gwdtturn | GWDTturn | タートル：進行方向の変更 | 126.
gwdtturn | GWTturn | タートル：進行方向の変更 | 126.
gwellipse | GWellipse | 楕円の描画 | 43.
gwemfmrk | GWemfmrk | マークを EMF として作成 | 89.
gwendemf | GWendemf | EMFの作成終了 | 91.
gwerase | GWerase | 図形の消去 | 104.
gwevent | GWevent | イベント状態の取得 | 112.
gwfiledlg | GWfiledlg | ダイアログボックスによるファイル名の取得 | 97.
gwfirst | GWfirst | 最初のウィンドウ | 15.
gwflood | GWflood | 閉領域の塗りつぶし | 51.
gwflush | GWflush | フラッシュ描画 | 105.
gwfmax* | GWfmax | 浮動小数点数の最大値 | 121.
gwfnt2bmp | GWfnt2bmp | フォントからビットマップへの変換 | 79.
gwgetbmp | GWgetbmp | ビットマップの属性取得 | 81.
gwgetbrs | GWgetbrs | ブラシ属性の取得 | 27.
gwgetemf | GWgetemf | EMFの属性取得 | 93.
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 | 114.
gwidle | GWidle | アイドリング | 113.
gwindow | GWindow | ワールド座標系の設定 | 8.
gwinit | GWinit | 初期化 | 1.
gwinitx | GWinitx | 初期化 | 1.
gwinput | GWinput | 文字列の入力 | 96.
gwjoin | GWjoin | ジョイン（追加描画の開始） | 5.
gwkybrd | GWkybrd | キーボード・ステータス | 109.
gwldcpos | GWldcpos | 論理デバイス座標系での位置座標の取得 | 21.
gwldcsiz | GWldcsiz | 論理デバイス座標系でのサイズの取得 | 22.
gwleave | GWleave | ウィンドウを閉じないで終了 | 4.
gwline2 | GWline2 | 指定した点までの直線 | 38.
gwline | GWline | ２点を結ぶ直線 | 39.
gwload | GWload | データの読み込み | 98.
gwloadbmp | GWloadbmp | ビットマップファイルの読み込み | 74.
gwloadcc | GWloadcc | カスタムカラーの復元 | 68.
gwloademf | GWloademf | EMFファイルの読み込み | 87.
gwmakebmp | GWmakebmp | ビットマップの作成 | 76.
gwmode | GWmode | モード設定と問い合わせ | 108.
gwmouse | GWmouse | マウス | 110.
gwmove2 | GWmove2 | ペンの移動 | 37.
gwncolor | GWncolor | 利用可能な色パレット数の取得 | 66.
gwnext | GWnext | 次のウィンドウ | 16.
gwopen | GWopen | ウィンドウのオープン | 2.
gwopenx | GWopenx | ウィンドウのオープン | 2.
gwpause | GWpause | ポーズ | 118.
gwpeekbmp | GWpeekbmp | ビットマップ・データの読み出し | 77.
gwpie | GWpie | 扇形の描画 | 46.
gwplot1 | GWplot1 | 1次元配列のプロット | 47.
gwpokebmp | GWpokebmp | ビットマップ・データの書き込み | 78.
gwpolygon | GWpolygon | 多角形の描画 | 48.
gwpolylin | GWpolylin | 折れ線の描画 | 49.
gwport | GWport | ビューポートの設定(ワールド座標系) | 11.
gwprint | GWprint | 印刷 | 100.
gwputbmp | GWputbmp | ビットマップの描画 | 82.
gwputemf | GWputemf | EMFの描画 | 92.
gwputmrk | GWputmrk | マーク描画 | 54.
gwputsym | GWputsym | 記号の出力 | 33.
gwputtxt | GWputtxt | 文字列(テキスト)の描画 | 30.
gwpxlsiz | GWpxlsiz | ピクセル・サイズの取得 | 23.
gwquit | GWquit | 終了 | 3.
gwquitx | GWquitx | 終了 | 3.
gwrect | GWrect | 四角形の描画 | 40.
gwrefresh | GWrefresh | 画面の再描画 | 106.
gwreset | GWreset | パラメータの再初期化 | 6.
gwrrect | GWrrect | 角の丸い四角形の描画 | 42.
gwsaveas | GWsaveas | データの保存 | 99.
gwsavebmp | GWsavebmp | ビットマップファイルの保存 | 75.
gwsavecc | GWsavecc | カスタムカラーの保存 | 67.
gwsaveemf | GWsaveemf | EMF をフィルに保存 | 88.
gwsavevp | GWsavevp | ビューポート情報の保存 | 13.
gwselect | GWselect | ウィンドウを選択 | 17.
gwselvp | GWselvp | ビューポートの選択 | 14.
gwsetbk | GWsetbk | 背景の設定 | 103.
gwsetbmp | GWsetbmp | ビットマップの属性設定 | 80.
gwsetbrs | GWsetbrs | ブラシの指定 | 26.
gwsetmrk | GWsetmrk | マークの指定 | 53.
gwsetmsg | GWsetmsg | メッセージの表示 | 34.
gwsetogn | GWsetogn | オブジェクト・グループ番号の設定 | 101.
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 | 各種サイズの取得/設定 | 119.
gwsleep2 | GWsleep2 | スリープ 2 | 116.
gwsleep | GWsleep | スリープ | 115.
gwsrect | GWsrect | 塗りつぶされた四角形の描画 | 41.
gwsysclr | GWsysclr | システムに設定されている色情報の取得 | 69.
gwtclone | GWTclone | タートルを複製する | 130.
gwtgetcol | GWTgetcol | タートル：色の取得 | 137.
gwtimer | GWtimer | インターバル・タイマー | 111.
gwtremove | GWTremove | タートルを取り除く | 131.
gwtsetcol | GWTsetcol | タートル：色の設定 | 136.
gwtsetpen | GWTsetpen | タートル：ペンの設定 | 138.
gwtspawn | GWTspawn | タートル：生成 | 125.
gwversion | GWversion | バージョン番号の取得 | 122.
gwvport | GWvport | ビューポートの設定 | 10.
gwvwmod | GWvwmod | ビューモード | 107.
ipalette* | GWipalette | Windows パレット番号から論理色番号への変換 | 65.
kbgetch* | kbgetch | コンソールでのキー・コードの取得 | 124.
kbhit* | kbhit | コンソール・キーボード | 123.
kcolor* | GWkcolor | 絶対 COLORREF 値から論理色番号への変換 | 64.
krgb* | GWkrgb | RGB(三原色)から論理色番号への変換 | 63.
msgbox* | GWmsgbox | メッセージボックス | 35.
newpen | なし | ペンの色(Calcomp 系コマンド) | 144.
number | なし | 数値の表示(Calcomp 系コマンド) | 146.
plot | なし | ペンの移動/直線の描画(Calcomp 系コマンド) | 142.
plote | なし | 終了(Calcomp 系コマンド) | 141.
plots | なし | 初期化(Calcomp 系コマンド) | 140.
symbol | なし | 文字列の表示(Calcomp 系コマンド) | 145.
window | なし | ワールド座標系の設定(Calcomp 系コマンド) | 143.

最終更新日 Sat Jul 23 23:08:08 JST 2011