GraphicLibrary  0.5.0
GDK_Pixbuf クラス

GdkPixbuf からなるレイヤ集合 [詳解]

GDK_Pixbuf の継承関係図
DrawingArea_IF

公開型

typedef std::vector< Layer >::size_type 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 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)
 現レイヤにアルファ・チャンネルを追加する [詳解]
 
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)
 画像ファイルを読み込む [詳解]
 
- 基底クラス DrawingArea_IF に属する継承公開メンバ関数
virtual ~DrawingArea_IF ()
 仮想デストラクタ (何もしない)
 

詳解

GdkPixbuf からなるレイヤ集合

下地となるキャンバスの情報 ( サイズ・背景色・アルファ・チャンネルの有無 ) と、その上に重ね合わされる複数の レイヤ ( GdkPixbufオブジェクト・背景色・キャンバスとのオフセット・全体にかかるアルファチャンネル・可視/ 不可視のフラグ ) から構成される。空の状態、キャンバス情報の指定、画像ファイルの指定により構築が可能。

重ねあわせた結果は GDK_Pixbuf::overlay によって GdkPixbuf オブジェクトへのポインタとして得ることができる。 重ね合わせはキャンバスのサイズの範囲内のみで行われることに注意。また、生成された GdkPixbuf オブジェクトは 内部でキャッシュされるため、外部から g_object_unref により参照を外さないこと。

構築子と解体子

◆ GDK_Pixbuf() [1/3]

GDK_Pixbuf::GDK_Pixbuf ( )

空のレイヤを構築

レイヤは全くない状態で初期化する。 キャンバスのサイズはゼロ、背景色はゼロ ( 黒色、アルファ・チャンネル = 0 ) で、アルファ・チャンネルは持つ状態で初期化する。

覚え書き
レイヤのサイズを変更しない限り、GDK_Pixbuf::addLayer でレイヤを追加しても重ねあわせた結果は得られないことに注意。

◆ GDK_Pixbuf() [2/3]

GDK_Pixbuf::GDK_Pixbuf ( Coord< int >  size,
RGB  rgb,
bool  hasAlpha 
)

キャンバスのサイズ・背景色・アルファ・チャンネルの有無を指定して構築

レイヤは全くない状態で初期化する。 画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。

引数
sizeキャンバスのサイズ
rgbキャンバスの背景色
hasAlphaキャンバスがアルファ・チャンネルを持つなら true

◆ GDK_Pixbuf() [3/3]

GDK_Pixbuf::GDK_Pixbuf ( const std::string &  fileName)
explicit

ファイル名を指定して構築

画像ファイルを読み込んだレイヤが一つ生成される。 キャンバスのサイズ、背景色、アルファ・チャンネルの有無は生成したレイヤと等しくなる。

引数
fileName画像ファイル名

関数詳解

◆ addAlpha()

void GDK_Pixbuf::addAlpha ( bool  substitudeRGB,
RGB  rgb 
)

現レイヤにアルファ・チャンネルを追加する

引数
substitudeRGB指定した RGB 成分 ( rgb ) と同じ色のピクセルを透明色に置き換えるなら true を指定する
rgb透明色に置き換えるときの RGB 成分。substitudeRGB が false なら無視される。
戻り値
なし

◆ addFromFile()

void GDK_Pixbuf::addFromFile ( const std::string &  fileName)

指定したファイルの画像を新たなレイヤとして追加する

ファイルの読み込みに失敗した場合はレイヤは生成されず、例外 std::runtime_error を投げる。

引数
fileName追加する画像ファイル名
戻り値
なし

◆ addLayer() [1/2]

void GDK_Pixbuf::addLayer ( )

空のレイヤを追加する

背景色は透明(黒色)、キャンバスとのオフセットはゼロ、全体にかかるアルファチャンネルは RGB::MAX、 可視/不可視のフラグは true で初期化される。

戻り値
なし

◆ addLayer() [2/2]

void 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合成時のアルファ・チャンネル
戻り値
なし

◆ canvasHasAlpha()

bool GDK_Pixbuf::canvasHasAlpha ( ) const

キャンバスがアルファチャンネルを持つ場合は true を返す

戻り値
キャンバスがアルファチャンネルを持つ場合は true

◆ canvasResize()

void GDK_Pixbuf::canvasResize ( Coord< int >  size)

キャンバスのサイズを変更する

画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。

引数
size変更後のキャンバス・サイズ
戻り値
なし

◆ canvasSize()

Coord< int > GDK_Pixbuf::canvasSize ( ) const

キャンバスのサイズを返す

戻り値
キャンバスのサイズ

◆ changeLayer()

void GDK_Pixbuf::changeLayer ( size_type  upperLayer)

現在のレイヤの位置を入れ替える

入れ替え位置は指定した番号のレイヤの前とする ( 例えば 0 を指定した場合は 0 番目のレイヤの前に移動して 0 番目のレイヤになる )。 末尾に移動させたい場合は末尾の番号 + 1 を指定する。 指定した添字が範囲外だった場合は例外 std::out_of_range を投げる

引数
upperLayer入れ替え位置の上側のレイヤ番号
戻り値
なし

◆ clearLayer()

void GDK_Pixbuf::clearLayer ( )

レイヤを全て消去する

戻り値
なし

◆ empty()

bool GDK_Pixbuf::empty ( ) const
inline

レイヤが一つも存在しない場合は true を返す

戻り値
レイヤが一つも存在しない場合は true

◆ eraseLayer()

void GDK_Pixbuf::eraseLayer ( )

現在のレイヤを消去する

現在のレイヤ番号は一つ減る(消去したレイヤの下側のレイヤが対象になる)。 但し、現在のレイヤが 0 番だった場合は変化しない。

戻り値
なし

◆ fill()

void GDK_Pixbuf::fill ( )

現レイヤを背景色で塗りつぶす

戻り値
なし

◆ getAlpha()

RGB::primary_type GDK_Pixbuf::getAlpha ( ) const

現レイヤのアルファ・チャンネルを返す

全画素に共通に掛かるアルファ・チャンネルの値を返す。

戻り値
現レイヤのアルファ・チャンネル

◆ getBgColor()

RGB GDK_Pixbuf::getBgColor ( ) const

現レイヤの背景色を返す

レイヤが存在しない場合は RGB( 0, 0, 0, 0 ) を返す。

戻り値
現レイヤの背景色

◆ getCanvasBgColor()

RGB GDK_Pixbuf::getCanvasBgColor ( ) const

キャンバスの背景色を返す

戻り値
キャンバスの背景色

◆ getCoord()

Coord< double > GDK_Pixbuf::getCoord ( Coord< double >  c) const

現レイヤのキャンバスに対する相対位置を求める

例えばオフセット値が ( -10, 10 ) なら、c = ( 5, 5 ) のとき ( 15, -5 ) が返される

引数
cキャンバス上の位置
戻り値
現レイヤにおいて c が指し示す位置

◆ getCurrentLayer()

size_type GDK_Pixbuf::getCurrentLayer ( ) const
inline

現在のレイヤ番号を返す

レイヤが存在しない場合はゼロを返す

戻り値
現在のレイヤ番号

◆ getOffset()

Coord< int > GDK_Pixbuf::getOffset ( ) const

現レイヤのオフセット値を返す

レイヤが存在しない場合は ( 0, 0 ) を返す。

戻り値
現レイヤのオフセット値

◆ hasAlpha()

bool GDK_Pixbuf::hasAlpha ( ) const

現レイヤがアルファチャンネルを持つ場合は true を返す

戻り値
現レイヤがアルファチャンネルを持つ場合は true

◆ invisible()

void GDK_Pixbuf::invisible ( )

現在のレイヤを不可視状態にする

戻り値
なし

◆ isVisible()

bool GDK_Pixbuf::isVisible ( ) const

現在のレイヤが可視状態なら true を返す

戻り値
現在のレイヤが可視状態なら true

◆ layerCount()

size_type GDK_Pixbuf::layerCount ( ) const
inline

レイヤ数を返す

戻り値
レイヤ数

◆ loadFromFile()

void GDK_Pixbuf::loadFromFile ( const std::string &  fileName)

画像ファイルを読み込む

引数
fileName読み込む画像ファイル

◆ overlay()

GdkPixbuf* GDK_Pixbuf::overlay ( )

全レイヤを重ねあわせた画像を返す

メモリの確保ができなかった場合、std::bad_alloc 例外を投げる。 キャンバスのサイズがゼロなら NULL が返される。

覚え書き
返り値の GdkPixbuf が指すオブジェクトは内部でバッファに保持しているため、 受け取ったポインタで g_object_unref を行って参照を外さないこと。
戻り値
全レイヤを重ねあわせた画像(GdkPixbufへのポインタ)

◆ point()

virtual bool GDK_Pixbuf::point ( Coord< int >  c,
RGB palet 
) const
virtual

指定した座標の RGB 成分を取得する

取得対象は現レイヤとなる。また、指定した座標値は、現レイヤ上の座標を意味することに注意。 キャンバス上の座標から現レイヤ上の座標に変換する場合は GDK_Pixbuf::getCoord を使う。

引数
cRGB 成分を取得する座標値
palet取得した RGB 成分を代入する変数へのポインタ
戻り値
取得に成功した場合 true を返す

DrawingArea_IFを実装しています。

◆ pset()

virtual bool GDK_Pixbuf::pset ( Coord< int >  c,
RGB  palet 
)
virtual

指定した RGB 成分で点描画する

描画対象は現レイヤとなる。また、指定した座標値は、現レイヤ上の座標を意味することに注意。 キャンバス上の座標から現レイヤ上の座標に変換する場合は GDK_Pixbuf::getCoord を使う。

引数
cRGB 成分で描画する座標値
palet描画する RGB 成分
戻り値
描画に成功した場合 true を返す

DrawingArea_IFを実装しています。

◆ resize()

virtual void GDK_Pixbuf::resize ( Coord< int >  sz)
virtual

現レイヤの大きさを変更する

元の画像は左上原点を重ねた状態で複製される。

画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。

引数
sz変更する画像の大きさ
戻り値
なし

DrawingArea_IFを実装しています。

◆ setAlpha()

void GDK_Pixbuf::setAlpha ( RGB::primary_type  alpha)

現レイヤのアルファ・チャンネルをセットする

全画素に共通に掛かるアルファ・チャンネルの値をセットする。

引数
alphaアルファ・チャンネルの値
戻り値
なし

◆ setBgColor()

void GDK_Pixbuf::setBgColor ( RGB  rgb)

現レイヤの背景色をセットする

引数
rgb新しい背景色
戻り値
なし

◆ setCanvasAlpha()

void GDK_Pixbuf::setCanvasAlpha ( bool  flag)

キャンバスのアルファ・チャンネルをセット・リセットする

引数
flagセットするなら true、リセットするなら false とする
戻り値
なし

◆ setCanvasBgColor()

void GDK_Pixbuf::setCanvasBgColor ( RGB  rgb)

キャンバスの背景色をセットする

引数
rgbセットする RGB 成分
戻り値
なし

◆ setCurrentLayer()

void GDK_Pixbuf::setCurrentLayer ( size_type  index)

現在のレイヤ番号を変更する

指定した添字が範囲外だった場合は例外 std::out_of_range を投げる 特に、レイヤが存在しない場合は必ず例外が投げられることに注意。

引数
index新しいレイヤ番号
戻り値
なし

◆ setOffset()

void GDK_Pixbuf::setOffset ( Coord< int >  offset)

現レイヤのオフセット値をセットする

引数
offset新たなオフセット値
戻り値
なし

◆ size()

virtual Coord< int > GDK_Pixbuf::size ( ) const
virtual

現レイヤの画像サイズを返す

レイヤが存在しない場合は ( 0, 0 ) を返す。

戻り値
現レイヤの画像サイズ

DrawingArea_IFを実装しています。

◆ superimpose()

void GDK_Pixbuf::superimpose ( )

現在のレイヤを下側の画像に重ね合わせる

現在のレイヤが 0 番目なら何も処理しない。現在のレイヤが不可視状態でも処理は行う。 重ねあわせた後、現在のレイヤは消去される。消去後のレイヤ番号は重ね合わされた下側に変更される。

戻り値
なし

◆ visible()

void GDK_Pixbuf::visible ( )

現在のレイヤを可視状態にする

戻り値
なし

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