other versions
- wheezy 4.1.0.20011224-6
| XAllocStandardColormap(3X11) | XLIB FUNCTIONS | XAllocStandardColormap(3X11) |
名前¶
XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap - 標準カラーマップ構造体の割り当て・設定・取得書式¶
XStandardColormap *XAllocStandardColormap() void XSetRGBColormaps( display, w, std_colormap, count, property)Display * display;
Window w;
XStandardColormap * std_colormap;
int count;
Atom property; Status XGetRGBColormaps( display, w, std_colormap_return, count_return, property)
Display * display;
Window w;
XStandardColormap ** std_colormap_return;
int * count_return;
Atom property;
引き数¶
- display
- X サーバへの接続を指定する。
- count
- カラーマップの数を指定する。
- count_return
- カラーマップの数が返される。
- property
- プロパティの名前を指定する。
- std_colormap
- 使われる XStandardColormap 構造体を指定する。
- std_colormap_return
- XStandardColormap 構造体が返される。
説明¶
関数 XAllocStandardColormap は XStandardColormap 構造体を割り当て、この構造体を指すポインタを返す。 XStandardColormap 構造体の全てのフィールドは 0 で初期化される点に注意すること。 十分なメモリが利用できない場合、 XAllocStandardColormap は NULL を返す。 この構造体に割り当てられたメモリを解放するには XFree を使用すること。 関数 XSetRGBColormaps は指定したウィンドウの指定したプロパティの RGB カラーマップの定義を置 き換える。 そのプロパティがまだ存在しない場合、 XSetRGBColormaps は指定したウィンドウの指定したプロパティの RGB カラーマップの定義を 設定する。 プロパティは RGB_COLOR_MAP 型、フォーマット 32 で格納される。 RGB_DEFAULT_MAP のみが複数の定義を持つという ICCCM の規定は、関数を呼 び出す側で守る義務があることに注意せよ。 関数 XSetRGBColormaps を使うのは、通常はウィンドウかセッションマネージャだけである。 標準カラーマップは以下の手続きで作成する。- 1.
- 現在のサーバへの新しい接続をオープンする。
- 2.
- サーバをグラブする。
- 3.
- スクリーンのルートウィンドウのプロパティリストにこのプロパティがあるか どうか確認する。
- 4.
- 必要なプロパティがなければ次の処理を行う。
- •
- (スクリーンのデフォルトのカラーマップを使わない場合に限り)カラーマップ を生成する。
- •
- ビジュアルの色の特性を決定する。
- •
- カラーマップ内のセルを割り当てる(あるいは AllocAll で作成する)。
- •
- XStoreColors を呼び、カラーマップに適切な色の値を格納する。
- •
- XStandardColormap 構造体のメンバを設定する。
- •
- このプロパティをルートウィンドウに割り付ける。
- •
- XSetCloseDownMode を使用して、リソースを永続的なものにする。
- 5.
- サーバのグラブを解放する。
構造体¶
XStandardColormap 構造体の内容を以下に示す:| #define | ReleaseByFreeingColormap | ( (XID) 1L) |
typedef struct {
Colormap colormap;
unsigned long red_max;
unsigned long red_mult;
unsigned long green_max;
unsigned long green_mult;
unsigned long blue_max;
unsigned long blue_mult;
unsigned long base_pixel;
VisualID visualid;
XID killid;
} XStandardColormap;
colormap メンバは、関数
XCreateColormap
で作られるカラーマップである。
red_max, green_max, blue_max メンバは RGB
の各値の最大値を与える。
それぞれの色係数の範囲は
0
以上、最大値以下である。
例えば、標準的なカラーマップの配置は
3/3/2である(赤に3プレーン、緑に3
プレーン、青に2プレーン)。
このカラーマップは
red_max = 7, green_max = 7, blue_max = 3 となる。 216
色しか使わない別の配置としては、red_max
= 5, green_max = 5, blue_max = 5
などが考えられる。
red_mult, green_mult, blue_mult
メンバは完全なピクセル値を作るための倍
率を与える。
(詳しい情報については
base_pixels
メンバの説明を参照すること。)
3/3/2 の配置の場合には
red_mult は 32, green_mult は 4, blue_mult は 1
となる。 6/6/6
の配置の場合には、red_mult
は 36, green_mult は 6, blue_mult は 1
となる。
base_pixel
メンバは、完全なピクセル値を作るために使われるベースピクセ
ル値を与える。
通常、この base_pixel は関数
XAllocColorPlanes
を呼び出して得る。
正しい範囲の RGB
の各係数を与えると、対応するピクセル値は次の式で計算
できる。
(r * red_mult + g * green_mult + b * blue_mult + base_pixel) & 0xFFFFFFFFGrayScale カラーマップについては、colormap, red_max, red_mult, base_pixel メンバ だけが定義される。 他のメンバは無視される。 GrayScale のピクセル値の計算には次の式を使用する。
(gray * red_mult + base_pixel) & 0xFFFFFFFF負の乗数を表すには、その乗数の 2 の補数表現を unsigned long に変換し、 その結果を適切な _mult フィールドに保存すれば良い。 0xFFFFFFFF のマスクを掛ける段階で、得られた正の乗数を負の乗数に効 率的に変換することができる。 多くの計算機アーキテクチャでは、マスキングの処理は計算に使用される 整数のサイズに依存して自動的に行われる。 visualid メンバは、カラーマップを生成したビジュアルの ID 番号を与える。 killid メンバは、リソースIDを与える。 このリソースIDは、この標準カラーマップが保持しているセルをカラーマップ ID の解放によって解放するのか、指定されたリソースについての XKillClient の呼び出しによって行うのかを示す。 (この方法は、現在は存在しないカラーマップを割り当てる場合に必要である。) XStandardColormap の情報を含むプロパティの型は RGB_COLOR_MAP である。
返り値¶
- BadAlloc
- 要求されたリソースやサーバメモリの割り当てにサーバが失敗した。
- BadAtom
- Atom 型の引き数の値が、定義されているアトムでない。
- BadWindow
- Window 型の引き数の値が、定義されているウィンドウでない。
関連項目¶
XAllocColor(3X11), XCreateColormap(3X11), XFree(3X11), XSetCloseDownMode(3X11)| Release 6.5 | X Version 11 |