Class: Miyako::Viewport
- Includes:
- Animation, SpriteBase
- Defined in:
- lib/Miyako/API/viewport.rb
Overview
ビューポートクラス
描画時の表示範囲を変更する 画面全体を基準(640x480の画面のときは(0,0)-(639,479)の範囲)として、範囲を設定する 範囲の設定はいつでも行えるが、描画にはrenderメソッドを呼び出した時の値が反映される
Instance Attribute Summary collapse
-
#visible ⇒ Object
レンダリングの可否(true->描画 false->非描画).
Instance Method Summary collapse
-
#dispose ⇒ Object
インスタンスを解放する.
-
#initialize(x, y, w, h) ⇒ Viewport
constructor
ビューポートのインスタンスを生成する x:: ビューポートの左上位置(x座標) y:: ビューポートの左上位置(y座標) w:: ビューポートの幅(共に1以上、0以下のときはエラーが出る) h:: ビューポートの高さ(共に1以上、0以下のときはエラーが出る).
-
#initialize_copy(obj) ⇒ Object
:nodoc:.
-
#move(dx, dy) ⇒ Object
ビューポートの左上位置を変更したときの位置を求める 移動量を指定して、位置を変更する ただし、自分自身の位置は変わらない dx:: 移動量(x方向) dy:: 移動量(y方向) 返却値:: 更新したインスタンス(Rect構造体)を返す.
-
#move!(dx, dy) ⇒ Object
ビューポートの左上位置を変更する 移動量を指定して、位置を変更する ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す dx:: 移動量(x方向) dy:: 移動量(y方向) 返却値:: 自分自身を返す.
-
#move_to(x, y) ⇒ Object
ビューポートの左上位置を変更したときの位置を求める 移動先を指定して、位置を変更する ただし、自分自身の位置は変わらない x:: 移動先位置(x方向) y:: 移動先位置(y方向) 返却値:: 更新したインスタンス(Rect構造体)を返す.
-
#move_to!(x, y) ⇒ Object
ビューポートの左上位置を変更する 移動先を指定して、位置を変更する ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す x:: 移動先位置(x方向) y:: 移動先位置(y方向) 返却値:: 自分自身を返す.
-
#render(&block) ⇒ Object
ビューポートの内容を画面に反映する ブロックが渡ってきたときは、範囲を変更して指定することが出来る(この変更は、本メソッドを呼ぶ時だけ有効) ブロックの引数は、|Rect構造体|が渡される。 block:: 呼び出し時にブロック付き呼び出しが行われたときのブロック本体。 呼び先に渡すことが出来る。ブロックがなければnilが入る.
-
#resize(dw, dh) ⇒ Object
ビューポートの大きさを変更したときの値を求める 変化量を指定して変更する ただし、自分自身の位置は変わらない dw:: 幅 dh:: 高さ 返却値:: 更新したインスタンス(Rect構造体)を返す.
-
#resize!(dw, dh) ⇒ Object
ビューポートの大きさを変更する 変化量を指定して変更する dw:: 幅 dh:: 高さ 返却値:: 自分自身を返す.
-
#resize_to(w, h) ⇒ Object
ビューポートの大きさを変更したときの値を求める 幅と高さを指定して変更する ただし、自分自身の位置は変わらない w:: 幅 h:: 高さ 返却値:: 更新したインスタンス(Rect構造体)を返す.
-
#resize_to!(w, h) ⇒ Object
ビューポートの大きさを変更する 幅と高さを指定して変更する w:: 幅 h:: 高さ 返却値:: 自分自身を返す.
-
#square ⇒ Object
ビューポートのインスタンスを「左、右、上、下」の形式で取得する 返却値:: ビューポートの矩形(Square構造体インスタンス)の複製.
-
#viewport ⇒ Object
ビューポートのインスタンスを複製する 返却値:: 自分自身の複製.
Methods included from Animation
[], []=, anim_hash, #reset, reset, start, #start, #stop, stop, update, update_animation, #update_animation
Methods included from SpriteBase
#bitmap, #hide, #image_rect, #image_size, #oh, #oh=, #ow, #ow=, #ox, #ox=, #oy, #oy=, #part_rect, #rect, #render_d, #render_to, #render_xy, #render_xy_to, #show, #to_sprite, #to_unit, #update
Constructor Details
#initialize(x, y, w, h) ⇒ Viewport
ビューポートのインスタンスを生成する
- x
-
ビューポートの左上位置(x座標)
- y
-
ビューポートの左上位置(y座標)
- w
-
ビューポートの幅(共に1以上、0以下のときはエラーが出る)
- h
-
ビューポートの高さ(共に1以上、0以下のときはエラーが出る)
39 40 41 42 43 44 |
# File 'lib/Miyako/API/viewport.rb', line 39 def initialize(x, y, w, h) raise MiyakoValueError, "Illegal size! w:#{w} h:#{h}" if (w <= 0 || h <= 0) @rect = Rect.new(x, y, w, h) @sq = Rect.new(x, y, x+w-1, y+h-1) @visible = true end |
Instance Attribute Details
#visible ⇒ Object
レンダリングの可否(true->描画 false->非描画)
32 33 34 |
# File 'lib/Miyako/API/viewport.rb', line 32 def visible @visible end |
Instance Method Details
#dispose ⇒ Object
インスタンスを解放する
173 174 175 176 |
# File 'lib/Miyako/API/viewport.rb', line 173 def dispose @rect = nil @sq = nil end |
#initialize_copy(obj) ⇒ Object
:nodoc:
46 47 48 49 |
# File 'lib/Miyako/API/viewport.rb', line 46 def initialize_copy(obj) #:nodoc: @rect = @rect.dup @sq = @sq.dup end |
#move(dx, dy) ⇒ Object
ビューポートの左上位置を変更したときの位置を求める
移動量を指定して、位置を変更する ただし、自分自身の位置は変わらない
- dx
-
移動量(x方向)
- dy
-
移動量(y方向)
- 返却値
-
更新したインスタンス(Rect構造体)を返す
136 137 138 |
# File 'lib/Miyako/API/viewport.rb', line 136 def move(dx,dy) @rect.dup.move!(dx,dy) end |
#move!(dx, dy) ⇒ Object
ビューポートの左上位置を変更する
移動量を指定して、位置を変更する ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
- dx
-
移動量(x方向)
- dy
-
移動量(y方向)
- 返却値
-
自分自身を返す
73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/Miyako/API/viewport.rb', line 73 def move!(dx,dy) orect = rect.to_a[0..1] osq = sq.to_a[0..1] @rect.move!(dx,dy) @sq.move!(dx, dy) if block_given? unless yield(self) @rect.move_to!(*orect) @sq.move_to!(*osq) end end return self end |
#move_to(x, y) ⇒ Object
ビューポートの左上位置を変更したときの位置を求める
移動先を指定して、位置を変更する ただし、自分自身の位置は変わらない
- x
-
移動先位置(x方向)
- y
-
移動先位置(y方向)
- 返却値
-
更新したインスタンス(Rect構造体)を返す
146 147 148 |
# File 'lib/Miyako/API/viewport.rb', line 146 def move_to(x,y) @rect.dup.move_to!(x,y) end |
#move_to!(x, y) ⇒ Object
ビューポートの左上位置を変更する
移動先を指定して、位置を変更する ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
- x
-
移動先位置(x方向)
- y
-
移動先位置(y方向)
- 返却値
-
自分自身を返す
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/Miyako/API/viewport.rb', line 93 def move_to!(x,y) orect = rect.to_a[0..1] osq = sq.to_a[0..1] @rect.move_to!(x,y) @sq.move_to!(x, y) if block_given? unless yield(self) @rect.move_to!(*orect) @sq.move_to!(*osq) end end end |
#render(&block) ⇒ Object
ビューポートの内容を画面に反映する
ブロックが渡ってきたときは、範囲を変更して指定することが出来る(この変更は、本メソッドを呼ぶ時だけ有効) ブロックの引数は、|Rect構造体|が渡される。
- block
-
呼び出し時にブロック付き呼び出しが行われたときのブロック本体。
呼び先に渡すことが出来る。ブロックがなければnilが入る
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/Miyako/API/viewport.rb', line 56 def render(&block) return unless @visible if block_given? rect = @rect.dup yield rect Screen.bitmap.set_clip_rect(*rect) else Screen.bitmap.set_clip_rect(*@rect) end end |
#resize(dw, dh) ⇒ Object
ビューポートの大きさを変更したときの値を求める
変化量を指定して変更する ただし、自分自身の位置は変わらない
- dw
-
幅
- dh
-
高さ
- 返却値
-
更新したインスタンス(Rect構造体)を返す
156 157 158 159 |
# File 'lib/Miyako/API/viewport.rb', line 156 def resize(dw,dh) raise MiyakoValueError, "Illegal size! w:#{w} h:#{h}" if ((@rect.w + dw) <= 0 || (@rect.h + dh) <= 0) @rect.dup.resize!(dw,dh) end |
#resize!(dw, dh) ⇒ Object
ビューポートの大きさを変更する
変化量を指定して変更する
- dw
-
幅
- dh
-
高さ
- 返却値
-
自分自身を返す
111 112 113 114 115 116 |
# File 'lib/Miyako/API/viewport.rb', line 111 def resize!(dw,dh) raise MiyakoValueError, "Illegal size! w:#{w} h:#{h}" if ((@rect.w + dw) <= 0 || (@rect.h + dh) <= 0) @rect.resize!(dw, dh) @sq.resize!(dw, dh) return self end |
#resize_to(w, h) ⇒ Object
ビューポートの大きさを変更したときの値を求める
幅と高さを指定して変更する ただし、自分自身の位置は変わらない
- w
-
幅
- h
-
高さ
- 返却値
-
更新したインスタンス(Rect構造体)を返す
167 168 169 170 |
# File 'lib/Miyako/API/viewport.rb', line 167 def resize_to(w,h) raise MiyakoValueError, "Illegal size! w:#{w} h:#{h}" if (w <= 0 || h <= 0) @rect.dup.resize_to!(w,h) end |
#resize_to!(w, h) ⇒ Object
ビューポートの大きさを変更する
幅と高さを指定して変更する
- w
-
幅
- h
-
高さ
- 返却値
-
自分自身を返す
123 124 125 126 127 128 |
# File 'lib/Miyako/API/viewport.rb', line 123 def resize_to!(w,h) raise MiyakoValueError, "Illegal size! w:#{w} h:#{h}" if (w <= 0 || h <= 0) @rect.resize_to!(w,h) @sq.resize_to!(w, h) return self end |
#square ⇒ Object
ビューポートのインスタンスを「左、右、上、下」の形式で取得する
- 返却値
-
ビューポートの矩形(Square構造体インスタンス)の複製
186 187 188 |
# File 'lib/Miyako/API/viewport.rb', line 186 def square return @sq.dup end |
#viewport ⇒ Object
ビューポートのインスタンスを複製する
- 返却値
-
自分自身の複製
180 181 182 |
# File 'lib/Miyako/API/viewport.rb', line 180 def return self.dup end |