Module: Miyako::Slide

Includes:
Layout
Defined in:
lib/Miyako/EXT/slides.rb

Overview

スライドを構成するモジュール

Mixinして使用する 使用するには、initializeメソッドの定義内で、init_slideメソッドを呼び出す必要がある ただし、インスタンス変数として、@bodyを予約済み

Constant Summary collapse

@@templates =
{ }
@@body =
[]

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Layout

#add_snap_child, #bottom, #bottom!, #broad_rect, #center, #center!, #centering, #centering!, #copy_layout, #delete_snap_child, #get_snap_children, #get_snap_sprite, #h, #include_snap_child?, #init_layout, #layout_dispose, #left, #left!, #middle, #middle!, #move, #move!, #move_to, #move_to!, #on_move, #outside_bottom, #outside_bottom!, #outside_left, #outside_left!, #outside_right, #outside_right!, #outside_top, #outside_top!, #pos, #rect, #relative_move_to, #relative_move_to!, #reset_snap, #right, #right!, #segment, #set_layout_size, #set_snap_children, #set_snap_sprite, #size, #snap, #top, #top!, #update_layout, #update_layout_position, #w, #x, #y

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



104
105
106
107
108
# File 'lib/Miyako/EXT/slides.rb', line 104

def method_missing(m, *args, &block)
  puts "missing: #{m}"
  return @@body[self.__id__].__send__(m, *args, &block) if @@body[self.__id__].methods.include?(m)
  @@body[self.__id__].method_missing(m, *args, &block)
end

Class Method Details

.[](sym = "640x480") ⇒ Object

スライドをテンプレート文字列から作成する

スライドを所定の名称で生成する。利用できるのは以下の7種類 “320x240” 大きさは320x240ピクセル、背景は白色 “640x480” 大きさは640x480ピクセル、背景は白色(デフォルトのテンプレート) “800x600” 大きさは800x600ピクセル、背景は白色 “white” “640x480”と同一 “gray” 大きさは640x480ピクセル、背景は灰色() “black” 大きさは640x480ピクセル、背景は黒色() “half-white” 背景が半分透明な“white”()

sym

テンプレートに対応した文字列

返却値

生成したスライド(Partsクラスインスタンス)



66
67
68
# File 'lib/Miyako/EXT/slides.rb', line 66

def Slide.[](sym = "640x480")
  return Slide.create(@@templates[sym])
end

.[]=(sym, params) ⇒ Object

スライドのテンプレートを追加する

指定できるテンプレートの内容は、Sprite.newメソッドの引数がそのまま使える(Hashクラスインスタンスとして渡す) また、追加として、:colorパラメータを使って塗りつぶす色を指定することが出来る。 (例):color=>Color

sym

テンプレート名

params

生成時のパラメータ



76
77
78
# File 'lib/Miyako/EXT/slides.rb', line 76

def Slide.[]=(sym, params)
  @@templates[sym] = params
end

.create(params = {}) ⇒ Object

スライドを作成する

スライド本体は、Partsクラスのインスタンス

params

あとで書く



35
36
37
38
39
40
41
42
43
# File 'lib/Miyako/EXT/slides.rb', line 35

def Slide.create(params = {})
  tmp = params.dup
  tmp[:size]  ||= Size.new(640, 480)
  tmp[:type]  ||= :ac
  tmp[:color] ||= Color[:white]
  tmp[:empty] ||= false
  return Parts.new(tmp[:size]) if tmp[:empty]
  return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
end

Instance Method Details

#[](title) ⇒ Object

名前に対応したパーツを取得する

title

取得したいパーツに対応したシンボル

返却値

シンボルに対応したパーツ



145
146
147
# File 'lib/Miyako/EXT/slides.rb', line 145

def [](title)
  return @@body[self.__id__][title]
end

#[]=(title, objs) ⇒ Object

パーツに名前を割り付けて設定する

title

取得したいパーツに対応したシンボル

objs

(1)シンボルに対応させるパーツ(スライドにスナップする)

(2)パーツと、スナップさせるパーツの名前(シンボル)

返却値

自分自身を返す



154
155
156
157
# File 'lib/Miyako/EXT/slides.rb', line 154

def []=(title, objs)
  @@body[self.__id__][title] = objs
  return self
end

#__getobj__Object



92
93
94
# File 'lib/Miyako/EXT/slides.rb', line 92

def __getobj__
  @@body[self.__id__]
end

#__setobj__(obj) ⇒ Object



114
115
116
# File 'lib/Miyako/EXT/slides.rb', line 114

def __setobj__(obj)
  @@body[self.__id__] = obj
end

#cloneObject



84
85
86
# File 'lib/Miyako/EXT/slides.rb', line 84

def clone
  @@body[self.__id__].clone
end

#disposeObject

@bodyに登録したオブジェクトとは別に作成していたインスタンスを解放する



263
264
# File 'lib/Miyako/EXT/slides.rb', line 263

def dispose
end

#dupObject



88
89
90
# File 'lib/Miyako/EXT/slides.rb', line 88

def dup
  @@body[self.__id__].dup
end

#hideObject



184
185
186
# File 'lib/Miyako/EXT/slides.rb', line 184

def hide
  slide_hide
end

#init_slide(template) ⇒ Object

スライド情報を初期化する

(例)init_slide(Slide.create(:size=>Size.new(320,240), :color=>)) (例)init_slide(Slide))

template

元となるPartsクラスインスタンス(Slide.createメソッドで作成もしくはSlide.[]で取得できるテンプレートスライド)



122
123
124
125
126
127
# File 'lib/Miyako/EXT/slides.rb', line 122

def init_slide(template)
  init_layout
  @@body[self.__id__] = template
  set_layout_size(*(@@body[self.__id__].size))
  @@body[self.__id__].snap(self)
end

#initialize(obj) ⇒ Object



80
81
82
# File 'lib/Miyako/EXT/slides.rb', line 80

def initialize(obj)
  __setobj(obj)
end

#marshal_dumpObject



96
97
98
# File 'lib/Miyako/EXT/slides.rb', line 96

def marshal_dump
  Marshal.dump(@@body[self.__id__])
end

#marshal_load(obj) ⇒ Object



100
101
102
# File 'lib/Miyako/EXT/slides.rb', line 100

def marshal_load(obj)
  Marshal.load(obj)
end

#render(&block) ⇒ Object

スライドを画面に描画する

単純にslide_renderメソッドを呼び出し、結果を返すだけのテンプレートメソッド このメソッドを記述し直すことにより、柔軟なrenderを行える ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。 ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。

返却値

自分自身を返す



165
166
167
# File 'lib/Miyako/EXT/slides.rb', line 165

def render(&block)
  return slide_render(&block)
end

#render_to(dst, &block) ⇒ Object

スライドを画像に描画する

単純にslide_render_toメソッドを呼び出し、結果を返すだけのテンプレートメソッド このメソッドを記述し直すことにより、柔軟なrenderを行える ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。 ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。

dst

描画先画像(Spriteクラスインスタンスなど)

返却値

自分自身を返す



176
177
178
# File 'lib/Miyako/EXT/slides.rb', line 176

def render_to(dst, &block)
  return slide_render_to(dst, &block)
end

#resetObject



204
205
206
# File 'lib/Miyako/EXT/slides.rb', line 204

def reset
  slide_reset
end

#respond_to?(m) ⇒ Boolean

Returns:

  • (Boolean)


110
111
112
# File 'lib/Miyako/EXT/slides.rb', line 110

def respond_to?(m)
  @@body[self.__id__].respond_to?(m)
end

#showObject



180
181
182
# File 'lib/Miyako/EXT/slides.rb', line 180

def show
  slide_show
end

#slide_bodyObject

スライド本体を返す

スライド本体を直接制御するときに使う

返却値

スライド本体



132
133
134
# File 'lib/Miyako/EXT/slides.rb', line 132

def slide_body
  @@body[self.__id__]
end

#slide_hideObject



232
233
234
235
# File 'lib/Miyako/EXT/slides.rb', line 232

def slide_hide
  @@body[self.__id__].hide if @@body[self.__id__]
  return self
end

#slide_render(&block) ⇒ Object

スライドを画面に描画する

ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。 ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。

返却値

自分自身を返す



212
213
214
215
# File 'lib/Miyako/EXT/slides.rb', line 212

def slide_render(&block)
  @@body[self.__id__].render(&block) if @@body[self.__id__]
  return self
end

#slide_render_to(dst, &block) ⇒ Object

スライドを画像に描画する

ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。 ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。

dst

描画先画像(Spriteクラスインスタンスなど)

返却値

自分自身を返す



222
223
224
225
# File 'lib/Miyako/EXT/slides.rb', line 222

def slide_render_to(dst, &block)
  @@body[self.__id__].render(dst, &block) if @@body[self.__id__]
  return self
end

#slide_resetObject



257
258
259
260
# File 'lib/Miyako/EXT/slides.rb', line 257

def slide_reset
  @@body[self.__id__].reset if @@body[self.__id__]
  return self
end

#slide_showObject



227
228
229
230
# File 'lib/Miyako/EXT/slides.rb', line 227

def slide_show
  @@body[self.__id__].show if @@body[self.__id__]
  return self
end

#slide_startObject



247
248
249
250
# File 'lib/Miyako/EXT/slides.rb', line 247

def slide_start
  @@body[self.__id__].start if @@body[self.__id__]
  return self
end

#slide_stopObject



252
253
254
255
# File 'lib/Miyako/EXT/slides.rb', line 252

def slide_stop
  @@body[self.__id__].stop if @@body[self.__id__]
  return self
end

#slide_updateObject



237
238
239
240
# File 'lib/Miyako/EXT/slides.rb', line 237

def slide_update
  @@body[self.__id__].update if @@body[self.__id__]
  return self
end

#slide_update_animationObject



242
243
244
245
# File 'lib/Miyako/EXT/slides.rb', line 242

def slide_update_animation
  @@body[self.__id__].update_animation if @@body[self.__id__]
  return self
end

#startObject



196
197
198
# File 'lib/Miyako/EXT/slides.rb', line 196

def start
  slide_start
end

#stopObject



200
201
202
# File 'lib/Miyako/EXT/slides.rb', line 200

def stop
  slide_stop
end

#updateObject



188
189
190
# File 'lib/Miyako/EXT/slides.rb', line 188

def update
  slide_update
end

#update_animationObject



192
193
194
# File 'lib/Miyako/EXT/slides.rb', line 192

def update_animation
  slide_update_animation
end