GraphicLibrary  0.5.0
tadah_fussy::gl::RGB クラス

RGB成分用パレット構造体 [詳解]

公開型

using color_type = uint32_t
 色成分の型(AARRGGBB)
 
using primary_type = uint8_t
 RGB各成分の型
 
using size_type = size_t
 添字の型
 

公開メンバ関数

 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_typeoperator[] (size_type index)
 添字を利用して各成分への参照を返す [詳解]
 
primary_type operator[] (size_type index) const
 添字を利用して各成分の値を返す [詳解]
 
RGBoverlay (RGB fg)
 色を重ね合わせる ( 乗算合成 ) [詳解]
 
RGBin (RGB fg)
 アルファチャンネルの計算 ( in ) [詳解]
 
RGBout (RGB fg)
 アルファチャンネルの計算 ( out ) [詳解]
 
RGBadd (RGB fg)
 加算合成 ( add ) [詳解]
 
RGBalphaXor (RGB fg)
 排他的論理和 ( xor ) [詳解]
 
RGB operator~ () const
 ビット反転演算子(~)への多重定義 [詳解]
 
bool operator== (RGB p) const
 一致判定(==)への多重定義 [詳解]
 
bool operator!= (RGB p) const
 不一致判定(!=)への多重定義 [詳解]
 
RGBoperator+= (RGB rgb)
 RGB 成分を加算する [詳解]
 
RGBoperator+= (primary_type value)
 RGB に同じ成分を加算する [詳解]
 
RGBoperator-= (RGB rgb)
 RGB 成分を減算する [詳解]
 
RGBoperator-= (primary_type value)
 RGB から同じ成分を減算する [詳解]
 
RGBoperator&= (RGB mask)
 RGB成分との論理積(AND)をとる [詳解]
 
RGBoperator&= (primary_type mask)
 同じ成分との論理積(AND)をとる [詳解]
 
RGBoperator|= (RGB mask)
 RGB成分との論理和(OR)をとる [詳解]
 
RGBoperator|= (primary_type mask)
 同じ成分との論理和(OR)をとる [詳解]
 
RGBoperator^= (RGB mask)
 RGB成分との排他的論理和(XOR)をとる [詳解]
 
RGBoperator^= (primary_type mask)
 同じ成分との排他的論理和(XOR)をとる [詳解]
 
RGBoperator>>= (uint32_t shift)
 RGB各成分のビットを右シフトする [詳解]
 
RGBoperator<<= (uint32_t 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>> (uint32_t shift) const
 RGB各成分に対して右ビットシフトした結果を返す [詳解]
 
RGB operator<< (uint32_t 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 = std::numeric_limits< primary_type >::max()
 RGB各成分の最大値
 
static const color_type MASK = std::numeric_limits< primary_type >::max()
 RGB各成分のマスク
 
static const primary_type BIT = std::numeric_limits< primary_type >::digits
 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成分用パレット構造体

構築子と解体子

◆ RGB() [1/2]

tadah_fussy::gl::RGB::RGB ( primary_type  red,
primary_type  green,
primary_type  blue,
primary_type  alpha = MAX 
)
inline

RGB各成分からの構築

覚え書き
アルファチャンネルを指定しない場合、RGB::a は RGB::MAX で初期化される
引数
red赤成分
green緑成分
blue青成分
alphaアルファチャンネル

◆ RGB() [2/2]

tadah_fussy::gl::RGB::RGB ( color_type  c = 0)
inlineexplicit

色コードからの構築

引数
c対象の色コード(AARRGGBB)

関数詳解

◆ add()

RGB& tadah_fussy::gl::RGB::add ( RGB  fg)
inline

加算合成 ( add )

成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を加算合成した時の計算式は以下の通り。

alpha = fg.alpha + bg.alpha

rgb = ( fg.rgb・fg.alpha + bg.rgb・bg.alpha ) / alpha

参考リンク : https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

引数
fg上側の(重ねあわせる)色
戻り値
自分自身への参照

◆ alphaXor()

RGB& tadah_fussy::gl::RGB::alphaXor ( RGB  fg)
inline

排他的論理和 ( 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

ビット演算子の排他的論理和とは異なることに注意。

参考リンク : https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

引数
fg上側の(重ねあわせる)色
戻り値
自分自身への参照

◆ Check_RGBPrimary()

template<class T >
static RGB::primary_type tadah_fussy::gl::RGB::Check_RGBPrimary ( p)
inlinestatic

RGB::primary_typeの値の範囲内にあるかを判定し、そうでなければ範囲内に収める

引数
p対象の値
戻り値
修正後の値

◆ getAlpha()

static primary_type tadah_fussy::gl::RGB::getAlpha ( color_type  color)
inlinestatic

色コードからアルファチャンネルを抽出する

アルファチャンネルは、color_type の下位より 24 から 31 ビットまでとする。

... OOOOOOOO xxxxxxxx xxxxxxxx xxxxxxxx

引数
color対象の色コード(AARRGGBB)
戻り値
抽出したアルファチャンネル

◆ getBlue()

static primary_type tadah_fussy::gl::RGB::getBlue ( color_type  color)
inlinestatic

色コードから青成分を抽出する

青成分は、color_type の下位より 0 から 7 ビットまでとする。

... xxxxxxxx xxxxxxxx xxxxxxxx OOOOOOOO

引数
color対象の色コード(AARRGGBB)
戻り値
抽出した青成分

◆ getGreen()

static primary_type tadah_fussy::gl::RGB::getGreen ( color_type  color)
inlinestatic

色コードから緑成分を抽出する

緑成分は、color_type の下位より 8 から 15 ビットまでとする。

... xxxxxxxx xxxxxxxx OOOOOOOO xxxxxxxx

引数
color対象の色コード(AARRGGBB)
戻り値
抽出した緑成分

◆ getRed()

static primary_type tadah_fussy::gl::RGB::getRed ( color_type  color)
inlinestatic

色コードから赤成分を抽出する

赤成分は、color_type の下位より 16 から 23 ビットまでとする。

... xxxxxxxx OOOOOOOO xxxxxxxx xxxxxxxx

引数
color対象の色コード(AARRGGBB)
戻り値
抽出した赤成分

◆ in()

RGB& tadah_fussy::gl::RGB::in ( RGB  fg)
inline

アルファチャンネルの計算 ( in )

成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を in 演算した時の計算式は以下の通り。

alpha = fg.alpha・bg.alpha

rgb = fg.rgb

参考リンク : https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

引数
fg上側の(重ねあわせる)色
戻り値
自分自身への参照

◆ operator!=()

bool tadah_fussy::gl::RGB::operator!= ( RGB  p) const
inline

不一致判定(!=)への多重定義

覚え書き
アルファチャンネルは比較されない。
引数
p判定対象の RGB 成分
戻り値
判定結果 ( 不一致なら true )

◆ operator&() [1/2]

RGB tadah_fussy::gl::RGB::operator& ( primary_type  src) const
inline

RGB各成分に対して同じ成分で論理積(AND)を計算して返す

覚え書き
アルファチャンネルは影響を受けない。
引数
src演算対象
戻り値
計算結果

◆ operator&() [2/2]

RGB tadah_fussy::gl::RGB::operator& ( RGB  src) const
inline

RGB各成分どうしの論理積(AND)を計算して返す

覚え書き
アルファチャンネルは左辺の値がそのまま反映される。
引数
src演算対象
戻り値
計算結果

◆ operator&=() [1/2]

RGB& tadah_fussy::gl::RGB::operator&= ( primary_type  mask)
inline

同じ成分との論理積(AND)をとる

覚え書き
アルファチャンネルは演算対象とならない。
引数
mask論理積(AMD)用マスク
戻り値
自分自身への参照

◆ operator&=() [2/2]

RGB& tadah_fussy::gl::RGB::operator&= ( RGB  mask)
inline

RGB成分との論理積(AND)をとる

覚え書き
アルファチャンネルは演算対象とならない。
引数
mask論理積(AMD)用マスク
戻り値
自分自身への参照

◆ operator+() [1/2]

RGB tadah_fussy::gl::RGB::operator+ ( primary_type  src) const
inline

RGB各成分に同じ成分を加算した結果を返す

覚え書き
各成分に対し、加算結果がオーバーフローした場合は最大値に丸められる
アルファチャンネルは影響を受けない。
引数
src演算対象
戻り値
計算結果

◆ operator+() [2/2]

RGB tadah_fussy::gl::RGB::operator+ ( RGB  src) const
inline

RGB成分どうしの和を返す

覚え書き
各成分に対し、加算結果がオーバーフローした場合は最大値に丸められる
アルファチャンネルは左辺の値がそのまま反映される。
引数
src加算する値
戻り値
計算結果

◆ operator+=() [1/2]

RGB& tadah_fussy::gl::RGB::operator+= ( primary_type  value)
inline

RGB に同じ成分を加算する

覚え書き
各成分に対し、加算結果がオーバーフローした場合は最大値に丸められる。
アルファチャンネルは加算対象とならない。
引数
value加算する値
戻り値
自分自身への参照

◆ operator+=() [2/2]

RGB& tadah_fussy::gl::RGB::operator+= ( RGB  rgb)
inline

RGB 成分を加算する

覚え書き
各成分に対し、加算結果がオーバーフローした場合は最大値に丸められる。
アルファチャンネルは加算対象とならない。
引数
rgb加算する値
戻り値
自分自身への参照

◆ operator-() [1/2]

RGB tadah_fussy::gl::RGB::operator- ( primary_type  src) const
inline

RGB各成分に同じ成分を減算した結果を返す

覚え書き
各成分に対し、減算結果が負数になった場合はゼロに丸められる
アルファチャンネルは影響を受けない。
引数
src演算対象
戻り値
計算結果

◆ operator-() [2/2]

RGB tadah_fussy::gl::RGB::operator- ( RGB  src) const
inline

RGB成分どうしの差を返す

覚え書き
各成分に対し、減算結果が負数になった場合はゼロに丸められる
アルファチャンネルは左辺の値がそのまま反映される。
引数
src演算対象
戻り値
計算結果

◆ operator-=() [1/2]

RGB& tadah_fussy::gl::RGB::operator-= ( primary_type  value)
inline

RGB から同じ成分を減算する

覚え書き
各成分に対し、減算結果が負数になった場合はゼロに丸められる。
アルファチャンネルは減算対象とならない。
引数
value減算する値
戻り値
自分自身への参照

◆ operator-=() [2/2]

RGB& tadah_fussy::gl::RGB::operator-= ( RGB  rgb)
inline

RGB 成分を減算する

覚え書き
各成分に対し、減算結果が負数になった場合はゼロに丸められる。
アルファチャンネルは減算対象とならない。
引数
rgb減算する値
戻り値
自分自身への参照

◆ operator<<()

RGB tadah_fussy::gl::RGB::operator<< ( uint32_t  shift) const
inline

RGB各成分に対して左ビットシフトした結果を返す

覚え書き
アルファチャンネルは影響を受けない。
引数
shiftシフト回数
戻り値
計算結果

◆ operator<<=()

RGB& tadah_fussy::gl::RGB::operator<<= ( uint32_t  shift)
inline

RGB各成分のビットを左シフトする

覚え書き
アルファチャンネルは演算対象とならない。
引数
shiftシフト回数
戻り値
自分自身への参照

◆ operator==()

bool tadah_fussy::gl::RGB::operator== ( RGB  p) const
inline

一致判定(==)への多重定義

覚え書き
アルファチャンネルは比較されない。
引数
p判定対象の RGB 成分
戻り値
判定結果 ( 一致なら true )

◆ operator>>()

RGB tadah_fussy::gl::RGB::operator>> ( uint32_t  shift) const
inline

RGB各成分に対して右ビットシフトした結果を返す

覚え書き
アルファチャンネルは影響を受けない。
引数
shiftシフト回数
戻り値
計算結果

◆ operator>>=()

RGB& tadah_fussy::gl::RGB::operator>>= ( uint32_t  shift)
inline

RGB各成分のビットを右シフトする

覚え書き
アルファチャンネルは演算対象とならない。
引数
shiftシフト回数
戻り値
自分自身への参照

◆ operator[]() [1/2]

primary_type& tadah_fussy::gl::RGB::operator[] ( size_type  index)
inline

添字を利用して各成分への参照を返す

覚え書き
未定義の size_type が指定された場合 std::out_of_range 例外を投げる。
引数
index対象の成分への添字
戻り値
対象の成分への参照

◆ operator[]() [2/2]

primary_type tadah_fussy::gl::RGB::operator[] ( size_type  index) const
inline

添字を利用して各成分の値を返す

覚え書き
未定義の size_type が指定された場合 std::out_of_range 例外を投げる。
引数
index対象の成分への添字
戻り値
対象の成分

◆ operator^() [1/2]

RGB tadah_fussy::gl::RGB::operator^ ( primary_type  src) const
inline

RGB各成分に対して同じ成分で排他的論理和(XOR)を計算して返す

覚え書き
アルファチャンネルは影響を受けない。
引数
src演算対象
戻り値
計算結果

◆ operator^() [2/2]

RGB tadah_fussy::gl::RGB::operator^ ( RGB  src) const
inline

RGB各成分どうしの排他的論理和(XOR)を計算して返す

覚え書き
アルファチャンネルは左辺の値がそのまま反映される。
引数
src演算対象
戻り値
計算結果

◆ operator^=() [1/2]

RGB& tadah_fussy::gl::RGB::operator^= ( primary_type  mask)
inline

同じ成分との排他的論理和(XOR)をとる

覚え書き
アルファチャンネルは演算対象とならない。
引数
mask排他的論理和(XOR)用マスク
戻り値
自分自身への参照

◆ operator^=() [2/2]

RGB& tadah_fussy::gl::RGB::operator^= ( RGB  mask)
inline

RGB成分との排他的論理和(XOR)をとる

覚え書き
アルファチャンネルは演算対象とならない。
引数
mask排他的論理和(XOR)用マスク
戻り値
自分自身への参照

◆ operator|() [1/2]

RGB tadah_fussy::gl::RGB::operator| ( primary_type  src) const
inline

RGB各成分に対して同じ成分で論理和(OR)を計算して返す

覚え書き
アルファチャンネルは影響を受けない。
引数
src演算対象
戻り値
計算結果

◆ operator|() [2/2]

RGB tadah_fussy::gl::RGB::operator| ( RGB  src) const
inline

RGB各成分どうしの論理和(OR)を計算して返す

覚え書き
アルファチャンネルは左辺の値がそのまま反映される。
引数
src演算対象
戻り値
計算結果

◆ operator|=() [1/2]

RGB& tadah_fussy::gl::RGB::operator|= ( primary_type  mask)
inline

同じ成分との論理和(OR)をとる

覚え書き
アルファチャンネルは演算対象とならない。
引数
mask論理和(OR)用マスク
戻り値
自分自身への参照

◆ operator|=() [2/2]

RGB& tadah_fussy::gl::RGB::operator|= ( RGB  mask)
inline

RGB成分との論理和(OR)をとる

覚え書き
アルファチャンネルは演算対象とならない。
引数
mask論理和(OR)用マスク
戻り値
自分自身への参照

◆ operator~()

RGB tadah_fussy::gl::RGB::operator~ ( ) const
inline

ビット反転演算子(~)への多重定義

覚え書き
アルファチャンネルは影響を受けない。
戻り値
演算結果

◆ out()

RGB& tadah_fussy::gl::RGB::out ( RGB  fg)
inline

アルファチャンネルの計算 ( out )

成分を ( 0, 1 ) の範囲に正規化した時、bg に fg を out 演算した時の計算式は以下の通り。

alpha = fg.alpha ( 1 - bg.alpha )

rgb = fg.rgb

参考リンク : https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB

引数
fg上側の(重ねあわせる)色
戻り値
自分自身への参照

◆ overlay()

RGB& tadah_fussy::gl::RGB::overlay ( RGB  fg)
inline

色を重ね合わせる ( 乗算合成 )

アルファチャンネルを考慮して色の重ね合わせを行う。

成分を ( 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

参考リンク : https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%96%E3%83%AC%E3%83%B3%E3%83%89

引数
fg上側の(重ねあわせる)色
戻り値
自分自身への参照

◆ receiveFromParam()

void tadah_fussy::gl::RGB::receiveFromParam ( primary_type  red,
primary_type  green,
primary_type  blue,
primary_type  alpha = RGB::MAX 
)
inline

引数から渡された RGBA 各成分をセットする

引数
redセットする赤成分
greenセットする緑成分
blueセットする青成分
alphaセットするアルファチャンネル

◆ sendToParam() [1/2]

void tadah_fussy::gl::RGB::sendToParam ( primary_type red,
primary_type green,
primary_type blue 
) const
inline

RGB各成分を引数側に渡す

引数
red取得した赤成分
green取得した緑成分
blue取得した青成分

◆ sendToParam() [2/2]

void tadah_fussy::gl::RGB::sendToParam ( primary_type red,
primary_type green,
primary_type blue,
primary_type alpha 
) const
inline

RGB各成分とアルファチャンネルを引数側に渡す

引数
red赤成分を渡す変数へのポインタ
green緑成分を渡す変数へのポインタ
blue青成分を渡す変数へのポインタ
alphaアルファチャンネルを渡す変数へのポインタ

このクラス詳解は次のファイルから抽出されました: