IlvColor:色クラス
色についての詳細を、以下のトピックに分けて説明します。
色モデル
Rogue Waveィ Views における色の記述は、
IlvColor のインスタンスに格納されています。
RGB
Rogue Wave Views では、色はよく知られた RGB (赤/緑/青) システムを使用して処理されます。このシステムでは、色はその 3 つコンポーネント値によって完全に定義されます。red、green、および blue です。これらの値は、符号の付いていない 16 ビットの数字として格納されます。たとえば、黒 はその 3 つのコンポーネントを 0 に設定し、白 は、3 つのコンポーネントが 65535 に設定されています。
HSV
別の方法として、以下に示すように HSV (色相/彩度/輝度値) モデルを使用することもできます。
図 3.1 色相、彩度、輝度値 (HSV) モデル
前記の図は、3 つのパラメーターに基づく数学モデルを示しています。これらは、H (色相)、S (彩度) およびV (輝度値) です。次に示すのは、これらの可能な値です。
H 色相パラメーターである
H は、0 ~ 360
° の角度です。
S および
V パラメーターの固定値 (それぞれの上限値までの適切な値) について、角度
H を1 周させることにより色の全スペクトルを表示できます。
S 任意の
H パラメーターについて、
S 値を変えることで色の彩度が変化します。円錐の縦軸で、
S がゼロになったところでは、彩度はありません。これは
灰色 の影があることを意味します。円錐の外面で、
S の値が
1.
0 になっているところでは、彩度が最高、つまり色がもっとも鮮やかになっています。
V 3 つ目のパラメーター
V は、角度
H を 1 周させることにより、色に当たる光の量、つまりスペクトルの
明るさ を決定します。円錐の底で、
V がゼロになっているところは、
黒色を表します。上に移動するに従って、色相の円のスペクトルはどんどん明るくなります。縦軸の一番上で、
V の値が
1.
0 になっているところは白色を表します。
IlvColor クラスの使用
Rogue Wave Views では、
IlvColor クラスを使うと RGA と HSV の両方の色モデルを操作できます。
IlvDisplay オブジェクトに、色の取得を要求して色を取得します。
色は、一般的に、
IlvDisplay オブジェクトによって内部で維持されている色のテーブルに格納されます。これはルックアップ・テーブルと呼ばれることがあります。メンバー関数
getIndex によって、色オブジェクトのインデックス (符号の付いていない長整数型) を取得できます。ピクセル値を色オブジェクトにマッピングする場合は、この数を色ビットマップに関する処理のリマップに使用できます。
色の名前
色には常に名前があります。Rogue Wave Views には、定義済みの色の名前一式があります。色の名前は、X Window の色命名方法に従っています。このセットの名前はそれぞれ、特定の RGB トリプレットに関連付けられています。色が定義済みの名前ではなく RGB 値により特定される場合は、この色のデフォルト名は次のように付けられます。?#RRRRGGGGBBBB?。ここで赤、緑、青の値はそれぞれ 16 進法の 4 桁で表されます。
ただし、名前を変えることができるのは可変色のみです。固定色の名前は変更できません。これは定義済みの色の名前か、色を定義する RGB 値から計算されるかのいずれかです。
新しい色
IlvColor にはパブリック・コンストラクターがないので、ディスプレイから色を取得する必要があります。いくつかの
IlvDisplay::getColor メンバー関数を使うと新しい色を取得し、RGB 値、HSV 値、または名前を指定できます。また色が可変色か否かを示すこともできます。問題が発生して希望する色を作成できない場合、メンバー関数は
0 を返します。
IlvDisplay クラスは、未指定の色のコールバック値として使用されることが多い内部リソースを返す 2 つのメンバー関数を提供します。これらの関数は、以下の通りです。
IlvColor* defaultForeground();
IlvColor* defaultBackground();
通常、これらの前景色および背景色はそれぞれ黒、灰色です。これは、ディスプレイ・システムのリソース・メカニズムによって、どのような色でも簡単に設定することができます。
可変色
Rogue Wave Views の色は、固定(作成後に変更できない) または可変のいずれかです。後者の場合、画面にこの色で描画されている場合でも、変更メンバー関数を使用して色を動的に変更できます。
可変色は、
IlvResource::setName メソッドを使用して名前を変更できます。固定色とは違い、可変色は透過的に共有されません。
IlvDisplay::getColorメソッド は、パラメーター
mutable が
IlTrue の場合、常に新しいオブジェクトを作成します。内部リソース管理の点では、可変色は負担が大きくなります。
色モデルの変換
RGB システムから HSV に、またはその逆に色の値を変換するには、次の 2 つのグローバル関数が使用できます。
IlvRGBtoHSV IlvHSVtoRGB 影色の計算
IlvComputeReliefColors グローバル関数を使用して、影付き効果を作る色を計算します。
Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.