Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ibs_zoom_open(3X) — NEWS-os 4.2.1R

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_1dzoom_open, Ibs_1dzoom, ibs_zoom_open, ibs_zoom, ibs_zoom_getworksize − イメージデータの水平方向の拡大縮小を行う

形式

ibs_1dzoom_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_1dzoom(inimgadr, outimgadr, work)
char ∗inimgadr, ∗outimgadr;
int ∗work;

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_1dzoom_open 、 ibs_1dzoom の組合せは ibs_zoom_open 、 ibs_zoom の組合せよりもイメージボードで得られる結果により近い結果を得ることが できます。
ibs_1dzoom_open 、 ibs_1dzoom の組合せと ibs_zoom_open 、 ibs_zoom の組合せとは拡大縮小の結果が異なるだけで使用方法はまったく同じです。
ここでは、 ibs_1dzoom_open 、 ibs_1dzoom の組合せのときについてのみ説明します。
ibs_1dzoom_open は、拡大縮小を行うために必要な変数をセットします。
iniw 、 inx 、 inw は入力データの領域を指示します。
outiw 、 outx 、 outw は出力データを格納する領域を指示します。
iniw 、 outiw はイメージ幅(ドット)です。
inx 、 outx は行の中で実際にデータが置かれる位置を左端を 0 として ドット単位で指示します。
inw、 outw はイメージデータの長さ(ドット)です。 どのような場合でも ( inx + inw ) 、あるいは ( outx + outw ) が iniw 、 outiw を超えてはいけません。
flag のビット 1 に 1 が指定されれば、iw は 8 の倍数が許され、 inimgadr と outimgadr は奇数アドレスが許されます。 ビット 1 に 0 が指定されたときは、iw は 16 の倍数で なければならず、inimgadr と outimgadr は 偶数アドレスでなければなりません。 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_1dzoom_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_1dzoom_open で設定されたものが渡されます。
iw 、 w 、 x にはそれぞれ、 outiw 、 outw 、 outx が渡されます。
imgadr には outimgadr が渡されます。
sline は変化点の配列を指しています。 この関数の中で sline については何も変更してはいけません。
変化点については、 ibs_encode あるいは、 ibs_decode を参照してください。

ibs_1dzoom は実際に 1 行の拡大縮小を行います。
inimgadr、 outimgadr は入力、出力バッファを指し示すのに使われます。
正常に終了したときのリターン値は 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.2.1R

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