Color
概要
ColorはPsychlopsで色を扱う構造体です。赤、緑、青、透明度をdouble型で保持します。ソフトェア色キャリブレーション時には内部でキャリブレーション済みの値を保持するため、色の指定と取り出しはインターフェース関数によってのみ行います。
関数
指定
- set(double gray_level)
- set(double red, double green, double blue)
- set(double red, double green, double blue, double alpha)
取得
- double getR()
- double getG()
- double getB()
- double getA()
- それぞれ赤、緑、青、透明度の値を返します。
- get(double &red, double &green, double &blue, double &alpha)
- 引数に指定した変数に一括して各色の値を取得します。
キャリブレーション
色調整の技術的詳細はガンマ補正をご覧ください。
- Color::setGammaValue(double r, double g, double b)
- 表示装置の入力-輝度特性の非線形性をガンマ値で指定し、その値に従って非線形性を除去する補償機能を有効にします。ガンマ値は表示装置の特性を示す値そのものを指定します(この値はディザー法目視ガンマ測定で簡易測定できます)。補償関数は指定値の逆数を自動的に計算して使用します。
この関数のガンマ値はCRTを対象としています。液晶やDLPプロジェクタでは有効に機能しません。この場合はsetGammaTableをご使用ください。
- Color::setGammaTable(double r, double g, double b, int row_of_table)
- Color::setGammaValue(std::vector<double> r, std::vector<double> g, std::vector<double> b)
- setGammaTable関数は、理論値→電気的出力値の変換表を直接指定して輝度歪み補償を行う機能です。両関数とも、まずハードウェアによる補償機能(Canvas.setGammaValueまたはCanvas.setGammaTable)を有効にしようと試みます。ハードウェアが対応していない場合、ソフトウェアによるエミュレーションにより動作します。ハードウェアによる補償が確実に動作す条件は、CRTにアナログ端子で接続している場合です。これらの詳しい条件はガンマ補正をご覧ください。
- Color::forceSoftwareCalibration(bool on_off = true)
- ハードウェア色補正を機能させなくします。補正が効いているときにこの関数を実行すると、補正モードが切り替わります。
Color::forceSoftwareCalibration(); // ハードウェア色補正を機能させなくします。 Color::forceSoftwareCalibration(false); // ハードウェア色補正を機能させるようにします。
- Color::CALIBRATION_MODE getCalibrationMode()
- 現在の補正モードを返します。補正モードの詳細は定数CALIBRATION_MODEをご覧ください。
// 補正モードがハードウェアテーブルでなければ強制終了させます if( Color::TABLE!=getCalibrationMode() ) exit(0);
定数・変数
定色
- Color::white
- Color::black
- Color::gray
- Color::red
- Color::green
- Color::blue
- Color::cyan
- Color::magenta
- Color::yellow
CALIBRATION_MODE
- Color::NOTHING=0
- Color::GAMMA_VALUE=1
- Color::TABLE=2
- Color::SOFTWARE_GAMMA_VALUE=101
- Color::SOFTWARE_TABLE=102
- Color::strict_match
- Color::strict_match変数は、色情報の指定を厳密に統制するかどうかのスイッチです。このスイッチがオンになっている場合、以下に列挙するような非厳密な動作を検出すると、プログラムを強制終了します。
- Color.set()で0未満、1より大きい値が指定された場合
- setGammaTable()で0未満、1より大きい値が指定された場合
- ハードウェア輝度調整に失敗した場合
このスイッチは、true、falseの値を代入して変更します。デフォルト値はオフです。
// コード例 Color::strict_match = true; // 厳密マッチオン Color::strict_match = false; // 厳密マッチオフ
キーワード:[Struct] [Graphic]
参照:[Shape] [リファレンスマニュアル]