GRAファイル
概要
GRAファイルは, 直線, 円などのグラフィックス命令を記述した, グラフのマージ等に使われるNgraph独自のファイル形式です。
また、External driverへグラフィックス命令を送るのにも使われます。
DOS版NgraphとのGRAファイルの互換性
- Ngraph for X11 のGRAファイルは, DOS版NgraphのGRAファイルと僅かに異なるため,互換性はありません。
- ただしNgraph for X11 でDOS版Ngraphの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ファイルの識別子である
でなければなりません。
第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の場合には
のようにコマンド直後に文字列の引数(上の例では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回の描画で初めに一度だけ呼ばれる。
- 一回の描画で最後に一度だけ呼ばれる。出力デバイスの後処理を行う。
コマンド | 機能 | 書式 |
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 |
コマンド | 機能 | 書式 |
N | カレントポイント相対移動命令 | N,2,arg1,arg2 |
コマンド | 機能 | 書式 |
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 |
コマンド | 機能 | 書式 |
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座標
文字列引数(font フォントエイリアス名)
- 実際のフォントへのマッピングはドライバに依存
コマンド | 機能 | 書式 |
H | フォントメトリック指定命令 | H,3,arg1,arg2,arg3 |
arg1 文字のポイントサイズ, 0.01pt単位(1pt=1/72inch)
arg2 文字スペーシング・ポイント量, 0.01pt単位
arg3 描画方向, X軸から反時計回りに0.01度単位
- 文字は全てスケーラブルでなければなりません。
- 漢字出力命令の前には必ず漢字フォントの, 英数字出力命令の前には必ず英数字フォントの選択命令を発行しなければなりません。
文字列引数 (string 英数字文字列)
- \x?? は ?? を16進コードとする文字, \\は\
文字列引数(string 漢字文字列)
- 漢字コードはSHIFT JIS