Module: Miyako::Layout
- Included in:
- ChoiceStruct, Choices, Diagram::Processor, Diagram::Renderer, Drawer, FixedMap, Font, LayoutSpace, ListPairStruct, Movie, Parts, Slide, Sprite, SpriteAnimation, SpriteList, TextBox
- Defined in:
- lib/Miyako/API/layout.rb
Overview
レイアウト管理モジュール
位置情報やスナップ、座標丸めなどを管理する 本モジュールはmixinすることで機能する。 また、mixinする場合は、以下の処理を施すこと 1.クラスのinitializeメソッドの最初にinit_layoutメソッドを呼び出す 2.update_layout_positionメソッドを実装する なお、本モジュールをmixinした場合は、インスタンス変数 @layout が予約される。 @layoutへのユーザアクセスは参照のみ許される。
Instance Method Summary collapse
-
#add_snap_child(spr) ⇒ Object
:nodoc:.
-
#bottom(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#bottom!(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させる 設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#broad_rect ⇒ Object
領域の最大矩形を取得するメソッドのテンプレート 返却値:: Rect構造体インスタンス(デフォルトはnil).
-
#center ⇒ Object
mixinしたインスタンスの位置を中間(x軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 返却値:: 移動後の位置(Position構造体).
-
#center! ⇒ Object
mixinしたインスタンスの位置を中間(x軸)に移動させる 返却値:: 自分自身.
-
#centering ⇒ Object
インスタンスを画面(スナップ先インスタンス)の中心に移動したときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 返却値:: 移動後の位置(Position構造体).
-
#centering! ⇒ Object
インスタンスを画面(スナップ先インスタンス)の中心に移動する 返却値:: 自分自身を返す.
-
#copy_layout ⇒ Object
レイアウト管理の複写.
-
#delete_snap_child(spr) ⇒ Object
:nodoc:.
-
#get_snap_children ⇒ Object
:nodoc:.
-
#get_snap_sprite ⇒ Object
:nodoc:.
-
#h ⇒ Object
mixin されたインスタンスの高さを取得する 返却値:: インスタンスの高さ(@layout[:size][1]の値).
-
#include_snap_child?(spr) ⇒ Boolean
すでに指定したスプライトがスナップ元として登録されているかどうか確認する 返却値:: スナップ元として登録されていればtrue、登録されていなければfalse.
-
#init_layout ⇒ Object
レイアウト管理の初期化 mixin したクラスの initialize メソッド内で必ず呼び出しておくこと.
-
#layout_dispose ⇒ Object
レイアウトに関するインスタンスを解放する インスタンス変数 @layout 内のインスタンスを解放する.
-
#left(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#left!(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させる 設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#middle ⇒ Object
mixinしたインスタンスの位置を中間(y軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 返却値:: 移動後の位置(Position構造体).
-
#middle! ⇒ Object
mixinしたインスタンスの位置を中間(y軸)に移動させる 返却値:: 自分自身.
-
#move(x, y) ⇒ Object
インスタンスを指定の移動量で移動させた位置を返す 引数で指定したぶん移動させたときの位置を新しくインスタンスを生成して返す 自分自身の位置は変わらない x:: x 座標の移動量 y:: y 座標の移動量 返却値:: 更新後の値を設定したインスタンス.
-
#move!(x, y) ⇒ Object
インスタンスを指定の移動量で移動させる ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す x:: x 座標の移動量 y:: y 座標の移動量 返却値:: 自分自身を返す.
-
#move_to(x, y) ⇒ Object
インスタンスを指定の位置に移動させた位置を返す 引数で指定したぶん移動させたときの位置を新しくインスタンスを生成して返す 自分自身の位置は変わらない x:: 移動後の x 座標の位置 y:: 移動後の y 座標の位置 返却値:: 更新後の値を設定したインスタンス.
-
#move_to!(x, y, &block) ⇒ Object
インスタンスを指定の位置に移動させる ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す x:: 移動後の x 座標の位置 y:: 移動後の y 座標の位置 返却値:: 自分自身を返す.
-
#on_move ⇒ Object
位置移動時に呼び出すブロックを管理する配列にアクセする moveやleftメソッドを呼び出した時に評価したいブロックを渡すことで、 付随処理を自律して行うことが出来る。 引数は、|self, x, y, dx, dy|の5つ。 各引数は、 「レシーバ, 移動後x座標位置, 移動後y座標位置, x座標移動量, y座標移動量」 の機能がある。 評価が行われるのは、 left,outside_left,center,right,outside_right,top, outside_top,middle,bottom,outside_bottom, move,move_toの各メソッド。 返却値:: ブロック管理配列.
-
#outside_bottom(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#outside_bottom!(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させる 設置するとき、基準となる空間の外側に設置される ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#outside_left(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#outside_left!(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させる 設置するとき、基準となる空間の外側に設置される ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#outside_right(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#outside_right!(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させる 設置するとき、基準となる空間の外側に設置される ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#outside_top(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#outside_top!(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させる 設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#pos ⇒ Object
(also: #layout_pos)
mixin されたインスタンスの位置情報(x,yの値)を取得する 返却値:: インスタンスの位置情報(@layout[:pos]の値).
-
#rect ⇒ Object
インスタンスの位置・大きさを求める インスタンスの位置・大きさをRect構造体で求める 返却値:: Rect構造体.
-
#relative_move_to(x, y) ⇒ Object
相対座標でインスタンスを指定の位置に移動させた位置を返す スナップ先の左上位置をとしたときの座標(相対座標)で、指定の位置に移動したときの 位置を新しくインスタンスを生成して返す x:: 移動後の x 座標の位置 y:: 移動後の y 座標の位置 返却値:: 更新後の位置を設定したインスタンス(Size構造体).
-
#relative_move_to!(x, y) ⇒ Object
相対座標でインスタンスを指定の位置に移動させる スナップ先の左上位置をとしたときの座標(相対座標)で、指定の位置に移動する x:: 移動後の x 座標の位置 y:: 移動後の y 座標の位置 返却値:: 自分自身を返す.
-
#reset_snap ⇒ Object
すべてのインスタンスとの依存関係を解消する このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意 返却値:: 自分自身を返す.
-
#right(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#right!(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させる 設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#segment ⇒ Object
Segment構造体を生成する 生成される線分は、x方向が、y方向がとなる 返却値:: 生成したSegments構造体インスタンス.
-
#set_layout_size(w, h) ⇒ Object
インスタンスのサイズをレイアウト情報に反映させる このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意 w:: インスタンスの幅(たとえば、Sprite#ow の値) h:: インスタンスの幅(たとえば、Sprite#oh の値) 返却値:: 自分自身を返す.
-
#set_snap_children(cs) ⇒ Object
:nodoc:.
-
#set_snap_sprite(ss) ⇒ Object
:nodoc:.
-
#size ⇒ Object
(also: #layout_size)
mixin されたインスタンスのサイズ情報(w,hの値)を取得する 返却値:: インスタンスのサイズ情報(@layout[:size]の値).
-
#snap(spr = nil) ⇒ Object
インスタンスのレイアウトを指定の別のインスタンスに依存(スナップ)させる 引数 spr で指定したインスタンスのレイアウト情報は、レシーバのレイアウト情報に依存した位置情報を算出される デフォルトでは、画面にスナップされている状態になっている spr:: 位置情報を依存させるインスタンス。デフォルトは nil (画面が対象になる) 返却値:: 自分自身を返す.
-
#top(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させたときの位置を返す 但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 移動後の位置(Position構造体).
-
#top!(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させる 設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値:: 自分自身.
-
#update_layout(dx, dy) ⇒ Object
レイアウト情報の値を更新する dx:: 位置の変化量(x方向) dx:: 位置の変化量(y方向).
-
#update_layout_position ⇒ Object
現在の位置情報を別のインスタンス変数に反映させるためのテンプレートメソッド move や centering などのメソッドを呼び出した際に@layout[:pos]の値を反映させるときに使う (例)@sprite.move!(*@layout[:pos]).
-
#w ⇒ Object
mixin されたインスタンスの幅を取得する 返却値:: インスタンスの幅(@layout[:size][0]の値).
-
#x ⇒ Object
mixin されたインスタンスの x 座標の値を取得する 返却値:: x 座標の値(@layout[:pos][0]の値).
-
#y ⇒ Object
mixin されたインスタンスの y 座標の値を取得する 返却値:: y 座標の値(@layout[:pos][1]の値).
Instance Method Details
#add_snap_child(spr) ⇒ Object
:nodoc:
528 529 530 531 |
# File 'lib/Miyako/API/layout.rb', line 528 def add_snap_child(spr) #:nodoc: @layout.snap.children << spr unless @layout.snap.children.include?(spr) return self end |
#bottom(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
385 386 387 388 389 390 |
# File 'lib/Miyako/API/layout.rb', line 385 def bottom(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[1] = base[1] + base[3] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0) return pos end |
#bottom!(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させる
設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
246 247 248 249 250 251 252 253 254 255 |
# File 'lib/Miyako/API/layout.rb', line 246 def bottom!(&margin) base = @layout.base.rect t = @layout.pos[1] @layout.pos[1] = base[1] + base[3] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0) update_layout(0, @layout.pos[1]-t) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t) } return self end |
#broad_rect ⇒ Object
領域の最大矩形を取得するメソッドのテンプレート
- 返却値
-
Rect構造体インスタンス(デフォルトはnil)
493 494 495 |
# File 'lib/Miyako/API/layout.rb', line 493 def broad_rect return self.rect end |
#center ⇒ Object
mixinしたインスタンスの位置を中間(x軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない
- 返却値
-
移動後の位置(Position構造体)
310 311 312 313 314 315 |
# File 'lib/Miyako/API/layout.rb', line 310 def center base = @layout.base.rect pos = @layout.pos.dup pos[0] = base[0] + (base[2] >> 1) - (@layout.size[0] >> 1) return pos end |
#center! ⇒ Object
mixinしたインスタンスの位置を中間(x軸)に移動させる
- 返却値
-
自分自身
153 154 155 156 157 158 159 160 161 162 |
# File 'lib/Miyako/API/layout.rb', line 153 def center! base = @layout.base.rect t = @layout.pos[0] @layout.pos[0] = base[0] + (base[2] >> 1) - (@layout.size[0] >> 1) update_layout(@layout.pos[0]-t, 0) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0) } return self end |
#centering ⇒ Object
インスタンスを画面(スナップ先インスタンス)の中心に移動したときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない
- 返却値
-
移動後の位置(Position構造体)
408 409 410 411 412 413 414 |
# File 'lib/Miyako/API/layout.rb', line 408 def centering base = @layout.base.rect pos = @layout.pos.dup pos[0] = base[0] + (base[2] >> 1) - (@layout.size[0] >> 1) pos[1] = base[1] + (base[3] >> 1) - (@layout.size[1] >> 1) return pos end |
#centering! ⇒ Object
インスタンスを画面(スナップ先インスタンス)の中心に移動する
- 返却値
-
自分自身を返す
275 276 277 278 279 |
# File 'lib/Miyako/API/layout.rb', line 275 def centering! center! middle! return self end |
#copy_layout ⇒ Object
レイアウト管理の複写
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/Miyako/API/layout.rb', line 86 def copy_layout tmp = @layout @layout = tmp.dup @layout.pos = Point.new(*tmp.pos) @layout.size = Size.new(*tmp.size) @layout.on_move = tmp.on_move.dup @layout.snap = tmp.snap.dup # スナップ関係を解消 if @layout.snap.sprite @layout.snap.sprite.delete_snap_child(self) @layout.snap.sprite = nil @layout.base = Screen end @layout.snap.children = [] end |
#delete_snap_child(spr) ⇒ Object
:nodoc:
533 534 535 536 |
# File 'lib/Miyako/API/layout.rb', line 533 def delete_snap_child(spr) #:nodoc: spr.each{|s| @layout.snap.children.delete(s) } return self end |
#get_snap_children ⇒ Object
:nodoc:
538 539 540 |
# File 'lib/Miyako/API/layout.rb', line 538 def get_snap_children #:nodoc: return @layout.snap.children end |
#get_snap_sprite ⇒ Object
:nodoc:
549 550 551 |
# File 'lib/Miyako/API/layout.rb', line 549 def get_snap_sprite #:nodoc: return @layout.snap.sprite end |
#h ⇒ Object
mixin されたインスタンスの高さを取得する
- 返却値
-
インスタンスの高さ(@layout[:size][1]の値)
443 444 445 |
# File 'lib/Miyako/API/layout.rb', line 443 def h return @layout.size[1] end |
#include_snap_child?(spr) ⇒ Boolean
すでに指定したスプライトがスナップ元として登録されているかどうか確認する
- 返却値
-
スナップ元として登録されていればtrue、登録されていなければfalse
524 525 526 |
# File 'lib/Miyako/API/layout.rb', line 524 def include_snap_child?(spr) @layout.snap.children.include?(spr) end |
#init_layout ⇒ Object
レイアウト管理の初期化
mixin したクラスの initialize メソッド内で必ず呼び出しておくこと
76 77 78 79 80 81 82 83 |
# File 'lib/Miyako/API/layout.rb', line 76 def init_layout @layout = LayoutStruct.new @layout.pos = Point.new(0, 0) @layout.size = Size.new(0, 0) @layout.base = Miyako::Screen @layout.snap = LayoutSnapStruct.new(nil, Array.new) @layout.on_move = [] end |
#layout_dispose ⇒ Object
レイアウトに関するインスタンスを解放する
インスタンス変数 @layout 内のインスタンスを解放する
418 419 420 421 |
# File 'lib/Miyako/API/layout.rb', line 418 def layout_dispose @layout.snap.sprite.delete_snap_child(self) if @layout.snap.sprite @layout.snap.children.each{|sc| sc.reset_snap } end |
#left(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
287 288 289 290 291 292 |
# File 'lib/Miyako/API/layout.rb', line 287 def left(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[0] = base[0] + (margin ? margin[base[2]].to_i : 0) return pos end |
#left!(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させる
設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
124 125 126 127 128 129 130 131 132 133 |
# File 'lib/Miyako/API/layout.rb', line 124 def left!(&margin) base = @layout.base.rect t = @layout.pos[0] @layout.pos[0] = base[0] + (margin ? margin[base[2]].to_i : 0) update_layout(@layout.pos[0]-t, 0) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0) } return self end |
#middle ⇒ Object
mixinしたインスタンスの位置を中間(y軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない
- 返却値
-
移動後の位置(Position構造体)
372 373 374 375 376 377 |
# File 'lib/Miyako/API/layout.rb', line 372 def middle base = @layout.base.rect pos = @layout.pos.dup pos[1] = base[1] + (base[3] >> 1) - (@layout.size[1] >> 1) return pos end |
#middle! ⇒ Object
mixinしたインスタンスの位置を中間(y軸)に移動させる
- 返却値
-
自分自身
230 231 232 233 234 235 236 237 238 239 |
# File 'lib/Miyako/API/layout.rb', line 230 def middle! base = @layout.base.rect t = @layout.pos[1] @layout.pos[1] = base[1] + (base[3] >> 1) - (@layout.size[1] >> 1) update_layout(0, @layout.pos[1]-t) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t) } return self end |
#move(x, y) ⇒ Object
インスタンスを指定の移動量で移動させた位置を返す
引数で指定したぶん移動させたときの位置を新しくインスタンスを生成して返す 自分自身の位置は変わらない
- x
-
x 座標の移動量
- y
-
y 座標の移動量
- 返却値
-
更新後の値を設定したインスタンス
590 591 592 593 |
# File 'lib/Miyako/API/layout.rb', line 590 def move(x, y) ret = @layout.pos.dup ret.move!(x,y) end |
#move!(x, y) ⇒ Object
インスタンスを指定の移動量で移動させる
ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
- x
-
x 座標の移動量
- y
-
y 座標の移動量
- 返却値
-
自分自身を返す
565 566 |
# File 'lib/Miyako/API/layout.rb', line 565 def move!(x, y) end |
#move_to(x, y) ⇒ Object
インスタンスを指定の位置に移動させた位置を返す
引数で指定したぶん移動させたときの位置を新しくインスタンスを生成して返す 自分自身の位置は変わらない
- x
-
移動後の x 座標の位置
- y
-
移動後の y 座標の位置
- 返却値
-
更新後の値を設定したインスタンス
601 602 603 604 |
# File 'lib/Miyako/API/layout.rb', line 601 def move_to(x, y) ret = @layout.pos.dup ret.move_to!(x,y) end |
#move_to!(x, y, &block) ⇒ Object
インスタンスを指定の位置に移動させる
ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
- x
-
移動後の x 座標の位置
- y
-
移動後の y 座標の位置
- 返却値
-
自分自身を返す
573 574 |
# File 'lib/Miyako/API/layout.rb', line 573 def move_to!(x, y, &block) end |
#on_move ⇒ Object
位置移動時に呼び出すブロックを管理する配列にアクセする
moveやleftメソッドを呼び出した時に評価したいブロックを渡すことで、 付随処理を自律して行うことが出来る。 引数は、|self, x, y, dx, dy|の5つ。 各引数は、
「レシーバ, 移動後x座標位置, 移動後y座標位置, x座標移動量, y座標移動量」
の機能がある。 評価が行われるのは、
left,outside_left,center,right,outside_right,top,
outside_top,middle,bottom,outside_bottom,
move,move_toの各メソッド。
- 返却値
-
ブロック管理配列
115 116 117 |
# File 'lib/Miyako/API/layout.rb', line 115 def on_move return @layout.on_move end |
#outside_bottom(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
398 399 400 401 402 403 |
# File 'lib/Miyako/API/layout.rb', line 398 def outside_bottom(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[1] = base[1] + base[3] + (margin ? margin[base[3]].to_i : 0) return pos end |
#outside_bottom!(&margin) ⇒ Object
mixinしたインスタンスの位置を下端(y軸)に移動させる
設置するとき、基準となる空間の外側に設置される ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
262 263 264 265 266 267 268 269 270 271 |
# File 'lib/Miyako/API/layout.rb', line 262 def outside_bottom!(&margin) base = @layout.base.rect t = @layout.pos[1] @layout.pos[1] = base[1] + base[3] + (margin ? margin[base[3]].to_i : 0) update_layout(0, @layout.pos[1]-t) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t) } return self end |
#outside_left(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
300 301 302 303 304 305 |
# File 'lib/Miyako/API/layout.rb', line 300 def outside_left(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[0] = base[0] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0) return pos end |
#outside_left!(&margin) ⇒ Object
mixinしたインスタンスの位置を左端(x軸)に移動させる
設置するとき、基準となる空間の外側に設置される ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
140 141 142 143 144 145 146 147 148 149 |
# File 'lib/Miyako/API/layout.rb', line 140 def outside_left!(&margin) base = @layout.base.rect t = @layout.pos[0] @layout.pos[0] = base[0] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0) update_layout(@layout.pos[0]-t, 0) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0) } return self end |
#outside_right(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
336 337 338 339 340 341 |
# File 'lib/Miyako/API/layout.rb', line 336 def outside_right(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[0] = base[0] + base[2] + (margin ? margin[base[2]].to_i : 0) return pos end |
#outside_right!(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させる
設置するとき、基準となる空間の外側に設置される ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
185 186 187 188 189 190 191 192 193 194 |
# File 'lib/Miyako/API/layout.rb', line 185 def outside_right!(&margin) base = @layout.base.rect t = @layout.pos[0] @layout.pos[0] = base[0] + base[2] + (margin ? margin[base[2]].to_i : 0) update_layout(@layout.pos[0]-t, 0) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0) } return self end |
#outside_top(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の外側に設置されたとして算出する ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
362 363 364 365 366 367 |
# File 'lib/Miyako/API/layout.rb', line 362 def outside_top(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[1] = base[1] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0) return pos end |
#outside_top!(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させる
設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
217 218 219 220 221 222 223 224 225 226 |
# File 'lib/Miyako/API/layout.rb', line 217 def outside_top!(&margin) base = @layout.base.rect t = @layout.pos[1] @layout.pos[1] = base[1] - @layout.size[1] - (margin ? margin[base[3]].to_i : 0) update_layout(0, @layout.pos[1]-t) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t) } return self end |
#pos ⇒ Object Also known as: layout_pos
mixin されたインスタンスの位置情報(x,yの値)を取得する
- 返却値
-
インスタンスの位置情報(@layout[:pos]の値)
449 450 451 |
# File 'lib/Miyako/API/layout.rb', line 449 def pos return @layout.pos end |
#rect ⇒ Object
インスタンスの位置・大きさを求める
インスタンスの位置・大きさをRect構造体で求める
- 返却値
-
Rect構造体
487 488 489 |
# File 'lib/Miyako/API/layout.rb', line 487 def rect return Rect.new(@layout.pos[0], @layout.pos[1], @layout.size[0], @layout.size[1]) end |
#relative_move_to(x, y) ⇒ Object
相対座標でインスタンスを指定の位置に移動させた位置を返す
スナップ先の左上位置をとしたときの座標(相対座標)で、指定の位置に移動したときの 位置を新しくインスタンスを生成して返す
- x
-
移動後の x 座標の位置
- y
-
移動後の y 座標の位置
- 返却値
-
更新後の位置を設定したインスタンス(Size構造体)
612 613 614 615 |
# File 'lib/Miyako/API/layout.rb', line 612 def relative_move_to(x, y) bpos = @layout.base.pos Point.new(bpos.x+x,bpos.y+y) end |
#relative_move_to!(x, y) ⇒ Object
相対座標でインスタンスを指定の位置に移動させる
スナップ先の左上位置をとしたときの座標(相対座標)で、指定の位置に移動する
- x
-
移動後の x 座標の位置
- y
-
移動後の y 座標の位置
- 返却値
-
自分自身を返す
581 582 |
# File 'lib/Miyako/API/layout.rb', line 581 def relative_move_to!(x, y) end |
#reset_snap ⇒ Object
すべてのインスタンスとの依存関係を解消する
このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意
- 返却値
-
自分自身を返す
515 516 517 518 519 520 |
# File 'lib/Miyako/API/layout.rb', line 515 def reset_snap @layout.snap.sprite = nil @layout.base = Screen @layout.snap.children = Array.new return self end |
#right(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
323 324 325 326 327 328 |
# File 'lib/Miyako/API/layout.rb', line 323 def right(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[0] = base[0] + base[2] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0) return pos end |
#right!(&margin) ⇒ Object
mixinしたインスタンスの位置を右端(x軸)に移動させる
設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
169 170 171 172 173 174 175 176 177 178 |
# File 'lib/Miyako/API/layout.rb', line 169 def right!(&margin) base = @layout.base.rect t = @layout.pos[0] @layout.pos[0] = base[0] + base[2] - @layout.size[0] - (margin ? margin[base[2]].to_i : 0) update_layout(@layout.pos[0]-t, 0) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], @layout.pos[0]-t, 0) } return self end |
#segment ⇒ Object
620 621 622 623 624 625 |
# File 'lib/Miyako/API/layout.rb', line 620 def segment return Segments.new([@layout.pos[0], @layout.pos[0]+@layout.size[0]-1], [@layout.pos[1], @layout.pos[1]+@layout.size[1]-1]) end |
#set_layout_size(w, h) ⇒ Object
インスタンスのサイズをレイアウト情報に反映させる
このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意
- w
-
インスタンスの幅(たとえば、Sprite#ow の値)
- h
-
インスタンスの幅(たとえば、Sprite#oh の値)
- 返却値
-
自分自身を返す
470 471 472 473 474 |
# File 'lib/Miyako/API/layout.rb', line 470 def set_layout_size(w, h) @layout.size[0] = w @layout.size[1] = h return self end |
#set_snap_children(cs) ⇒ Object
:nodoc:
542 543 544 545 546 547 |
# File 'lib/Miyako/API/layout.rb', line 542 def set_snap_children(cs) #:nodoc: @layout.snap.children.each{|c| c.set_snap_sprite(nil) } @layout.snap.children = cs @layout.snap.children.each{|c| c.set_snap_sprite(self) } return self end |
#set_snap_sprite(ss) ⇒ Object
:nodoc:
553 554 555 556 557 558 |
# File 'lib/Miyako/API/layout.rb', line 553 def set_snap_sprite(ss) #:nodoc: @layout.snap.sprite.delete_snap_child(self) if @layout.snap.sprite @layout.snap.sprite = ss @layout.snap.sprite.add_snap_child(self) if @layout.snap.sprite return self end |
#size ⇒ Object Also known as: layout_size
mixin されたインスタンスのサイズ情報(w,hの値)を取得する
- 返却値
-
インスタンスのサイズ情報(@layout[:size]の値)
458 459 460 |
# File 'lib/Miyako/API/layout.rb', line 458 def size return @layout.size end |
#snap(spr = nil) ⇒ Object
インスタンスのレイアウトを指定の別のインスタンスに依存(スナップ)させる
引数 spr で指定したインスタンスのレイアウト情報は、レシーバのレイアウト情報に依存した位置情報を算出される デフォルトでは、画面にスナップされている状態になっている
- spr
-
位置情報を依存させるインスタンス。デフォルトは nil (画面が対象になる)
- 返却値
-
自分自身を返す
502 503 504 505 506 507 508 509 510 |
# File 'lib/Miyako/API/layout.rb', line 502 def snap(spr = nil) if spr @layout.snap.sprite.delete_snap_child(self) if @layout.snap.sprite @layout.snap.sprite = spr spr.add_snap_child(self) end @layout.base = @layout.snap.sprite || Screen return self end |
#top(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させたときの位置を返す
但し、移動したときの位置を返すだけで、自身の位置は変わらない 基準となる空間の内側に設置されたとして算出する ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
349 350 351 352 353 354 |
# File 'lib/Miyako/API/layout.rb', line 349 def top(&margin) base = @layout.base.rect pos = @layout.pos.dup pos[1] = base[1] + (margin ? margin[base[3]].to_i : 0) return pos end |
#top!(&margin) ⇒ Object
mixinしたインスタンスの位置を上端(y軸)に移動させる
設置するとき、基準となる空間の内側に設置される ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
201 202 203 204 205 206 207 208 209 210 |
# File 'lib/Miyako/API/layout.rb', line 201 def top!(&margin) base = @layout.base.rect t = @layout.pos[1] @layout.pos[1] = base[1] + (margin ? margin[base[3]].to_i : 0) update_layout(0, @layout.pos[1]-t) @layout.on_move.each{|block| block.call(self, @layout.pos[0], @layout.pos[1], 0, @layout.pos[1]-t) } return self end |
#update_layout(dx, dy) ⇒ Object
レイアウト情報の値を更新する
- dx
-
位置の変化量(x方向)
- dx
-
位置の変化量(y方向)
479 480 481 482 |
# File 'lib/Miyako/API/layout.rb', line 479 def update_layout(dx, dy) update_layout_position @layout.snap.children.each{|sc| sc.update_layout(dx, dy) } end |
#update_layout_position ⇒ Object
現在の位置情報を別のインスタンス変数に反映させるためのテンプレートメソッド
move や centering などのメソッドを呼び出した際に@layout[:pos]の値を反映させるときに使う (例)@sprite.move!(*@layout[:pos])
71 72 |
# File 'lib/Miyako/API/layout.rb', line 71 def update_layout_position end |
#w ⇒ Object
mixin されたインスタンスの幅を取得する
- 返却値
-
インスタンスの幅(@layout[:size][0]の値)
437 438 439 |
# File 'lib/Miyako/API/layout.rb', line 437 def w return @layout.size[0] end |
#x ⇒ Object
mixin されたインスタンスの x 座標の値を取得する
- 返却値
-
x 座標の値(@layout[:pos][0]の値)
425 426 427 |
# File 'lib/Miyako/API/layout.rb', line 425 def x return @layout.pos[0] end |
#y ⇒ Object
mixin されたインスタンスの y 座標の値を取得する
- 返却値
-
y 座標の値(@layout[:pos][1]の値)
431 432 433 |
# File 'lib/Miyako/API/layout.rb', line 431 def y return @layout.pos[1] end |