GrWin グラフィクス・ライブラリ Version 0.99.9b Copyright (C) 1998 - 2003 Tamaribuchi, Tsuguhiro tamari@spdg1.sci.shizuoka.ac.jp http://spdg1.sci.shizuoka.ac.jp/grwinlib/ 目次 1.はじめに 2.利用可能な環境 3.インストールとアンインストール 4.grwnd.exe について 5.PGPLOT ドライバ 6.ライブラリのリンク 7.ダウンロード 8.配布ファイル 9.本バージョンについて 10.著作権と免責,利用,再配布について 11.更新履歴 1.はじめに 「GrWin グラフィクス・ライブラリ」は Windows Xp/2000/NT/Me/9x 上で利 用できる Fortran と C/C++ のためのフリーなグラフィクス・ライブラリです。 MinGW や Cygwin などのプログラミング環境とともにこのライブラリを用いること で, Windows プログラミングについての知識や経験が全くない人でも Windows (x86) プラットフォーム上でのフリーなグラフィクス・プログラミングを手軽に楽 しむことができます。また, 最近フリーなコマンドライン・コンパイラーとして公 開された Open Watcom C/C++ and Fortran 1.0 や Borland C++ Compiler 5.5( bcc ),Digital Mars C/C++ Compilers( dmc ),さらに AT&T UWIN 3.x や,市 販の Intel(R) C++/Fortran Compiler 7.1( Intel ) や Microsoft Visual C++ Version 6.0( vcpp ),Compaq (旧 Digital) Compaq Visual Fortran Version 6 にも対応しています。対応する Fortran コンパイラを持たない bcc, dmc や, Fortran コンパイラが別製品として市販されている Intel や vcpp でも, C のコンパイラさえあれば f2c( Fortran 77 から C への翻訳プログラム )を使 った Fortran 77 によるグラフィクス・プログラミングが可能です。 「GrWin グラフィクス・ライブラリ」は主に,シミュレーションや数値計算 などの導入教育や科学技術計算で必要となる数値データの可視化(含,アニメーシ ョン,対話処理),さらに教育現場での教材作成などを想定して開発されています が,高品位な印刷ができることから出版用原図の作成などへの利用も考えられます。 一般的に,Xwindow や Windows などのようなウィンドウをベースとした本格的な アプリケーションの開発には,オブジェクト指向やイベント駆動といったある程度 専門的な知識や発想が必要であるといわれています。また,Xwindow や Windows 上でグラフィクス表示を前提にすると,簡単な文字列を表示するだけでも,旧来の 文字ベースのユーザーインターフェース(CUI)によるプログラミングに比べると かなり煩雑な手続きが必要となってしまい,これらは計算機科学を専門としない人 たちにとっては少々敷居の高いものといえます。 このライブラリの特徴の一つは,マルチ・ウィンドウや対話処理に対応しながら, CUI をそのまま残した点にあり,グラフィクス表示やイベント処理は grwnd.exe という独立したプログラムにより行われます。本ライブラリによるグラフィクス・ プログラミングは,DOS上のグラフィクス・プログラミングやプロッタ用のプログ ラミングがそうであったように,少数のグラフィクス出力用のルーチンをコールす るだけでグラフィクス表示を行うことが可能で,イベント駆動的な発想は不要です。 つまり,プログラムの実行の流れに沿った自然な発想でグラフィクス表示を行うこ とができるので,Windows のプログラミングに不慣れな人たちやプログラミングの 初学者にとっても理解が容易であると期待できます。 また,Fortran や C で書かれた(コンソール)アプリケーションにこのライブラリ をリンクしても,READ/WRITE 文やprintf 関数などによる標準の入出力はアプリケ ーションを起動したコマンドプロンプト(Windows Me/9x の場合は DOS プロンプト) に割当てられたままで,グラフィクス以外の部分には全く影響を与えません。つま り,数値出力を行うプログラムが完成している場合には,グラフィクス表示や対話 処理の部分のみを書き加えることで,既存のプログラムを最初から書き直すことな しに比較的容易にグラフィクス対応の対話型のプログラムに変更することができま す。 さらに,本ライブラリは Win32 API のさまざまなオブジェクトもサポートしてい て,たとえば,さまざまな線の種類や太さに加えて TrueType フォントも使えます し,メタファイル形式でのファイル出力が可能なので、MS-Word など、メタファイ ル形式での図形入力をサポートしている多くのアプリケーションのデータに結果を 容易に貼り付けることができます。また,ビットマップ・ファイルの取り込みやク リップ・ボードへの貼り付けも可能です。得られた結果の印刷には,グラフィクス 対応のプリンタならほとんどすべての機種が使えるはずで,そのプリンタの能力に 応じた高品質の出力結果が得られることから,研究結果の清書用などにも広く使え ることでしょう。 本ライブラリはまた,C++ で書かれた本格的なオブジェクト指向のプログラムでも 使えますし,Windows 本来のグラフィクス・ベースのユーザーインターフェース( GUI) をもった Windows アプリケーションにリンクして使うこともできます。 本ソフトウェア群はもともと,理工系大学の計算機科学を専門としない学生を対象 とした学生実習などで利用する目的で開発された(開発中の)ものです。しかし,こ れまで述べてきた特徴から考えると,高校や中学での実習や教材作成,さらに Windows のさまざまな機能を利用したアプリケーションを手軽に作成したい人々に とっても利用価値があるのではと期待しています。 2.利用可能な環境 AT 互換機 (いわゆる DOS/V 機) で, Windows Xp/2000/NT/Me/9x (x86) の何れか の OS が動作している環境。 開発に当って,学生や生徒が個人で利用したり,多人数で利用しても経費の問題の ないフリーな処理系で利用できることを第一条件としました。現在のところ,付加 的な dll を必要とせず,単独で動作可能な Windows アプリケーションの作成が可 能な MinGW (最新版は MinGW-2.0 )を主な開発対象としていて,Cygwin (最新 版は Cygnus Cygwin 1.3.x )や,MinGW や Cygwin の旧版に対応する GNU-Win32 の gcc-2.95.2-mingw32 や gcc-2.95.2-cygb20 と uwin (最新版は AT&T UWIN 3.x)+ gcc-2.95.2-uwin にも対応しています。また,最近フリーなコ マンドライン・コンパイラーとして公開された Open Watcom C/C++ and Fortran 1.0 や Borland C++ Compiler 5.5,Digital Mars C/C++ Compilers,市販の Intel(R) C++/Fortran Compiler 7.1 や Microsoft Visual C++ Version 6.0, Compaq (旧 Digital) Compaq Visual Fortran Version 6 でも利用できます。さら に,Intel(R) C++, Borland C/C++, Microsoft Visual C++, Digital Mars C/C++ 用の f2c ライブラリ(Fortran 77 のソースを C または C++ に変換して使 用するためのもの)も用意されていますので,これらの環境で Fortran コンパイ ラを所有していない場合でも Fortran 77(f77)によるグラフィクス・プログラミ ングが可能です。 なお,グラフィクス表示を行うための grwnd.exe と,本ライブラリを用いて作成 された(コンソール)アプリケーションが NEC-PC98 シリーズでも動作することを旧 版で一部確認しましたが,コンパイラーを含む Mingw32 や Cygwin や UWIN が NEC-PC98 シリーズで利用できるかどうかについては未確認です。また,旧版でサ ポートしていた Windows NT3.51 についてはこのバージョン(以降も)では対応しま せんので,動作するかどうかについても未確認です。 GrWin で利用できるコンパイラ・システムとコマンド名 利用できるコンパイラ・システム 省略名 *1 FORTRAN C / C++ f2c フリー 備考 MinGW-2.0 MinGW g77 gcc / g++ × ○ Cygnus Cygwin 1.3.x cygwin g77 gcc / g++ × ○ Open Watcom C/C++ and Fortran 1.0 watcom wfl386 wcl386 × ○ Borland C++ Compiler 5.5 bcc × bcc32 ○ ○ Digital Mars C/C++ Compilers dmc × sc ○ ○ Intel(R) C++/Fortran Compiler 7.1 Intel ifl icl ○ × *2 Microsoft Visual C++ Version 6.0 vcpp × cl ○ × Compaq Visual Fortran Version 6 vf df × × × gcc-2.95.2-mingw32 (MSVCRT) mingw32m g77 gcc / g++ × ○ *3 gcc-2.95.2-mingw32 (CRTDLL) mingw32 g77 gcc / g++ × ○ *3 gcc-2.95.2-cygb20 cygb20 g77 gcc / g++ × ○ *4 gcc-2.95.2-uwin / AT&T UWIN 3.x uwin g77 gcc / g++ × △ *5 *1 GrWin 関連文書中で便宜的に使う省略名です。 *2 C++ と Fortran は別製品,評価版あり *3 Mumit Khan による MinGW の旧版( ここからもダウンロードできます。) *4 Cygwin の旧版 *5 教育・研究ライセンスあり。複数のコンパイラを使用できるが,GrWin は gcc-2.95.2 のみに対応。 3.インストールとアンインストール 「GrWin グラフィックス・ライブラリ」は多くのコンパイラに対応していますが, ここでは付加的な dll を必要とせず,単独で動作可能な Windows アプリケーショ ンの作成が可能で,しかもフリーな MinGW-2.0 を使用する場合に限定して説明し ます。MinGW の使い方についてここに日本語情報があります。MinGW-2.0 を使わな い場合には以下の b. は読み飛ばしてください。GrWin で利用できるほかのコンパ イラ・システムについては「利用可能な環境」を参照してください。 インストール先や実行コマンドなど,自分の環境に合わせて自由にアレンジ可能で すが,何をやっているかがよくわからない方は以下の手順を忠実に実行してくださ い。 a. エディタの準備 b. MinGW-2.0 のインストールとアンインストール c. 「GrWin グラフィックス・ライブラリ」のインストールとアンインストー ル d. f77chk について e. サンプル・プログラムの実行 a. エディタの準備エディタとは,プログラム(ソース・コード)を打ち込んだり プログラムを修正したりするときに使うプログラムのことです。Windows には「メ モ帳(notepad.exe)」という簡易エディタがついているのでそれを使うこともで きますが,機能もあまりなく,多くの人にとって使いやすいものとはいえないでし ょう。エディタは,プログラミングを行う際に使用時間の最も長いものになります ので,この際ぜひ自分のお気に入りのエディタを入手して手になじませておいてく ださい。市販やシェアウェアのエディタはいろいろありますが,ここでは,フリー ・ソフトでなかなか使いやすいものを二つほど紹介しておきます: TeraPad: http://www2s.biglobe.ne.jp/~t-susumu/toclip/library/tpad.html サクラエディタ: http://members.tripod.co.jp/sakura_editor/ b. MinGW-2.0 のインストールとアンインストール MinGW-2.0 を使わない場合は c. に進んでください。 1.まず, MinGW の配布元から必要なファイルを取り寄せます。使用目的に応 じて個別のパッケージをダウンロードすることもできますが,自信のない人は必 要なものすべてが 一つのファイルに圧縮されたもの( 2003.06.01 現在の最新 版は MinGW-2.0.0-3.exe)をダウンロードして,どこでもよいので適当なフォル ダ( C:\tmp )に保存してください。MinGW-2.0.0-3.exe はインストーラ付の実 行ファイルですので,実行して指示に従うだけで MinGW システムのインストー ルが一応終了し,この段階で,GNU-C/C++ や GNU-Fortran のコンパイラなど, ソースファイルから実行ファイルを生成するためのすべてのファイルが整ったこ とになります。ただし,ファイルがインストールされた場所(フォルダ)をコン ピュータが認識していませんのでこのままでは使えないことに注意して,以下を 熟読してください。 以下では MinGW-2.0.0-3.exe の実行時の指示に従って, MinGW システムを C:\MinGW にインストールしたものとして説明を続けます。ほかのディレクト リにインストールした場合には C:\MinGW を自分の環境にあわせて読み替える 必要があります。 ダウンロードしたファイル MinGW-2.0.0-3.exe はこれで用済みですので消去 しても差し支えありませんが,ディスク容量に余裕がない場合を除いて,再イ ンストールが必要になったときのためにどこかに保存しておくことをお勧めし ます。 2. MinGW は基本的にコマンド・プロンプト(Windows Me/9x では DOS プロン プト)で使用しますので,インストール・フォルダに作成されたサブフォルダ bin に「パスを通す」設定を行う必要があります。パスを通すというのは,コマ ンドが実行される際にそのコマンドに対応する実行ファイル(*.exe)やバッチ ファイル(*.bat)がどこにあるか(これは,インストールを行ったあなたしか 知りません)を OS に教えることです。方法はいくつかありますが,ここでは OS の種類に依存しない方法を紹介します。まずエディタで,mingw.bat という ファイル名で内容が PATH=C:\MinGW\bin;%PATH% の1行だけのバッチ・ファイルをインストール・フォルダ( C:\MinGW )に作 成します。正しく作成できたかどうかは C:\MinGW>type C:\MinGW\mingw.bat PATH=C:\MinGW\bin;%PATH% C:\MinGW> で確認できます。確認ができたらこれで MinGW システムのインストール作業 は一応終了です。コマンド・プロンプトを開いたらその都度 C:\MinGW\mingw を1回打ち込むことで,そのコマンド・プロンプト上で MinGW を使うことができます。 3. MinGW システムが正しくインストールできているかを確認するために,イ ンストール作業で使用したコマンド・プロンプトのウィンドウを閉じてから,新 たに別のコマンド・プロンプト・ウィンドウを開きます。まずパス設定のための バッチ・ファイル mingw.bat を実際に起動してみます: C:\MinGW>C:\MinGW\mingw C:\MinGW>PATH=C:\MinGW\bin;..... .... C:\MinGW> これで,MinGW が使用可能になったはずです。これを確かめるために 'gcc -v' を打ち込みます: C:\MinGW>gcc -v Reading specs from C:/MinGW/bin/../lib/gcc-lib/mingw32/3.2/specs Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host= mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable -languages=f77,c++,objc,ada --disable-win32-registry --disable-shared Thread model: win32 gcc version 3.2 (mingw special 20020817-1) C:\MinGW> 上のように表示されれば MinGW-2.0 のインストールは無事終了です。 なお,以上のインストール手順に従った場合,MinGW を使うにはコマンド・プ ロンプトのウィンドウを開くたびに1度だけですが毎回,C:\MinGW\mingw を打 ち込んでパス設定を行う必要があります。これが面倒な場合には,使用してい る OS の種類に依存しますが,次のようにしてパス設定を自動化することもで きます:  (方法1: 推奨) デスクトップ,スタート・メニューまたはタスクバーに,MinGW を利用す るためのコマンド( DOS )・プロンプトのショートカットを作成(右ボ タンでドラッグ)し,その「プロパティー」の設定でスタート時に C:\MinGW\mingw が実行されるように設定します: ・Windows Xp/2000/NT4 の場合: 「コマンドプロンプトのプロパティー」 の「ショートカット」タブで,「リンク先」を %SystemRoot%\system32\cmd.exe /k "C:\MinGW\mingw" とします。 ・Windows Me/9x の場合: 「MS-DOS プロンプトのプロパティー」の「プロ グラム」タブで,「バッチファイル」を C:\MinGW\mingw.bat とします。 どちらの場合にも,ショートカット名を「MinGW」などとし,プログラム 開発を行うフォルダを「作業フォルダ」として設定するとよいでしょう。  (方法2: Windows Me/9x の場合) Windows Me/9x では DOS プロンプトを開くと C:\autoexec.bat が最初に 実行されます。したがって C:\autoexec.bat の最後に mingw.bat の内容 を加えておけば自動的に MinGW のパスが設定されますので,DOS プロン プトを開いた直後から MinGW を使うことができます。ただし,この方法 では MinGW を使わない場合でも C:\MinGW\bin がパスの先頭に設定され てしまうので,場合によって不具合が生じる可能性があります。 4. MinGW-2.0 をアンインストールするには,「コントロールパネル」の「ア プリケーションの追加と削除」から'MinGW 2.0.x' を選択して,「変更と削除」 ボタンを押してください。 c. 「GrWin グラフィックス・ライブラリ」のインストールとアンインストール GrWin グラフィックス・ライブラリのインストーラ版( lGrWn0999a-XXX.exe; XXX はコンパイラ・システムの省略名)を使ってイン ストールを行うには,GrWin で利用できるコンパイラ・システムがインストー ルされていて,利用可能になっている必要があります。自分のコンピュータに まだコンパイラがインストールされていない場合は前項を参照してください。 GrWin のインストールは自分の環境に合った GrWin のインストーラをダウン ロードして実行するだけです。どのようなファイルがインストールされるかは 「配布ファイル」を参照してください。 GrWin をアンインストールするには,「コントロールパネル」の「アプリケー ションの追加と削除」から'GrWin 0999b for xxx' を選択して,「変更と削除 」ボタンを押してください。 d. f77chk について インストーラをつかって GrWin をインストールすると,perl スクリプト言語 で書かれた FORTRAN77 のソースコード・チェッカ f77chkl.pl も自動的にイ ンストールされます。これにより,perl がインストールされていれば, C:\GrWin\demo> f77chk.pl trigfn.f などとするだけで,Fortran のソースコードで GrWin ライブラリの各ルーチ ンが正しい引数の並びで呼ばれているかどうかなどのチェックを行うことがで きます。コンパイルとリンクの時には何もエラーが出ないのに,実行時にエラ ーが出て異常終了するときなど,f77chk.pl を使うことでエラー個所を発見で きる場合があります。コンパイルとリンクでエラーが出なくなったら一度 f77chk.pl でチェックを行うことで,プログラム開発の能率が大幅に向上する はずです。より詳しくは配布ファイル中の f77chk.txt を参照してください。 e. サンプル・プログラムの実行 以上でインストールは完了しました。MinGW-2.0 以外の開発環境を使うときに は,下の説明で gwf77 や gwgcc などのバッチコマンド名を対応するものに読 みかえてください。 それでは,試しにサンプル・プログラムを動かしてみましょう: C:\GrWin>cd demo C:\GrWin\demo>gwf77 trigfn C:\GrWin\demo>gwgcc polygon C:\GrWin\demo>dir trigfn.* と入力してみてください。サンプルの Fortran ソースファイル trigfn.f か ら実行ファイル trigfn.exe が,また,C のソースファイル polygon.c から 実行ファイル polygon.exe が生成されているはずです。ここで失敗するよう なら,もう一度 MinGW のインストールから調べ直す必要があります。 trigfn.exe の生成に成功したら C:\GrWin\demo> trigfn として実行してみてください。グラフィクス・ウィンドウが開いて sin 関数 と cos 関数がプロットされ「フォント」ダイアログ・ボックスが開けば Ok です。ダイアログ・ボックスの各項目を適当に選択してから [OK] ボタンを押 せばダイアログ・ボックスは閉じます。マウス・ポインタをウィンドウ内に移 動して適当な点で左ボタンをクリックすればその点にマークが表示され,下部 のステータスバーにはその点のワールド座標系の座標が表示されます。このサ ンプル・プログラムを終了するには原点(縦軸と横軸の交点)付近で左クリック してください。「Message from grwnd」のダイアログボックスが開きますので, [はい(Y)] ボタンを押してください。これで,グラフィクス・ウィンドウが閉 じて,テストは完了です。ついでですので polygon.exe も実行してみてくだ さい。動作は polygon.f をコンパイルしたものとまったく同じですので demo\Polygon.txt の説明を参照してください。 demo フォルダ内の他のサンプル・プログラムについても gwf77 コマンドを用 いて上と同様に実行ファイルを生成してから実行し,動作確認をしてみてくだ さい。同じフォルダ内の *.txt ファイルには対応するサンプル・プログラム についての簡単な説明があります。MinGW-2.0 で、すべてのサンプル・プログ ラムの実行ファイルを生成するには、同じフォルダで単に C:\GrWin\demo>make を入力してください。VC++ と VF がインストールされている場合には C:\GrWin\demo>nmake -f make.mak とすることで、すべてのサンプル・プログラムの実行ファイルが生成されます。 VC++ がインストールされていて,C で書かれたサンプル・プログラムのみの 実行ファイルを生成するには、 nmake -f make.mak C としてください。Fortran のみの場合には C の代りに F としてください。 grwnd.exe について 本ライブラリでは,(コンソール)アプリケーションの入出力はそのままにして,グ ラフィクス表示は同梱の grwnd.exe が行います。つまり,本ライブラリは grwnd.exe にグラフィクス表示のためのコマンドを送る一種のインタープリターを 構成するためのもの,といえます。 grwnd.exe 内部では仮想的な「用紙」が設定されていて,「用紙」の左上隅を原点 とし,u 軸と v 軸をそれぞれ右向きと下向きにとった「論理デバイス座標系」が 使われています。「論理デバイス座標系」の単位はプリンタに出力するときの1ピ クセルに対応しています。また,「用紙」サイズの縦横比を保ったまま,「用紙」 の短い方の辺の長さを1に規格化した座標系を「規格化論理座標系」と呼びます。 「規格化論理座標系」の原点は「用紙」の左下隅に固定され,右と上をそれぞれ正 方向にとります。ユーザーが定義した座標系は「ワールド座標系」と呼ばれ,本ラ イブラリのほとんどのルーチンではこの「ワールド座標系」を用います。「ワール ド座標系」では原点や各方向の単位および正の向きは任意に設定できます。 ユーザーのアプリケーションから GrWin ライブラリの初期化ルーチン(GWINIT)を 呼び出すと,grwnd.exe が起動し,メイン(フレーム)・ウィンドウが現れます。た だし,GWINIT はGWOPEN (または GWOPENX) により内部的に呼び出されますので, オプション指定が必要な場合を除いて明示的に GWINIT を呼び出す必要はありませ ん。なお,grwnd.exe は予め任意の方法で起動しておいても構いません。 grwnd.exe を起動するときにコマンドラインで初期設定ファイル名(以下参照)を 指定することですべての起動オプション(以下参照)を一度に指定することができ ます。また,起動オプションは [ヘルプ] → [起動オプション] のダイアログで対 話的に指定することもできますし,コマンドラインで指定しなくてもデフォルトの 初期設定ファイルファイルから自動的に読み込ませることもできます。フレーム・ ウィンドウのメニューバーからは,各子ウィンドウに対してのクローズ,消去,印 刷といった操作も可能です(以下参照)。 ・オプションの設定 起動時のさまざまなオプションは次項にあるとおりコマンドラインから指定す ることもできますが,通常は初期設定ファイル( .ini ファイル )で行いま す。初期設定ファイルの拡張子は .ini で固定です。どの初期設定ファイルが 使われるかの優先順位は以下のとおりです: ・[ヘルプ] → [起動オプション] のダイアログで指定されたもの ・コマンドラインから指定されたもの ・アプリケーションの実行ファイルと同じディレクトリにあり,その実行フ ァイルの拡張子 .exe を .ini に替えたファイル名のもの ・環境変数 GRWINDIR で指定されたディレクトリ内の grwnd.ini ・アプリケーションの実行ファイルと同じディレクトリ内の grwnd.ini ・grwnd.exe と同じディレクトリ内の grwnd.ini 初期設定ファイルにおける各設定は [Defaults] セクションで行います。設定 項目 DefaultDPI には grwnd.exe 内部で仮定される dpi 値を指定します。 dpi 値はビュー(表示)モードを [ビットマップ] にする場合やプリンタで印刷 を行う際に参照されますが,何も指定しない場合(デフォルト時)には接続さ れているプリンタの解像度が使用されます。しかし,この dpi 値が大きすぎ ると内部で作られるビットマップも巨大なものとなってしまい,大量のメモリ を消費することになって搭載メモリ量によってはシステムが不安定になる恐れ があます。それを避けるためには設定項目 MaxDPI に,仮定される dpi 値の 上限を指定します。システムについて熟知している場合はこの上限を大きめに 設定してもかまいません。その他の各項目およびそれらの意味についてはにつ いては次項のコマンドライン・オプションを参照してください。初期設定ファ イル中で行頭に '#' がついた行の設定は無視されます。以下に初期設定ファ イルのサンプルを示します。 [Defaults] Storing=1 Buffering=1 StatusBar=1 Inquiring=0 Landscape=1 #Width=800 #Height=560 #PointX=0 #PointY=0 #DefaultDPI=300 MaxDPI=600 #ArrangeMode=2 #ShowMode=10 #ZOrder=1 ・grwnd のコマンドラインからの起動 起動方法: grwnd [オプション] [file.ini] [file1] [file2] ... オプション ( <..> は整数値) -p, フレーム・ウィンドウの位置 (左上隅) をスクリーン座標の (X,Y) に設定 -s, フレーム・ウィンドウの外接四角形のサイズをスクリーン座標で (W,H) に設定 -[dpi] ビットマップ等の作成時のデフォルト dpi 値 ( N <= MaxDPI ) の設定 -a ウィンドウの配置モードの設定。 GWarrange(N) と同等 (N = 1..4) 1: -cascade, 2: -horizontal, 3: -vertical, 4: -iconarrange -m フレーム・ウィンドウの表示モードの設定。 GWshowfr(N) と同等 (N = 0..14) 0: -hide, 1: -maximize, 2: -minimize, 3: -restore, 4: -show, 5: -showmaximized, 6: -showminimized, 7: -showminnoactive, 8: -showna, 9: -shownoactive, 10: -shownormal, 11: -topmost, 12: -notopmost, 13: -top, 14: -bottom -z フレーム・ウィンドウの表示 Z 順の設定。 GWshowfr(N+10) と同等 (N = 1..4) 1: -topmost, 2: -notopmost, 3: -top, 4: -bottom -t,-T 保存モード ON,OFF -b,-B バッファリング・モード ON,OFF -r,-R ステータスバー表示 ON,OFF -i,-I 確認モード ON,OFF -l,-L プリンタのランドスケープ(用紙横置き)モード ON,OFF フレーム・ウィンドウ最上部の,タイトルが表示されているタイトルバーの下のバ ーは「メニューバー」,最下部のバーは「ステータスバー」と呼ばれていて,以下 の機能があります: ・メニューバー メニューバーの [ファイル] からはファイルからの読み込み [開く] の他,現 在のグラフィクス・データの印刷 [印刷],ファイルへの書き込み [保存], [名前を付けて保存],アクティブ・ウィンドウのクローズ [閉じる] といった 操作が行なえます。印刷時の注意点については下に記述がありますので参照し てください。 なお,通常,右上隅のXボタンを押すか,左上隅のボタンを押して「閉じる」 を選ぶことによってフレーム・ウィンドウを閉じることができますが,場合に よってアプリケーション・エラーやメモリー・リーク(再利用不能のメモリー 領域が生じてしまうこと)が発生する場合がありますので,ウィンドウを閉じ るには,なるべくライブラリの GWQUIT を call するか,メニューバーから [ビュー]->[停止/終了] を選択してください。 [ファイル] からの操作は多くのウィンドウズ・アプリケーションの場合と同 様ですので詳細は省略します。 [編集] からはクリップボード(以下参照)関連の操作を行うことができます。 [ビュー] からは主に子ウィンドウの表示に関係するコントロールを行います。 [停止/終了] からは描画中のジョブの停止や強制終了が可能です(以下参照)。 [消去] はアクティブなウィンドウに属する保存オブジェクトを消去し,画面 をクリアします。[再生] は保存されているすべてのオブジェクトを忠実に再 実行しますので,GWSLEEP などを使ったアニメーションも再生できます。[再 描画] は,描画のルーチンが実行されたはずなのに画面に表示されない場合や, 何らかの理由で画面が崩れた場合に使います。[再生] と違って, [再描画] では保存されている背景やバッファを利用してできるだけ短時間に再描画を行 います。[フラッシュ描画] は GWFLUSH の呼び出しと同等で,描画が保留され ているオブジェクトのフラッシュ描画を実行します。 [ビュー] -> [保存モード],[バッファリング],[ステータスバー],[確認] は,それぞれ,保存モード,バッファ描画モード,ステータスバーの表示,確 認モードの切り替えのトグル・スイッチです。描画オブジェクト数が膨大で保 存モードのままではコンピュータのメモリを使い切ってしまう場合などには保 存モードを off,バッファ描画モードを on (この状態をペイント・モードと 呼びます)にしてみてください。ペイント・モードにすると,描画中のオブジ ェクト保存が行われないのでメモリ使用量が描画オブジェクト数に比例するこ ともなく,速度的にも有利になります。ただし,保存モードを off にすると, きれいな印刷ができなかったり,アニメーションの再生やウィンドウのリサイ ズやビュー(表示)モード(後述)の変更ができないといった制限が生じます。 なお,バッファ描画モードとは,現在の画面と同じ分解能の「用紙」を内部的 にビットマップとして用意して画面への再描画を高速化するもので,描画オブ ジェクトの数が極端に多い場合など再描画に時間がかかる場合に有効です。た だし,バッファ描画モードでは画面上でのウィンドウの大きさにより必要とな るメモリーが大幅に変化しますので,この機能がはたらかない場合にはウィン ドウの大きさを小さくしてみてください。メモリーは大量に消費されますが, 以下で説明するビュー(表示)モードを [ビットマップ] にしてから,このバッ ファ描画モードを利用すれば,印刷時の1ピクセルを画面の1ピクセルに対応 させた画面を高速にスクロールして見ることができます。確認モードを ON に しておくと,保存オブジェクトの全消去が行われるときに警告のダイアログボ ックスを表示し,クリップボードの取り込みを行ったときにその内容が表示さ れます。 [表示モード] からはビュー(表示)モードの選択を行うことができます(以下参 照)。 [ウィンドウ] -> [フィット] を選択すると,フレーム・ウィンドウのサイズ を現在の (子) ウィンドウにフィットさせる。[ウィンドウ] -> [最前面] は トグルスイッチで,ON の時にはフレーム・ウィンドウ全体をつねに最前面に 置く。描画中のウィンドウが他 (たとえば,コンソール・ウィンドウ) に隠れ ないようにすることができる。その他の [ウィンドウ] からの操作は多くのウ ィンドウズ・アプリケーションの場合と同様です。 [オプション] からは設定省略時のテキスト・フォントと記号フォント,前景 色と背景色をそれぞれのダイアログボックスで選択することができます。 なお,「色の作成」ダイアログボックスの下部の 16 個の長方形の色は現在の カスタムカラーを示していて,ダイアログボックスからでもプログラムからで も変更することができます。 プログラムからカスタムカラーを変更する方法についてはライブラリ・マニュ アルの GWCOLOR の項を参照してください。 [ヘルプ] からは grwnd.exe のバージョンやビルド番号,ディスプレーの解像 度などを知ることができます。また,ライブラリ・マニュアルをここから参照 することもできます。 ・ステータスバー grwnd.exe が起動され,アプリケーションからグラフィクス・ウィンドウが開 かれるか,既存のファイルがオープンされると,フレーム・ウィンドウ下部の ステータスバーにアクティブなウィンドウが属するアプリケーション番号とウ ィンドウ番号,開かれているウィンドウの数,現在のマウス位置(カーソルが グラフィクス・ウィンドウ内にあるときのみ有効),アクティブなウィンドウ の左下と右上の点の座標(論理デバイス座標),メモリーに保存されているオブ ジェクト数が表示されます。ステータスバーに任意の文字列を表示するルーチ ン GWSETMSG も用意されています。 [ビュー] -> [ステータスバー] でステー タスバーを非表示にすれば,描画が若干速くなります。 ・ビュー(表示)モード グラフィクス・ウィンドウのビュー(表示)モードは [ビットマップ], [等方的], [フィット], [全体], [拡大] の中から選択することができます。ビュー(表示) モードの変更は,通常メニューバーの [表示モード] から行いますが,アプリ ケーションから GWVWMOD を呼び出すことでも可能です。各モードの意味は以 下の通りです: [ビットマップ] 論理デバイス座標の単位を画面の1ピクセルに対応させるモード。ウィン ドウに納まらない部分は上下方向と水平方向のスクロールバーでスクロー ルすることにより表示できる。アスペクト比(印刷時の縦横比)は保たれる。 [等方的] ビューポートを,アスペクト比を保ったままウィンドウ内で最大表示する。 [フィット] 描画が行われた範囲を,ウィンドウに合わせて最大表示する。アスペクト 比は保たれない。 [全体] 設定された全領域(「用紙」全体)を,ウィンドウに合わせて最大表示する。 アスペクト比は保たれない。 [拡大] 部分を拡大して表示する。このモードを選択すると,カーソルが十文字形 に変化するので,マウスをドラッグ(左ボタンを押したままマウスを動か す)して,拡大したい領域を選択する。アスペクト比は保たれない。すで に拡大表示されているウィンドウの一部を,同様の手順で更に拡大するこ とができる。 ・印刷 印刷はメニューバーの [ファイル] -> [印刷] で行います。 "「用紙」" の幅 が高さより広い場合には,必要に応じて印刷の前に,[プリンタの設定] でプ リンタをランドスケープ(横長)に設定してください。印刷結果はビュー(表示) モードに依存しますので,[印刷のプレビュー]で確認するとよいでしょう。な お,多くのプリンタ・ドライバでは塗りつぶしの機能(GWFLOOD 参照)はサポー トされていないようです。 ・メタファイル出力拡張メタファイル形式 (*.emf) でのファイル出力が可能で すので、MS-Word など、(拡張)メタファイル形式の図形入力をサポートしている ワープロなどのアプリケーションには出力結果を容易に貼り付けることができま す。メタファイル形式でファイルを出力するには、メニュー・バーから[ファイ ル]->[名前を付けて保存]を選択し、ファイル名の拡張子として 'emf' を指定し てください。 ・クリップボード [編集] から [コピー] を選ぶと現在のウィンドウの内容が Windows のクリッ プボードにコピーされますので,クリップボードをサポートしている他のアプ リケーションで描画結果を処理することができます。その逆に,クリップボー ドからビットマップを取り込むこともできます。そのためには,[編集] から [取り込み] を選択してください。これにより,ビットマップ番号 0 にクリッ プボードの内容が取り込まれます。このとき,確認モードが ON の場合には取 り込んだ内容がダイアログボックスに表示されます。GWCOPYBMPにより,ビッ トマップ番号 0 の内容を他の番号にコピーすることで,クリップボードから の取り込みを何度でも行うことができます。なお,ビットマップ番号について はライブラリ・マニュアルのGWGETBMPの項を参照してください。 ・停止と強制終了 途中結果を印刷したいときや,予期していない表示が行われたり,実行時間が 長すぎるなどした場合に表示を一旦停止,または実行そのものをキャンセルし たい場合があります。そのようなときは,目的のウィンドウをアクティブにし てから,メニューバーの [ビュー] -> [停止/終了] を選択してください。強 制終了するかどうかのメッセージボックスがポップアップして表示は一旦停止 しますので,印刷やビュー(表示)モードの変更,ウィンドウサイズの調整など, 任意の作業を行うことができます。実行を継続する場合には「いいえ」ボタン を,強制終了したい場合には「はい」ボタンを押してください。 PGPLOT ドライバ 「GrWin グラフィクス・ライブラリ Ver. 0.99.9b」を使って PGPLOT version 5.2.0 を実装したものです.ドライバ名は /GW 及び /CGW ( 及び, /GWD と /CGWD ) です.ドライバ /CGW のカラーテーブルはオリジナルと同じで,背景色が 黒で前景色は白です.ドライバ /GW では,背景色が白で前景色は黒,他の色は /CGW と同じです.ドライバのソースコードをここで公開していますので,自由に 改良してください. GrWin ライブラリ本来のルーチンを呼び出して使う場合より自由度が若干制限され ますが,PGPLOT の X-Window ドライバと同等以上の機能があり,手持ちの pgplot を使ったソース・コードを Windows 上で動かしたい場合や印刷したい場合 などに使えます. 下の表にあるのは,各コンパイラ・システムで PGPLOT アプリケーションを開発/ 実行するために必要なファイルと,オリジナル の配布ファイルにあるデモのすべ ての実行形式を tar + gzip で圧縮したものです。ただし,デモの実行形式を除い て,すべてが GrWin のインストーラ版に含まれていますので,インストールが簡 単なインストーラ版の使用をお勧めします。 ファイル名 対応するコンパイラ pggw0999b-MinGW.tgz MinGW-2.0 pggw0999b-cygwin.tgz Cygnus Cygwin 1.3.x pggw0999b-watcom.tgz Open Watcom C/C++ and Fortran 1.0 pggw0999b-f2bcc.tgz Borland C++ Compiler 5.5 + f2c pggw0999b-f2dmc.tgz Digital Mars C/C++ Compilers + f2c pggw0999b-Intel.tgz Intel(R) C++/Fortran Compiler 7.1 ( f2c も可 ) pggw0999b-f2vcpp.tgz Microsoft Visual C++ Version 6.0 + f2c pggw0999b-mingw32m.tgz gcc-2.95.2-mingw32 pggw0999b-mingw32.tgz gcc-2.95.2-mingw32 pggw0999b-cygb20.tgz gcc-2.95.2-cygb20 pggw0999b-uwin.tgz AT&T UWIN 3.x + gcc-2.95.2-uwin 現在のところ Compaq Visual Fortran Version 6 (VF) に対応したバイナリの配布 は行われていません。VF のユーザーは GrWin ツールキットを使うか,ここを参照 してまず VF 用の PGPLOT ライブラリ・ファイルを作成する必要があります。 下に Cygwin 1.3.x の場合についてのインストール方法とバッチファイルの使い方 についての簡単な説明があります。各配布ファイルにはコンパイラに対応したバッ チファイルが含まれていますので,cygwin 以外の環境を使っている場合には下の 説明のバッチファイル名を自分の環境のバッチファイル名に読みかえてください。 ライブラリのその他の使用方法についてはオリジナルの配布ファイルに含まれるド キュメントを参照してください.なお,デモの実行中に終了したい場合には,メニ ューから [ビュー] -> [停止/終了] を選択して終了させてください. ----------------------------------------------------------------------------- インストールの方法 ( Cygwin 1.3.x の場合 ) 1.配布ファイル pggw0999b-cygwin.tgz を適当なディレクトリ,例えば /tmp にダウンロードする. 2.インストール・ディレクトリ, 例えば /pgplot に以下の手順で展開す る: $ mkdir /pgplot $ cd /pgplot $ tar xvfz /pgplot/pggw0999b-cygwin.tgz 3.すべてのライブラリ・ファイルを /usr/lib へコピーする: $ cp *.a /usr/lib 4.すべてのインクルード・ファイルを /usr/include へコピーする: $ cp *.h /usr/include 5.環境変数 PATH と PGPLOT_DIR をセットする.シェルとして bash を使 っている場合には以下のコマンドを入力すればよい.ただし,これらの操作 は bash を立ち上げるたびに必要なので,適当なスタートアップ・ファイル に書いておくとよい: $ PATH=/pgplot:$PATH $ export PATH $ PGPLOT_DIR=/pgplot $ export PGPLOT_DIR 実行ファイルを生成するためのバッチファイルが配布ファイルに含まれている ので利用すると便利.引数には 9 個までのソースファイル名やコマンドライ ン・オプションを指定することができるが,第一引数には拡張子を除いたメイ ンのソースファイル名を指定する。典型的な使い方は以下の通り: $ pggwf77.bat pgdemo1 ( Fortran のソースファイル pgdemo1.f から実行ファイル pgdemo1.exe が生成される) $ pggwgcc.bat cpgdemo ( C のソースファイル cpgdemo.c から実行ファイル cpgdemo.exe が生成される) $ pggwcpp.bat foo ( C++ のソースファイル foo.cpp から実行ファイル foo.exe が生 成される) ----------------------------------------------------------------------------- ソースからインストールする方法 ( MinGW 2.x の場合 ) 1.オリジナルのソース・ファイル (pgplot5.2.tar.gz) を適当なディレク トリで展開する. 2.同じディレクトリで pggw-150.tgz を上書きで展開する.このときいく つかのファイルは上書きされてしまうので注意. 3.新しくできたサブディレクトリ gnuwin32 に cd してから MinGW 2.x の環境で GrWin Library Ver. 0.99.9b が使える状態にする.そのままでは コマンド長の制限に引っかかるので sh.exe や cygwin 環境の bash などを 起動しておくと良い. 4."sh ../makemake .. gnuwin32 gwlib" を実行する.これにより make に必要な環境が作られる. 5."make" を実行する.Fortran 用のライブラリと Fortran によるデモ用 の実行ファイルができる. 6."make clear" を実行する(省略化). 7."make cpg" を実行する.C 用のライブラリと C によるデモ用の実行フ ァイルができる. 8."strip *.exe" を実行する(省略化). 9.オリジナルの配布ファイルに含まれるドキュメントを参照して,出来上 がった PGPLOT のライブラリをインストールする. 以上 ライブラリのリンク ユーザーの (コンソール) アプリケーションで GrWin グラフィクス・ライブラリ を利用するには,MinGW / mingw32 / cygwin / uwin の g77 や gcc によるリンク 時のオプションとして -Wl,--subsystem,console -lGrWin -mwindows を指定します。長いので make やバッチ・ファイルを利用するとよいでしょう。例 えば,polygon.f をコンパイルするには同梱のgwf77.bat を利用して gwf77 polygon などとできます。ここでgwf77.batに渡す第一引数には拡張子(.f)を付けないでく ださい。例として,abc.f と xyz.c から abc.exe を作る場合には gwf77 abc xyz.c としてください。aaa.c から aaa.exe を作る場合は gwgcc aaa とします。Fortran のときと同様に,第一引数についてだけ拡張子を省略する必要 があります。 C または C++ 言語で書かれた Windows アプリケーションの場合には 'console' オプションを 'windows' に置き換えて -Wl,--subsystem,windows -lGrWin -mwindows を指定します。このためのバッチ・ファイル gwgccw.bat が用意されていて,使い 方は gwgcc.bat と同じです。 なお,Fortran 用のライブラリ・ルーチンは内部で C のルーチンを call してい る場合が多いので,C 言語でプログラミングを行ったほうが効率が良いでしょう。 VC++ や VF をコンソール・ウインドウで使うためのバッチ・ファイル gwcl.bat (C, CUI用), gwclw.bat (C, GUI用), gwdf.bat (Foertran, CUI用) な ど,各コンパイラシステム用のバッチファイルが用意されていますので、必要に応 じてエディタなどでバッチファイルの内容を参照してください。 ----------------------------------------------------------------------------- (注意)特定の漢字を使うとコンパイル時に警告メッセージが現れ,期待通りの結 果が得られません.これは漢字をサポートしていない処理系で生じる一般的な問題 で、2バイト目にエスケープ文字を表す「円記号」 '\' (0x5C) が含まれる特定の 2バイト文字をそのまま文字列に使うと、'\'とその次の1バイトがエスケープ文字 と認識されてしまうことによります。 この問題はそのような漢字を,1バイト目は16進表記し,2バイト目は「円記号」を 表すエスケープ文字 '\\' を使って表すことで回避できます.たとえば、'能'のシ フト JIS コードは '0x945C' なので     WRITE(*,*) '能率 = ' などとするとこの問題が生じますが、     WRITE(*,*) '\x94\\率 = ' または     WRITE(*,*) '能\率 = ' で、期待通りの結果が得られます。C の場合も同様です。詳しくは、ホームペー ジの「Q and A」を参照してください。 ダウンロード 「GrWin グラフィックス・ライブラリ」の公式配布場所( ftp サイト)は ftp://spdg1.sci.shizuoka.ac.jp/pub/GrWinlib/ です。また,ESRF にミラーサイトが設置されていますのでそちらもご利用くださ い. a. GrWin グラフィックス・ライブラリ GrWin グラフィックス・ライブラリをインストールするには,自分の環境に合わせ て,下の表のファイル名のどれか1つをクリックして、ハードディスクにファイル をコピーして利用してください。よくわからない場合は,MinGW の最新版をインス トールしてから,lGrWn0999b-MinGW.exe をダウンロードするとよいでしょう。こ れだけで自分のパソコンに Fortran と C/C++ のためのグラフィクス・プログラミ ング環境を構築することができます。 インストーラによるインストール時に pgplot を選択(デフォルト)すると PGPLOT ライブラリを使うために必要なファイルがインストールされ,陰線処理や コンター図を含む豊富な高レベル・ルーチン群( 出力例はここ )を Windows 上 で利用することができるようになります。含まれている PGPLOT ドライバは GrWin ライブラリを使って実装したもので,PGPLOT の X-Window ドライバと同等 以上の機能があり,UNIX で動かしていた PGPLOT アプリケーションを Windows に 容易に移植することができます。インストールの詳細については「#INSTALL">イン ストール」を参照してください。 必須ファイル(自分の環境に合わせて,どれか1つをダウンロードしてください) ファイル名 対応するコンパイラシステム lGrWn0999b-MinGW.exe MinGW-2.0 lGrWn0999b-cygwin.exe Cygnus Cygwin 1.3.x lGrWn0999b-watcom.exe Open Watcom C/C++ and Fortran 1.0 lGrWn0999b-f2bcc.exe Borland C++ Compiler 5.5 + f2c lGrWn0999b-f2dmc.exe Digital Mars C/C++ Compilers + f2c lGrWn0999b-Intel.exe Intel(R) C++/Fortran Compiler 7.1 ( f2c も可 ) lGrWn0999b-f2vcpp.exe Microsoft Visual C++ Version 6.0 + f2c lGrWn0999b-vf.exe Compaq Visual Fortran Version 6 lGrWn0999b-mingw32m.exe gcc-2.95.2-mingw32 lGrWn0999b-mingw32.exe gcc-2.95.2-mingw32 lGrWn0999b-cygb20.exe gcc-2.95.2-cygb20 lGrWn0999b-uwin.exe AT&T UWIN 3.x + gcc-2.95.2-uwin lGrWn0999b.exe 全配布ファイル(インストーラ版) lGrWn0999b.lzh 全配布ファイル (lha で圧縮したもの) lGrWn0999b.tgz 全配布ファイル (tar + gzip で圧縮したもの) b. GrWin ツールキット ( VF ユーザーと開発者向け ) 「GrWin ツールキット」とは GrWin のライブラリ・ファイルを生成するためのソ ースコードのセットのことで,f2c や PGPLOT のためのパッチを含みます。 Compaq Visual Fortran Version 6 で PGPLOT を使用する場合にはまずこのツール キットを用いて VF 用の PGPLOT ライブラリ・ファイルを作成する必要があります。 また,GrWin が対応していないシステムに移植を行いたい場合や個人利用のための 改造を行いたい場合にもこれを使います。それ以外の一般ユーザには多分必要ない でしょう。「GrWin ツールキット」を使って上の表にないコンパイラ・システムに 対応できた場合は是非ご一報ください。 開発者向けファイル ファイル名 内容 GrWinTk-0999b.tgz GrWin ツールキット c. その他の配布ファイル 下の表にダウンロード可能な他のファイルを示します。それらのファイルそのもの やそれらの圧縮ファイルを展開して得られるファイルは,次に述べる例外を除いて すべて,上の2つの表に列挙したファイルに含まれています。ダウンロードの総量 を抑えるためなど,個別のファイルだけを必要とする場合にダウンロードしてくだ さい。 下の表の pggw0999b-XXX.tgz は,コンパイラ・システム XXX で PGPLOT アプリケ ーションを開発/実行するために必要なファイルと,PGPLOT のオリジナルの配布 ファイルにあるデモすべての実行形式を tar + gzip で圧縮したものですが,デモ の実行形式を除くとインストーラ版にすべて含まれています。これらは PGPLOT の デモを実行してみたいときにダウンロードしてください。 その他のファイル ファイル名 内容 demoexe MinGW で作成したサンプルプログラムの実行ファイル README.html README ファイル(HTML版) README.txt README ファイル(テキスト版) lGrWn0999b.html ユーザーズ・マニュアル(HTML版) lGrWn0999b.txt ユーザーズ・マニュアル(テキスト版) f2c-bcc.tgz Borland C++ Compiler 5.5 用の f2c f2c-dmc.tgz Digital Mars C/C++ Compilers 用の f2c f2c-Intel.tgz Intel(R) C++ Compiler 7.1 用の f2c f2c-vcpp.tgz Microsoft Visual C++ Version 6.0 用の f2c pggw-150.tgz GrWin を利用した Windows 用 PGPLOT ドライバのソースコードとパッチ pggw0999b-MinGW.tgz MinGW-2.0 で PGPLOT を使うためのファイル一式 pggw0999b-cygwin.tgz Cygnus Cygwin 1.3.x 〃 pggw0999b-watcom.tgz Open Watcom C/C++ and Fortran 1.0 〃 pggw0999b-f2bcc.tgz Borland C++ Compiler 5.5 + f2c 〃 pggw0999b-f2dmc.tgz Digital Mars C/C++ Compilers + f2c 〃 pggw0999b-Intel.tgz Intel(R) C++/Fortran Compiler 7.1 ( f2c も可 ) 〃 pggw0999b-f2vcpp.tgz Microsoft Visual C++ Version 6.0 + f2c 〃 pggw0999b-mingw32m.tgz gcc-2.95.2-mingw32 〃 pggw0999b-mingw32.tgz gcc-2.95.2-mingw32 〃 pggw0999b-cygb20.tgz gcc-2.95.2-cygb20 〃 pggw0999b-uwin.tgz AT&T UWIN 3.x + gcc-2.95.2-uwin 〃 libs 各コンパイラに対応するライブラリ・ファイル PREVIOUS 直前のバージョンの保管場所 拡張子が .tgz や .lzh のようなファイルは圧縮形式のファイルですのでそのよう なファイルをダウンロードして利用するには復元(「解凍」ともいう)を行う必要 があります。圧縮ファイルの復元が必要な場合は奥村さんのページを参考にすると よいでしょう。 なお,旧版の配布ファイルが ここに保存されていますので必要に応じてご利用く ださい (旧版の再配布はご遠慮ください)。 配布ファイル インストーラ( lGrWn0999b-XXX.exe; XXX はコンパイラシステムの省略名 )に よりインストールを行うと以下のファイルが最適なディレクトリに分散インストー ルされます。なお, lGrWn0999b.lzh と lGrWn0999b.tgz は GrWin が対応してい るすべての環境 のためのファイルを圧縮したもの(圧縮版)で, lGrWn0999b.exe はそのインストーラ版です。圧縮版をダウンロードした場合は解 凍後に自分ですべてのインストールを行う必要がありますし,そのインストーラ版 でも,インストール時に複数の環境を選択すると実行ファイルはすべて,指定した GrWin フォルダに格納されてしまうので,そのフォルダに自分でパスを通す必要が あります。インストールに自信がない人は自分の環境に合ったインストーラ版を使 用することを強くお勧めします。下に,インストールされるフォルダ別に,各配布 ファイルについての簡単な説明を加えます。なお,バッチ・ファイル名に含まれる {F77}, {CC}, {CPP} は各使用環境における FORTRAN, C, C++ のコンパイラ名の略 記ですのでつぎの表の対応する項目と置き換えて読んでください: コンパイラ名の略記の対応表 GNU (*) watcom bcc dmc Intel vcpp vf {F77} f77 wfl × × ifl × df {CC} gcc wcl bcc dmc icl cl × {CPP} gpp wcl bcc dmc icl cl × (*) GNU = MinGW, cygwin, uwin, mingw32m, mingw32, ctgb20 a. GrWin フォルダ ファイル名 内 容 README.html README ファイル/HTML版 README.txt README ファイル/テキスト版 qanda.html Q and A/HTML版 lGrWn0999b.html ライブラリ・マニュアル/HTML版 lGrWn0999b.txt ライブラリ・マニュアル/テキスト版 f77chk.txt f77chk.pl の簡単な説明 demo\ GrWin のサンプル・プログラムの入ったディレクトリ pgplot\ PGPLOT アプリケーションを実行するために必要なファイルと PGPLOT ライブラリのサンプル・プログラムの入ったディレクトリ lGrWn0999b-XXX.iss インストーラのソースコード( XXX はコンパイラの省略名 ) unins000.exe アンインストーラの実行ファイル unins000.dat アンインストーラが使用するデータ・ファイル GrWin.ico アンインストーラが使用するアイコン b. コンパイラの実行ファイルのフォルダ ファイル名 内 容 grwnd.exe Windows Xp/2000/NT/Me/9x 上で本ライブラリを利用するための Windowsアプリケーション grwnd.ini grwnd.exe のための .ini ファイル f2c.exe FORTRAN77 で書かれたソースファイルを C に翻訳するための f2c の実行ファイル f77chk.pl Fortran77 用のソース・コード・チェッカー (Perl スクリプト) library.def ライブラリ関数の定義ファイル( f77chk.pl で使用 ) gw{F77}.bat 拡張子が .f の Fortran ファイルから実行ファイルを生成するためのバッチ・ファイル gw{CC}.bat 拡張子が .c の C ファイルから実行ファイル(CUI)を生成するためのバッチ・ファイル gw{CC}w.bat 拡張子が .c の C ファイルから実行ファイル(GUI)を生成するためのバッチ・ファイル gw{CPP}.bat 拡張子が .cpp の C++ ファイルから実行ファイル(CUI)を生成するためのバッチ・ファイル gw{CPP}w.bat 拡張子が .cpp の C++ ファイルから実行ファイル(GUI)を生成するためのバッチ・ファイル gwf2{CC}.bat 拡張子が .f の Fortran ファイルから実行ファイルを生成するためのバッチ・ファイル( f2c 用 ) pggw{F77}.bat PGPLOT ライブラリを使用した,拡張子が .f の Fortran ファイルから実行ファイルを生成するためのバッチ・ファイル pggw{CC}.bat PGPLOT ライブラリを使用した,拡張子が .c の C ファイルから実行ファイル(CUI)を生成するためのバッチ・ファイル pggw{CC}w.bat PGPLOT ライブラリを使用した,拡張子が .c の C ファイルから実行ファイル(GUI)を生成するためのバッチ・ファイル pggwf2{CC}.bat PGPLOT ライブラリを使用した,拡張子が .f の Fortran ファイルから実行ファイル(CUI)を生成するためのバッチ・ファイル( f2c 用 ) c. コンパイラのライブラリファイルのフォルダ ライブラリ名 内 容 GrWin GrWin のライブラリ・ファイル GrWin0 GrWin のライブラリ・ファイル(除,calcomp ライブラリ) calcomp GrWin のライブラリ・ファイルから calcomp ライブラリ部分だけを取り出したもの(GrWin =GrWin0 + calcomp) pgplot PGPLOT ライブラリのライブラリ・ファイル( GrWin 使用) cpgplot PGPLOT ライブラリを C で使うためのライブラリ・ファイル( GrWin + pgplot 使用) f2c f2c.exe で C に翻訳したソースから実行ファイルを生成するためのライブラリ・ファイル d. コンパイラのインクルードファイルのフォルダ ファイル名 内 容 GrWin.h 利用できるすべの関数のプロトタイプが宣言されているC言語用のヘッダ・ファイル cpgplot.h PGPLOT ライブラリを C で利用するためのヘッダ・ファイル f2c.h f2c.exe で C に翻訳したソースをコンパイルするために必要なヘッダ・ファイル 本バージョンについて grwnd.exe を含む本ライブラリは未だ開発中ですが,Version 0.99.9b はβ版で あり,仕様は最初の正式公開版 1.00.X とほぼ同じ予定です。マニュアルの不備も 予想されますし,まだ思わぬ問題が存在するかもしれませんので,お気づきの点を メーリングリストに報告していただければ幸いです。 今後バージョンアップが行われた場合には,ライブラリと grwnd.exe のバージョ ン(README.txtに記載されているものと,メニューバーの [ヘルプ] -> [grwnd に ついて] で確認)が一致していること確認する必要があります。ライブラリのバー ジョンと,適合する grwnd.exe のバージョンは,プログラムで GWVERSION を呼び 出すことによっても調べることができます.古いライブラリで作成されたアプリケ ーションは新しい grwnd.exe では動かないと思ったほうが良いでしょう(その逆 も)。 実行ファイルにリンクした GrWin ライブラリと grwnd.exe のバージョンが一致し ていない場合には, "WARNING: XXX [x,x,x,x] is older than YYY [y,y,y,y]" のような,どちらが古いかを示す警告メッセージがコンソール・ウィンドウ (CUI)に表示されますので,両者のバージョンを一致させて下さい。なお,[ ] 内 の数字(またはアルファベット)がそれぞれのバージョンを表わしています。最新版 は http://spdg1.sci.shizuoka.ac.jp/grwinlib/ から入手することができます 配布ファイル中のユーティリティー f77chk を利用すれば,Fortran のソースコー ドが現在のバージョンに適合しているかどうかを調べることができます。 著作権と免責,利用,再配布について grwnd.exe と vcpp\GrWin.lib は Microsoft VC++ 6.0 (grwnd.exe は MFC) を使 用して作成しました。MinGW\*.a は MinGW-2.0 を使用して作成しました。 mingw32\*.a と mingw32m\*.a は gcc-2.95.2-mingw32 を使用して作成しました。 cygb20\*.a 及び cygwin\*.a はそれぞれ,Cygnus Cygwin B20.1 + gcc-2.95.2-cygb20 及び Cygnus Cygwin 1.3.x を使用して作成しました。 uwin\*.a は AT&T UWIN 3.x + gcc-2.95.2-uwin を使用して作成しました。 watcom\*.lib は Open Watcom C/C++ 1.0 を使用して作成しました。bcc\*.lib は Borland C++ Compiler 5.5 を使用して作成しました。dmc\*.lib は Digital Mars C/C++ Compilers を使用して作成しました。intel\*.lib は Intel(R) C++ Compiler 7.1 を使用して作成しました。「GrWin グラフィックス・ライブラリ」 のソフトウェア群についての著作権は 溜渕 継博 が有します。本ソフトウェア群 の利用によって損害が生じたとしても,作者はそれらの損害等に一切責任を負いま せん。また,バグの fix やバージョン・アップなどについての責任もありません。 なお,バグ等の報告は歓迎します。 本ソフトウェア群はフリー・ソフトウェアですので,個人または団体で自由に利用 できます。再配布については,配布ファイル lGrWnXXX.yyy (XXX はバージョン番 号 yyy は圧縮形式)の配布形態,すなわち,展開後のすべてのファイルとディレ クトリ構造を保つことを条件に自由に行って構いませんが,その際に,再配布に必 要な経費以外の金銭の授受を禁止します。なお,団体で利用される場合には人数や 利用目的等について連絡をいただけると幸いです。 本バージョンは未だ開発途中の段階のものですので,より新しいバージョンが本作 者によりリリースされた場合には本バージョンの再配布を禁止します。ただし,本 作者による新しいバージョンのリリースの後でも,古いライブラリをリンクしたア プリケーションとともに,そのアプリケーションを動作させるときに必要となる, 対応する grwnd.exe と README.html, および README.txt のみを再配布すること は認めます。 本ライブラリ及び grwnd.exe に関する作者への連絡は grwinlib@spdg1.sci.shizuoka.ac.jp へお願いします。 更新履歴 Ver 0.99.9b ・gwd フォーマットでファイル保存( *.gwd )する場合,使用しているビット マップを gwd ファイルに埋め込み可能(デフォルト)とした。 ・GWMODE(および,GWmode )の仕様を拡張して,終了時にウィンドウを閉じな いモードと,ビットマップを gwd ファイルに埋め込むモードの設定と解除がで きるようにした。 ・2度目以降の'ジョイン'(GWjoin 参照)に失敗するバグを修正した。 ・その他の修正を行った。 Ver 0.99.9a ・ タートル・グラフィクスのためのルーチン群 (GWTxxxxx, 及び倍精度版の GWDTxxxxx) を追加した。これらのルーチン群は再描画のための座標情報をワー ルド座標として,実数 (GWTxxxxx) または倍精度実数 (GWDTxxxxx) で保持する ので,相対座標による描画でも誤差の蓄積がほとんど生じない。 ・ Intel(R) C++/Fortran Compiler をサポート対象に加えた。 ・ OpenWatcom の C/C++/Fortran77 をサポート対象に加えた。 ・ Intel(R) C++, Borland C/C++, Microsoft Visual C++, Digital Mars C/C++ Compilers 用の f2c ライブラリを用意することによって,これらの環境 で Fortran コンパイラを所有していない場合でも Fortran 77 によるプログラ ミングが可能になった(含,pgplot ドライバ)。 ・ 使用環境ごとのインストーラを用意することでインストールが簡単になった。 ・ GWINDOW(および,GWindow)の仕様を拡張して,ビューポートのワールド座 標系における幅または高さの一方のみが 0 となる設定を行うと,0 でない高さ または幅を参照して,アスペクト比が 1:1 の等方的座標系が得られるようにし た。ワールド座標系を論理デバイス座標系と同じにする場合は,幅と高さの両方 が 0 になるように設定すればよい。幅か高さの一方のみを 0 とする設定を行っ ていた場合に限って,ソースコードの変更が必要。 ・ GWSIZE と GWVMODE(および,GWsize と GWvmode)の仕様を拡張して, GWinit による初期化後なら,ウィンドウのオープン以前でも,種々(ウィンド ウと無関係のものに限る)のサイズやデフォルトのビュー(表示)モードについて, 設定や問い合わせを可能にした。ソースコードの変更は不要。 ・ ディスプレイ上のピクセル・サイズの現在の値をワールド座標系で取得する ための GWPXLSIZ (および,GWpxlsiz) を追加した。 ・ GWSLEEP2(および,GWsleep2)の仕様を拡張して,呼び出し時の内部時計の 時刻を成功時の戻り値として返すようにした。これによりラップタイムの計測が 容易になった。ソースコードの変更は不要。 ・ GWSETMRK(および,GWsetmrk)の仕様を拡張して,ビュー(表示)モードによ らずピクセル値でサイズを指定できるマーク(塗りつぶされた正方形)を新設し た。これにより内部の座標変換によるサイズの乱れのないきれいな点のプロット が可能になった。ソースコードの変更は不要。 ・ GWPUTCMB(および,GWputcmb)の仕様を拡張した。ソースコードの変更は不 要。 ・ビットマップの登録削除を行うための GWDELBMP (および,GWdelbmp) を追加 した。 ・コンボを多数作ろうとすると失敗してしまうことのあるバグを修正。 ・OGN(オブジェクト・グループ番号)に大きな値を設定しようとすると失敗して しまうバグを修正。 ・フラッシュ描画で描画オブジェクト数が0の場合に古いオブジェクトの消去が なされないバグの修正。 ・多種類(500程度)のオブジェクトを作成すると grwnd.exe 内部でループして しまうことのあるバグの修正。 ・VF 環境で KBHIT が使えなかったバグの修正。 Ver 0.99.9 ・ ウィンドウを閉じないで終了するための GWLEAVE(および GWleave)を加え た。 ・ 開いているウィンドウに追加書きするための GWJOIN, GWJOINX(および GWjoin, GWjoinx)を加えた。 ・Calcomp ライブラリのさまざまな「方言」に柔軟に対応できるように, Calcomp のライブラリ・ファイル libcalcomp.a ( VC++ / BC では calcomp.lib) を独立させた,libGrWin0.a ( VC++ / BC では GrWin0.lib) を用 意した。GrWin0 ライブラリとともに従来どおり Calcomp ライブラリを使用する 場合にはリンク時のオプションとして -lGrWin0 だけでなく -lcalcomp を加え る必要がある( VC++ / BC では GrWin0.lib と calcomp.lib) 。 ・GWOPEN, GWOPENX (および GWopen, GWopenx) の仕様を変更して,必要な場合 に GWINIT (GWinit) を呼び出すように変更した。したがって,オプション指定 が必要な場合等を除いて明示的に GWINIT を呼び出す必要はない。また,最近の 高解像度プリンタに対応しデバイス非依存とするため,内部「用紙」サイズを指 定するときの単位をピクセル値から 0.1 mm へ変更した。「用紙」サイズの指定 を行っている場合はソースコードの修正が必要。その他の場合はこの変更に伴う ソースコードの修正は不要。 ・GWSIZE (および GWsize) の仕様を変更して,プリンタ関連の長さの単位をピ クセル値(マージンの場合は mm )から 0.1 mm へ変更した。 ・GWPRINT (および GWprint) の仕様を変更して,印刷時のビュー(表示)モー ドを現在のウィンドウのビューモードとは独立に設定できるようにした。このル ーチンの呼び出しを行っている場合はソースコードの修正が必要。 ・GWINITX(および GWinitx)の仕様拡張を行い,プログラムから grwnd.exe の すべての起動オプションを指定可能にした。これらを使用している場合はソース コードの修正が必要。 ・grwnd.exe のすべての起動オプションを設定ファイル *.ini で設定可能にし た。 ・起動オプションの設定ファイル *.ini を編集するためのダイアログを新設し た。 ・「名前を付けて保存」のダイアログを変更した。 ・GWPORT (および GWport) を使うと上下が反転してしまうバグをフィックスし た。 ・保存モードが OFF のときでもクリップボードへのコピーが可能になった。 ・GWMODE(および GWmode)の仕様拡張を行った。この変更に伴うソースコード の修正は不要。 ・Ver 0.99.8b で判明した Windows のバグ(マイクロソフト サポート技術情報 - Q156696)に対応した。これにより,Windows 9x でもメモリーリークなしに GWSETRGN (および GWsetrgn) が正常に機能するようになった。 ・ 試験的に, Digital Mars C/C++ Compilers をサポート対象に加えた。 ・その他の修正を行った。 Ver 0.99.8b ・Windows 9x のみで,リソースリークが発生してフリーズしてしまうことがあ るバグ(Windows 9x のバグと思われる)に対応した。このため,Windows 9x で は GWSETRGN (および GWsetrgn) が正常に機能しなくなった(Windows Me/NT/2k/Xp では問題なし)。 ・その他の修正を行った。 Ver 0.99.8a ・Windows XP に対応した。 ・MinGW 最新版の MinGW-1.1 に対応した。 ・Cygwin 最新版の Cygwin-1.3.x に対応した。 ・UWIN 最新版の UWIN-2.9 に対応した。 ・1次元配列に格納されたデータを折れ線グラフや棒グラフなどとして一括して プロットする GWPLOT1 (および GWplot1) を加えた。 ・インターバルタイマーを起動/停止する GWTIMER (および GWtimer) を加えた。 ・インターバルタイマーが生成するタイマー・イベント情報を取得するために GWEVENT (および GWevent) の仕様を拡張した。 ・GWSLEEP2(および GWsleep2)の仕様を拡張した(マニュアルを修正した)。 ・内部時計の現在時刻を取得する GWCTIME(および GWctime)を加えた。 ・0.99.8 のリリース後に発見されたバグのフィックスを行った。 Ver 0.99.8 ・保存時のファイル・フォーマットや表示モードを変更できるように GWSAVE (および GWsave) の仕様を拡張するとともに,ルーチン名を GWSAVEAS (および GWsaveas) に変更した。GWSAVE (および GWsave) は将来的に廃止の予定。 ・特定のディスプレー・モードでビットマップ関連の警告が出るバグを修正。 ・マークで使われるペンの色が常に黒色になってしまうバグを修正した。 ・ビットマップ縮小時にモアレ様のノイズが出るバグを修正。 ・GWLOADEMF (および GWloadEMF) と GWSAVEEMF (および GWsaveEMF) のルーチ ン名をそれぞれGWLOADCMB (および GWloadcmb),GWSAVECMB (および GWsavecmb) に変更した。これらを使っているソースコードは要修正。 ・GWSETBMP (および GWsetbmp) の仕様を拡張した。 ・GWPOLYGON,GWPOLYLIN,GWBEZIER (および GWpolygon,GWpolylin, GWbezier) にあったセグメント数の上限(256)を撤廃した。 ・GWSETTXT と GWSETSYM (および GWsettxt と GWsetsym) の仕様変更および拡 張を行った。これらを使用している場合には,ソースコードの変更が必要。 ・GWSIZE (および GWsize) の仕様変更および拡張を行った。これらを使用して いる場合には,指定しているパラメータによってはソースコードの変更が必要な 場合がある。 ・ワールド座標系でビューポートを設定する GWPORT (および GWport) を追加し た。 ・ビューモード名の「スクロール」を「ビットマップ」に改めた。 ・出力可能なファイルの種類に,ビットマップ (*.bmp) 形式を追加した。 ・出力のファイル形式として,旧形式である Windows メタファイル (*.wmf) 形 式をサポート対象から除外した。 ・pgplot ライブラリからの移植例として,回転する多面体のデモ demo/gwdemo17.f を加えた 。 ・grwnd.exe のコマンドラインから,プリンタ用紙の横置き(ランドスケープ) モードの設定/解除のためのオプション( -l, -L )を追加した。 ・GWINITX (および GWsize) の仕様拡張を行い,プログラムから,プリンタ用紙 の横置き(ランドスケープ)モードの設定/解除を可能にした。 Ver 0.99.7x ・Ver 0.99.7 の再描画やフラッシュ描画に関係したバグを fix。Ver 0.99.7 か らは grwnd.exe のみを入れ替えればよい。 Ver 0.99.7 ・描画オブジェクトの集合としての`コンボ'を導入した。コンボは任意の大きさ で何度でも描画に使うことができ,emf ファイル(拡張メタファイル)として外部 ファイルに保存/読み込みも可能。 ・ビットマップの内部処理を大幅変更し,バッファリング・モードでもアニメー ションが可能になった。また,これにより,GWFLUSH を利用することでちらつき の少ないアニメーションを実現できる(サンプルプログラムの bounce, dp, soliton 等を参照)。 ・バッファリング・モードをデフォルトにした。 ・再描画を高速に行うために背景を登録する GWSETBK (および GWsetbk) を追加 した。 ・GWKYBRD (および GWkybrd) の仕様を変更した。これらを使用している場合は ソースコードの変更が必要 (ほとんどの場合,引数の並びの最後に ', -1' を加 えればよいはず) 。 ・アイドル処理のための GWIDLE, GWIDLE2 (および GWidle, GWidle2) を追加し た。アイドル処理中にはキーボードの矢印キーでマウスカーソルを移動すること ができる。 ・時間待ち処理のための GWSLEEP2 (および GWsleep2) を追加した。 ・低レベルの関数群 GW_xxxxxx を公開した。これらは,基本的に「論理デバイ ス座標系」を使うので,ワールド座標系から変換するときの丸め誤差の影響を排 除することができ,1ピクセル単位の操作をしたいときなどに利用できる。引数 の並びについては GrWin.h を,機能についてはマニュアルの,対応する関数の 項を参照。各低レベルの関数の第1引数 int nDoc には,GWopen または GWopenx が返すウィンドウ番号を指定する。 ・GWCAPIMG,GWCLIPIMG (および GWcapimg,GWclipimg) の仕様を拡張した。 ・GWVPORT (および GWvport) の仕様を拡張した。 ・GWLOAD (および GWload) の仕様を拡張/変更した。 ・GWANCHOR (および GWanchor) の仕様を拡張/変更した。とくに, GWanchor(0) の意味が変更されたので,これを使っているソースコードは要修正。 ・GWSIZE (および GWsize) の仕様を拡張/変更し,'用紙サイズ' 以外,例えば, フレーム・ウィンドウの大きさも変更可能になった。これらを使用している場合 はソースコードの変更が必要。 ・GWARRANGE (および GWarrange) の仕様を拡張した。 ・フレーム・ウィンドウの表示モードを設定する GWSHOWFR (および GWshowfr) を追加した。 ・grwnd.exe の起動オプションの指定が可能な GWINITX (および GWinitx) を追 加した。 ・ループ処理中にもキーボードやマウスからの割り込みを検出するこのできる GWEVENT (および GWevent) を追加した。 ・ハッチパターンの指定がマニュアルの記述とずれていたバグを修正。 ・メニューに [ウィンドウ(W)]->[フィット(F)] を追加した。機能は GWsize(-3,0,0) と同じ。 ・メニューに [ウィンドウ(W)]->[最前面(T)] を追加した。機能は GWshowfr(11) と同じ。 ・grwnd.exe の起動オプションが利用可能になった。 ・その他,多数の修正を行った。 Ver 0.99.6x ・印刷のプレビューとemf ファイル出力におけるクリッピングに関係したバグと, 他の小さなバグを修正。 ・mingw32 で,gcc-2.95.2-msvcrt にも対応した。 ・他に大きな変更はないが,データ構造の変更を行ったために Ver 0.99.5 以前 で作成した *.gwd ファイルとの互換性が失われたのでバージョン番号を更新し た。 Ver 0.99.5 ・旧版に較べてある程度の高速化を達成した。 ・[ビュー] のアクセラレー・テータキーを一部変更した。 ・GWCLEAR (および GWclear) の引数 K に関する仕様の一部を修正した。新しい 仕様では K = -1 を指定するとメモリに保存されているすべてのオブジェクトが 消去され,これは,メニューから [ビュー] => [消去] を選択したのと同じ。古 いソースで K = -1 (背景色による塗りつぶし) としていて,オブジェクトが消 去されると都合が悪い場合には K = -3 に変更する必要がある。 ・塗りつぶされた四角形を描画するための GWSRECT (および GWsrect) を加えた。 同じことは GWSETPEN+GWSETBRS+GWRECT でも実現できるが,GWSRECT の方が高速。 ・オブジェクトの保護に利用できる GWANCHOR を加えた。 ・回転など,描画時に2次元の座標変換を行う行列の設定と取得のための GWSETXFRM と GWGETXFRM を加えた(Windows Me/9x では正しく動作しない)。 ・クリッピングのための GWSETRGN を加えた。 ・ヘッダファイル GrWin.h を C++ に対応し,gpp (GNU の C++) のためのバッ チファイルを配布に加えた。 ・GWPUTTXT で,用紙の範囲から大きく外れた点を文字列の左下の点の座標とし て指定すると,文字列は以前の出力の直後に出力されるように変更した。 ・対応する開発環境に Borland C++ Compiler 5.5 を加えた。 Ver 0.99.4C ・Ver 0.99.5 公開前のカレント版として,複数の版が存在。 Ver 0.99.3 ・GWsavevp と GWselvp に関係した grwnd.exe のバグを修正。 ・GWkybrd の動作を変更し、キーが放されるまで制御を戻さないモードを選択で きるようにした。GWkybrd の第2引数 NCNT に -1 または NULL (C の場合) を 指定していた場合にはソースコードの修正の必要がある。 ・GWASPECT のバグ (Fortran のみ) を修正。 ・サポートする開発環境に Cygwin 1.1.0 を加えた。 ・コンソール・ウィンドウで使用可能な,C の getch() や getche() に相当す る Fortran の関数 KBGETCH を加えた。 ・ソースコード・チェッカー f77chk.pl の組み込み関数に関係するバグを修正 し,f77chk.pl のバージョンを 1.2.2 に更新した。 ・GWSIZE (と GWsize ) で現在のビューポートのサイズをピクセル単位で取得で きるようにした。 Ver 0.99.2 ・上記 Ver 0.99.3 の公開前のカレント版として,Ver 0.99.2 には複数の版が 存在した。 Ver 0.99.1 ・βバージョンとしての最初の公式リリース。 Ver 0.99.0 ・βバージョンの候補として一部に試験的に公開 ・対応する開発環境に Microsoft Visual C++ Version 6.0 (スタティック・ラ イブラリのみ) を加えた 。 ・対応する開発環境に Compaq (旧 DIGITAL) Visual Fortran 6 (同上) を加え た。 ・メタファイル(*.emf, *.wmf)による出力が可能となった。これにより、 MS-Word など、メタファイルをサポートしているワープロ,たとえば MS-Word などへの出力図形の貼り付けが容易になった。 ・高速化のため,GWerase (および GWERASE) の仕様を変更して,オブジェクト の消去のみで,画面の更新を行わないことができるようにした。 ・GWaspect の仕様を変更して,各種アスペクト比を取得できるようにした。 ・GWversion の仕様を変更した。 Ver 0.98.2 ・背景色などの設定が機能しないバグを修正した。 ・GWopenx (および GWOPENX) の仕様を変更して,前景色と背景色の初期値を設 定できるようにした。 ・GWsetogn の仕様を変更して,描画の保留を可能にした。保留を解除すること で計算に時間がかかる描画を一気に行うことができる。 ・描画の保留の解除と描画図形の切り替えを行う GWflush を加えた。 ・GWRDRWMOD を廃止して,新設の GWMODE に統合した。 ・grwnd.exe の機能を強化した。 Ver 0.98.1 ・Windows 9X で grwnd.exe が GDI リソースを消費し尽くしてしまうことがあ るバグを修正した。 ・grwnd.exe の他の不具合を修正した。 ・GWerase (および GWERASE) の仕様を変更して,描画のリワインドを可能にし た。 ・GWrdrwmod (および GWRDRWMOD) の仕様を変更して,再描画モードだけでなく, バッファリングを行うかどうかの切り替えをアプリケーションから行えるように した。 Ver 0.98.0 ・角度の指定を "度"(deg) から "度/360" に変更した。 ・バッファ描画モードを改善した。 ・オブジェクト・グループを導入して,選択的にオブジェクト(図形データ)を消 去できるようにした。これに伴い,GWERASE (と GWerase ) の仕様を変更した。 ・C の関数について,必要のない出力変数のポインタに NULL を使用することが できるようにした(GWsize を除く)。 ・Fortran のサブルーチンの第一引数に C の関数の戻り値と同じ値を返すよう にした.これに伴い,ほとんどすべてのサブルーチンの引数の並びが変更された が,GWOPEN などの入力パラメータに定数が使えるようになった。旧版用の Fortranソース・コードをこの版に合わせて書き換えた場合には,同梱の f77chk で引数の並びの整合性等のチェックが可能。 ・ライブラリの開発環境を最新の GCC-2.95.2 ( mingw32 / cygb20 / uwin20) に変更した。 ・ビットマップ関連の機能を充実するとともに,内部座標系(論理デバイス座標 系)の原点を従来の左下から,左上へと変更した。 ・記号を「ビットマップ」として描画するモードを廃止し,そのかわり,フォン ト(任意の TrueType フォント)をビットマップに変換する GWfnt2bmp を加え た。 ・ウィンドウごとに設定されるアニメーション・モード (GWanmmod) を廃止し, ビットマップの属性として背景モードを設定できるようにした。背景モードを制 御することによって従来のアニメーション・モードと同等(以上)の機能を実現す ることができる。 ・配列として与えられたビットマップ・データからビットマップを作成する GWmakebmp を加えた。作成されたビットマップは GWsavebmp で bmp ファイルに 保存すれば,他のアプリケーションからも利用できる。 ・ライブラリのバージョン番号などの文字列を取得する GWversion を加えた。 ・現在のワールド座標系を取得する GWgetwn を加えた。 ・複数のウィンドウを開いているときに,GWsavevp/GWselvp が正常に働かない バグを修正した. ・マーク・サイズの指定を,フォントの場合に合わせて,ワールド座標系の高さ (旧版では幅)で与えるように変更した。 ・grwnd.exe で [ヘルプ] メニューを変更し,ライブラリ・マニュアルを参照で きるようにした。 ・フォント生成関係のバグの修正を行った。 ・変更のあった C の関数: 廃止: GWanmmod 追加: GWarc, GWchord, GWfnt2bmp, GWgetwn, GWldcpos, GWldcsiz, GWmakebmp, GWpie, GWpolylin, GWrrect, GWsetogn, GWversion 変更: GWcapimg, GWcappnt, GWcopybmp, GWerase, GWfiledlg, GWgetbmp, GWgettxt, GWinput, GWkybrd, GWloadbmp, GWmouse, GWopen, GWopenx, GWgetpxl, GWputbmp, GWrdrwmod, GWsetbmp, GWsetmrk, GWsetsym, GWsettxt, GWvwmod ・その他の変更を行った。 ・これらの変更により,旧版で作成した exe ファイルと gwd ファイル (出力デ ータ) の互換性が失われたので,古いソースを利用するにはコンパイル(exe)や データ作成(gwd)のし直しが必要。フォートランの場合,ソース・コードのチェ ックには同梱の f77chk を利用してください。 Ver 0.97.2 ・各種パラメ−タをデフォルト値に戻す GWreset を加えた。 ・新たに GWsavevp と GWselvp,GWgetvp を加え,現在のビューポート情報を保 存/復帰/取得できるようにした。これにより,単一ウィンドウ内での複数のビ ューポートの操作が容易になった。 ・GWclear の仕様を一部変更して,現在のビューポートの内部を単一色 (背景色) で塗りつぶすようにした。 ・その他の小修正を行った。 Ver 0.97.1 ・GWkybrd の仕様を一部変更して,仮想キー・コードだけでなく最後に押された 非システムキーの文字コードも取得できるようにした。 ・全体を単一色で塗りつぶす GWclear を追加した。 ・再描画関係のバグ修正。 ・サポート対象に AT&T UWIN 2.0 を加えた (配布ファイル名 lGrWn0971A 以降)。 Ver 0.97.0 ・ライブラリの開発環境を最新の GCC-2.95 ( mingw32 / cygb20 ) に変更した ・単一の主ウィンドウでのボトルネックを解消するために,アプリケーションご とに独立した主ウィンドウを開くようにした。 ・[ファイル] -> [印刷] の見直しを行い,ディスプレィ上の表示に近い出力が 得られるようにした。 ・文字列の幅と高さを取得する GWgettxt を追加した。 ・アプリケーションから表示モードを変更する GWvwmod を追加した。 ・アプリケーションからウィンドウ配置を変更する GWarrange を追加した。 ・アプリケーションからウィンドウの表示状態を設定する GWshowwn を追加した。 ・GWopenx の仕様を一部変更して,オープン時のウィンドウの表示状態を設定で きるようにした。 ・バックグラウンドで描画ができるように,GWselect でカレント・ウィンドウ を変更してもアクティブなウィンドウは変わらないようにした。 ・その他の小修正を行った。 ・これらの変更により,旧版で作成した exe ファイルと gwd ファイル (出力デ ータ) の互換性が失われたので,古いソースを利用するにはコンパイル(exe)や データ作成(gwd)のし直しが必要。フォートランの場合,ソース・コードのチェ ックには同梱の f77chk を利用してください。 Ver 0.96.0 ・国際化版として,日本語環境ではメニューが漢字で表示されるようになった。 非日本語環境では旧版と同じ英語。 ・アプリケーションから漢字が使えるようになった。これに対応して,日本語環 境でのデフォルト・フォントを "MS ゴシック" に変更した。非日本語環境では 旧版と同じ "Arial"。 ・表示モードの設定を [View] から分離して,新設の [表示モード] メニューか ら行うように変更した。 ・[ファイル] -> [印刷] の見直しを行った。 ・GUI 環境でキーボードより文字列を入力するための新しいルーチン GWinput を追加した。 ・GWonanm と GWoffanm を GWanmmode へ統合した。 ・GWonrdrw と GWoffrdrw を GWrdrwmode へ統合した。 ・GWcapvec, GWcaplin, GWcaprect の仕様を変更した。 ・ アプリケーションと grwnd.exe の間の通信方法を見直して,効率化を達成し た。 ・これらの変更により,旧版で作成した exe ファイルと gwd ファイル (出力デ ータ) の互換性が失われたので,古いソースを利用するにはコンパイル(exe)や データ作成(gwd)のし直しが必要。フォートランの場合,ソース・コードのチェ ックには同梱の f77chk を利用してください。 ・Windows アプリケーション (GUI) に対応した。 ・その他の小修正を行った。 Ver 0.95.2 ・Fortran77 用のソース・コード・チェッカー f77chk を配布ファイルに含めた。 これを利用すると,古いバージョン用に書かれたソース・コードを最新版に対応 させるために必要な変更箇所の発見が容易になる。 ・GWMOVE2 と GWLINE2 の仕様を変更し,GWMOVE2 でペン位置を初期化しないで も,ペンの初期位置が未定義であることによる余分な直線を描かないようにした。 ・libGrWin.[ah]と grwnd.exe で,バージョン番号の最後の桁 (0.95.X なら X) だけが異なる場合には,警告を出さないようにした。 ・ grwnd.exe を Visual C++ Ver.6.0 (SP2) でコンパイルした。 ・ 保存ファイル (*.GWD) のドラッグ&ドロップをサポートした。 ・ 起動時のコマンドラインで,アプリケーション名以外のオプションなどが指 定されていると "failed to get current directory" というメッセージを出し てしまうバグを fix した。 ・その他の小修正を行った。 Ver 0.95.1 ・ライブラリを egcs-1.1.2-mingw32 / egcs-1.1.2-cygb20 でコンパイルし直し た。 ・クリップボードに関連したバグを fix した。 Ver 0.95 ・多機能化と速度面での改良がなされた。 ・ファイルへの保存(GWSAVE),ファイルからの読み込み(GWSAVE),印刷 (GWPRINT),多角形の描画(GWPOLYGON),ベジエスプラインの描画(GWBEZIER)のた めの機能を追加した。 ・再描画の高速化の試みとして,バッファ描画モードを新設した。ただし、この 機能は Windows NT4 においてのみ動作確認がされていて、Windows 9x では機能 しない模様。 ・以上の変更に伴い grwnd.exe のメニューバーの再構成を行った。 ・旧版では各種ラスター・オペレーション(混合モード)に対応するために記号フ ォントを一旦ビットマップに変換してから描画していたが,リソースの節約と高 速化のため,これに加えて単純な描画方法を選択できるようにした。 ・同様に、旧版ではマークを内部的にビットマップとして扱っていたが,これを 改め,ペンとブラシで描画するようにした。これに伴い,マークの混合モードの 指定方法が変わった。 ・アニメーション・モードに設定するとメモリー・リークが発生していた点を修 正 ・リソースの節約のために,再描画のためのデータを保存しないモードを設定 (再描画モード解除)する GWOFFRDRW と,その逆(再描画モード設定)の GWONRDRW を新設した。 ・その他,多数のバグ修正と,コマンド体系の見直しを行った。旧版からの移行 にはソース・コードの関連部分の変更が必要(以下参照)。 ・新たに加えられたルーチン: GWSETBMP, GWGETBMP, GWGETPXL, GWSETPXL, GWOFFRDRW, GWONRDRW, GWGETPOS, GWSLEEP, GWLOAD, GWSAVE, GWPRINT, GWPOLYGON, GWBEZIER, GWCAPVEC ・名前(と仕様)が変更されたルーチン: GWSETFNT=>GWSETTXT, GWSYMBOL=>GWPUTSYM, MKCOLOR=>GWCOLOR, GWBMPINFO=>GWGETBMP, GWPUTMSG=>GWSETMSG, GWCPYBMP=>GWCOPYBMP, GWARATIO=>GWASPECT, GWCAPREC=>GWCAPRECT ・仕様が変更されたルーチン: GWPUTTXT, GWSETSYM, GWCAPPNT, GWSETMRK, GWPUTMRK, GWGETMRK, GWPUTBMP, GWSETSYM, GWSIZE Ver 0.94 ・「混合モードの取得」のための gwgetmix(GWgetmix) と「混合モードの指定」 のための gwsetmix(GWsetmix) を廃止し,それぞれ gwgetpen(GWgetpen) と gwsetpen(GWsetpen) に統合した。旧版からの移行にはソース・コードの関連部 分の変更が必要。 Ver 0.93 ・grwnd.exe のメニューバーに,表示の「中断と強制終了」のための項目 [View] -> [Puse/Abort] を新設した。 ・TrueType フォントが使われている場合でも保存ファイル(デフォールトの拡 張子は *.gwd )の読み込みができるようになった。 ・grwnd.exe の起動時にコマンドラインに保存ファイル名(同上)を指定するこ とでも保存ファイルの内容をを表示できるようになった。これにより,拡張子 . gwd にアプリケーション grwnd.exe を関係付けすることで,保存ファイルの内 容の確認が容易になる。 ・ [View] -> [Isotropic] 表示モードの仕様を一部変更して,アスペクト比を 保ったままビューポートをウィンドウ内で最大表示するモードとした。 ・C から GWselct (ウィンドウの選択) を呼び出した場合に,パラメターの切り 替えが正常に行われなかったバグを修正した。 ・ビューポートの原点が (0,0) でないときに, [Isotropic] 及び [Fit] の表 示モード でビューが正しく表示されないバグを修正。 ・バージョンの異なるライブラリをリンクした実行ファイルについても,警告を 表示するだけでそのまま続行するようにした。 ・内部座標(ライブラリの仕様とは無関係)の見直しと,その他の小修正を行った。 Ver 0.92 ・ライブラリを egcs-1.1.1-mingw32 でコンパイルした。 ・egcs-1.1.1-cygb20 でコンパイルしたライブラリを用意した。 ・使用条件を変更し,完全なフリーソフトとした。 ・その他,いくつかの小修正 Ver 0.91+ ・Windows 95 で起動できない不具合の修正 Ver 0.91 ・ライブラリの開発環境を egcs-1.0.2-mingw32 に変更した ・Ver 0.9 のライブラリに加えられていなかったカルコンプ系のサブルーチン等 を実装した ・文字列の基準点を左上から左下に変更した ・グラフィクス・ウィンドウ上でキーボードの状態を取得するサブルーチン GWKYBRD を追加 ・その他,いくつかのバグ修正 Ver 0.9 ・αバージョンとしての最初の公開版 ----------------------------------------------------------------------------- 最終更新日 2003/7/21