GraphicLibrary  0.5.0
PixbufLayers クラス

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

PixbufLayers の継承関係図
DrawingArea_IF

公開型

typedef std::vector< Layer >::size_type size_type
 レイヤの番号の型
 

公開メンバ関数

 PixbufLayers ()
 空のレイヤで初期化する
 
 PixbufLayers (Coord< int > size, RGB rgb, bool hasAlpha, RGB::primary_type alpha)
 サイズ・色を指定して初期化する [詳解]
 
 PixbufLayers (const std::string &fileName)
 画像ファイル名を指定して初期化する [詳解]
 
 ~PixbufLayers ()
 デストラクタ
 
void addLayer ()
 空のレイヤを追加する [詳解]
 
void addLayer (Coord< double > offset, Coord< int > size, RGB rgb, bool hasAlpha, RGB::primary_type alpha)
 指定したサイズのレイヤを追加する [詳解]
 
void addFromFile (const std::string &fileName)
 指定したファイルの画像を新たなレイヤとして追加する [詳解]
 
void eraseLayer ()
 現在のレイヤを消去する [詳解]
 
void changeLayer (size_type lowerLayer)
 現在のレイヤの位置を入れ替える [詳解]
 
void superimpose ()
 現在のレイヤを下側の画像に重ね合わせる [詳解]
 
void setCurrentLayer (size_type index)
 現在のレイヤ番号を変更する [詳解]
 
size_type getCurrentLayer () const
 現在のレイヤ番号を返す [詳解]
 
size_type layerSize () const
 レイヤ数を返す [詳解]
 
virtual Coord< int > size () const
 現レイヤのサイズを取得する [詳解]
 
virtual void resize (Coord< int > size)
 現レイヤのサイズを変更する [詳解]
 
RGB getBgColor () const
 現レイヤの背景色を返す
 
void setBgColor (RGB rgb)
 現レイヤの背景色をセットする
 
Coord< double > getOffset () const
 現レイヤのオフセット値を返す
 
void setOffset (Coord< double > offset)
 現レイヤのオフセット値をセットする
 
RGB::primary_type getAlpha () const
 現レイヤのアルファ・チャンネルを返す
 
void setAlpha (RGB::primary_type alpha)
 現レイヤのアルファ・チャンネルをセットする
 
int width () const
 現レイヤの幅(横方向のサイズ)を返す
 
int height () const
 現レイヤの高さ(縦方向のサイズ)を返す
 
int canvasWidth () const
 キャンバスの幅(横方向のサイズ)を返す
 
int canvasHeight () const
 キャンバスの高さ(縦方向のサイズ)を返す
 
int bps () const
 現レイヤの RGB 成分のビット数を返す
 
int rowstride () const
 現レイヤの画像の一行分のサイズを返す
 
int nChannels () const
 現レイヤの 1 ピクセル分のバイト数を返す
 
bool hasAlpha () const
 現レイヤがアルファチャンネルを持つ場合は true を返す
 
void addAlpha (bool substitudeRGB, RGB rgb)
 現レイヤにアルファ・チャンネルを追加する [詳解]
 
void initLayer (Coord< int > size, RGB rgb, bool hasAlpha, RGB::primary_type alpha)
 指定したサイズの画像で初期化する [詳解]
 
void loadFromFile (const std::string &fileName)
 指定したファイルの画像で初期化する [詳解]
 
Coord< double > layerCoord (Coord< double > c) const
 現レイヤのキャンバスに対する相対位置を求める [詳解]
 
virtual bool point (Coord< int > c, RGB *palet) const
 指定した座標のパレットを取得する [詳解]
 
virtual bool pset (Coord< int > c, RGB palet)
 指定した座標にパレットをセットする [詳解]
 
void draw (cairo_t *cr, Coord< double > offset, Coord< int > size, Coord< double > scale, GdkInterpType interpType) const
 cairo コンテキストを通して画像を描画する [詳解]
 
void draw (GtkWidget *widget, Coord< double > offset, Coord< int > size, Coord< double > scale, GdkInterpType interpType) const
 ウィジェット上に画像を描画する [詳解]
 
- 基底クラス DrawingArea_IF に属する継承公開メンバ関数
virtual ~DrawingArea_IF ()
 仮想デストラクタ (何もしない)
 

詳解

GdkPixbuf からなるレイヤ

描画時に全レイヤが重ね合わされる

構築子と解体子

PixbufLayers::PixbufLayers ( Coord< int >  size,
RGB  rgb,
bool  hasAlpha,
RGB::primary_type  alpha 
)
inline

サイズ・色を指定して初期化する

引数
sizeレイヤのサイズ
rgb塗りつぶす色
hasAlphaアルファ・チャンネルを持つ場合は true
alpha重ね合わせ時のアルファ・チャンネル
PixbufLayers::PixbufLayers ( const std::string &  fileName)
inline

画像ファイル名を指定して初期化する

引数
fileName画像ファイル名

関数詳解

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

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

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

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

ファイルの読み込みに失敗した場合、例外 std::runtime_error を投げる。

引数
fileName追加する画像ファイル名
戻り値
なし
void PixbufLayers::addLayer ( )

空のレイヤを追加する

戻り値
なし
void PixbufLayers::addLayer ( Coord< double >  offset,
Coord< int >  size,
RGB  rgb,
bool  hasAlpha,
RGB::primary_type  alpha 
)

指定したサイズのレイヤを追加する

画像の大きさに負数を設定した場合は例外 ExceptionNegativeNumber を投げる。 メモリが確保できなかった場合、例外 std::bad_alloc を投げる。

引数
offsetレイヤの描画開始位置(左上隅)
size追加するレイヤのサイズ
rgb初期化時に塗りつぶす RGB 成分
hasAlphaアルファ・チャンネルを持つ場合は true
alpha合成時のアルファ・チャンネル
戻り値
なし
void PixbufLayers::changeLayer ( size_type  lowerLayer)

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

入れ替え位置は指定した番号のレイヤの次とする ( 例えば 0 を指定した場合は 0 番目の次である 1 番目のレイヤになる。 現在のレイヤが 0 番目なら何も処理しない。 指定した添字が範囲外だった場合は例外 std::out_of_range を投げる

引数
lowerLayer入れ替え位置の下側のレイヤ番号
戻り値
なし
void PixbufLayers::draw ( cairo_t *  cr,
Coord< double >  offset,
Coord< int >  size,
Coord< double >  scale,
GdkInterpType  interpType 
) const

cairo コンテキストを通して画像を描画する

引数
crCairo コンテキスト
offset画像をシフトする量
size画像を描画する大きさ
scale画像の拡大・縮小率
interpType拡大・縮小時の補間方法
戻り値
なし
void PixbufLayers::draw ( GtkWidget *  widget,
Coord< double >  offset,
Coord< int >  size,
Coord< double >  scale,
GdkInterpType  interpType 
) const

ウィジェット上に画像を描画する

引数
widget描画対象の widget
offset画像をシフトする量
size画像を描画する大きさ
scale画像の拡大・縮小率
interpType拡大・縮小時の補間方法
戻り値
なし
void PixbufLayers::eraseLayer ( )

現在のレイヤを消去する

下地となる 0 番目のレイヤは消去できないことに注意。現在のレイヤが 0 番目なら何も処理しない。

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

戻り値
なし
size_type PixbufLayers::getCurrentLayer ( ) const
inline

現在のレイヤ番号を返す

戻り値
現在のレイヤ番号
void PixbufLayers::initLayer ( Coord< int >  size,
RGB  rgb,
bool  hasAlpha,
RGB::primary_type  alpha 
)

指定したサイズの画像で初期化する

全てのレイヤはいったんクリアされる

引数
size画像サイズ
rgb初期化時に塗りつぶす RGB 成分
hasAlphaアルファ・チャンネルを持つ場合は true
alpha合成時のアルファ・チャンネル
Coord< double > PixbufLayers::layerCoord ( Coord< double >  c) const

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

引数
cキャンバス上の位置
戻り値
画像に対する相対位置
size_type PixbufLayers::layerSize ( ) const
inline

レイヤ数を返す

戻り値
レイヤ数
void PixbufLayers::loadFromFile ( const std::string &  fileName)

指定したファイルの画像で初期化する

全てのレイヤはいったんクリアされる

引数
fileName読み込む画像ファイル名
戻り値
なし
virtual bool PixbufLayers::point ( Coord< int >  c,
RGB palet 
) const
virtual

指定した座標のパレットを取得する

座標は現レイヤを基準とする。レイヤにオフセットが指定されていた場合は補正を掛ける必要があることに注意。 補正には PixbufLayers::layerCoord を利用する。 レイヤの範囲外を指定した場合は何もせず false を返す。

引数
cパレットを取得する座標
palet取得したパレットを返すポインタ
戻り値
取得に成功した場合は true を返す

DrawingArea_IFを実装しています。

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

指定した座標にパレットをセットする

座標は現レイヤを基準とする。レイヤにオフセットが指定されていた場合は補正を掛ける必要があることに注意。 補正には PixbufLayers::layerCoord を利用する。 レイヤの範囲外を指定した場合は何もせず false を返す。

引数
cパレットをセットする座標
paletセットするパレット
戻り値
セットに成功した場合は true を返す

DrawingArea_IFを実装しています。

virtual void PixbufLayers::resize ( Coord< int >  size)
virtual

現レイヤのサイズを変更する

サイズを変更する対象は現レイヤであることに注意

引数
size新しいサイズ
戻り値
なし

DrawingArea_IFを実装しています。

void PixbufLayers::setCurrentLayer ( size_type  index)

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

指定した添字が範囲外だった場合は例外 std::out_of_range を投げる

引数
index新しいレイヤ番号
戻り値
なし
virtual Coord< int > PixbufLayers::size ( ) const
virtual

現レイヤのサイズを取得する

取得するサイズは現レイヤであることに注意

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

DrawingArea_IFを実装しています。

void PixbufLayers::superimpose ( )

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

現在のレイヤが 0 番目なら何も処理しない。 重ねあわせた後、現在のレイヤは消去される。消去後のレイヤ番号については PixbufLayers::eraseLayer を参照のこと。

戻り値
なし

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