GraphicLibrary
0.5.0
|
RGB成分用パレット構造体 [詳解]
公開型 | |
typedef unsigned int | color_type |
色成分の型(AARRGGBB) | |
typedef unsigned char | primary_type |
RGB各成分の型 | |
typedef size_t | size_type |
添字の型 | |
公開メンバ関数 | |
RGB (primary_type red, primary_type green, primary_type blue, primary_type alpha=MAX) | |
RGB各成分からの構築 [詳解] | |
RGB (color_type c=0) | |
色コードからの構築 [詳解] | |
void | sendToParam (primary_type *red, primary_type *green, primary_type *blue, primary_type *alpha) const |
RGB各成分とアルファチャンネルを引数側に渡す [詳解] | |
void | sendToParam (primary_type *red, primary_type *green, primary_type *blue) const |
RGB各成分を引数側に渡す [詳解] | |
void | receiveFromParam (primary_type red, primary_type green, primary_type blue, primary_type alpha=RGB::MAX) |
引数から渡された RGBA 各成分をセットする [詳解] | |
primary_type & | operator[] (size_type index) |
添字を利用して各成分への参照を返す [詳解] | |
primary_type | operator[] (size_type index) const |
添字を利用して各成分の値を返す [詳解] | |
RGB & | overlay (RGB fg) |
色を重ね合わせる ( 乗算合成 ) [詳解] | |
RGB & | in (RGB fg) |
アルファチャンネルの計算 ( in ) [詳解] | |
RGB & | out (RGB fg) |
アルファチャンネルの計算 ( out ) [詳解] | |
RGB & | add (RGB fg) |
加算合成 ( add ) [詳解] | |
RGB & | alphaXor (RGB fg) |
排他的論理和 ( xor ) [詳解] | |
RGB | operator~ () const |
ビット反転演算子(~)への多重定義 [詳解] | |
bool | operator== (RGB p) const |
一致判定(==)への多重定義 [詳解] | |
bool | operator!= (RGB p) const |
不一致判定(!=)への多重定義 [詳解] | |
RGB & | operator+= (RGB rgb) |
RGB 成分を加算する [詳解] | |
RGB & | operator+= (primary_type value) |
RGB に同じ成分を加算する [詳解] | |
RGB & | operator-= (RGB rgb) |
RGB 成分を減算する [詳解] | |
RGB & | operator-= (primary_type value) |
RGB から同じ成分を減算する [詳解] | |
RGB & | operator &= (RGB mask) |
RGB成分との論理積(AND)をとる [詳解] | |
RGB & | operator &= (primary_type mask) |
同じ成分との論理積(AND)をとる [詳解] | |
RGB & | operator|= (RGB mask) |
RGB成分との論理和(OR)をとる [詳解] | |
RGB & | operator|= (primary_type mask) |
同じ成分との論理和(OR)をとる [詳解] | |
RGB & | operator^= (RGB mask) |
RGB成分との排他的論理和(XOR)をとる [詳解] | |
RGB & | operator^= (primary_type mask) |
同じ成分との排他的論理和(XOR)をとる [詳解] | |
RGB & | operator>>= (unsigned int shift) |
RGB各成分のビットを右シフトする [詳解] | |
RGB & | operator<<= (unsigned int shift) |
RGB各成分のビットを左シフトする [詳解] | |
RGB | operator+ (RGB src) const |
RGB成分どうしの和を返す [詳解] | |
RGB | operator+ (primary_type src) const |
RGB各成分に同じ成分を加算した結果を返す [詳解] | |
RGB | operator- (RGB src) const |
RGB成分どうしの差を返す [詳解] | |
RGB | operator- (primary_type src) const |
RGB各成分に同じ成分を減算した結果を返す [詳解] | |
RGB | operator & (RGB src) const |
RGB各成分どうしの論理積(AND)を計算して返す [詳解] | |
RGB | operator & (primary_type src) const |
RGB各成分に対して同じ成分で論理積(AND)を計算して返す [詳解] | |
RGB | operator| (RGB src) const |
RGB各成分どうしの論理和(OR)を計算して返す [詳解] | |
RGB | operator| (primary_type src) const |
RGB各成分に対して同じ成分で論理和(OR)を計算して返す [詳解] | |
RGB | operator^ (RGB src) const |
RGB各成分どうしの排他的論理和(XOR)を計算して返す [詳解] | |
RGB | operator^ (primary_type src) const |
RGB各成分に対して同じ成分で排他的論理和(XOR)を計算して返す [詳解] | |
RGB | operator>> (unsigned int shift) const |
RGB各成分に対して右ビットシフトした結果を返す [詳解] | |
RGB | operator<< (unsigned int shift) const |
RGB各成分に対して左ビットシフトした結果を返す [詳解] | |
静的公開メンバ関数 | |
static primary_type | getRed (color_type color) |
色コードから赤成分を抽出する [詳解] | |
static primary_type | getGreen (color_type color) |
色コードから緑成分を抽出する [詳解] | |
static primary_type | getBlue (color_type color) |
色コードから青成分を抽出する [詳解] | |
static primary_type | getAlpha (color_type color) |
色コードからアルファチャンネルを抽出する [詳解] | |
template<class T > | |
static RGB::primary_type | Check_RGBPrimary (T p) |
RGB::primary_typeの値の範囲内にあるかを判定し、そうでなければ範囲内に収める [詳解] | |
公開変数類 | |
primary_type | r |
赤成分 | |
primary_type | g |
緑成分 | |
primary_type | b |
青成分 | |
primary_type | a |
アルファチャンネル | |
静的公開変数類 | |
static const primary_type | MAX = UCHAR_MAX |
RGB各成分の最大値 | |
static const color_type | MASK = UCHAR_MAX |
RGB各成分のマスク | |
static const primary_type | BIT = CHAR_BIT |
RGB各成分のビット数 | |
static const size_type | RED = 0 |
赤成分の添字 | |
static const size_type | GREEN = 1 |
緑成分の添字 | |
static const size_type | BLUE = 2 |
青成分の添字 | |
static const size_type | ALPHA = 3 |
アルファチャンネル成分の添字 | |
static const size_type | RGB_SIZE = 3 |
(アルファチャンネルを除いた)RGB成分のサイズ | |
static const size_type | RGBA_SIZE = 4 |
RGBA成分のサイズ | |
RGB成分用パレット構造体
|
inline |
RGB各成分からの構築
red | 赤成分 |
green | 緑成分 |
blue | 青成分 |
alpha | アルファチャンネル |
|
inlineexplicit |
色コードからの構築
c | 対象の色コード(AARRGGBB) |
加算合成 ( add )
成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を加算合成した時の計算式は以下の通り。
alpha = fg.alpha + bg.alpha
rgb = ( fg.rgb・fg.alpha + bg.rgb・bg.alpha ) / alpha
fg | 上側の(重ねあわせる)色 |
排他的論理和 ( xor )
成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を xor 演算した時の計算式は以下の通り。
alpha = fg.alpha ( 1 - bg.alpha ) + bg.alpha ( 1 - fg.alpha )
rgb = [ fg.rgb・fg.alpha ( 1 - bg.alpha ) + bg.rgb・bg.alpha ( 1 - fg.alpha ) ] / alpha
ビット演算子の排他的論理和とは異なることに注意。
fg | 上側の(重ねあわせる)色 |
|
inlinestatic |
RGB::primary_typeの値の範囲内にあるかを判定し、そうでなければ範囲内に収める
p | 対象の値 |
|
inlinestatic |
色コードからアルファチャンネルを抽出する
アルファチャンネルは、color_type の下位より 24 から 31 ビットまでとする。
... OOOOOOOO xxxxxxxx xxxxxxxx xxxxxxxx
color | 対象の色コード(AARRGGBB) |
|
inlinestatic |
色コードから青成分を抽出する
青成分は、color_type の下位より 0 から 7 ビットまでとする。
... xxxxxxxx xxxxxxxx xxxxxxxx OOOOOOOO
color | 対象の色コード(AARRGGBB) |
|
inlinestatic |
色コードから緑成分を抽出する
緑成分は、color_type の下位より 8 から 15 ビットまでとする。
... xxxxxxxx xxxxxxxx OOOOOOOO xxxxxxxx
color | 対象の色コード(AARRGGBB) |
|
inlinestatic |
色コードから赤成分を抽出する
赤成分は、color_type の下位より 16 から 23 ビットまでとする。
... xxxxxxxx OOOOOOOO xxxxxxxx xxxxxxxx
color | 対象の色コード(AARRGGBB) |
アルファチャンネルの計算 ( in )
成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を in 演算した時の計算式は以下の通り。
alpha = fg.alpha・bg.alpha
rgb = fg.rgb
fg | 上側の(重ねあわせる)色 |
RGB各成分どうしの論理積(AND)を計算して返す
src | 演算対象 |
|
inline |
RGB各成分に対して同じ成分で論理積(AND)を計算して返す
src | 演算対象 |
RGB成分との論理積(AND)をとる
mask | 論理積(AMD)用マスク |
|
inline |
同じ成分との論理積(AND)をとる
mask | 論理積(AMD)用マスク |
|
inline |
RGB成分どうしの和を返す
src | 加算する値 |
|
inline |
RGB各成分に同じ成分を加算した結果を返す
src | 演算対象 |
|
inline |
RGB に同じ成分を加算する
value | 加算する値 |
RGB成分どうしの差を返す
src | 演算対象 |
|
inline |
RGB各成分に同じ成分を減算した結果を返す
src | 演算対象 |
|
inline |
|
inline |
RGB各成分に対して左ビットシフトした結果を返す
shift | シフト回数 |
|
inline |
RGB各成分のビットを左シフトする
shift | シフト回数 |
|
inline |
|
inline |
RGB各成分に対して右ビットシフトした結果を返す
shift | シフト回数 |
|
inline |
RGB各成分のビットを右シフトする
shift | シフト回数 |
|
inline |
添字を利用して各成分への参照を返す
index | 対象の成分への添字 |
|
inline |
添字を利用して各成分の値を返す
index | 対象の成分への添字 |
RGB各成分どうしの排他的論理和(XOR)を計算して返す
src | 演算対象 |
|
inline |
RGB各成分に対して同じ成分で排他的論理和(XOR)を計算して返す
src | 演算対象 |
RGB成分との排他的論理和(XOR)をとる
mask | 排他的論理和(XOR)用マスク |
|
inline |
同じ成分との排他的論理和(XOR)をとる
mask | 排他的論理和(XOR)用マスク |
RGB各成分どうしの論理和(OR)を計算して返す
src | 演算対象 |
|
inline |
RGB各成分に対して同じ成分で論理和(OR)を計算して返す
src | 演算対象 |
RGB成分との論理和(OR)をとる
mask | 論理和(OR)用マスク |
|
inline |
同じ成分との論理和(OR)をとる
mask | 論理和(OR)用マスク |
|
inline |
ビット反転演算子(~)への多重定義
アルファチャンネルの計算 ( out )
成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を out 演算した時の計算式は以下の通り。
alpha = fg.alpha ( 1 - bg.alpha )
rgb = fg.rgb
fg | 上側の(重ねあわせる)色 |
色を重ね合わせる ( 乗算合成 )
アルファチャンネルを考慮して色の重ね合わせを行う。
成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を重ねあわせた時の計算式は以下の通り。
alpha = fg.alpha + bg.alpha ( 1 - fg.alpha )
rgb = [ fg.rgb・fg.alpha + bg.rgb・bg.alpha ( 1 - fg.alpha ) ] / alpha
fg | 上側の(重ねあわせる)色 |
|
inline |
引数から渡された RGBA 各成分をセットする
red | セットする赤成分 |
green | セットする緑成分 |
blue | セットする青成分 |
alpha | セットするアルファチャンネル |
|
inline |
RGB各成分とアルファチャンネルを引数側に渡す
red | 赤成分を渡す変数へのポインタ |
green | 緑成分を渡す変数へのポインタ |
blue | 青成分を渡す変数へのポインタ |
alpha | アルファチャンネルを渡す変数へのポインタ |
|
inline |
RGB各成分を引数側に渡す
red | 取得した赤成分 |
green | 取得した緑成分 |
blue | 取得した青成分 |