Solaris X Window System 開発ガイド

背景

X 仕様で定義されているように、ウィンドウには背景を設定できます。ウィンドウの背景の主な目的は、クライアントがウィンドウの露出領域を再描画するのに時間がかかる場合に、何か適当なものをその領域に表示することです。ウィンドウが Expose イベントを受信する度に背景が描画されます。背景が描画された後で、Expose イベントがクライアントに送信されます。クライアントが XClearArea 要求または XClearWindow 要求を発行したときにも背景が描画されます。

標準の X InputOutput ウィンドウと同様に、透明オーバーレイウィンドウにも背景を設定できます。通常のウィンドウと同様に、透明オーバーレイウィンドウの背景は、Expose イベント、XClearArea 要求、XClearWindow 要求に応答して描画されます。標準タイプの背景 (None、pixmap、pixel、ParentRelative) の他に、透明オーバーレイウィンドウでは transparent という新しいタイプの背景を設定することもできます。透明 (transparent) の背景を指定する場合は、XSolarisOvlSetWindowTransparent という新しいルーチンを使用します。

デフォルトでは、透明オーバーレイウィンドウの背景は透明ですが、アプリケーション内では、表 6-1 に示されているように、通常の X タイプの背景 (None、ピックスマップ XID、ピクセル値、ParentRelative) を指定することもできます。

表 6-1 透明オーバーレイウィンドウの背景値

背景 

説明 

透明

透明オーバーレイウィンドウの背景はデフォルトで透明に描画される。 

なし

オーバーレイウィンドウ内で背景の描画を起動する条件が検出されると、描画は実行されない。透明ペイントも不透明ペイントも描画されない。 

ピックスマップ ID 

背景は不透明ペイントで描画される。描画されるピクセル値は X 仕様で定義されたピックスマップから継承される。 

単一のピクセル値 

背景は不透明ペイントで一様なペイントのカラーで描画される。 

ParentRelative

ParentRelative の背景の動作は、親ウィンドウの背景とタイプによって異なる。親ウィンドウがアンダーレイである場合、オーバーレイウィンドウである子の背景は不透明ペイントで描画され、ピクセルは X 仕様の定義に従って描画される。親ウィンドウがオーバーレイの場合、オーバーレイウィンドウの子の背景は、その親ウィンドウの背景と同じになり、透明ペイントまたは不透明ペイントで描画される。

XSolarisOvlSetTransparent を使用してオーバーレイ以外のウィンドウの背景を設定しようとすると、BadMatch エラーが発生します。アンダーレイウィンドウの背景が ParentRelative であり、親ウィンドウが透明な背景を持つオーバーレイである場合、アンダーレイウィンドウである子は None の背景を持つものとして取り扱われます。