注意: GKSのC言語インタフェースは標準化されていないようです。 ここで説明するのは、NCAR Graphicsの場合です。
言語からのGKS関数の呼び出し方と必要な構造体について説明します。 なお、色の番号、線種の番号等については、Fortranの解説を参照し てください。変数の型はgks.h内でGint、Gfloatというように特別な名前が付 けられており、異なるコンピュータでのプログラムの互換性を考えたものと なっていますが、ここではint、floatの様にそのままの形で示します。
構造体 Gpoint ichi ・xy座標を格納するための構造体 メンバー ichi.x(float) :x軸座標 ichi.y(float) :y軸座標 Gpoint_list xylist ・xy座標とその個数を入れる構造体 メンバー xylist.num_points(int) :座標の数 xylist.points(Gpoint *) :Gpoint構造体のポインタ Gtext_align atext ・テキストを打ち出す座標に対するテキストの位置を格納する構造体 メンバー atext.hor(int) :文字列の水平位置 atext.vert(int) :文字列の上下の位置 Gvec textvec ・テキストの表示方向 メンバー textvec.delta_x(float) :文字列を打ち出す方向(x成分) textvec.delta_y(float) :文字列を打ち出す方向(y成分) Glimit wvlimit ・ウィンドウ(ワールド座標)もしくはビューポートの範囲を格 納するための構造体メンバー wvlimit.x_min(float) :x軸の最小値 wvlimit.x_max(float) :x軸の最大値 wvlimit.y_min(float) :y軸の最小値 wvlimit.y_max(float) :y軸の最大値 Gtran port ・ウィンドウとビューポートの範囲を同時に格納するための構造体 メンバー port.win(Glimit) :Glimit構造体でワールド座標系の 最大、最小値を示す。 port.vp(Glimit) :Glimit構造体でビューポートの最 大、最小値を示す。 関数 ・GKSを使う時に必ず次の順番で最初に実行するおまじない。 GKSをオープンし、次にワークステーションをオープンし、かつアクティ ブにする。 gopen_gks("stdout",0); gopen_ws(1,NULL,1); gactivate_ws(1); ・GKSを終わるときに次の順番で最後に実行するおまじない。 gdeactivate_ws(1); gclose_ws(1); gclose_gks(); ・ウィンドウ・ビューポートに関する関数 gset_win(int,Glimit *); ウィンドウの大きさを決める。第一引数は正規化変換の番号。 gset_vp(int,Glimit *); ビューポートの範囲を決める。第一引数は正規化変換の番号。 gsel_norm_tran(int); 正規化変換の実行。引数は変換の番号。 ginq_norm_tran(int,int *,Gtran *); 指定した正規変換番号のウィンドウとビューポートの値を問 い合わせる。 第一引数は正規化変換番号、第二引数はエラー番号。 ・線分を表示するときに利用する関数 gset_line_colr_ind(int); 線分の色の指定。引数は色番号。 gset_linetype(int); 線分の種類の指定。引数は線種番号。 gset_linewidth(float); 線分の太さの指定。 gpolyline(Gpoint_list *); 線分の描画。引数はxy座標のリスト。 ・マーカーの表示に必要な関数 gset_marker_colr_ind(int); マーカーの色指定。引数は色番号。 gset_marker_size(float); マーカーの大きさの指定。 gset_marker_type(int); マーカーの種類の指定。引数はマーカーの種類の番号。 gpolymarker(Gpoint_list *); マーカーの描画。引数はxy座標のリスト。 ・テキストの表示に必要な関数 gset_text_align(Gtext_align *); 指定座標に対する文字位置の指定。 gset_text_colr_ind(int); テキストの色の指定。引数は色番号。 gset_char_ht(float); テキストの大きさ(高さ)の指定。 gset_char_up_vec(Gvec *); テキストの方向の指定。 gtext(Gpoint *,char *); テキストの描画。 第1引数はxy座標。第2引数が表示する文字列。 ・塗りつぶしをするときに必要な関数 gset_fill_int_style(int); 塗りつぶし方法の指定。引数は塗りつぶし方法の番号。 gset_fill_colr_ind(int); 塗りつぶしの色の指定。引数は色番号。 gset_fill_style_ind(int); 塗りつぶしパターンの指定。引数はパターン番号。 gfill_area(Gpoint_list *); 塗りつぶしの実行。引数はxy座標のリスト。