Module: Miyako::Layout

Overview

レイアウト管理モジュール

位置情報やスナップ、座標丸めなどを管理する 本モジュールはmixinすることで機能する。 また、mixinする場合は、以下の処理を施すこと 1.クラスのinitializeメソッドの最初にinit_layoutメソッドを呼び出す 2.update_layout_positionメソッドを実装する なお、本モジュールをmixinした場合は、インスタンス変数 @layout が予約される。 @layoutへのユーザアクセスは参照のみ許される。

Instance Method Summary collapse

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_rectObject

領域の最大矩形を取得するメソッドのテンプレート

返却値

Rect構造体インスタンス(デフォルトはnil)



493
494
495
# File 'lib/Miyako/API/layout.rb', line 493

def broad_rect
  return self.rect
end

#centerObject

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

#centeringObject

インスタンスを画面(スナップ先インスタンス)の中心に移動したときの位置を返す

但し、移動したときの位置を返すだけで、自身の位置は変わらない

返却値

移動後の位置(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_layoutObject

レイアウト管理の複写



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_childrenObject

:nodoc:



538
539
540
# File 'lib/Miyako/API/layout.rb', line 538

def get_snap_children #:nodoc:
  return @layout.snap.children
end

#get_snap_spriteObject

:nodoc:



549
550
551
# File 'lib/Miyako/API/layout.rb', line 549

def get_snap_sprite #:nodoc:
  return @layout.snap.sprite
end

#hObject

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

Returns:

  • (Boolean)


524
525
526
# File 'lib/Miyako/API/layout.rb', line 524

def include_snap_child?(spr)
  @layout.snap.children.include?(spr)
end

#init_layoutObject

レイアウト管理の初期化

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_disposeObject

レイアウトに関するインスタンスを解放する

インスタンス変数 @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

#middleObject

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_moveObject

位置移動時に呼び出すブロックを管理する配列にアクセする

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

#posObject 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

#rectObject

インスタンスの位置・大きさを求める

インスタンスの位置・大きさを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_snapObject

すべてのインスタンスとの依存関係を解消する

このメソッドが呼び出されると、スナップ先のインスタンスの位置情報がリセットされることに注意

返却値

自分自身を返す



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

#segmentObject

Segment構造体を生成する

生成される線分は、x方向がy方向がとなる

返却値

生成したSegments構造体インスタンス



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

#sizeObject 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_positionObject

現在の位置情報を別のインスタンス変数に反映させるためのテンプレートメソッド

move や centering などのメソッドを呼び出した際に@layout[:pos]の値を反映させるときに使う (例)@sprite.move!(*@layout[:pos])



71
72
# File 'lib/Miyako/API/layout.rb', line 71

def update_layout_position
end

#wObject

mixin されたインスタンスの幅を取得する

返却値

インスタンスの幅(@layout[:size][0]の値)



437
438
439
# File 'lib/Miyako/API/layout.rb', line 437

def w
  return @layout.size[0]
end

#xObject

mixin されたインスタンスの x 座標の値を取得する

返却値

x 座標の値(@layout[:pos][0]の値)



425
426
427
# File 'lib/Miyako/API/layout.rb', line 425

def x
  return @layout.pos[0]
end

#yObject

mixin されたインスタンスの y 座標の値を取得する

返却値

y 座標の値(@layout[:pos][1]の値)



431
432
433
# File 'lib/Miyako/API/layout.rb', line 431

def y
  return @layout.pos[1]
end