Module: Miyako::Layout
- Included in:
- ChoiceStruct, Choices, 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
- ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#bottom!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#broad_rect ⇒ Object
領域の最大矩形を取得するメソッドのテンプレート 返却値:: Rect構造体インスタンス(デフォルトはnil).
-
#center ⇒ Object
- 返却値
-
移動後の位置(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
- ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#left!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#middle ⇒ Object
- 返却値
-
移動後の位置(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
- ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#outside_bottom!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#outside_left(&margin) ⇒ Object
- ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#outside_left!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#outside_right(&margin) ⇒ Object
- ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#outside_right!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#outside_top(&margin) ⇒ Object
- ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#outside_top!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#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
- ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#right!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#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
- ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
移動後の位置(Position構造体).
-
#top!(&margin) ⇒ Object
- ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅 返却値
-
自分自身.
-
#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:
526 527 528 529 |
# File 'lib/Miyako/API/layout.rb', line 526 def add_snap_child(spr) #:nodoc: @layout.snap.children << spr unless @layout.snap.children.include?(spr) return self end |
#bottom(&margin) ⇒ Object
ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
383 384 385 386 387 388 |
# File 'lib/Miyako/API/layout.rb', line 383 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
ブロックでは、数値を返却することで、下端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
244 245 246 247 248 249 250 251 252 253 |
# File 'lib/Miyako/API/layout.rb', line 244 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)
491 492 493 |
# File 'lib/Miyako/API/layout.rb', line 491 def broad_rect return self.rect end |
#center ⇒ Object
- 返却値
-
移動後の位置(Position構造体)
308 309 310 311 312 313 |
# File 'lib/Miyako/API/layout.rb', line 308 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軸)に移動させる
- 返却値
-
自分自身
151 152 153 154 155 156 157 158 159 160 |
# File 'lib/Miyako/API/layout.rb', line 151 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構造体)
406 407 408 409 410 411 412 |
# File 'lib/Miyako/API/layout.rb', line 406 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
インスタンスを画面(スナップ先インスタンス)の中心に移動する
- 返却値
-
自分自身を返す
273 274 275 276 277 |
# File 'lib/Miyako/API/layout.rb', line 273 def centering! center! middle! return self end |
#copy_layout ⇒ Object
レイアウト管理の複写
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/Miyako/API/layout.rb', line 83 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:
531 532 533 534 |
# File 'lib/Miyako/API/layout.rb', line 531 def delete_snap_child(spr) #:nodoc: spr.each{|s| @layout.snap.children.delete(s) } return self end |
#get_snap_children ⇒ Object
:nodoc:
536 537 538 |
# File 'lib/Miyako/API/layout.rb', line 536 def get_snap_children #:nodoc: return @layout.snap.children end |
#get_snap_sprite ⇒ Object
:nodoc:
547 548 549 |
# File 'lib/Miyako/API/layout.rb', line 547 def get_snap_sprite #:nodoc: return @layout.snap.sprite end |
#h ⇒ Object
mixin されたインスタンスの高さを取得する
- 返却値
-
インスタンスの高さ(@layout[:size][1]の値)
441 442 443 |
# File 'lib/Miyako/API/layout.rb', line 441 def h return @layout.size[1] end |
#include_snap_child?(spr) ⇒ Boolean
すでに指定したスプライトがスナップ元として登録されているかどうか確認する
- 返却値
-
スナップ元として登録されていればtrue、登録されていなければfalse
522 523 524 |
# File 'lib/Miyako/API/layout.rb', line 522 def include_snap_child?(spr) @layout.snap.children.include?(spr) end |
#init_layout ⇒ Object
レイアウト管理の初期化
mixin したクラスの initialize メソッド内で必ず呼び出しておくこと
73 74 75 76 77 78 79 80 |
# File 'lib/Miyako/API/layout.rb', line 73 def init_layout @layout = LayoutStruct.new @layout.pos = Point.new(0, 0) @layout.size = Size.new(0, 0) @layout.base = Screen @layout.snap = LayoutSnapStruct.new(nil, Array.new) @layout.on_move = [] end |
#layout_dispose ⇒ Object
レイアウトに関するインスタンスを解放する
インスタンス変数 @layout 内のインスタンスを解放する
416 417 418 419 |
# File 'lib/Miyako/API/layout.rb', line 416 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
ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
285 286 287 288 289 290 |
# File 'lib/Miyako/API/layout.rb', line 285 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
ブロックでは、数値を返却することで、左端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/Miyako/API/layout.rb', line 121 def left!(&margin) base = @layout.base.rect t = @layout.pos[0] @layout.pos[0] = base[0] + (margin ? margin[base[2]].to_i : 0) @layout.snap.children.each{|c| c.left(&margin) } 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
- 返却値
-
移動後の位置(Position構造体)
370 371 372 373 374 375 |
# File 'lib/Miyako/API/layout.rb', line 370 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軸)に移動させる
- 返却値
-
自分自身
228 229 230 231 232 233 234 235 236 237 |
# File 'lib/Miyako/API/layout.rb', line 228 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 座標の移動量
- 返却値
-
更新後の値を設定したインスタンス
588 589 590 591 |
# File 'lib/Miyako/API/layout.rb', line 588 def move(x, y) ret = @layout.pos.dup ret.move!(x,y) end |
#move!(x, y) ⇒ Object
インスタンスを指定の移動量で移動させる
ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
- x
-
x 座標の移動量
- y
-
y 座標の移動量
- 返却値
-
自分自身を返す
563 564 |
# File 'lib/Miyako/API/layout.rb', line 563 def move!(x, y) end |
#move_to(x, y) ⇒ Object
インスタンスを指定の位置に移動させた位置を返す
引数で指定したぶん移動させたときの位置を新しくインスタンスを生成して返す 自分自身の位置は変わらない
- x
-
移動後の x 座標の位置
- y
-
移動後の y 座標の位置
- 返却値
-
更新後の値を設定したインスタンス
599 600 601 602 |
# File 'lib/Miyako/API/layout.rb', line 599 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 座標の位置
- 返却値
-
自分自身を返す
571 572 |
# File 'lib/Miyako/API/layout.rb', line 571 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の各メソッド。
- 返却値
-
ブロック管理配列
112 113 114 |
# File 'lib/Miyako/API/layout.rb', line 112 def on_move return @layout.on_move end |
#outside_bottom(&margin) ⇒ Object
ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
396 397 398 399 400 401 |
# File 'lib/Miyako/API/layout.rb', line 396 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
ブロックでは、数値を返却することで、下端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
260 261 262 263 264 265 266 267 268 269 |
# File 'lib/Miyako/API/layout.rb', line 260 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
ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
298 299 300 301 302 303 |
# File 'lib/Miyako/API/layout.rb', line 298 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
ブロックでは、数値を返却することで、左端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
138 139 140 141 142 143 144 145 146 147 |
# File 'lib/Miyako/API/layout.rb', line 138 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
ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
334 335 336 337 338 339 |
# File 'lib/Miyako/API/layout.rb', line 334 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
ブロックでは、数値を返却することで、右端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
183 184 185 186 187 188 189 190 191 192 |
# File 'lib/Miyako/API/layout.rb', line 183 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
ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
360 361 362 363 364 365 |
# File 'lib/Miyako/API/layout.rb', line 360 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
ブロックでは、数値を返却することで、上端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
215 216 217 218 219 220 221 222 223 224 |
# File 'lib/Miyako/API/layout.rb', line 215 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]の値)
447 448 449 |
# File 'lib/Miyako/API/layout.rb', line 447 def pos return @layout.pos end |
#rect ⇒ Object
インスタンスの位置・大きさを求める
インスタンスの位置・大きさをRect構造体で求める
- 返却値
-
Rect構造体
485 486 487 |
# File 'lib/Miyako/API/layout.rb', line 485 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構造体)
610 611 612 613 |
# File 'lib/Miyako/API/layout.rb', line 610 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 座標の位置
- 返却値
-
自分自身を返す
579 580 |
# File 'lib/Miyako/API/layout.rb', line 579 def relative_move_to!(x, y) end |
#reset_snap ⇒ Object
- 返却値
-
自分自身を返す
513 514 515 516 517 518 |
# File 'lib/Miyako/API/layout.rb', line 513 def reset_snap @layout.snap.sprite = nil @layout.base = Screen @layout.snap.children = Array.new return self end |
#right(&margin) ⇒ Object
ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
321 322 323 324 325 326 |
# File 'lib/Miyako/API/layout.rb', line 321 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
ブロックでは、数値を返却することで、右端からのマージンを設定できる(負の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
167 168 169 170 171 172 173 174 175 176 |
# File 'lib/Miyako/API/layout.rb', line 167 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
618 619 620 621 622 623 |
# File 'lib/Miyako/API/layout.rb', line 618 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 の値)
- 返却値
-
自分自身を返す
468 469 470 471 472 |
# File 'lib/Miyako/API/layout.rb', line 468 def set_layout_size(w, h) @layout.size[0] = w @layout.size[1] = h return self end |
#set_snap_children(cs) ⇒ Object
:nodoc:
540 541 542 543 544 545 |
# File 'lib/Miyako/API/layout.rb', line 540 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:
551 552 553 554 555 556 |
# File 'lib/Miyako/API/layout.rb', line 551 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]の値)
456 457 458 |
# File 'lib/Miyako/API/layout.rb', line 456 def size return @layout.size end |
#snap(spr = nil) ⇒ Object
インスタンスのレイアウトを指定の別のインスタンスに依存(スナップ)させる
引数 spr で指定したインスタンスのレイアウト情報は、レシーバのレイアウト情報に依存した位置情報を算出される デフォルトでは、画面にスナップされている状態になっている
- spr
-
位置情報を依存させるインスタンス。デフォルトは nil (画面が対象になる)
- 返却値
-
自分自身を返す
500 501 502 503 504 505 506 507 508 |
# File 'lib/Miyako/API/layout.rb', line 500 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
ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
移動後の位置(Position構造体)
347 348 349 350 351 352 |
# File 'lib/Miyako/API/layout.rb', line 347 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
ブロックでは、数値を返却することで、上端からのマージンを設定できる(正の方向へ移動) ブロック引数は、自分自身の幅
- 返却値
-
自分自身
199 200 201 202 203 204 205 206 207 208 |
# File 'lib/Miyako/API/layout.rb', line 199 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方向)
477 478 479 480 |
# File 'lib/Miyako/API/layout.rb', line 477 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])
68 69 |
# File 'lib/Miyako/API/layout.rb', line 68 def update_layout_position end |
#w ⇒ Object
mixin されたインスタンスの幅を取得する
- 返却値
-
インスタンスの幅(@layout[:size][0]の値)
435 436 437 |
# File 'lib/Miyako/API/layout.rb', line 435 def w return @layout.size[0] end |
#x ⇒ Object
mixin されたインスタンスの x 座標の値を取得する
- 返却値
-
x 座標の値(@layout[:pos][0]の値)
423 424 425 |
# File 'lib/Miyako/API/layout.rb', line 423 def x return @layout.pos[0] end |
#y ⇒ Object
mixin されたインスタンスの y 座標の値を取得する
- 返却値
-
y 座標の値(@layout[:pos][1]の値)
429 430 431 |
# File 'lib/Miyako/API/layout.rb', line 429 def y return @layout.pos[1] end |