名前

       pslib v3.2 - PostScript ベースの描画ライブラリ


記述

       pslibPostScript ページの記述コードの生成をより簡単にす
るために作られました。これは画像を作るのに使うことができる
ツールの集まりを含むライブラリです。結果の PostScript コー
ドは ASCII テキストであらゆるテキストエディタを用いて編集す
ることができます。そのため、プロットファイルを改変するのは
たとえそれが作られた後でも非常にたやすいことです。例えば、
文字列を変えたり、新しいグレーシェードや色を設定したり、様
々なペンの太さを試したりすることなどができます。 pslib
は C で書かれていますが現在は FORTRAN がバインドされている
ため( WHOI の John Goff に感謝します) C と FORTRAN の両方の
プログラムから呼び出すことができます。このライブラリを使う
には、描画プログラムを pslib.a にリンクしなければなりません。
 pslibGMTSYSTEM および XY グラフィックスプログラム
の核です。 pslib の出力は Adobe Encapsulated PostScript
File Specification Version 3.0 (EPSL) に適合しており、 EPS
 ファイルとして使えて、例えば Mac 上の Word 文書に挿入するこ
ともできます。詳細は Technical Reference の F を参照してく
ださい。

pslib の関数を呼び出す前に、描画システムが初期化されていな
ければなりません。これは ps_plotinit を呼び出して行います。
これはマクロを定義し、描画座標系をセットアップし、[オプショ
ンで]すべての PostScript コードが書き込まれるファイルを開き
ます。通常は、描画コードは stdout (標準出力)に書かれます。
大きさや位置を測るための単位はセンチメートル、インチ、メー
トルのどれかに設定することができます。すべての描画が終わっ
たら、 ps_plotend を呼び出して描画システムを終了させなけれ
ばなりません。

pslib では赤、緑、青が別々に与えられ、それぞれの範囲が 0-255
 となるダイレクトカラーモデルが用いられます。赤が負のときは塗
りつぶしは行われません。大部分の描画要素は輪郭付きでも無しで
も描画できます。輪郭を要求したときは( 1 に設定します)、現在
の線幅およびパターンで線を引きます。 pslib では最適なマクロ
置換が使われて出力ファイルができるだけ小さくまとまるように
ハードコピー装置の解像度によって座標がスケールされます。

PostScript をサポートする多種多様な出力装置は、ラスター出力
装置(カラーまたはモノクロ)や SUN の OpenWindows のようなウィ
ンドウシステムに基づく PostScript を実行するワークステーショ
ンを含めて存在します。 xnews ( OpenWindows の一部)や ghostscript
(パブリックドメイン)はユーザ定義の解像度(DPI)でラスターファ
イルを作るのに利用でき、 Versatec や他の非 PostScript ラス
ター装置上で PostScript を解釈できるようにしています。
 PostScript ファイルから NeWS のもとで作られた正規の SUN ラ
スターファイル様々なカラーハードコピー装置に送ることができ
ます。ネットワーク上で利用できる装置を確認してください。


呼び出し関数

       以下は利用可能な関数と、それらが行うことや与えるべきパラメー
タを短く記述した一覧です。すべての浮動小数点変数は double
 (倍精度、 8 バイト)であると見なされ、一方すべての整数は 4
 バイト長であると見なされます。すべての描画関数は整数を返す
関数として宣言されます。今のところ、戻り値は未定義です。


void ps_arc (x, y, radius, angle1, angle2, status)
double x, y, radius, angle1, angle2;
int status;
(x,y) を中心とする円弧を角度 angle1 から angle2
 まで描きます。角度は小数を含む度で与えられなけれ
ばなりません。 angle1 > angle2 のときは、負の弧が
描かれます。 status は 0 から 3 までの値です。 1
 は新しいアンカーポイントの設定を意味し、 2 は円を
描いたことを意味し、 3 はその両方を意味し、 0 は
上のいずれでもないことを意味します。

void ps_axis (xpos, ypos, length, startval, stop- val, tickval, label, anotpointsize, side)
double xpos, ypos, length, startval, stopval, tick- val;
int anotpointsize, side;
char *label;
ケバ、目盛り、ラベル付きの軸を描きます。 xpos,
 ypos, length はインチ(または cm 、メートル)単位で、
anotpointsize はポイント(72ポイント = 1インチ)単
位で、その他はデータ単位が用いられます。 side
 0, 1, 2, 3 のどれかで、それぞれ下の x 軸、右の y
 軸、上の x 軸、左の y 軸を選びます。 labelpointsize
 = 1.5 * anotpointsize です。負の tickval は正の向
きを逆にします。例えば、 y 軸は正が下向きになりま
す。

void ps_circle (xcenter, ycenter, diameter, rgb, outline)
double xcenter, ycenter, diameter;
int rgb[3], outline;
円を描きその内部を指定した色で塗りつぶします。
 outline == 1 のときは、輪郭は現在のペンの幅とパタ
ーンで描かれます。

void ps_clipoff ()
クリップパスを最後に clipon で呼び出した時の前の
状態に戻します。

void ps_clipon (xarray, yarray, npoints, rgb, flag)
double xarray[], yarray[];
int npoints, rgb[3], flag;
ユーザ定義可能なクリップパスを設定します。この多
角形の外側への描画は ps_clipoff が呼び出されるま
でクリップされます。 red >= 0 のときはパスの内側
は指定した色で塗りつぶされます。 flag は複数の不
連続な領域からなる複雑なクリップパスを作るのに用
いられ、 0-3 の値をとります。 flag = 1 はこれが複
数セグメントのクリップパスのうちの最初のパスであ
ることを意味します。 flag = 2 はこれが最後のセグ
メントであることを意味します。単独のパスには、
 flag = 3 を用います。

void ps_colorimage (xpos, ypos, xlength, ylength, buffer, nx, ny)
double xpos, ypos, xlength, ylength;
unsigned char buffer[];
int nx, ny;
rgb カラーを用いて 24 ビット true color 画像を描
きます。 bits が 8 に固定されている点を除いて
 ps_image と同じです。 rgb の3つの値は buffer
 rgbrgbrgb... という形で収められます。この関数は
すべてのドライバには備わっていない PostScript
ラー画像オペレータを呼び出します。

void ps_colortiles (x0, y0, xlength, ylength, buffer, nx, ny)
double x0, y0, xlength, ylength;
int nx, ny;
unsigned char buffer[];
個別のカラータイルに基づいた true color 画像を描
きます。 x0, y0 はインチ単位で画像の左下の位置を
示します。 xlength, ylength はインチ単位で画像サ
イズを示します。 buffer には rgb の値が rgbrgbrgb...
という形で収められます。 nx, ny はピクセル単位で
画像サイズを示します。 void ps_command (text)
char *text;
生の PostScript コマンドを PostScript 出力ファイ
ルに書きます。例 "1 setlinejoin" 。

void ps_comment (text)
char *text;
コメント (text) を PostScript 出力ファイルに書き
ます。例 "Start of graph 2" 。

void ps_cross (xcenter, ycenter, diameter)
double xcenter, ycenter, diameter;
現在のペン幅とパターンを用いて与えられた直径の円
の内側にはまるような十字を指定された点に描きます。

void ps_diamond (xcenter, ycenter, diameter, rgb, outline)
double xcenter, ycenter, diameter;
int rgb[3], outline;
菱形を描いて指定した色で塗りつぶします。 outline
 == 1 のとき、輪郭は現在のペン幅とパターンを用いて
描かれます。記号は与えられた直径の円の内側にはま
るように描かれます。

void ps_ellipse (xcenter, ycenter, angle, major, minor, rgb, outline)
double xcenter, ycenter, angle, major, minor;
int rgb[3], outline;
長軸を angle 度回転させた楕円を描いて指定した色で
塗りつぶします。 outline == 1 のとき、輪郭は現在の
ペン幅とパターンを用いて描かれます。

void ps_flush ()
出力バッファをフラッシュします。

void ps_hexagon (xcenter, ycenter, diameter, rgb, outline)
double xcenter, ycenter, diameter;
int rgb[3], outline;
六角形を描いて指定した色で塗りつぶします。 outline
 == 1 のとき、輪郭は現在のペン幅とパターンを用いて
描かれます。記号は与えられた直径の円の内側にはま
るように描かれます。

void ps_image (xpos, ypos, xlength, ylength, buffer, nx, ny, bits)
double xpos, ypos, xlength, ylength;
unsigned char buffer[];
int nx, ny, bits;
ビットマップ画像をグレーシェードを用いて描きます。
画像の左下の位置をサイズを(インチで)指定します。
buffer は符号無し文字配列でグレーシェードの値
 (0 - 255) を含み、ここで 0 は黒、 255 は白を表し
ます。 bits は1ピクセルあたりのビット数です (8,
 4, 1)。 nx,ny は画像中のピクセル数を示します。
buffer の行の長さは 8/bits の倍数でなければなりま
せん。 buffer[0] は左上隅です。例えば、 bits = 4
 のとき、 buffer[j]/16 はピクセル [2j-1] に対する
シェードを与え、 buffer[j]%16 (mod 16) はピクセル
 [2j] に対するシェードを与えます。 buffer の値は左
下から始まり右上で終わる列として収められます。詳
細はアドビシステムズの PostScript Reference Manual
 を参照してください。 void ps_imagefill (x, y, n, image, imagefile, invert, imagedpi, outline, template, r_rgb, b_rgb)
double x[], y[], x0, y0;
int n, image, invert, imagedpi, outline, template, f_rgb[3], b_rgb[3];
char imagefile;
ps_polygon と同じですが、カラーやグレーシェード
でなく画像パターンで範囲を塗りつぶします。 x
 y には n 点の配列が入っています。 90 の定義済みパ
ターンが利用できます( GMT Appendix E 参照)。 image
 には画像番号を与えます(1-90)。 0 に設定されたとき
は、 imagefile はユーザの画像の名前でなければなら
ず、 SUN の 1, 8, 24 ビットのラスターファイルとし
て収められていなければなりません。 1 ビット画像の
み: (i) invert が TRUE のとき (1) 黒と白のピクセ
ルは描画前に交換されます。 (ii) template が TRUE
のとき (1) 設定されたピクセルに f_rgb の RGB の組
合せを用いて色づけされ、一方設定されない方には
 b_rgb の色が着けられます。画像の単位サイズは imagedpi
によって制御されます。ゼロに設定すると、画像は装
置の解像度で描画されます。 outline が TRUE のとき、
現在のペン幅で多角形の輪郭が描かれます。

void ps_imagemask (xpos, ypos, xlength, ylength, buffer, nx, ny, polarity, rgb)
double xpos, ypos, xlength, ylength;
unsigned char buffer[];
int nx, ny, polarity, rgb[3];
透明な 1 ビットの画像マスクを与えられた rgb カラ
ーを用いてプロットします。画像の左下の位置をサイ
ズを(インチで)指定します。buffer は符号無し文字配
列でバイトあたりに 8 ピクセルを含みます。 nx,ny
は画像中のピクセル数を示します。buffer の行の長さ
は 8 の倍数でなければなりません。 buffer[0] は左
上隅です。 buffer の値は左下から始まり右上で終わ
る列として収められます。 polarity が 0 のとき、
0 であるビットが rgb カラーで塗られ、そうでないと
きは 1 であるビットが塗られます。詳細はアドビシス
テムズの PostScript Reference Manual を参照してく
ださい。

void ps_itriangle (xcenter, ycenter, diameter, rgb, outline)
double xcenter, ycenter, diameter;
int rgb[3], outline;
逆三角形を描いて指定した色で塗りつぶします。 outline
 == 1 のとき、輪郭は現在のペン幅とパターンを用いて
描かれます。記号は与えられた直径の円の内側にはま
るように描かれます。

void ps_line (xarray, yarray, npoints, type, close, split)
double xarray[], yarray[];
int npoints, type, close, split;
連続した線を x-y 配列の位置から描きます。 close
 == 1 のとき、最初と最後の点が自動的に PostScript
 ドライバにより閉じられます。これが複数セグメント
パスの最初のセグメントのときは、 type == 1 に設定
します。セグメントを終了し線を描き終えるときは、
 type == 2 に設定します。従って、単独のセグメント
に対しては、 type は 3 でなければなりません。線は
現在のペン幅で描かれます。 split が TRUE のときだ
けは ps_line は複数のストロークを用いて MAX_PATH
 よりも長い線を描くことができます。 ps_polygon
 はパスが連続でなければならないので ps_line
 split = FALSE で呼び出します。 split が FALSE のと
きでパス長が MAX_PATH を超えるときは警告が出ます。

unsigned char *ps_loadraster (fp, header, invert, monochrome, template, f_rgb, b_rgb)
FILE *fp;
struct rasterfile *header;
BOOLEAN invert, monochrome, template;
int f_rgb[], b_rgb[];
ファイルポインタ fp で指定された Sun ラスターファ
イルの画像の内容を読みます。 header はまず
 ps_read_rasheader で得られていなければなりませ
ん。 invert が TRUE のとき 1 ビット画像はビット反
転されます。 monochrome が TRUE のときカラー画像
はグレー画像に TV YIQ 変換を用いて変換されます。
template が TRUE のとき 1 ビット画像は f_rgb
 b_rgb で与えられる前景色と背景色で着色されます。
このルーチンは昔のでも、標準のでも、runlength encoded
 のでも、 RGB スタイルの Sun のフォーマットのでも、
 1, 8, 24, 32 ビットのファイルを扱うことができます。

void ps_patch (xarray, yarray, npoints, rgb, out- line)
double xarray[], yarray[];
int npoints, rgb[3], outline;
多角形が 20 点を越えてはならないことと直線セグメ
ント上の不要な中間点をなくしてパスを短くしようと
はしないことを除いて ps_polygon と同じです。小
さな多角形をたくさん描くときに優先して用いて出力
スペースを節約します。

void ps_pie (xcenter, ycenter, radius, azimuth1, azimuth2, rgb, outline)
double xcenter, ycenter, radius, azimuth1, azimuth2;
int rgb[3], outline;
円のセクタを描きその内部を指定した RGB の組合せで
塗りつぶします。 outline == 1 のときは、輪郭は現
在のペンの幅とパターンで描かれます。

void ps_plot (xabs, yabs, kpen)
double xabs, yabs;
int kpen; 現在の線幅を用いて、絶対的移動( kpen=3 )または線
描( kpen=2 )を行います。

void ps_plotend (last_page)
int last_page;
一連の描画を終了して描画ファイルを閉じます( stdout
 でない場合)。 last_page == 1 のとき、 PostScript
 showpage コマンドが出力され、ハードコピー装置上の
印刷プロセスを初期化します。

void ps_plotinit (plotfile, overlay, mode, xoff, yoff, xscl, yscl, ncopies, dpi, unit, pagesize, rgb, eps)
char *plotfile; int overlay, mode, ncopies, dpi, unit;
double xoff, yoff, xscl, yscl;
int pagesize[2], rgb[3]; struct EPS * eps;
描画を初期化します。 plotfile == NULL (または "")
のとき、出力は stdout に送られ、それ以外のときは
出力は plotfile に送られます。既存の PostScript
 ファイルに付け加える場合だけ overlay を 1 にしま
す。 mode には最小の3つのビットに3つのフラッグが
含まれます。最小のビットは描画の向きを制御し 0
 (Landscape) または 1 (Portrait) になります。次の
ビットは、 1 に設定されたとき、フォントを再コード
化してヨーロッパアクセント付き文字が含まれるよう
にします。3番目のビットは PostScript 画像を出力す
るのに使われるフォーマットを制御します: 0 はバイ
ナリ、 1 は16進数を意味します。大部分のプリンタは
後者を必要としますが、中には 50% 小さくてより速く
実行できるバイナリを扱えるものもあります。 xoff,
yoff
は原点を左下隅のデフォルトの位置から動かすの
に使います。 xscl,yscl は画像全体をスケールするの
に使います(通常は 1.0, 1.0 に設定されます)。 ncopies
 は複数枚のコピーを得るのに使います。 dpi は単位あ
たりのドット数でハードコピーの解像度を設定します。
最適な画質と処理スピードのために、 dpi を目的の
プロッタの解像度に合わせて選びます。例えば大部分
のラスターライターには 300 、 Linotype-300 には
 2540 、 SUN スクリーンには ~85 を使います。分から
ないときは 300 を使いましょう。 unit は 0 (CM),
 1 (INCH), 2 (M) のいずれかで、描画システムが距離
やサイズに使う単位を示します。この単位をどう選ん
でも、 dpi はインチあたりのドット数のままなので注
意してください。 pagesize は描画メディアの物理的
な幅と高さをポイントで示します(典型的には Letter
は 612 × 792 で A4 ラスターライタープロッタには
 595 × 842 です。 rgb 配列はページの色を示します
 (普通は白 = 255,255,255)。 EPS の構造は pslib.h
 インクルードファイルに定義されており EPS ファイル
のコメントヘッダを構成する情報を含んでいます。 pslib
 ルーチンを呼び出そうとするプログラマはまず pslib.h
 のコメントを読むべきです。 FORTRAN バインディング
ではこの最後の引数は要求されていないので注意して
ください。

void ps_plotr (xrel, yrel, kpen)
double xrel, yrel;
int kpen;
現在の点に相対的に移動( kpen = 3 )または線描( kpen
 = 2 )を行います( ps_plot 参照)。

void ps_polygon (xarray, yarray, npoints, rgb, outline)
double xarray[], yarray[];
int npoints, rgb[3], outline;
色を塗った多角形を x-y 配列の位置から描きます。
多角形は自動的に PostScript ドライバにより閉じら
れます。 outline == 0 のとき、輪郭は描かれません。
 outline == 1 のとき、輪郭は現在のペン幅で描かれ
ます。

int ps_read_rasheader (fp, header)
FILE *fp;
struct rasterfile *header;
ポインタ fp を用いてファイルを開き、 Sun ラスター
ファイルのヘッダ構造を返します。この関数はバイト
レベルで実行されるのでポータブルです。一度ヘッダ
が返されれば ps_loadraster でラスター画像を得る
ことができます。

void ps_rect (x1, y1, x2, y2, rgb, outline)
double x1, y1, x2, y2;
int red, green, blue, outline;
色を塗った長方形を描きます。 (x1,y1) と (x2,y2)
は対角線上の任意の2つの頂点です。 outline == 1
 のとき、輪郭は現在のペン幅で描かれます。 void ps_rotatetrans (x, y, angle)
double x, y, angle;
angle 度だけ座標系を回転して、それから原点を (x,y)
 に移します。

void ps_setdash (pattern, offset)
char *pattern; int offset; 現在のダッシュパターンを変えます。文字列 pattern
  を望むパターンに設定します。例 "4 2" および offset
 = 1 は次のようにプロットされます:
x ---- ---- ----
ここで x は開始点です( x はプロットされません)。
すなわち、線は 4 単位の長さの線と 2 単位の長さの
隙間の繰り返しのパターンからなり、 x から 1 単位
のところから始まります。実線に戻すには、 pattern
 = NULL ("") と offset = 0 を指定します。単位は dpi
 です。

void ps_setfont (fontnr)
int fontnr;
現在のフォント番号を fontnr に変えます。利用可能
なフォント: 0 = Helvetica, 1 = H. Bold,
2 = H. Oblique, 3 = H. Bold-Oblique, 4 = Times,
5 = T. Bold, 6 = T. Italic, 7 = T. Bold Italic,
8 = Courier, 9 = C. Bold, 10 = C Oblique, 11 = C
Bold Oblique, 12 = Symbol, 13 = AvantGarde-Book,
14 = A.-BookOblique, 15 = A.-Demi, 16 =
A.-DemiOblique, 17 = Bookman-Demi, 18 = B.-Demi-
Italic, 19 = B.-Light, 20 = B.-LightItalic, 21 =
Helvetica-Narrow, 22 = H-N-Bold, 23 = H-N-
Oblique, 24 = H-N-BoldOblique, 25 = NewCentu-
rySchlbk-Roman, 26 = N.-Italic, 27 = N.-Bold, 28
= N.-BoldItalic, 29 = Palatino-Roman, 30 =
P.-Italic, 31 = P.-Bold, 32 = P.-BoldItalic, 33
= ZapfChancery-MediumItalic. fontnr がこれら以外
のときは 0 に設定されます。

void ps_setformat (n_decimals)
int n_decimals;
カラーまたはグレーの値を書くときに使われる桁数を
設定します。デフォルト設定の 3 は赤、緑、青のそれ
ぞれについて 1000 の選択肢を与えます。これは大部
分の 24 ビットのプラットフォームにより与えられる
 255 の選択肢よりも多いです。より小さな値を選ぶこ
とにより色の解像度は落ちますが出力ファイルを小さ
くすることができます。それでも、 2 という値でも
100 x 100 x 100 = 100万色となり、通常の目で識別
できる数よりも多いです。 1 に設定すると、各基本色
につき 10 種類となり全体で 1000 色となります。

void ps_setline (linewidth)
int linewidth;
現在の線幅を DPI 単位で変更します。 0 は最も細い線
ですが、装置に依存します(大部分のレーザープリンタ
ではきれいに印刷されます)。

void ps_setpaint (rgb)
int rgb[3];
ペンと文字の現在の RGB の設定を変更します。

void ps_square (xcenter, ycenter, diameter, rgb, outline)
double xcenter, ycenter, diameter;
int rgb[3], outline;
正方形を描いて指定した色で塗りつぶします。 outline
 == 1 のとき、輪郭は現在のペン幅とパターンを用いて
描かれます。記号は与えられた直径の円の内側にはま
るように描かれます。

void ps_star (xcenter, ycenter, diameter, rgb, out- line)
double xcenter, ycenter, diameter;
int rgb[3], outline;
星形を描いて指定した色で塗りつぶします。 outline
 == 1 のとき、輪郭は現在のペン幅とパターンを用いて
描かれます。記号は与えられた直径の円の内側にはま
るように描かれます。

void ps_text (x, y, pointsize, text, angle, jus- tify, form)
double x, y, angle;
char *text;
int pointsize, justify, form;
text は (x,y) の点からプロットされ、水平と angle
 の角度をなします。点 (x,y) は justify に様々な値
を与えることにより文字列の異なる点に移すことがで
きます。それは以下のように用いられます:

9------------10-----------11
| | |
5 6 7
| | |
1------------ 2------------3
箱は文字列を表します。例えば、文字列をその重心が
(x,y) に来るようにプロットするには、 justify == 6
を用いなければなりません。 justify が負のときは、
前後の空白が落とされてからプロットされます。ある
文字列(フラッグ)は ps_text にとって特別な意味を
持ちます。 @~ は現在のフォントと Mathematical
 Symbols フォントの切り替えを行います。 @%no% は
フォントを no に設定します; @%% は最初のフォント
に戻します。 @- は下付き文字のオン/オフ、 @+ は上
付き文字のオン/オフ、 @# はスモールキャップのオン
/オフを切り替え、 @\ は後の2文字から合字を作りま
す。フォントサイズの単位はポイントです( 72 ポイン
ト = 1 インチ)。通常、文字は実線でタイプされます。
文字の輪郭を描くには、 form == 1 を設定します。

void ps_textbox (x, y, pointsize, text, angle, jus- tify, outline, dx, dy, rgb)
double x, y, angle, dx, dy;
char *text;
int pointsize, justify, outline, rgb[3];
この関数は文字列を囲む箱が欲しいときに ps_text
 とともに用います。 ps_text の引数の大部分に加え
て、ユーザは結果の長方形の色と、輪郭を描くかどう
かを指定しなければなりません。文字と長方形の間の
空白は dxdy で設定します。 void ps_transrotate (x, y, angle)
double x, y, angle;
原点を (x,y) に移して、それから angle 度だけ座標
系を回転します。

void ps_triangle (xcenter, ycenter, diameter, rgb, outline)
double xcenter, ycenter, diameter;
int rgb[3], outline;
三角形を描いて指定した RGB の組合せで塗りつぶしま
す。 outline == 1 のとき、輪郭は現在のペン幅とパ
ターンを用いて描かれます。記号は与えられた直径の
円の内側にはまるように描かれます。

void ps_vector (xtail, ytail, xtip, ytip, tail- width, headlength, headwidth, headshape, rgb, out- line)
double xtail, ytail, xtip, ytip, tailwidth, headlength, headwidth, headshape;
int rgb[3], outline;
様々なパラメータで指定されたような大きさと外見の
ベクトルを描きます。 headshape は 0-1 の値をとり、
どのくらいストレートベクトルの頭の底辺とベクトル
線の間の交差点が先端の方へ動かされるかを指定しま
す。 0 とすると三角形の頭、 1.0 とすると矢印型の
頭になります。 outline == 1 のとき、輪郭は現在の
ペン幅を用いて描かれます。

void ps_words (x, y, text, n_words, line_space, par_width, par_just, font, font_size, angle, rgb, justify, draw_box, x_off, y_off, x_gap, y_gap, box- pen_width, boxpen_texture, boxpen_offset, box- pen_rgb, vecpen_width, vecpen_texture, vecpen_off- set, vecpen_rgb, boxfill_rgb)
double x, y, line_space, par_width, angle, x_off, y_off, x_gap, y_gap;
int n_words, font, font_size, justify, draw_box, boxpen_width, boxpen_offset;
int boxpen_rgb[3], vecpen_width, vecpen_offset, vecpen_rgb[3], boxfill_rgb[3];
char **text, *boxpen_texture, *vecpen_texture;
テキストのパラグラフを組版します。 text は版に組
まれる単語の並びで、与えられた行間隔とパラグラフ
幅を用います。テキストブロック全体は x, y で位置
づけられ、これは justify で指定されるボックス上の
アンカーポイントになります( ps_text 参照)。それ
からブロック全体は x_off, y_off だけ動かされます。
ボックスの内部では、文字列は par_just (lcrj) によ
り left, centered, right, justified のいずれかに
調整されます。 draw_box には周りを囲むボックスに
関連する 4 ビットのフラッグが含まれます。オンのと
き、最初の(最小の)ビットはボックスの輪郭を描きま
す。2番目のビットはボックスの内部を塗りつぶします。
3番目のビットはボックスの角を丸くします(テキスト
とボックスの間のパディングを指定する x_gap, y_gap
 がゼロでない限り)。4番目のビットは元の x, y から
移動した位置まで線を引きます。 ps_text について
記述されたエスケープ文字はここでも使え、更に2つの
コマンドが使えます: @;r/g/b; はフォントの色を変え
(@;; で元に戻ります)、 @:size: はフォントサイズを
変えます(@:: で元に戻ります)。


作者

       Paul  Wessel,  School of Ocean and Earth Science and Tech-
nology, 1680 East-West Road, Honolulu, Hawaii 96822, (808)
956-4778, Internet address: wessel@soest.hawaii.edu.


バグ

       買手危険負担: 作者は pslib の正しいもしくは誤った使用によ
り引き起こされた災害、自殺未遂、及び潰瘍に関していかなる責
任も負いません。もしバグを見つけたら、作者に電子メールでお
知らせください。問題を再現できるように必ず十分な詳細を提供
してください。


制限

       Laserwriters のような一部の出力装置の限られたメモリにより、
PostScript インタープリタの限界による制約が適用されます:
 当分は、 ps_cliponps_polygon に渡される配列は約 1350
 点以下でなければなりません。また、 ps_image に渡されるバッ
ファ配列は利用可能なメモリにあわせることができなければなり
ません。使用しているハードコピー装置の仕様書を確認してくだ
さい。 Raster Image Processors (RIPs) の中にはダイレクトカ
ラーをサポートしておらず望んだとおりの色が得られないものが
あります。これは RIP の限界であって、 pslib が作成した元々
PostScript コードのせいではありません。


参考文献

       Adobe Systems Inc., 1990,  PostScript  language  reference
manual, 2nd edition, Addison-Wesley, (ISBN 0-201-18127-4).



1 May 2003 pslib(l)

Man(1) output converted with man2html