GtkDrawingArea を利用した描画領域
[詳解]
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 | ) |
|
画像ファイルを指定して構築
画像ファイルを読み込んだレイヤが一つ生成される。
- 引数
-
◆ draw()
void tadah_fussy::gl::canvas::GTK_DrawingArea::draw |
( |
GdkInterpType |
interpType = GDK_INTERP_BILINEAR | ) |
|
◆ getCoord()
Coord< double > tadah_fussy::gl::canvas::GTK_DrawingArea::getCoord |
( |
Coord< double > |
c | ) |
const |
指定した 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 |
◆ point()
virtual bool tadah_fussy::gl::canvas::GTK_DrawingArea::point |
( |
Coord< int > |
c, |
|
|
RGB * |
palet |
|
) |
| const |
|
virtual |
◆ pset()
virtual bool tadah_fussy::gl::canvas::GTK_DrawingArea::pset |
( |
Coord< int > |
c, |
|
|
RGB |
palet |
|
) |
| |
|
virtual |
◆ 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()
GtkWidget* tadah_fussy::gl::canvas::GTK_DrawingArea::widget |
( |
| ) |
const |
|
inline |
描画対象の widget へのポインタを返す
- 戻り値
- 描画対象の widget
◆ wsIsValid()
bool tadah_fussy::gl::canvas::GTK_DrawingArea::wsIsValid |
( |
| ) |
const |
|
inline |
ワークスペースが有効かをチェックする
- 戻り値
- ワークスペースが有効なら true を返す
このクラス詳解は次のファイルから抽出されました: