GraphicLibrary  0.5.0
tadah_fussy::gl::canvas::GTK_DrawingArea クラス

GtkDrawingArea を利用した描画領域 [詳解]

tadah_fussy::gl::canvas::GTK_DrawingArea の継承関係図
tadah_fussy::gl::canvas::DrawingArea_IF

公開メンバ関数

 GTK_DrawingArea ()
 空の状態で初期化する [詳解]
 
 GTK_DrawingArea (Coord< int > sz, RGB rgb, bool hasAlpha)
 キャンバスのサイズ、背景色、アルファ・チャンネルの有無を指定して構築 ( レイヤはまだない状態となる ) [詳解]
 
 GTK_DrawingArea (const std::string &fileName)
 画像ファイルを指定して構築 [詳解]
 
 ~GTK_DrawingArea ()
 デストラクタ
 
Coord< double > getCoord (Coord< double > c) const
 指定した widget 上の座標を現レイヤの座標に変換する [詳解]
 
Coord< double > getScale () const
 描画倍率を取得する [詳解]
 
void setScale (Coord< double > scale, bool emitSignal=false)
 描画倍率をセットする [詳解]
 
Coord< double > getOffset () const
 キャンバスの表示位置を取得する [詳解]
 
void setOffset (Coord< double > c, bool emitSignal=false)
 キャンバスの表示位置を変更する [詳解]
 
void shiftOffset (Coord< double > c, bool emitSignal=false)
 キャンバスの表示位置をシフトする [詳解]
 
void draw (GdkInterpType interpType=GDK_INTERP_BILINEAR)
 画像を描画する [詳解]
 
void createWorkspace ()
 ワークスペースの生成
 
void clearWorkspace ()
 ワークスペースの消去
 
bool wsIsValid () const
 ワークスペースが有効かをチェックする [詳解]
 
virtual Coord< int > size () const
 ワークスペースの画像サイズを返す ( widget のサイズに等しい ) [詳解]
 
virtual bool point (Coord< int > c, RGB *palet) const
 指定した座標の RGB 成分を取得する [詳解]
 
virtual bool pset (Coord< int > c, RGB palet)
 指定した座標を指定した RGB 成分で描画する [詳解]
 
GDK_Pixbufpixbuf ()
 GDK_Pixbuf への参照を返す [詳解]
 
GtkWidget * widget () const
 描画対象の widget へのポインタを返す [詳解]
 
void show () const
 描画対象の widget を表示する
 
- 基底クラス tadah_fussy::gl::canvas::DrawingArea_IF に属する継承公開メンバ関数
virtual ~DrawingArea_IF ()
 仮想デストラクタ (何もしない)
 

詳解

GtkDrawingArea を利用した描画領域

実際の描画内容は GDK_Pixbuf が保持し、GTK_DrawingArea::pset を使いこのオブジェクトを通して描画された 内容はワークスペース ( 最上位に表示されるオフセットやスケールに依存しない領域 ) に反映される。 但し、GTK_DrawingArea::point を使って得たピクセル情報は GDK_Pixbuf の内容となることに注意。

GTK_DrawingArea オブジェクト draw を使って GDK_Pixbuf に描画を行う場合は、draw.pset ではなく draw.pixbuf().pset とすることで実現できる。

構築子と解体子

◆ GTK_DrawingArea() [1/3]

tadah_fussy::gl::canvas::GTK_DrawingArea::GTK_DrawingArea ( )

空の状態で初期化する

レイヤは存在しない状態で初期化される。

◆ GTK_DrawingArea() [2/3]

tadah_fussy::gl::canvas::GTK_DrawingArea::GTK_DrawingArea ( Coord< int >  sz,
RGB  rgb,
bool  hasAlpha 
)

キャンバスのサイズ、背景色、アルファ・チャンネルの有無を指定して構築 ( レイヤはまだない状態となる )

引数
sz画像サイズ
rgb背景色
hasAlphaアルファ・チャンネルを持つなら true

◆ GTK_DrawingArea() [3/3]

tadah_fussy::gl::canvas::GTK_DrawingArea::GTK_DrawingArea ( const std::string &  fileName)

画像ファイルを指定して構築

画像ファイルを読み込んだレイヤが一つ生成される。

引数
fileName画像ファイル名

関数詳解

◆ draw()

void tadah_fussy::gl::canvas::GTK_DrawingArea::draw ( GdkInterpType  interpType = GDK_INTERP_BILINEAR)

画像を描画する

引数
interpTypeスケール変更時の補間方法

◆ getCoord()

Coord< double > tadah_fussy::gl::canvas::GTK_DrawingArea::getCoord ( Coord< double >  c) const

指定した widget 上の座標を現レイヤの座標に変換する

マウスのクリック位置などに対して現レイヤ上の座標を求める時に利用する

引数
c指定した widget 上の座標
戻り値
画像上の相対座標

◆ getOffset()

Coord< double > tadah_fussy::gl::canvas::GTK_DrawingArea::getOffset ( ) const
inline

キャンバスの表示位置を取得する

画像は、指定した座標値へシフトして widget 上に描画される。 座標が負値の場合、画像の端部分は表示されない状態になる。 描画倍率により拡大・縮小された画像に対する表示位置となることに注意

戻り値
キャンバスの表示位置

◆ getScale()

Coord< double > tadah_fussy::gl::canvas::GTK_DrawingArea::getScale ( ) const
inline

描画倍率を取得する

戻り値
描画倍率

◆ pixbuf()

GDK_Pixbuf& tadah_fussy::gl::canvas::GTK_DrawingArea::pixbuf ( )
inline

GDK_Pixbuf への参照を返す

戻り値
描画対象の widget

◆ point()

virtual bool tadah_fussy::gl::canvas::GTK_DrawingArea::point ( Coord< int >  c,
RGB palet 
) const
virtual

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

取得できる RGB 成分は GDK_Pixbuf の全レイヤを重ねあわせた結果から得られることに注意。

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

tadah_fussy::gl::canvas::DrawingArea_IFを実装しています。

◆ pset()

virtual bool tadah_fussy::gl::canvas::GTK_DrawingArea::pset ( Coord< int >  c,
RGB  palet 
)
virtual

指定した座標を指定した RGB 成分で描画する

描画対象はワークスペースであり、GDK_Pixbuf ではないことに注意。GDK_Pixbuf に描画する場合は GTK_DrawingArea::pixbuf() を通して行う。

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

tadah_fussy::gl::canvas::DrawingArea_IFを実装しています。

◆ setOffset()

void tadah_fussy::gl::canvas::GTK_DrawingArea::setOffset ( Coord< double >  c,
bool  emitSignal = false 
)

キャンバスの表示位置を変更する

画像は、指定した座標値へシフトして widget 上に描画される。 座標が負値の場合、画像の端部分は表示されない状態になる。 描画倍率により拡大・縮小された画像に対する表示位置となることに注意

覚え書き
値を変更した後で再描画のためのシグナル(redraw)を発行したい場合は emitSignal を true にする。 デフォルトでは false となっていることに注意。"redraw" シグナルに対するイベントハンドラ内でこの関数 を使用する場合、決して emitSignal を true にしてはならない。true にした場合、無限にシグナルが発行 されてしまう。
引数
c変更する表示位置
emitSignal"redraw" シグナルを発行する場合は true にする

◆ setScale()

void tadah_fussy::gl::canvas::GTK_DrawingArea::setScale ( Coord< double >  scale,
bool  emitSignal = false 
)

描画倍率をセットする

値がゼロ以下だった場合、例外 ExceptionNotPositiveNumber を投げる。

覚え書き
値を変更した後で再描画のためのシグナル(redraw)を発行したい場合は emitSignal を true にする。 デフォルトでは false となっていることに注意。"redraw" シグナルに対するイベントハンドラ内でこの関数 を使用する場合、決して emitSignal を true にしてはならない。true にした場合、無限にシグナルが発行 されてしまう。
引数
scaleセットする描画倍率
emitSignal"redraw" シグナルを発行する場合は true にする

◆ shiftOffset()

void tadah_fussy::gl::canvas::GTK_DrawingArea::shiftOffset ( Coord< double >  c,
bool  emitSignal = false 
)

キャンバスの表示位置をシフトする

widget 上に描画する画像の位置を指定した値だけシフトする。 指定値が正なら右・下、負なら左・上の方向へシフトする。 座標が正値になった場合、widget 上には余白が生じる状態になる。 描画倍率により拡大・縮小された画像に対する表示位置となることに注意 ( 倍率による補正は行わない )。

覚え書き
値を変更した後で再描画のためのシグナル(redraw)を発行したい場合は emitSignal を true にする。 デフォルトでは false となっていることに注意。"redraw" シグナルに対するイベントハンドラ内でこの関数 を使用する場合、決して emitSignal を true にしてはならない。true にした場合、無限にシグナルが発行 されてしまう。
引数
cシフトする値
emitSignal"redraw" シグナルを発行する場合は true にする

◆ size()

virtual Coord< int > tadah_fussy::gl::canvas::GTK_DrawingArea::size ( ) const
virtual

ワークスペースの画像サイズを返す ( widget のサイズに等しい )

戻り値
ワークスペースの画像サイズ

tadah_fussy::gl::canvas::DrawingArea_IFを実装しています。

◆ widget()

GtkWidget* tadah_fussy::gl::canvas::GTK_DrawingArea::widget ( ) const
inline

描画対象の widget へのポインタを返す

戻り値
描画対象の widget

◆ wsIsValid()

bool tadah_fussy::gl::canvas::GTK_DrawingArea::wsIsValid ( ) const
inline

ワークスペースが有効かをチェックする

戻り値
ワークスペースが有効なら true を返す

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