XSolarisCopyAreaAndPaintType ルーチンは、カラー情報のソースとなるドロアブルの指定された領域を、カラー情報の宛先イメージとなるドロアブルの指定された領域にコピーします。宛先イメージとなるドロアブルがオーバーレイでなければ、ペイント型情報のソースとなるドロアブル内で指定されたペイント型情報に従って、ペイント型情報の宛先イメージとなるドロアブルの指定された領域も塗りつぶします。
XSolarisOvlCopyAreaAndPaintType ルーチンを使用すれば、カラーまたはペイント型の情報が格納されているクライアントのメモリー空間内のイメージと、指定されたオーバーレイウィンドウの矩形とを結合することができます。その場合は、最初にイメージとペイント型のデータをサーバーに移動し、XPutImage を使用して、適切なデプスの 2 つのピクセルマップにデータをコピーします。次に、カラーとペイント型のドロアブルを指定した XSolarisOvlCopyAreaAndPaintType を呼び出して、情報をオーバーレイにコピーします。
このルーチンを使用すれば、特定のドロアブルからピクセル情報 (カラーとペイント型の情報) を取り出すこともできます。その場合は、最初に 2 つの分離可能な宛先ドロアブルを指定する XSolarisOvlCopyAreaAndPaintType を呼び出します。次に、各ドロアブルに対して XGetImage を呼び出し、サーバーからクライアントのメモリー空間にデータを転送します。
XSolarisCopyAreaAndPaintType の構文と引数を次に示します。
void XSolarisOvlCopyAreaAndPaintType(Display * display, Drawable colorsrc, Drawable painttypesrc, Drawable colordst, Drawable painttypedst, GC colorgc, GC painttypegc, int colorsrc_x, int colorsrc_y, int painttypesrc_x, int painttypesrc_y, unsigned int width, unsigned int height, int colordst_x, int colordst_y, int painttypedst_x, int painttypedst_y, unsigned long action, unsigned long plane)
display |
X サーバーへの接続を指定する。 |
colorsrc |
カラー情報のソースとなるドロアブル。colorsrc として、任意のデプスのドロアブルまたはオーバーレイウィンドウを指定できる。 |
painttypesrc |
ペイント型情報のソースとなるドロアブル。painttypesrc として、任意のドロアブルまたはオーバーレイウィンドウを指定できる。painttypesrc がオーバーレイウィンドウでない場合、plane で指定された painttypesrc のビットプレーンはペイント型データであるかのように処理され、コピーに使用される。この場合、plane は 1 つのビットセットを持たなければならない。 |
colordst |
カラー情報の宛先となるドロアブル。 |
painttypedst |
ペイント型情報の宛先となるドロアブル。colordst がオーバーレイである場合、このドロアブルは無視される。 |
colorgc |
カラー情報のコピーに使用する GC。 |
painttypegc |
painttypedst 内の領域の描画に使用する GC。colordst/painttypedst がオーバーレイである場合、この GC は無視される。 |
colorsrc_x colorsrc_y |
カラー情報のソース矩形の左上隅の XY 座標を、カラー情報のソースドロアブルの原点に対する相対座標で指定する。 |
painttypesrc_x painttypesrc_y |
ペイント型情報のソース矩形の左上隅の XY 座標を、ペイント型情報のソースドロアブルの原点に対する相対座標で指定する。 |
width, height |
ソースおよび宛先の矩形の幅と高さをピクセル単位で指定する。 |
colordst_x colordst_y |
カラー情報の宛先矩形の左上隅の XY 座標を、カラー情報の宛先ドロアブルの原点に対する相対座標で指定する。 |
painttypedst_x painttypedst_y |
ペイント型情報の宛先矩形の左上隅の XY 座標を、ペイント型情報の宛先ドロアブルの原点に対する相対座標で指定する。colordst/painttypedst がオーバーレイである場合は、colordst_x と colordst_y が使用される。 |
action |
どのペイント型データをコピーするかを指定する。指定できる値は、XSolarisOvlCopyOpaque、XSolarisOvlCopyTransparent、XSolarisOvlCopyAll のいずれか。 |
plane |
painttypesrc がオーバーレイでないときに、ペイント型情報として使用する painttypesrc のソースビットプレーンを指定する。 |
colordst として任意のドロアブルを指定できますが、colorsrc と同じデプスで同じルートを持たないと、BadMatch エラーが発生します。colordst がオーバーレイの場合は、painttypedst が無視され、それ以外の場合は painttypedst として任意のタイプのドロアブルを指定できます。
表 6-5 に、ソースと宛先の組み合わせとそれらの動作を示します。表の左側は colorsrc/paittypesrc の組み合わせ、表の上側は colordst/painttypedst の組み合わせを表します。A1〜A8 の各動作については、表に続いて説明します。表の中で「不可能」と記載された箇所は、colordst がオーバーレイの場合は painttypedst が無視されるために、その組み合わせが不可能であることを示します。
表 6-5 XSolarisOvlCopyAreaAndPaintType のソース/宛先の組み合わせと動作
|
オーバーレイ/オーバーレイ |
オーバーレイ/ドロアブル |
ドロアブル/オーバーレイ |
ドロアブル/ドロアブル |
---|---|---|---|---|
オーバーレイ/オーバーレイ |
A1 |
不可能 |
A5 |
A5 |
オーバーレイ/ドロアブル |
A2 |
不可能 |
A6 |
A6 |
ドロアブル/オーバーレイ |
A3 |
不可能 |
A7 |
A7 |
ドロアブル/ドロアブル |
A4 |
不可能 |
A8 |
A8 |
A1 - painttypesrc のペイント型情報が、colorsrc から colordst にカラー情報をコピーするためのマスクとして使用されます。painttypesrc 内の不透明ピクセルに対応する colorsrc のピクセルは colordst にコピーされ、透明ピクセルに対応する colordst のピクセルは透明になります。colorsrc の透明ピクセルが colordst にコピーされる場合、実際に転送されるカラーは未定義になります。
A2 - plane で指定される painttypesrc のビットプレーンからペイント型情報が抽出される点以外は、A1 と同じです。1 というビット値は不透明ピクセルを表し、0 というビット値は透明ピクセルを表します。
A3 - オーバーレイでないドロアブルを使用してカラー情報が取得される点以外は、A1 と同じです。透明ピクセルを原因とする未定義のカラーは生じません。
A4 - A2 と同様に、 plane で指定される painttypesrc のビットプレーンからペイント型情報が抽出される点以外は、A3 と同じです。
A5 - A1 と同様に、 painttypesrc のペイント型情報が、colorsrc から colordst にカラー情報をコピーするためのマスクとして使用されます。さらに、XSolarisOvlCopyPaintType の場合のように、このペイント型情報によって painttypedst ドロアブルに対する描画が制御されます。
A6 - A2 と同様に、plane で指定される painttypesrc のビットプレーンからペイント型情報が抽出される点以外は、A5 と同じです。
A7 - カラー情報のソースの透明ピクセルを原因とする未定義のカラーが生じない点以外は、A5 と同じです。
A8 - A2 と同様に、 plane で指定される painttypesrc のビットプレーンからペイント型情報が抽出される点以外は、A7 と同じです。
action 引数は、不透明ペイント (XSolarisOvlCopyOpaque) 、透明ペイント (XSolarisOvlCopyTransparent) 、それら両方 (XSolarisOvlCopyAll) のいずれをコピー対象とするかを指定します。これによって、クライアントは不透明ペイントまたは透明ペイントを累積することができます。
XSolarisOvlCopyPaintType と同様の方法で、NoExpose イベントと GraphicsExpose イベントが生成されます。
colordst 引数にオーバーレイを指定すると、painttypedst、painttypegc、painttypedst_x、painttypedst_y の各引数はすべて無視されます。painttypegc には NULL ポインタ、painttypedst には None 値を指定できます。オーバーレイは、painttypesrc で指定される領域内のピクセルで定義されるのとまったく同じペイント型を持ちます。カラー情報をコピーしても、宛先のペイント型は影響を受けません。
このルーチンで使用される colorgc の GC 構成要素は、function、plane-mask、subwindow-mode、graphics-exposure、clip-x-origin、clip-y-origin、clip-mask です。
colordst がオーバーレイでない場合は、painttypegc の GC 構成要素として、function、plane-mask、fill-style、subwindow-mode、clip-x-origin、clip-y-origin、clip-mask が使用されます。また、GC モードに依存する構成要素として、foreground、background、tile、stipple、tile-stipple-x-origin、tile-stipple-y-origin が使用される場合もあります。
このルーチンで発生する可能性のあるエラーは、BadDrawable、BadGC、BadMatch、BadValue です。