サーバーオーバーレイ API により、アプリケーションは簡単にオーバーレイビジュアルと対応する透明なピクセル値を見つけることができます。オーバーレイビジュアルはオーバーレイウィンドウを作成するために使用され、透明なピクセルは下にあるアンダーレイが見えるようにするためにクライアントが使用する特殊なピクセル値です。このピクセル値は、すべての描画操作での一般的な前景や背景、またはオーバーレイウィンドウの背景で使用されます。
サーバーオーバーレイ API は、ルートウィンドウの SERVER_OVERLAY_VISUALS プロパティに以下の情報が含まれていることを指定しています。サーバーにより返される情報のサイズにより、返されるこの構造体のインスタンスの数 (リストされた各ビジュアルについて 1 つのインスタンス) が決まります。
typedef struct { unsigned int visualid; unsigned int trans_type; unsigned int value; unsigned int layer; } ServerOverlaysInfoRec;
visualid |
X サーバーにより参照されるビジュアル ID。通常、XGetVisualInfo によりクライアントに返される。 |
trans_type |
透過性のタイプ。0 は None、1 は Transparent Pixel、2 は Transparent Mask。 |
value |
透明なピクセル値またはマスク値。 |
layer |
透過性の効果に関するビジュアルの相対的なハードウェアレイヤ。 |
trans_type の値は、仕様では一般的ではない他の透過性のタイプがある、という前提で存在しています。透明なピクセルが使用できない場合 trans_type はゼロになりますが、これは X サーバーが、通常のウィンドウとは異なるプレーングループのセットに存在することを、知らせようとするためです。
通常のウィンドウの場合 layer は普通ゼロですが、実際には相対的な数値で、数値の大きいプレーングループは数値の小さいプレーングループよりも上であることを示します。負の数値の場合もあります。
SERVER_OBERLAY_VISUALS プロパティにリストされていないビジュアルは、レイヤが 0、透過性が none であるとみなされます。これらのデフォルト値は、サーバーオーバーレイ操作にのみ適用されます。
透明なピクセルは次のレイヤの最初のウィンドウに通過して表示されます。レイヤはスタック順序に影響せず、透過性の効果にのみ適用されます。対象となるアンダーレイの直接かつ唯一の子としてオーバーレイを使用することをお勧めします。これにより、最適のパフォーマンスが得られ、混乱が少なくなります。
サーバーオーバーレイのサポートはデバイスに依存し、完全なハードウェア移植や部分的なソフトウェアエミュレーション、またはソフトウェアとハードウェアの組み合わせの場合があります。
サーバーオーバーレイは、『The X Journal』July/August 1993 号の Mark J. Kilgurad による「Programming X Overlay Window」で定義されています。