Previous: カラーマップとピクセル番号
Up: 色を扱うための構造体
Previous Page: カラーマップとピクセル番号
Next Page: Pixmap構造体

XColorとColormapを結び付ける

さて、XColorとして色のデータを用意しただけでは、 まだ自由に色を利用することはできません。 XColorはクライアントの側のデータで、 Colormapはサーバーの側のデータです。 そのままでは クライアントはカラーマップのピクセル値の情報を持ってはいません。 また、サーバーもクライアントがどんな色を欲しがっているのかわかりません。 クライアントから一度サーバーに問い合わせ、 使いたい色がカラーマップの何番目に登録されているのかを知る必要があります。 この仕事を行う関数が XAllocColor()です。

iro.red=65535;   iro.green=0;   iro.blue=65535;   /* ピンク色の RGBデータ */
XAllocColor( dsp, cmap, &iro );

引数として構造体のアドレス &iro が与えられている点に注意してください。 この関数は、 構造体XColorのメンバーの値を受け取るだけでなく、 メンバーの値を書き変えて返すこともします。 関数が受け取るデータは、 使用する色の3原色の情報(iro.red, iro.green, iro.blue)です。 これらの値は関数を呼び出す前に与えておきます。 そのデータを元にカラーマップが調べられ、 登録番号(ピクセル値)がメンバー pixel に代入されて返ってくるのです。 一度ピクセル値がわかってしまえば、クライアントは カラーマップの色の指定を自由に行うことができます。 プログラムのそれ以後の部分では、 常にこのピクセル値を用いて色の操作を行うことになります。

maruyama@wakhok.ac.jp
1995年02月01日 (水) 00時21分18秒 JST