curs_overlay(3x) curs_overlay(3x)
overlay, overwrite, copywin - curses ウインドウの 重ね合わせと重なったウインドウの操作
#include <curses.h> int overlay(const WINDOW *srcwin, WINDOW *dstwin); int overwrite(const WINDOW *srcwin, WINDOW *dstwin); int copywin(const WINDOW *srcwin, WINDOW *dstwin, int sminrow, int smincol, int dminrow, int dmincol, int dmaxrow, int dmaxcol, int overlay);
overlay と overwrite ルーチンは srcwin を dstwin の上に 重ねます。 srcwin と dstwin は同じサイズである必要はありません。 2 つのウインドウが重なった部分のテキストのみがコピーされます。 違いは、 overlay は破壊的ではなく (空白はコピーしない) 、 overwrite は破壊的であるということです。
copywin ルーチンは overlay や overwrite ルーチンよりも細かな 操作を可能にします。 prefresh ルーチンのように、コピー元ウインドウの左上隅座標を (sminrow, smincol) で指定し、コピー先ウインドウの長方形を (dminrow, dmincol) と (dmaxrow, dmaxcol) で指定します。 引数 overlay が true ならば、コピーは overlay のように 非破壊的に行われます。
整数を返すルーチンは、失敗のとき ERR を、正常終了のとき OK (SVr4 は「ERR 以外の整数値」としか指定していません) を 返します。 X/Open はエラーの条件を定義していません。 この実装では、 copywin, overlay, overwrite はウインドウ・ ポインタがヌルの場合、またはウインドウのどこかが画面から はみ出す場合にエラーを返します。
overlay と overwrite はマクロであるかもしれないことに 注意してください。
これらの関数は (const 修飾子つきで) XSI Curses standard, Issue 4 に記載されています。 それはさらに、(この実装ではまだサポートしていない) マルチバイトの表示様式を持つ文字が存在する場合の関数の挙動を 明確にしています。
curses(3x), curs_pad(3x), curs_refresh(3x) curs_overlay(3x)