XCopyArea(3) 領域をコピーする

Other Alias

XCopyPlane

書式

XCopyArea(display, src, dest, gc, src_x, src_y, width, height, dest_x, dest_y)

      Display *display;

      Drawable srcdest;

      GC gc;

      int src_xsrc_y;

      unsigned int widthheight;

      int dest_xdest_y;

XCopyPlane(display, src, dest, gc, src_x, src_y, width, height, dest_x, dest_y, plane)

      Display *display;

      Drawable srcdest;

      GC gc;

      int src_xsrc_y;

      unsigned int widthheight;

      int dest_xdest_y;

      unsigned long plane;

引き数

dest_x

dest_y
コピー先の長方形の左上隅の x, y 座標を指定する。 この座標は、コピー先の長方形の原点に対する相対座標で指定する。
display
X サーバへの接続を指定する。
gc
GC を指定する。
plane
ビットプレーンを指定する。 ひとつのビットだけを1に設定しなければならない。
src

dest
コピー元とコピー先の長方形を指定する。
src_x

src_y
コピー元の長方形の左上隅の x, y 座標を指定する。 この座標は、コピー元の長方形の原点に対する相対座標で指定する。
width

height
高さと幅を指定する。 これはコピー元とコピー先両方の長方形の大きさである。

説明

関数 XCopyArea は、指定したコピー元の長方形をコピー先の長方形にコピーする。 2つのドロウアブルは同じルートウィンドウと深さを持っていなければならな い。そうでない場合には、エラー BadMatch となる。

コピー元の長方形領域が他のウィンドウに隠されていて、その部分がバッキン グストアに保持されていない場合や、コピー元のドロウアブルの境界の外側の 部分が指定された場合には、領域間でのコピーは行われない。 その代わりに、その部分に対応するコピー先領域で、可視状態であったりバッ キングストアに保存されているもの全ては以下に示すようになる。 コピー先の領域が None でない背景色を持つウィンドウである場合、コピー先の対応する領域は背景色 で塗りつぶされる(プレーンマスクは全て1で、 GXcopy function が使われる)。 塗りつぶしや、コピー先領域がウィンドウかピックスマップであるかどうかに は関係なく、graphics-exposures が True の時には、対応するコピー先領域に対する GraphicsExpose イベントが生成される。 graphics-exposures は True であるが、 GraphicsExpose イベントが全く生成されない場合には、 NoExpose イベントが生成される。 新規作成した GC においては、graphics-exposures のデフォルトの値は True である点に注意すること。

この関数は以下の GC コンポーネントを使用する: function, plane-mask, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin, clip-mask。

XCopyArea はエラー BadDrawable, BadGC, BadMatch を起こすことがある。

関数 XCopyPlane は、指定したコピー元の長方形領域の1つのビットプレーンを用いて、指定し たコピー先の長方形領域を書き換える。 コピー元の領域は、指定した GC に結びつけられている。 2つのドロウアブルのルートウィンドウは同じでなければならないが、深さが 同じである必要はない。 2つのドロウアブルのルートウィンドウが異なる場合は、エラー BadMatch となる。 plane ビットのうち1つだけを1に設定していない場合や、plane の値が %2 sup n% 以上の場合(n はコピー元の深さ)には、エラー BadValue となる。

実際には、 XCopyPlane はコピー先領域と同じ深さで、コピー元領域で指定したサイズのピックスマッ プを作る。 そして、GC内の前景色/背景色のピクセル(コピー元のビットプレーンで1の部分 は前景色、0の部分は背景色)を用いて、 CopyArea プロトコルリクエストと同等のリクエストが実行される。ウィンドウの露出に ついては全く同じである。 これは、指定したコピー元領域のビットプレーンを fille-style が FillOpaqueStippled のスティプルを使って、コピー先の長方形領域を塗りつぶしたと考えることも できる。

この関数は以下の GC コンポーネントを使用する: function, plane-mask, foreground, background, subwindow-mode, graphics-exposures, clip-x-origin, clip-y-origin, clip-mask。

XCopyPlane はエラー BadDrawable, BadGC, BadMatch, BadValue を起こすことがある。

返り値

BadDrawable
引き数 Drawable の値が、定義されている Window や Pixmap を指していない。
BadGC
引き数 GContext の値が、定義されている GContext を指していない。
BadMatch
InputOnly のウィンドウを Drawable として使用した。
BadMatch
引き数や引き数の組の型や範囲は正しい、そのリクエストが要求する 他の条件を満たしていなかった。
BadValue
指定された数値に、リクエストの許容範囲を越えているものがある。引き数に対 して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範 囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが ある。