XEVI(3X11)

名前
XeviQueryExtension, XeviQueryVersion, XeviGetVisualInfo - X の拡張ビジュアル情報を扱う関数群

書式
#include <X11/extensions/XEVI.h> Bool XeviQueryExtension (Display *dpy);

Bool XeviQueryVersion (Display *dpy,
    int *major_version_return,
    int *minor_version_return);

int XeviGetVisualInfo (Display *dpy, VisualID *visual,
    int n_visual, ExtendedVisualInfo ** evi_return,
    int * n_info_return);

説明
X11 Extended Visual Information 機能拡張(EVI 機能拡張)を用いると、 クライアントはコアの X ビジュアルに関する情報を、 コアプロトコルが提供するよりも詳しく得ることができる。 EVI アプリケーションプログラミングライブラリは後述するインタフェースを 持つ。 XeviQueryExtension 除き、これらの関数のいずれかが EVI 機能拡張に対応していない ディスプレイについて呼び出された場合、 ExtensionErrorHandler (このハンドラは XSetExtensionErrorHandler を使って設定できる。設定方法は XSetErrorHandler と同様である)が呼び出されて、元の関数はそれから復帰する。

XeviQueryExtension は、指定されたディスプレイが EVI 機能拡張に対応していれば True を返す。 クライアントは他の EVI 関数を呼び出す前に XeviQueryExtension を呼び出して、プロトコルのバージョンが互換かどうかを確認しなければなら ない。そうでない場合のクライアントの動作は未定義である(EVI は動作する かもしれないし、動作しないかもしれない)。

XeviQueryVersion はリクエストが成功すれば True を返す。この場合、サーバがサポートしているプロトコルのメジャーバージョン とマイナーバージョンの値が major_version_return と minor_version_return に返される。

XeviGetVisualInfo は ExtendedVisualInfo 構造体のリストを返す。この構造体は、 コアプロトコルが対応しているよりも詳しいビジュアル情報を保持している。 この構造体は、オーバーレイやアンダーレイプレーンに対応しているシステム で使えるレイヤ情報や、複数カラーマップに関するハードウェア対応のレベル をアプリケーション側から調べることが可能になる情報などを持っている。 XeviGetVisualInfo は成功すれば Success を返し、失敗すれば X エラーとなる。 引き数 visual が NULL の場合、この関数は全てのスクリーンの全てのビジュアルに関する 情報を返す。 そうでない場合は、拡張ビジュアル情報を調べたいビジュアルのリストへの ポインタを指定すること。 n_visual はビジュアルの配列の要素数である。 evi_return は ExtendedVisualInfo のリストへのポインタが返される。使用後には、 クライアントは XFree を使ってリストを解放しなければならない。 n_info_return には、配列 evi_return 内の要素数が返される。

ExtendedVisualInfo 構造体は以下に示すフィールドを持つ:
VisualID	core_visual_id
int 	screen
int 	level
unsigned int	transparency_type
unsigned int	transparency_value
unsigned int	min_hw_colormaps
unsigned int	max_hw_colormaps
unsigned int	num_colormap_conflicts
VisualID *  	colormap_conflicts

ID core_visual_id と番号 screen の組合せは、この構造体が記述するビジュアルを一意に指定する。

level にはビジュアルのレベル番号が返される。0 は通常のプレーン、0 より大きい 値はオーバーレイ、0 未満の値はアンダーレイを表す。

transparency_type にはビジュアルがサポートする透過のタイプが返される。 透過ピクセルが使えなければ XEVI_TRANSPARENCY_NONE であり、 ビジュアルが透過ピクセルに対応していれば XEVI_TRANSPARENCY_PIXEL であり、 ビジュアルが透過プレーンに対応していれば XEVI_TRANSPARENCY_MASK である。

transparency_value には透過状態を表すピクセル値/プレーン値が返される。ただし transparency_type が XEVI_TRANSPARENCY_NONE の場合は除く。

min_hw_colormaps と max_hw_colormaps には、ビジュアルをバックアップするハードウェアカラーマップの最小値と 最大値が返される。

num_colormap_conflicts には colormap_conflicts の要素数が返される。 この配列には、ハードウェアカラーマップと使用がぶつかるかもしれない ビジュアルのリストが返される。例えば、12 ビットのハードウェア カラーマップを無理に 8 ビットのカラーマップに対応させようとした場合、 これに相当する 8 ビットのビジュアルが 12 ビットのビジュアルとぶつかる だろう。

エラー
XeviGetVisualInfo は不正なビジュアル ID が渡されると BadValue を返す。また X サーバが応答しないと BadAccess を返し、メモリの割り当てに失敗すると BadAlloc を返す。