名前
pslib v3.2 - PostScript ベースの描画ライブラリ
記述
pslib は PostScript ページの記述コードの生成をより簡単にす
るために作られました。これは画像を作るのに使うことができる
ツールの集まりを含むライブラリです。結果の PostScript コー
ドは ASCII テキストであらゆるテキストエディタを用いて編集す
ることができます。そのため、プロットファイルを改変するのは
たとえそれが作られた後でも非常にたやすいことです。例えば、
文字列を変えたり、新しいグレーシェードや色を設定したり、様
々なペンの太さを試したりすることなどができます。 pslib
は C で書かれていますが現在は FORTRAN がバインドされている
ため( WHOI の John Goff に感謝します) C と FORTRAN の両方の
プログラムから呼び出すことができます。このライブラリを使う
には、描画プログラムを pslib.a にリンクしなければなりません。
pslib は GMT の SYSTEM および 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 の引数の大部分に加え
て、ユーザは結果の長方形の色と、輪郭を描くかどう
かを指定しなければなりません。文字と長方形の間の
空白は dx と dy で設定します。
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_clipon と ps_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