X Window System コアプロトコル
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/19 17:13 UTC 版)
色
プロトコルレベルでは、色は32ビットの符号なし整数で表され、ピクセル値(pixelvalue)と呼ばれる。以下のような要素から色の表現が影響を受ける。
最も容易な場合、カラーマップは各行にRGBの値が格納されたテーブルとなる。ピクセル値 x
は、そのテーブルのx
-行目の色を意味する。クライアントがカラーマップの内容を変更できる場合、この表現方法は PseudoColor
visual class である。StaticColor
visual class では、クライアントがカラーマップの内容を変更できない。
visual class は全部で6種類存在する。それぞれ、RGB値とピクセル値の対応付け方法が異なる。そのうち、2つが上述の PseudoColor
と StaticColor
である。他に GrayScale
と StaticGray
があり、これらは白、黒、灰色のみが表示可能である(前者ではクライアントによるカラーマップ変更が可能)。
残る2種類の visual class はこれらとは異なり、ピクセル値がそのままRGB値に対応している。この場合のピクセル値からRGB値への変換は次の通り。
- ピクセル値をビット列としてみる。
- このビット列を3つの部分に分割する。
- それら3つの部分がそれぞれ整数として認識され、それぞれ異なる3つのテーブルのインデックス値として使われる。
この場合、カラーマップは赤/緑/青の光の三原色それぞれに対応した3つのテーブルで構成される。結果として得られるのは三原色それぞれの強さである。このような表現を使う visual class として DirectColor
と TrueColor
があり、前者はクライアントがカラーマップを変更でき、後者は変更できない。
いずれの機構でも、色をピクセル値で表現するには追加のパラメータが必要である。それらパラメータが visual type として集約されており、visual class の種類、その他のパラメータが格納されている。Xサーバには利用可能な visual type が固定個存在し、それぞれに識別子が割り当てられている。その識別子は32ビットの符号なし整数だが、リソースやアトムの識別子と重なっていても構わない。
クライアントからのコネクションを受理したとき、サーバが送信する受理パケットには、一連のブロックが含まれ、各ブロックは1つの画面(スクリーン)に対応している。各画面に対応したブロックは、さらにその画面でサポートしている色深度ごとのブロックに分かれている。色深度ごとのブロックは可能な visual type のリストを含む。まとめると、各画面には複数の色深度が対応し、その色深度ごとに複数の visual type が対応する。ある visual type は異なる色深度の複数の画面で使える場合もある。
それぞれの visual type について、受理パケットには識別子と実際のパラメータ(visual class その他)が格納されている。後でこの情報を要求できないので、クライアントはこの情報を格納しておく。さらに言えば、クライアントは visual type を変更したり、新たに生成したりできない。新たなウィンドウ生成の要求時、そのウィンドウの色を表現するのに使う色深度と visual type の識別子を指定する。
カラーマップは、その画面を制御するハードウェア(例えばビデオカード)がカラーパレットを使っているかどうかとは無関係に使われる。ハードウェアがパレットを使う場合は、常に制限されたカラーマップがインストールされ、無制限にピクセル値とRGB値の対応付けを増やすことはできない。クライアントはサーバに対してカラーマップのインストールを要求できるが、その場合、別のカラーマップのアンインストールが必要となる。これは、画面を見たとき、アンインストールされたカラーマップを使っていたウィンドウの色が変に表示されるという結果をもたらす(この現象を color flashing あるいは technicolor と呼ぶ)。この問題は標準カラーマップ(standard colormap)を使うことで解決する。標準カラーマップはピクセル値と色の事前に決められた対応付けをする。このため、異なるアプリケーション間で標準カラーマップを共用することが可能となっている。
カラーマップ生成はICCCMで規定されている。標準カラーマップは ICCCM でも規定されているし、Xlib 仕様にも定義されている。
|
- ^ Robert W. Scheifler and James Gettys: X Window System: Core and extension protocols, X version 11, releases 6 and 6.1, Digital Press 1996, ISBN 1-55558-148-X
- ^ RFC 1013
- ^ Grant Edwards. An Introduction to X11 User Interfaces
- ^ Jim Gettys. Open Source Desktop Technology Road Map
- ^ comp.fonts FAQ: X11 Info
- ^ X Logical Font Description Conventions
- ^ Matthieu Herrb and Matthias Hopf. New Evolutions in the X Window System.
- ^ Ghostview: Interface with ghostscript
- ^ David Rosenthal. Inter-Client Communication Conventions Manual. MIT X Consortium Standard, 1989
- ^ a b Freedesktop window manager specification
- X Window System コアプロトコルのページへのリンク