GRAファイル

- 概要
- GRAファイルの構造
- GRAファイルのグラフィックスコマンド

概要

> GRAファイルは, 直線, 円などのグラフィックス命令を記述した, グラフのマージ等に使われるNgraph独自のファイル形式です。
> また、External driverへグラフィックス命令を送るのにも使われます。
> DOS版NgraphとのGRAファイルの互換性
> - Ngraph version 6.x のGRAファイルは, DOS版Ngraph(version 5.x)のGRAファイルと僅かに異なるため,互換性はありません。
> - ただしNgraph version 6.x でDOS版Ngraph(version 5.x)のGRAファイルをマージすることは可能です。
> - DOS版NgraphのGRAファイルの構造およびコマンドについてはDOS版Ngraphに添付されているマニュアルを参照してください。

GRAファイルの構造

> 下にGRAファイルの例を示します。

> > %Ngraph GRAF
> > %Creator: Ngraph ver 6.00.01
> > I,5,0,0,21000,29700,10000
> > V,5,0,0,21000,29700,1
> > G,3,0,0,0
> > A,5,0,40,2,0,1000
> > L,4,3500,22000,17500,22000
> > L,4,3500,22000,3500,8000
> > L,4,3500,8000,17500,8000
> > L,4,17500,22000,17500,8000
> > E,0

> GRAファイルの第一行はGRAファイルの識別子である
> %Ngraph GRAF
> でなければなりません。
> 第2行以降は1行に1つずつグラフィックスコマンドが記述されます。グラフィックスコマンドの形式を示します。
> command, n, arg1, arg2, ..., argn
> - commandはグラフィックスコマンドを指定するアルファベット一文字でI, E, V, A, G, M, N, L, T, C, B, P, R, D, Hのいずれかです。
> - nは引数の数(整数)を現します。
> - arg1, ..., argnはグラフィックスコマンドの引数(整数)です。
> コマンドの区切りにはスペース, タブ, コンマが使えます。
> ただしcommandが%, F, S, Kの場合には
> Sthis is a string
> のようにコマンド直後に文字列の引数(上の例ではthis is a string)を記述します。 この場合, 文字列引数の中のスペース・タブ・コンマは通常の文字として扱われます。

GRAファイルのグラフィックコマンド

> グラフィックコマンドの引数は特に指定のない限り単位は0.01mmです。 X座標増加方向は右, Y座標増加方向は下です。 数値引数はすべて整数値でなければなりません。

> コマンド | 機能 | 書式
> I | 初期化命令 | I,5,arg1,arg2,arg3,arg4,arg5

> > arg1 左マ−ジン
> > arg2 上マ−ジン
> > arg3 出力用紙幅
> > arg4 出力用紙高
> > arg5 拡大率(0.01%単位)

> - 出力デバイスの初期化を行う。1回の描画で初めに一度だけ呼ばれる。

> コマンド | 機能 | 書式
> E | 終了命令 | E,0

> - 一回の描画で最後に一度だけ呼ばれる。出力デバイスの後処理を行う。

> コマンド | 機能 | 書式
> % | コメント | %comment

> - 文字列引数(コメント)

> コマンド | 機能 | 書式
> V | クリッピング領域, 原点移動命令 | V,5,arg1,arg2,arg3,arg4,arg5

> > arg1 左上X座標, 新しいX座標原点
> > arg2 左上Y座標, 新しいY座標原点
> > arg3 右下X座標
> > arg4 右下Y座標
> > arg5 0:クリッピングオフ 1:クリッピングオン

> - この命令以降, V命令を除くすべての命令は原点をクリッピング領域左上としたものになる。
> - パラメタは A4用紙左上を原点とする0.01mm単位で指定します。
> - クリッピング処理は基本的にNgraph内部で行っているので必ずしも必要ではないが, クリッピングするのが望ましい(原点移動は必須)。

> コマンド | 機能 | 書式
> A | 線属性指定命令 | A,n,arg1,arg2,....

> > n: 点線要素の数+5
> > arg1 0:実線 >1:点線要素の数
> > arg2 線幅
> > arg3 線端形状 0:Butt 1:Round 2:Projecting
> > arg4 線交差形状 0:Miter 1:Round 2:Bevel
> > arg5 Miter limit
> > arg(i)-arg(i+5) i=1-arg1 点線要素

> コマンド | 機能 | 書式
> G | カラ−指定命令 | G,3,arg1,arg2,arg3

> > arg1 R(8bit)
> > arg2 G(8bit)
> > arg3 B(8bit)

> コマンド | 機能 | 書式
> M | カレントポイント移動命令 | M,2,arg1,arg2

> > arg1 X座標
> > arg2 Y座標

> コマンド | 機能 | 書式
> N | カレントポイント相対移動命令 | N,2,arg1,arg2

> > arg1 X方向移動量
> > arg2 Y方向移動量

> コマンド | 機能 | 書式
> L | 線描画命令 | L,4,arg1,arg2,arg3,arg4

> > arg1 始点X座標
> > arg2 始点Y座標
> > arg3 終点X座標
> > arg4 終点Y座標

> コマンド | 機能 | 書式
> T | カレントポイント相対・線描画命令 | T,2,arg1,arg2

> > arg1 終点X座標, 新しいカレントポイントX座標
> > arg2 終点Y座標, 新しいカレントポイントY座標

> - 本命令実行後, カレントポイントは終点に移動する。

> コマンド | 機能 | 書式
> C | 楕円描画命令 | C,7,arg1,arg2,arg3,arg4,arg5,arg6,arg7

> > arg1 中心のX座標
> > arg2 中心のY座標
> > arg3 X方向半径
> > arg4 Y方向半径
> > arg5 楕円弧開始角度, 0.01度単位(0-36000)
> > arg6 楕円弧角度, 0.01度単位(0-36000)
> > arg7 0:円の輪郭（内部は塗りつぶさない） 1:扇形内部を塗りつぶす 2:円弧内部を塗りつぶす

> - arg5から開始してarg6の角度だけ反時計回りに楕円弧を描く。
> - 角度は, 楕円 (x/a)^2+(y/b)^2=1 を x=a*cosθ, y=b*sinθ と媒介変数表示した時のθ。

> コマンド | 機能 | 書式
> B | 四角形描画命令 | B,5,arg1,arg2,arg3,arg4,arg5

> > arg1 X座標
> > arg2 Y座標
> > arg3 対角のX座標
> > arg4 対角のY座標
> > arg5 0:四角形の輪郭（内部は塗りつぶさない）1:内部を塗りつぶす

> コマンド | 機能 | 書式
> P | 点描画命令 | P,2,arg1,arg2

> > arg1 X座標
> > arg2 Y座標

> コマンド | 機能 | 書式
> R | 多角形描画命令 | R,n,arg1,arg2,...

> > n 座標点の数*2+1
> > arg1 座標点の数
> > arg(i*2+0) i=1-arg1 X座標
> > arg(i*2+1) i=1-arg1 Y座標

> コマンド | 機能 | 書式
> D | 閉多角形描画命令 | D,n,arg1,arg2,...

> > n 座標点の数*2+2
> > arg1 座標点の数
> > arg2 0:多角形の輪郭（内部は塗りつぶさない） 1:内部を塗りつぶす(EvenOddRule) 2:内部を塗りつぶす(WindingRule)
> > arg(i*2+1) i=1-arg1 X座標
> > arg(i*2+2) i=1-arg1 Y座標

> コマンド | 機能 | 書式
> F | フォント選択命令 | Ffont

> > 文字列引数(font フォントエイリアス名)

> - 実際のフォントへのマッピングはドライバに依存

> コマンド | 機能 | 書式
> H | フォントメトリック指定命令 | H,3,arg1,arg2,arg3

> > arg1 文字のポイントサイズ, 0.01pt単位（1pt=1/72inch）
> > arg2 文字スペーシング・ポイント量, 0.01pt単位
> > arg3 描画方向, X軸から反時計回りに0.01度単位

> - 文字は全てスケーラブルでなければなりません。
> - 漢字出力命令の前には必ず漢字フォントの, 英数字出力命令の前には必ず英数字フォントの選択命令を発行しなければなりません。

> コマンド | 機能 | 書式
> S | 英数字描画命令 | Sstring

> > 文字列引数 (string 英数字文字列)

> - \x?? は ?? を16進コードとする文字, \\は\

> コマンド | 機能 | 書式
> K | 漢字描画命令 | Kstring

> > 文字列引数(string 漢字文字列)

> - 漢字コードはSHIFT JIS