Solaris X Window System 開発ガイド

オーバーレイ/アンダーレイに使用するビジュアルの選択

Solaris 透明オーバーレイ API では、複数プレーングループ (MPG) デバイスと単一プレーングループ (SPG) デバイスがサポートされます。表示デバイスにはさまざまな構成があります。表示デバイスによっては、複数プレーングループを持つものがあります。複数のハードウェアカラールックアップテーブル (LUT) を持つものもあります。また、特定のプレーングループ専用にカラー LUT を使用するものもあれば、複数のプレーングループ間でカラー LUT を共有するものもあります。このような広範な構成のために、アプリケーション開発者が移植性のあるオーバーレイアプリケーションを作成するのが困難になっています。

特定のタイプのアンダーレイウィンドウについては、高性能の描画能力を持つオーバーレイウィンドウが、特定のデバイスによって提供される場合がありますが、それより描画速度の遅い従来のオーバーレイウィンドウを提供するデバイスもあります。デバイスの中には、数多くのカラーを持つオーバーレイをサポートできるものもあればサポートできないものもあります。また、すべてのタイプのオーバーレイとアンダーレイのカラーを同時に表示できるデバイス、特定のオーバーレイ/アンダーレイの組み合わせについてはカラーの同時表示ができないデバイス、カラーの同時表示に若干の制限があるデバイスなどがあります。これらのデバイスは、複数のハードウェアカラー LUT をサポートします。ただし、ハードウェア内のカラー LUT の数が足りないために、アプリケーションによってはカラーを同時に表示できない場合があります。

Solaris Visual Overlay Window API では、アプリケーションがオーバーレイ/アンダーレイの最適なビジュアルの組み合わせについてシステムと折衝できるように、次の 2 つのユーティリティルーチンが提供されています。

これらのルーチンについての詳細は、アプリケーションの移植性の設計を参照してください。

システムとの折衝では、各アプリケーションについて、ウィンドウとカラーの理想的な構成があることが前提とされます。アプリケーションはまず最初に、オーバーレイ/アンダーレイの「最適な」組み合わせを要求します。最初は理想的なペアを要求するという点で、アプリケーションは「最適」の定義について非常に大胆です。この要求がデバイスによって満足されれば、折衝は成立し、アプリケーションは選択されたオーバーレイ/アンダーレイのビジュアルに基づいてウィンドウを作成します。要求を満たすビジュアルの組み合わせが存在しない場合、アプリケーションは要求を緩和し、「2 番目に最適な」組み合わせを指定します。たとえば、アプリケーションは表示可能な色数の少ないビジュアルを選択したり、特定のビジュアルについては要求する描画性能水準を落としたりします。このような手続きは、満足のゆくビジュアルが見つかるか、特定の条件が満たされない現在の環境で実行するのは意味がないとアプリケーションが判断するまで続けられます。

透明オーバーレイ API には、アプリケーションがこのような折衝を単一のサブルーチン呼び出しで実行できるようにするルーチンがあります。アプリケーションは、オーバーレイビジュアルとアンダーレイビジュアルの一方またはそれら両方について満足する条件を指定します。広範囲のグラフィックス装置に対する移植性を保障するために、アプリケーション内ではこれらのルーチンを使用することをお薦めします。