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



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

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クラスインスタンス)



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

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

.[]=(sym, params) ⇒ Object

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

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

sym

テンプレート名

params

生成時のパラメータ



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

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

.create(params = {}) ⇒ Object

スライドを作成する

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

params

あとで書く



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 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]
  if tmp[:file]
    sprite = Sprite.new(:file=>tmp[:file], :type=>tmp[:type])
    if params[:size]
      sprite.ow = size[0]
      sprite.oh = size[1]
    end
    return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = sprite}
  end
  return Parts.new(tmp[:sprite].size).tap{|obj| obj[:___base___] = tmp[:sprite]} if tmp[:sprite]
  return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
end

Instance Method Details

#[](title) ⇒ Object

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

title

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

返却値

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



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

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

#[]=(title, objs) ⇒ Object

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

title

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

objs

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

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

返却値

自分自身を返す



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

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

#__getobj__Object



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

def __getobj__
  @@body[self.__id__]
end

#__setobj__(obj) ⇒ Object



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

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

#cloneObject



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

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

#disposeObject

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



272
273
# File 'lib/Miyako/EXT/slides.rb', line 272

def dispose
end

#dupObject



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

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

#hideObject



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

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.[]で取得できるテンプレートスライド)



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

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



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

def initialize(obj)
  __setobj(obj)
end

#marshal_dumpObject



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

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

#marshal_load(obj) ⇒ Object



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

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

#render(&block) ⇒ Object

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

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

返却値

自分自身を返す



174
175
176
# File 'lib/Miyako/EXT/slides.rb', line 174

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

#render_to(dst, &block) ⇒ Object

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

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

dst

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

返却値

自分自身を返す



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

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

#resetObject



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

def reset
  slide_reset
end

#respond_to?(m) ⇒ Boolean

Returns:

  • (Boolean)


119
120
121
# File 'lib/Miyako/EXT/slides.rb', line 119

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

#showObject



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

def show
  slide_show
end

#slide_bodyObject

スライド本体を返す

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

返却値

スライド本体



141
142
143
# File 'lib/Miyako/EXT/slides.rb', line 141

def slide_body
  @@body[self.__id__]
end

#slide_hideObject



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

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

#slide_render(&block) ⇒ Object

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

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

返却値

自分自身を返す



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

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クラスインスタンスなど)

返却値

自分自身を返す



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

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

#slide_resetObject



266
267
268
269
# File 'lib/Miyako/EXT/slides.rb', line 266

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

#slide_showObject



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

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

#slide_startObject



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

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

#slide_stopObject



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

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

#slide_updateObject



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

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

#slide_update_animationObject



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

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

#startObject



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

def start
  slide_start
end

#stopObject



209
210
211
# File 'lib/Miyako/EXT/slides.rb', line 209

def stop
  slide_stop
end

#updateObject



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

def update
  slide_update
end

#update_animationObject



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

def update_animation
  slide_update_animation
end