GraphicLibrary
0.5.0
|
GdkPixbuf からなるレイヤ集合 [詳解]
公開型 | |
using | size_type = std::vector< Layer >::size_type |
レイヤの番号の型 | |
公開メンバ関数 | |
GDK_Pixbuf () | |
空のレイヤを構築 [詳解] | |
GDK_Pixbuf (Coord< int > size, RGB rgb, bool hasAlpha) | |
キャンバスのサイズ・背景色・アルファ・チャンネルの有無を指定して構築 [詳解] | |
GDK_Pixbuf (const std::string &fileName) | |
ファイル名を指定して構築 [詳解] | |
~GDK_Pixbuf () | |
デストラクタ | |
void | addLayer () |
空のレイヤを追加する [詳解] | |
void | addLayer (Coord< int > offset, Coord< int > size, RGB rgb, bool hasAlpha, RGB::primary_type alpha) |
指定したサイズのレイヤを追加する [詳解] | |
void | addFromFile (const std::string &fileName) |
指定したファイルの画像を新たなレイヤとして追加する [詳解] | |
void | eraseLayer () |
現在のレイヤを消去する [詳解] | |
void | clearLayer () |
レイヤを全て消去する | |
void | changeLayer (size_type upperLayer) |
現在のレイヤの位置を入れ替える [詳解] | |
void | copyLayer () |
現在のレイヤをコピーする [詳解] | |
void | superimpose () |
現在のレイヤを下側の画像に重ね合わせる [詳解] | |
size_type | getCurrentLayer () const |
現在のレイヤ番号を返す [詳解] | |
void | setCurrentLayer (size_type index) |
現在のレイヤ番号を変更する [詳解] | |
size_type | layerCount () const |
レイヤ数を返す [詳解] | |
virtual Coord< int > | size () const |
現レイヤの画像サイズを返す [詳解] | |
virtual void | resize (Coord< int > sz) |
現レイヤの大きさを変更する [詳解] | |
RGB | getBgColor () const |
現レイヤの背景色を返す [詳解] | |
void | setBgColor (RGB rgb) |
現レイヤの背景色をセットする [詳解] | |
void | fill () |
現レイヤを背景色で塗りつぶす | |
Coord< int > | getOffset () const |
現レイヤのオフセット値を返す [詳解] | |
void | setOffset (Coord< int > offset) |
現レイヤのオフセット値をセットする [詳解] | |
Coord< double > | getCoord (Coord< double > c) const |
現レイヤのキャンバスに対する相対位置を求める [詳解] | |
RGB::primary_type | getAlpha () const |
現レイヤのアルファ・チャンネルを返す [詳解] | |
void | setAlpha (RGB::primary_type alpha) |
現レイヤのアルファ・チャンネルをセットする [詳解] | |
bool | hasAlpha () const |
現レイヤがアルファチャンネルを持つ場合は true を返す [詳解] | |
void | addAlpha (bool substitudeRGB, RGB rgb) |
現レイヤにアルファ・チャンネルを追加する [詳解] | |
void | removeAlpha (RGB bgColor) |
現レイヤからアルファ・チャンネルを削除する [詳解] | |
bool | isVisible () const |
現在のレイヤが可視状態なら true を返す [詳解] | |
void | visible () |
現在のレイヤを可視状態にする | |
void | invisible () |
現在のレイヤを不可視状態にする | |
GdkPixbuf * | overlay () |
全レイヤを重ねあわせた画像を返す [詳解] | |
bool | empty () const |
レイヤが一つも存在しない場合は true を返す [詳解] | |
virtual bool | point (Coord< int > c, RGB *palet) const |
指定した座標の RGB 成分を取得する [詳解] | |
virtual bool | pset (Coord< int > c, RGB palet) |
指定した RGB 成分で点描画する [詳解] | |
RGB | getCanvasBgColor () const |
キャンバスの背景色を返す [詳解] | |
void | setCanvasBgColor (RGB rgb) |
キャンバスの背景色をセットする [詳解] | |
Coord< int > | canvasSize () const |
キャンバスのサイズを返す [詳解] | |
void | canvasResize (Coord< int > size) |
キャンバスのサイズを変更する [詳解] | |
bool | canvasHasAlpha () const |
キャンバスがアルファチャンネルを持つ場合は true を返す [詳解] | |
void | setCanvasAlpha (bool flag) |
キャンバスのアルファ・チャンネルをセット・リセットする [詳解] | |
void | loadFromFile (const std::string &fileName) |
画像ファイルを読み込む [詳解] | |
![]() | |
virtual | ~DrawingArea_IF () |
仮想デストラクタ (何もしない) | |
GdkPixbuf からなるレイヤ集合
下地となるキャンバスの情報 ( サイズ・背景色・アルファ・チャンネルの有無 ) と、その上に重ね合わされる複数の レイヤ ( GdkPixbufオブジェクト・背景色・キャンバスとのオフセット・全体にかかるアルファチャンネル・可視/ 不可視のフラグ ) から構成される。空の状態、キャンバス情報の指定、画像ファイルの指定により構築が可能。
重ねあわせた結果は GDK_Pixbuf::overlay によって GdkPixbuf オブジェクトへのポインタとして得ることができる。 重ね合わせはキャンバスのサイズの範囲内のみで行われることに注意。また、生成された GdkPixbuf オブジェクトは 内部でキャッシュされるため、外部から g_object_unref により参照を外さないこと。
tadah_fussy::gl::canvas::GDK_Pixbuf::GDK_Pixbuf | ( | ) |
空のレイヤを構築
レイヤは全くない状態で初期化する。 キャンバスのサイズはゼロ、背景色はゼロ ( 黒色、アルファ・チャンネル = 0 ) で、アルファ・チャンネルは持つ状態で初期化する。
tadah_fussy::gl::canvas::GDK_Pixbuf::GDK_Pixbuf | ( | Coord< int > | size, |
RGB | rgb, | ||
bool | hasAlpha | ||
) |
キャンバスのサイズ・背景色・アルファ・チャンネルの有無を指定して構築
レイヤは全くない状態で初期化する。 画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。
size | キャンバスのサイズ |
rgb | キャンバスの背景色 |
hasAlpha | キャンバスがアルファ・チャンネルを持つなら true |
|
explicit |
ファイル名を指定して構築
画像ファイルを読み込んだレイヤが一つ生成される。 キャンバスのサイズ、背景色、アルファ・チャンネルの有無は生成したレイヤと等しくなる。
ファイルの読み込みに失敗した場合はレイヤは生成されず、例外 std::runtime_error を投げる。
fileName | 画像ファイル名 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::addAlpha | ( | bool | substitudeRGB, |
RGB | rgb | ||
) |
void tadah_fussy::gl::canvas::GDK_Pixbuf::addFromFile | ( | const std::string & | fileName | ) |
指定したファイルの画像を新たなレイヤとして追加する
ファイルの読み込みに失敗した場合はレイヤは生成されず、例外 std::runtime_error を投げる。
fileName | 追加する画像ファイル名 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::addLayer | ( | ) |
空のレイヤを追加する
背景色は透明(黒色)、キャンバスとのオフセットはゼロ、全体にかかるアルファチャンネルは RGB::MAX、 可視/不可視のフラグは true で初期化される。
void tadah_fussy::gl::canvas::GDK_Pixbuf::addLayer | ( | Coord< int > | offset, |
Coord< int > | size, | ||
RGB | rgb, | ||
bool | hasAlpha, | ||
RGB::primary_type | alpha | ||
) |
指定したサイズのレイヤを追加する
画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。 メモリが確保できなかった場合、例外 std::bad_alloc を投げる。
offset | レイヤの描画開始位置(左上隅) |
size | 追加するレイヤのサイズ |
rgb | 初期化時に塗りつぶす RGB 成分 |
hasAlpha | アルファ・チャンネルを持つ場合は true |
alpha | 合成時のアルファ・チャンネル |
bool tadah_fussy::gl::canvas::GDK_Pixbuf::canvasHasAlpha | ( | ) | const |
キャンバスがアルファチャンネルを持つ場合は true を返す
void tadah_fussy::gl::canvas::GDK_Pixbuf::canvasResize | ( | Coord< int > | size | ) |
キャンバスのサイズを変更する
画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。
size | 変更後のキャンバス・サイズ |
Coord< int > tadah_fussy::gl::canvas::GDK_Pixbuf::canvasSize | ( | ) | const |
キャンバスのサイズを返す
void tadah_fussy::gl::canvas::GDK_Pixbuf::changeLayer | ( | size_type | upperLayer | ) |
現在のレイヤの位置を入れ替える
入れ替え位置は指定した番号のレイヤの前とする ( 例えば 0 を指定した場合は 0 番目のレイヤの前に移動して 0 番目のレイヤになる )。 末尾に移動させたい場合は末尾の番号 + 1 を指定する。 指定した添字が範囲外だった場合は例外 std::out_of_range を投げる
upperLayer | 入れ替え位置の上側のレイヤ番号 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::copyLayer | ( | ) |
現在のレイヤをコピーする
コピーしたレイヤは末尾に追加される。 メモリが確保できなかった場合、例外 std::bad_alloc を投げる。
|
inline |
レイヤが一つも存在しない場合は true を返す
void tadah_fussy::gl::canvas::GDK_Pixbuf::eraseLayer | ( | ) |
現在のレイヤを消去する
現在のレイヤ番号は一つ減る(消去したレイヤの下側のレイヤが対象になる)。 但し、現在のレイヤが 0 番だった場合は変化しない。
RGB::primary_type tadah_fussy::gl::canvas::GDK_Pixbuf::getAlpha | ( | ) | const |
現レイヤのアルファ・チャンネルを返す
全画素に共通に掛かるアルファ・チャンネルの値を返す。
RGB tadah_fussy::gl::canvas::GDK_Pixbuf::getBgColor | ( | ) | const |
現レイヤの背景色を返す
レイヤが存在しない場合は RGB( 0, 0, 0, 0 ) を返す。
RGB tadah_fussy::gl::canvas::GDK_Pixbuf::getCanvasBgColor | ( | ) | const |
キャンバスの背景色を返す
Coord< double > tadah_fussy::gl::canvas::GDK_Pixbuf::getCoord | ( | Coord< double > | c | ) | const |
現レイヤのキャンバスに対する相対位置を求める
例えばオフセット値が ( -10, 10 ) なら、c = ( 5, 5 ) のとき ( 15, -5 ) が返される
c | キャンバス上の位置 |
|
inline |
現在のレイヤ番号を返す
レイヤが存在しない場合はゼロを返す
Coord< int > tadah_fussy::gl::canvas::GDK_Pixbuf::getOffset | ( | ) | const |
現レイヤのオフセット値を返す
レイヤが存在しない場合は ( 0, 0 ) を返す。
bool tadah_fussy::gl::canvas::GDK_Pixbuf::hasAlpha | ( | ) | const |
現レイヤがアルファチャンネルを持つ場合は true を返す
bool tadah_fussy::gl::canvas::GDK_Pixbuf::isVisible | ( | ) | const |
現在のレイヤが可視状態なら true を返す
|
inline |
レイヤ数を返す
void tadah_fussy::gl::canvas::GDK_Pixbuf::loadFromFile | ( | const std::string & | fileName | ) |
画像ファイルを読み込む
ファイルの読み込みに失敗した場合はレイヤは生成されず、例外 std::runtime_error を投げる。
fileName | 読み込む画像ファイル |
GdkPixbuf* tadah_fussy::gl::canvas::GDK_Pixbuf::overlay | ( | ) |
全レイヤを重ねあわせた画像を返す
メモリの確保ができなかった場合、std::bad_alloc 例外を投げる。 キャンバスのサイズがゼロなら NULL が返される。
|
virtual |
指定した座標の RGB 成分を取得する
取得対象は現レイヤとなる。また、指定した座標値は、現レイヤ上の座標を意味することに注意。 キャンバス上の座標から現レイヤ上の座標に変換する場合は GDK_Pixbuf::getCoord を使う。
|
virtual |
指定した RGB 成分で点描画する
描画対象は現レイヤとなる。また、指定した座標値は、現レイヤ上の座標を意味することに注意。 キャンバス上の座標から現レイヤ上の座標に変換する場合は GDK_Pixbuf::getCoord を使う。
void tadah_fussy::gl::canvas::GDK_Pixbuf::removeAlpha | ( | RGB | bgColor | ) |
現レイヤからアルファ・チャンネルを削除する
削除前に、各ピクセルのアルファ・チャンネルから色コードを計算 ( RGB::overlay を利用 ) して引数で指定した bgColor と重ね合わせる。
bgColor | 重ね合わせ時の背景色 |
|
virtual |
現レイヤの大きさを変更する
元の画像は左上原点を重ねた状態で複製される。
画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。
sz | 変更する画像の大きさ |
void tadah_fussy::gl::canvas::GDK_Pixbuf::setAlpha | ( | RGB::primary_type | alpha | ) |
現レイヤのアルファ・チャンネルをセットする
全画素に共通に掛かるアルファ・チャンネルの値をセットする。
alpha | アルファ・チャンネルの値 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::setBgColor | ( | RGB | rgb | ) |
現レイヤの背景色をセットする
rgb | 新しい背景色 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::setCanvasAlpha | ( | bool | flag | ) |
キャンバスのアルファ・チャンネルをセット・リセットする
flag | セットするなら true、リセットするなら false とする |
void tadah_fussy::gl::canvas::GDK_Pixbuf::setCanvasBgColor | ( | RGB | rgb | ) |
キャンバスの背景色をセットする
rgb | セットする RGB 成分 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::setCurrentLayer | ( | size_type | index | ) |
現在のレイヤ番号を変更する
指定した添字が範囲外だった場合は例外 std::out_of_range を投げる 特に、レイヤが存在しない場合は必ず例外が投げられることに注意。
index | 新しいレイヤ番号 |
void tadah_fussy::gl::canvas::GDK_Pixbuf::setOffset | ( | Coord< int > | offset | ) |
現レイヤのオフセット値をセットする
offset | 新たなオフセット値 |
|
virtual |
現レイヤの画像サイズを返す
レイヤが存在しない場合は ( 0, 0 ) を返す。
void tadah_fussy::gl::canvas::GDK_Pixbuf::superimpose | ( | ) |
現在のレイヤを下側の画像に重ね合わせる
現在のレイヤが 0 番目なら何も処理しない。現在のレイヤが不可視状態でも処理は行う。 重ねあわせた後、現在のレイヤは消去される。消去後のレイヤ番号は重ね合わされた下側に変更される。