Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ibs_zoom_getworksize(3X) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

libibs(3X)

ibs_encode(3X)

ibs_decode(3X)

ibs_geioerror(3X)

IBS_ZOOM(3X)  —  NEWS-OS Programmer’s Manual

名称

ibs_zoom_open, ibs_zoom, ibs_zoom_getworksize − イメージデータの 水平方向の拡大縮小を行う

形式

ibs_zoom_open(iniw, inx, inw, outiw, outx, outw, flag, mode, work, inf, inarg, outf, outarg)
int iniw, inx, inw;
int outiw, outx, outw, flag, mode;
int ∗work;
int (∗inf)();
int inarg;
int (∗outf)();
int outarg;

ibs_zoom(inimgadr, outimgadr, work)
char ∗inimgadr, ∗outimgadr;
int ∗work;

ibs_zoom_getworksize(inw, outw, flag, mode)
int inw, outw, flag, mode;

解説

これらの関数はイメージデータを 1 行ずつ水平 (x) 方向に 拡大縮小する関数です。
ibs_zoom_open は、拡大縮小を行なうために必要な変数をセットします。
iniw 、 inx 、 inw は入力データの領域を指示します。
outiw 、 outx 、 outw は出力データを格納する領域を指示します。
iniw 、 outiw はイメージ幅(ドット)で、16 の倍数でなければなりません。
inx 、 outx は行の中で実際にデータが置かれる位置を左端を 0 として ドット単位で指示します。
inw、 outw はイメージデータの長さ(ドット)です。 どのような場合でも ( inx + inw ) 、あるいは ( outx + outw ) が iniw 、 outiw をこえてはいけません。
flag は、 outf にそのままわたされます。
mode に 0 を指定すると、縮小時に隣接するドットとの論理和を取ります。
work は内部で使う作業領域で、 関数 ibs_zoom_getworksize によって得られる値より大きな 領域を確保しておかなければなりません。
この作業領域 は拡大、縮小がすべて終わるまで変更してはいけません。
inf 、 outf は、入出力関数へのポインタです。 inf 、 outf には NULL を指定することができ、その場合には デフォルトの入出力関数が使われます。 この場合、入出力関数の形式や内部表現についての知識は必要有りません。
inarg 、 outarg はそれぞれ関数 inf  、  outf にそのまま渡されます。

inf はイメージデータを読み込んで変化点の配列に変換するための入力関数です。
inf に NULL が指定された場合、デフォルトの入力関数 ibs_encode が呼ばれます。 inf は次のような形をしていて、 エラーのときは負となるようなリターン値をもたなくてはなりません。

int (∗inf)(inarg, imgadr, iw, w, x, sline, flag)
int inarg;char ∗imgadr;
int iw, w, x;
int ∗sline;
int flag;

inarg 、 flag は ib_zoom_open で設定されたものが渡されます。
iw 、 w 、 x にはそれぞれ、 iniw 、 inw 、 inx が渡されます。
imgadr には inimgadr が渡されます。
この関数の中では imgadr で示されるイメージデータを変更してはいけません。
sline は変化点の配列です。 ( inw + 2 ) ∗ 4 バイトの大きさを持っています。
変化点については、 ibs_encode あるいは、 ibs_decode を参照してください。

outf は変化点の配列をイメージデータに復元して、 出力バッファへ書きだすための出力関数です。 outf に NULL が指定された場合、デフォルトの出力関数 ibs_decode が呼ばれます。
ここで、出力関数 outf は次のような形をしていて、 エラーのときは負となるようなリターン値をもたなくてはなりません。

int (∗outf)(outarg, imgadr, iw, w, x, sline, flag)
int outarg;
char ∗imgadr;
int iw, w, x;
int ∗sline;
int flag;

outarg 、 flag は ib_zoom_open で設定されたものが渡されます。
iw 、 w 、 x にはそれぞれ、 outiw 、 outw 、 outx が渡されます。
imgadr には outimgadr が渡されます。
sline は変化点の配列をさしています。 この関数の中で sline については何も変更してはいけません。
変化点については、 ibs_encode あるいは、 ibs_decode を参照してください。

ibs_zoom は実際に 1 行の拡大縮小を行ないます。
inimgadr、 outimgadr は入力、出力バッファを指し示すのに使われます。
inimgadr、 outimgar は偶数アドレスになければなりません。
正常に終了したときのリターン値は 0 です。

ibs_zoom_getworksize は work に必要な領域の大きさを返します。 たとえば、大きさの異なるイメージを扱うときには得られた値の最大値を 使用しなければなりません。 現在のバージョンでは、 (( inw + 2) ∗ 8) + 256 が返されます。

リターン値

パラメータにエラーがあったときは −1 が返されます。

inf にエラーが生じたときは −2 が返されます。 outf にエラーが生じたときは −3 が返されます。
が破壊されている場合は −4 を返します。

inf 、 outf で生じたエラーについては ibs_getioerror を呼ぶことによって何が返されたか知ることができます。

関連ファイル

/usr/sony/lib/libibs.a

関連事項

libibs(3X), ibs_encode(3X), ibs_decode(3X), ibs_geioerror(3X)

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026