cyross-ruby-miyako 2.0.5.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. data/README +1092 -929
  2. data/Rakefile +7 -7
  3. data/defines.h +144 -144
  4. data/extern.h +29 -29
  5. data/install_miyako.rb +87 -87
  6. data/lib/Miyako/API/audio.rb +572 -198
  7. data/lib/Miyako/API/basic_data.rb +825 -573
  8. data/lib/Miyako/API/bitmap.rb +534 -507
  9. data/lib/Miyako/API/choices.rb +481 -475
  10. data/lib/Miyako/API/collision.rb +486 -460
  11. data/lib/Miyako/API/diagram.rb +586 -561
  12. data/lib/Miyako/API/drawing.rb +151 -151
  13. data/lib/Miyako/API/exceptions.rb +105 -0
  14. data/lib/Miyako/API/fixedmap.rb +462 -428
  15. data/lib/Miyako/API/font.rb +430 -403
  16. data/lib/Miyako/API/input.rb +456 -447
  17. data/lib/Miyako/API/layout.rb +636 -433
  18. data/lib/Miyako/API/map.rb +583 -529
  19. data/lib/Miyako/API/map_event.rb +222 -198
  20. data/lib/Miyako/API/modules.rb +357 -109
  21. data/lib/Miyako/API/movie.rb +166 -154
  22. data/lib/Miyako/API/parts.rb +276 -189
  23. data/lib/Miyako/API/plane.rb +205 -166
  24. data/lib/Miyako/API/screen.rb +341 -325
  25. data/lib/Miyako/API/shape.rb +443 -443
  26. data/lib/Miyako/API/sprite.rb +771 -752
  27. data/lib/Miyako/API/sprite_animation.rb +490 -481
  28. data/lib/Miyako/API/sprite_list.rb +1135 -0
  29. data/lib/Miyako/API/spriteunit.rb +168 -147
  30. data/lib/Miyako/API/story.rb +350 -300
  31. data/lib/Miyako/API/textbox.rb +770 -725
  32. data/lib/Miyako/API/utility.rb +419 -388
  33. data/lib/Miyako/API/viewport.rb +189 -139
  34. data/lib/Miyako/API/yuki.rb +1226 -996
  35. data/lib/Miyako/EXT/miyako_cairo.rb +62 -62
  36. data/lib/Miyako/EXT/raster_scroll.rb +138 -138
  37. data/lib/Miyako/EXT/slides.rb +157 -157
  38. data/lib/Miyako/miyako.rb +201 -171
  39. data/lib/Miyako/miyako_require_only.rb +35 -0
  40. data/miyako_basicdata.c +590 -590
  41. data/miyako_bitmap.c +1225 -1225
  42. data/miyako_collision.c +403 -403
  43. data/miyako_drawing.c +187 -187
  44. data/miyako_font.c +334 -334
  45. data/miyako_hsv.c +830 -830
  46. data/miyako_input_audio.c +254 -0
  47. data/miyako_layout.c +191 -191
  48. data/miyako_no_katana.c +1078 -1074
  49. data/miyako_sprite2.c +431 -0
  50. data/miyako_transform.c +438 -438
  51. data/miyako_utility.c +288 -288
  52. data/sample/Animation1/m1ku.rb +68 -68
  53. data/sample/Animation2/lex.rb +96 -96
  54. data/sample/Diagram_sample/diagram_sample_yuki2.rb +328 -386
  55. data/sample/Room3/blue.rb +297 -297
  56. data/sample/Room3/ending.rb +180 -180
  57. data/sample/Room3/green.rb +220 -220
  58. data/sample/Room3/main.rb +119 -119
  59. data/sample/Room3/main_component.rb +59 -59
  60. data/sample/Room3/red.rb +227 -227
  61. data/sample/Room3/room3.rb +25 -27
  62. data/sample/Room3/title.rb +184 -184
  63. data/sample/ball_action_sample.rb +204 -204
  64. data/sample/blit_rop.rb +70 -70
  65. data/sample/cairo_sample.rb +25 -25
  66. data/sample/circle_collision_test.rb +66 -66
  67. data/sample/collision_test.rb +33 -33
  68. data/sample/collision_test2.rb +108 -108
  69. data/sample/fixed_map_test/fixed_map_sample.rb +140 -140
  70. data/sample/fixed_map_test/readme.txt +72 -72
  71. data/sample/map_test/chara.rb +58 -58
  72. data/sample/map_test/main_parts.rb +69 -69
  73. data/sample/map_test/main_scene.rb +153 -153
  74. data/sample/map_test/map_manager.rb +75 -75
  75. data/sample/map_test/map_test.rb +23 -23
  76. data/sample/map_test/oasis.rb +71 -71
  77. data/sample/map_test/readme.txt +89 -89
  78. data/sample/map_test/route.rb +157 -157
  79. data/sample/map_test/town.rb +74 -74
  80. data/sample/polygon_test.rb +35 -35
  81. data/sample/rasterscroll.rb +24 -24
  82. data/sample/takahashi.rb +42 -42
  83. data/sample/textbox_sample.rb +189 -189
  84. data/sample/transform.rb +54 -54
  85. data/sample/utility_test.rb +73 -73
  86. data/sample/utility_test2.rb +61 -61
  87. data/sample/utility_test3.rb +64 -64
  88. data/sample/utility_test4.rb +73 -73
  89. data/uninstall_miyako.rb +19 -19
  90. data/win/miyako_no_katana.so +0 -0
  91. metadata +7 -2
@@ -1,62 +1,62 @@
1
- # -*- encoding: utf-8 -*-
2
- # Miyako Extension Cairo-Miyako interface
3
- =begin
4
- Miyako Extention Library v2.0
5
- Copyright (C) 2007-2008 Cyross Makoto
6
-
7
- This library is free software; you can redistribute it and/or
8
- modify it under the terms of the GNU Lesser General Public
9
- License as published by the Free Software Foundation; either
10
- version 2.1 of the License, or (at your option) any later version.
11
-
12
- This library is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
- Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public
18
- License along with this library; if not, write to the Free Software
19
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- =end
21
-
22
- begin
23
- loaded = false
24
- require 'cairo'
25
- rescue LoadError
26
- begin
27
- require 'rubygems'
28
- require 'cairo'
29
- loaded = true
30
- rescue LoadError
31
- raise Miyako::MiyakoError, "Sorry, Cairo-Miyako Interface has rcairo." unless loaded
32
- end
33
- end
34
-
35
- module Miyako
36
- #==MiyakoのSpriteクラスのインスタンスとCairoのImageSurfaceクラスのインスタンスとの相互変換モジュール
37
- #要rcairo1.8以降
38
- module MiyakoCairo
39
- #===SpriteインスタンスをCairoのImageSurfaceに変換
40
- #変換したCairo::ImageSurfaceインスタンスは、32ビット(Cairo::Format::ARGB32)の画像を持つ
41
- #_sprite_:: 変換元Spriteインスタンス
42
- #返却値:: 変換したCairo::ImageSurfaceインスタンス
43
- def MiyakoCairo.to_cairo_surface(sprite)
44
- return Cairo::ImageSurface.new(sprite.bitmap.pixels, Cairo::Format::ARGB32, sprite.w, sprite.h, sprite.w * 4)
45
- end
46
-
47
- #===CairoのImageSurfaceをSpriteインスタンスに変換
48
- #変換したSpriteインスタンスは、:acタイプ(但し元画像がCairo::Format::RGB24の時は:asタイプ)の画像を持つ
49
- #_surface_:: 変換元Cairo::ImageSurfaceインスタンス
50
- #返却値:: 変換したSpriteインスタンス
51
- def MiyakoCairo.to_sprite(surface)
52
- # エンディアン判別
53
- if [1].pack("V*") == [1].pack("L*") # リトルエンディアン?
54
- bitmap = SDL::Surface.new_from(surface.data, surface.width, surface.height, 32, surface.stride, 0xff0000, 0xff00, 0xff, 0xff000000)
55
- else # ビッグエンディアン
56
- bitmap = SDL::Surface.new_from(surface.data, surface.width, surface.height, 32, surface.stride, 0xff00, 0xff0000, 0xff000000, 0xff)
57
- end
58
- return Sprite.new(:bitmap => bitmap, :type => :as) if surface.format == Cairo::Format::RGB24
59
- return Sprite.new(:bitmap => bitmap, :type => :ac)
60
- end
61
- end
62
- end
1
+ # -*- encoding: utf-8 -*-
2
+ # Miyako Extension Cairo-Miyako interface
3
+ =begin
4
+ Miyako Extention Library v2.1
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
+
7
+ This library is free software; you can redistribute it and/or
8
+ modify it under the terms of the GNU Lesser General Public
9
+ License as published by the Free Software Foundation; either
10
+ version 2.1 of the License, or (at your option) any later version.
11
+
12
+ This library is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public
18
+ License along with this library; if not, write to the Free Software
19
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ =end
21
+
22
+ begin
23
+ loaded = false
24
+ require 'cairo'
25
+ rescue LoadError
26
+ begin
27
+ require 'rubygems'
28
+ require 'cairo'
29
+ loaded = true
30
+ rescue LoadError
31
+ raise Miyako::MiyakoError, "Sorry, Cairo-Miyako Interface has rcairo." unless loaded
32
+ end
33
+ end
34
+
35
+ module Miyako
36
+ #==MiyakoのSpriteクラスのインスタンスとCairoのImageSurfaceクラスのインスタンスとの相互変換モジュール
37
+ #要rcairo1.8以降
38
+ module MiyakoCairo
39
+ #===SpriteインスタンスをCairoのImageSurfaceに変換
40
+ #変換したCairo::ImageSurfaceインスタンスは、32ビット(Cairo::Format::ARGB32)の画像を持つ
41
+ #_sprite_:: 変換元Spriteインスタンス
42
+ #返却値:: 変換したCairo::ImageSurfaceインスタンス
43
+ def MiyakoCairo.to_cairo_surface(sprite)
44
+ return Cairo::ImageSurface.new(sprite.bitmap.pixels, Cairo::Format::ARGB32, sprite.w, sprite.h, sprite.w * 4)
45
+ end
46
+
47
+ #===CairoのImageSurfaceをSpriteインスタンスに変換
48
+ #変換したSpriteインスタンスは、:acタイプ(但し元画像がCairo::Format::RGB24の時は:asタイプ)の画像を持つ
49
+ #_surface_:: 変換元Cairo::ImageSurfaceインスタンス
50
+ #返却値:: 変換したSpriteインスタンス
51
+ def MiyakoCairo.to_sprite(surface)
52
+ # エンディアン判別
53
+ if [1].pack("V*") == [1].pack("L*") # リトルエンディアン?
54
+ bitmap = SDL::Surface.new_from(surface.data, surface.width, surface.height, 32, surface.stride, 0xff0000, 0xff00, 0xff, 0xff000000)
55
+ else # ビッグエンディアン
56
+ bitmap = SDL::Surface.new_from(surface.data, surface.width, surface.height, 32, surface.stride, 0xff00, 0xff0000, 0xff000000, 0xff)
57
+ end
58
+ return Sprite.new(:bitmap => bitmap, :type => :as) if surface.format == Cairo::Format::RGB24
59
+ return Sprite.new(:bitmap => bitmap, :type => :ac)
60
+ end
61
+ end
62
+ end
@@ -1,138 +1,138 @@
1
- # -*- encoding: utf-8 -*-
2
- # Miyako Extension Raster Scroll
3
- =begin
4
- Miyako Extention Library v2.0
5
- Copyright (C) 2007-2008 Cyross Makoto
6
-
7
- This library is free software; you can redistribute it and/or
8
- modify it under the terms of the GNU Lesser General Public
9
- License as published by the Free Software Foundation; either
10
- version 2.1 of the License, or (at your option) any later version.
11
-
12
- This library is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
- Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public
18
- License along with this library; if not, write to the Free Software
19
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- =end
21
-
22
- module Miyako
23
- #==ラスタスクロール実行クラス
24
- #波の様に揺れる(疑似)ラスタスクロールを行うクラス
25
- #波はサイン波で構成される
26
- class RasterScroll
27
- #===インスタンスを作成する
28
- #ラスタスクロール対象のスプライトを登録する
29
- #_sspr_:: ラスタスクロール対象スプライト
30
- #返却値:: 作成したインスタンス
31
- def initialize(sspr)
32
- @src = sspr
33
- @lines = 0
34
- @h = @src.h
35
- @size = 0
36
- @sangle = 0
37
- @dangle = 0
38
- @fade_out = false
39
- @fo_size = 0
40
- @effecting = false
41
- end
42
-
43
- #===ラスタスクロールを開始する
44
- #ラスタスクロール実行用に設定する引数は以下の通り
45
- #:lines -> ライン数(:lines=>3を指定すると、3ラインずつラスタスクロールを行う)。デフォルトは1(ライン)
46
- #:size -> 最大振幅数(:size=>20を指定すると、最大20ピクセルの高さの波となる)。デフォルトは4(ピクセル)
47
- #:start_angle -> 開始角度(一番上のラインでの振幅角度(ラジアンではなく角度なのに注意!))。デフォルトは0(度)
48
- #:distance -> 角度の変化量(ラインごとの角度の変化量。:distance=>1のときは、1度ずつ変化させる)。デフォルトは1(度)
49
- #:wait -> 変化させる間隔(WaitCounterクラスのインスタンス)。デフォルトは0.1秒間隔
50
- #_params_:: ラスタスクロール情報引数
51
- #返却値:: 自分自身を返す
52
- def start(params)
53
- @lines = params[:lines] || 1
54
- @size = params[:size] || 4
55
- @sangle = params[:start_angle] || 0
56
- @dangle = params[:distance] || 1
57
- @wait = params[:wait] || WaitCounter.new(0.1)
58
- @h = @h / @lines
59
- @fade_out = false
60
- @fo_size = 0
61
- @effecting = true
62
- @wait.start
63
- return self
64
- end
65
-
66
- #===ラスタスクロール処理を更新する
67
- #返却値:: 自分自身を返す
68
- def update
69
- return self unless @effecting
70
- if @wait.finish?
71
- @sangle = (@sangle + @dangle) % 360
72
- @wait.start
73
- if @fade_out
74
- return self unless @fo_wait.finish?
75
- @size = @size - @fo_size
76
- @fo_wait.start
77
- if @size <= 0
78
- @effecting = false
79
- @fade_out = false
80
- end
81
- end
82
- end
83
- return self
84
- end
85
-
86
- #===ラスタスクロールの実行状態を問い合わせる
87
- #返却値:: ラスタスクロール中の時はtrueを返す
88
- def effecting?
89
- return @effecting
90
- end
91
-
92
- #===ラスタスクロールの実行状態を問い合わせる
93
- #返却値:: ラスタスクロール中の時はtrueを返す
94
- def fade_out?
95
- return @fade_out
96
- end
97
-
98
- #===ラスタスクロールを停止する
99
- def stop
100
- @wait.stop
101
- @fo_size.stop if @fo_size
102
- @effecting = false
103
- @fade_out = false
104
- end
105
-
106
- #===ラスタスクロールを画面に描画する
107
- def render
108
- angle = @sangle
109
- @h.times{|y|
110
- rsx = @size * Math.sin(angle)
111
- @src.render{|src, dst| src.x += rsx; src.y += y * @lines; src.oy += y * @lines; src.oh = @lines }
112
- angle = angle + @dangle
113
- }
114
- end
115
-
116
- #===ラスタスクロールを画像に描画する
117
- #_dst_:: 描画先画像
118
- def render_to(dst)
119
- @angle = @sangle
120
- @h.times{|y|
121
- rsx = @size * Math.sin(@angle)
122
- @src.render_to(dst){|src, dst| src.x += rsx; src.y += y * @lines; src.oy += y * @lines; src.oh = @lines }
123
- @angle = @angle + @dangle
124
- }
125
- end
126
-
127
- #===ラスタスクロールをフェードアウトさせる
128
- #引数fwに与えられた間隔で振幅が減っていき(減る量は引数fsで与えられた値)、振幅がゼロになると終了する
129
- #_fs_:: フェードアウトの変化量
130
- #_fw_:: フェードアウトの変化を待つカウント(WaitCounterクラスインスタンス)
131
- def fade_out(fs, fw)
132
- @fo_size = fs
133
- @fo_wait = fw
134
- @fo_wait.start
135
- @fade_out = true
136
- end
137
- end
138
- end
1
+ # -*- encoding: utf-8 -*-
2
+ # Miyako Extension Raster Scroll
3
+ =begin
4
+ Miyako Extention Library v2.1
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
+
7
+ This library is free software; you can redistribute it and/or
8
+ modify it under the terms of the GNU Lesser General Public
9
+ License as published by the Free Software Foundation; either
10
+ version 2.1 of the License, or (at your option) any later version.
11
+
12
+ This library is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public
18
+ License along with this library; if not, write to the Free Software
19
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ =end
21
+
22
+ module Miyako
23
+ #==ラスタスクロール実行クラス
24
+ #波の様に揺れる(疑似)ラスタスクロールを行うクラス
25
+ #波はサイン波で構成される
26
+ class RasterScroll
27
+ #===インスタンスを作成する
28
+ #ラスタスクロール対象のスプライトを登録する
29
+ #_sspr_:: ラスタスクロール対象スプライト
30
+ #返却値:: 作成したインスタンス
31
+ def initialize(sspr)
32
+ @src = sspr
33
+ @lines = 0
34
+ @h = @src.h
35
+ @size = 0
36
+ @sangle = 0
37
+ @dangle = 0
38
+ @fade_out = false
39
+ @fo_size = 0
40
+ @effecting = false
41
+ end
42
+
43
+ #===ラスタスクロールを開始する
44
+ #ラスタスクロール実行用に設定する引数は以下の通り
45
+ #:lines -> ライン数(:lines=>3を指定すると、3ラインずつラスタスクロールを行う)。デフォルトは1(ライン)
46
+ #:size -> 最大振幅数(:size=>20を指定すると、最大20ピクセルの高さの波となる)。デフォルトは4(ピクセル)
47
+ #:start_angle -> 開始角度(一番上のラインでの振幅角度(ラジアンではなく角度なのに注意!))。デフォルトは0(度)
48
+ #:distance -> 角度の変化量(ラインごとの角度の変化量。:distance=>1のときは、1度ずつ変化させる)。デフォルトは1(度)
49
+ #:wait -> 変化させる間隔(WaitCounterクラスのインスタンス)。デフォルトは0.1秒間隔
50
+ #_params_:: ラスタスクロール情報引数
51
+ #返却値:: 自分自身を返す
52
+ def start(params)
53
+ @lines = params[:lines] || 1
54
+ @size = params[:size] || 4
55
+ @sangle = params[:start_angle] || 0
56
+ @dangle = params[:distance] || 1
57
+ @wait = params[:wait] || WaitCounter.new(0.1)
58
+ @h = @h / @lines
59
+ @fade_out = false
60
+ @fo_size = 0
61
+ @effecting = true
62
+ @wait.start
63
+ return self
64
+ end
65
+
66
+ #===ラスタスクロール処理を更新する
67
+ #返却値:: 自分自身を返す
68
+ def update
69
+ return self unless @effecting
70
+ if @wait.finish?
71
+ @sangle = (@sangle + @dangle) % 360
72
+ @wait.start
73
+ if @fade_out
74
+ return self unless @fo_wait.finish?
75
+ @size = @size - @fo_size
76
+ @fo_wait.start
77
+ if @size <= 0
78
+ @effecting = false
79
+ @fade_out = false
80
+ end
81
+ end
82
+ end
83
+ return self
84
+ end
85
+
86
+ #===ラスタスクロールの実行状態を問い合わせる
87
+ #返却値:: ラスタスクロール中の時はtrueを返す
88
+ def effecting?
89
+ return @effecting
90
+ end
91
+
92
+ #===ラスタスクロールの実行状態を問い合わせる
93
+ #返却値:: ラスタスクロール中の時はtrueを返す
94
+ def fade_out?
95
+ return @fade_out
96
+ end
97
+
98
+ #===ラスタスクロールを停止する
99
+ def stop
100
+ @wait.stop
101
+ @fo_size.stop if @fo_size
102
+ @effecting = false
103
+ @fade_out = false
104
+ end
105
+
106
+ #===ラスタスクロールを画面に描画する
107
+ def render
108
+ angle = @sangle
109
+ @h.times{|y|
110
+ rsx = @size * Math.sin(angle)
111
+ @src.render{|src, dst| src.x += rsx; src.y += y * @lines; src.oy += y * @lines; src.oh = @lines }
112
+ angle = angle + @dangle
113
+ }
114
+ end
115
+
116
+ #===ラスタスクロールを画像に描画する
117
+ #_dst_:: 描画先画像
118
+ def render_to(dst)
119
+ @angle = @sangle
120
+ @h.times{|y|
121
+ rsx = @size * Math.sin(@angle)
122
+ @src.render_to(dst){|src, dst| src.x += rsx; src.y += y * @lines; src.oy += y * @lines; src.oh = @lines }
123
+ @angle = @angle + @dangle
124
+ }
125
+ end
126
+
127
+ #===ラスタスクロールをフェードアウトさせる
128
+ #引数fwに与えられた間隔で振幅が減っていき(減る量は引数fsで与えられた値)、振幅がゼロになると終了する
129
+ #_fs_:: フェードアウトの変化量
130
+ #_fw_:: フェードアウトの変化を待つカウント(WaitCounterクラスインスタンス)
131
+ def fade_out(fs, fw)
132
+ @fo_size = fs
133
+ @fo_wait = fw
134
+ @fo_wait.start
135
+ @fade_out = true
136
+ end
137
+ end
138
+ end
@@ -1,157 +1,157 @@
1
- # -*- encoding: utf-8 -*-
2
- # Miyako Extension
3
- =begin
4
- Miyako Extention Library v2.0
5
- Copyright (C) 2007-2008 Cyross Makoto
6
-
7
- This library is free software; you can redistribute it and/or
8
- modify it under the terms of the GNU Lesser General Public
9
- License as published by the Free Software Foundation; either
10
- version 2.1 of the License, or (at your option) any later version.
11
-
12
- This library is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
- Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public
18
- License along with this library; if not, write to the Free Software
19
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
- =end
21
-
22
- module Miyako
23
- #==スライドを構成するモジュール
24
- #Mixinして使用する
25
- #使用するには、initializeメソッドの定義内で、init_slideメソッドを呼び出す必要がある
26
- #ただし、インスタンス変数として、@bodyを予約済み
27
- module Slide
28
- include Layout
29
- extend Forwardable
30
-
31
- @@templates = { }
32
-
33
- #===スライドを作成する
34
- #スライド本体は、Partsクラスのインスタンス
35
- #_params_:: あとで書く
36
- def Slide.create(params = {})
37
- tmp = params.dup
38
- tmp[:size] ||= Size.new(640, 480)
39
- tmp[:type] ||= :ac
40
- tmp[:color] ||= Color[:white]
41
- return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
42
- end
43
-
44
- @@templates["320x240"] = {:size=>Size.new(320,240)}
45
- @@templates["640x480"] = {}
46
- @@templates["800x600"] = {:size=>Size.new(800,600)}
47
- @@templates["white"] = {:color=>[255,255,255,255]}
48
- @@templates["gray"] = {:color=>[128,128,128,255]}
49
- @@templates["black"] = {:color=>[0,0,0,255]}
50
- @@templates["half-white"] = {:color=>[255,255,255,128]}
51
-
52
- #===スライドをテンプレート文字列から作成する
53
- #スライドを所定の名称で生成する。利用できるのは以下の7種類
54
- #"320x240" 大きさは320x240ピクセル、背景は白色
55
- #"640x480" 大きさは640x480ピクセル、背景は白色(デフォルトのテンプレート)
56
- #"800x600" 大きさは800x600ピクセル、背景は白色
57
- #"white" "640x480"と同一
58
- #"gray" 大きさは640x480ピクセル、背景は灰色([128,128,128,255])
59
- #"black" 大きさは640x480ピクセル、背景は黒色([0,0,0,255])
60
- #"half-white" 背景が半分透明な"white"([255,255,255,128])
61
- #_sym_:: テンプレートに対応した文字列
62
- #返却値:: 生成したスライド(Partsクラスインスタンス)
63
- def Slide.[](sym = "640x480")
64
- return Slide.create(@@templates[sym])
65
- end
66
-
67
- #===スライドのテンプレートを追加する
68
- #指定できるテンプレートの内容は、Sprite.newメソッドの引数がそのまま使える(Hashクラスインスタンスとして渡す)
69
- #また、追加として、:colorパラメータを使って塗りつぶす色を指定することが出来る。
70
- #(例):color=>Color[:red]
71
- #_sym_:: テンプレート名
72
- #_params_:: 生成時のパラメータ
73
- def Slide.[]=(sym, params)
74
- @@templates[sym] = params
75
- end
76
-
77
- #===スライド情報を初期化する
78
- #(例)init_slide(Slide.create(:size=>Size.new(320,240), :color=>[255,0,0]))
79
- #(例)init_slide(Slide["640x480"]))
80
- #_template_:: 元となるPartsクラスインスタンス(Slide.createメソッドで作成もしくはSlide.[]で取得できるテンプレートスライド)
81
- def init_slide(template)
82
- init_layout
83
- @body = template
84
- set_layout_size(*(@body.size))
85
- @body.snap(self)
86
- end
87
-
88
- def piece
89
- return self
90
- end
91
-
92
- private :piece
93
-
94
- #===名前に対応したパーツを取得する
95
- #_title_:: 取得したいパーツに対応したシンボル
96
- #返却値:: シンボルに対応したパーツ
97
- def [](title)
98
- return @body[title]
99
- end
100
-
101
- #===パーツに名前を割り付けて設定する
102
- #_title_:: 取得したいパーツに対応したシンボル
103
- #_objs_:: (1)シンボルに対応させるパーツ(スライドにスナップする)
104
- #(2)パーツと、スナップさせるパーツの名前(シンボル)
105
- #返却値:: 自分自身を返す
106
- def []=(title, objs)
107
- @body[title] = objs
108
- return self
109
- end
110
-
111
- #===スライドを画面に描画する
112
- #単純にslide_renderメソッドを呼び出し、結果を返すだけのテンプレートメソッド
113
- #このメソッドを記述し直すことにより、柔軟なrenderを行える
114
- #ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
115
- #ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
116
- #返却値:: 自分自身を返す
117
- def render(&block)
118
- return slide_render(&block)
119
- end
120
-
121
- #===スライドを画像に描画する
122
- #単純にslide_render_toメソッドを呼び出し、結果を返すだけのテンプレートメソッド
123
- #このメソッドを記述し直すことにより、柔軟なrenderを行える
124
- #ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
125
- #ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。
126
- #_dst_:: 描画先画像(Spriteクラスインスタンスなど)
127
- #返却値:: 自分自身を返す
128
- def render_to(dst, &block)
129
- return slide_render_to(dst, &block)
130
- end
131
-
132
- #===スライドを画面に描画する
133
- #ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
134
- #ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
135
- #返却値:: 自分自身を返す
136
- def slide_render(&block)
137
- @body.render(&block)
138
- return self
139
- end
140
-
141
- #===スライドを画像に描画する
142
- #ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
143
- #ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。
144
- #_dst_:: 描画先画像(Spriteクラスインスタンスなど)
145
- #返却値:: 自分自身を返す
146
- def slide_render_to(dst, &block)
147
- @body.render(dst, &block)
148
- return self
149
- end
150
-
151
- #===@bodyに登録したオブジェクトとは別に作成していたインスタンスを解放する
152
- def dispose
153
- end
154
-
155
- def_delegators(:@body, :remove, :each, :start, :stop, :reset, :update, :update_animation)
156
- end
157
- end
1
+ # -*- encoding: utf-8 -*-
2
+ # Miyako Extension
3
+ =begin
4
+ Miyako Extention Library v2.1
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
+
7
+ This library is free software; you can redistribute it and/or
8
+ modify it under the terms of the GNU Lesser General Public
9
+ License as published by the Free Software Foundation; either
10
+ version 2.1 of the License, or (at your option) any later version.
11
+
12
+ This library is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ Lesser General Public License for more details.
16
+
17
+ You should have received a copy of the GNU Lesser General Public
18
+ License along with this library; if not, write to the Free Software
19
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ =end
21
+
22
+ module Miyako
23
+ #==スライドを構成するモジュール
24
+ #Mixinして使用する
25
+ #使用するには、initializeメソッドの定義内で、init_slideメソッドを呼び出す必要がある
26
+ #ただし、インスタンス変数として、@bodyを予約済み
27
+ module Slide
28
+ include Layout
29
+ extend Forwardable
30
+
31
+ @@templates = { }
32
+
33
+ #===スライドを作成する
34
+ #スライド本体は、Partsクラスのインスタンス
35
+ #_params_:: あとで書く
36
+ def Slide.create(params = {})
37
+ tmp = params.dup
38
+ tmp[:size] ||= Size.new(640, 480)
39
+ tmp[:type] ||= :ac
40
+ tmp[:color] ||= Color[:white]
41
+ return Parts.new(tmp[:size]).tap{|obj| obj[:___base___] = Sprite.new(tmp).fill(tmp[:color])}
42
+ end
43
+
44
+ @@templates["320x240"] = {:size=>Size.new(320,240)}
45
+ @@templates["640x480"] = {}
46
+ @@templates["800x600"] = {:size=>Size.new(800,600)}
47
+ @@templates["white"] = {:color=>[255,255,255,255]}
48
+ @@templates["gray"] = {:color=>[128,128,128,255]}
49
+ @@templates["black"] = {:color=>[0,0,0,255]}
50
+ @@templates["half-white"] = {:color=>[255,255,255,128]}
51
+
52
+ #===スライドをテンプレート文字列から作成する
53
+ #スライドを所定の名称で生成する。利用できるのは以下の7種類
54
+ #"320x240" 大きさは320x240ピクセル、背景は白色
55
+ #"640x480" 大きさは640x480ピクセル、背景は白色(デフォルトのテンプレート)
56
+ #"800x600" 大きさは800x600ピクセル、背景は白色
57
+ #"white" "640x480"と同一
58
+ #"gray" 大きさは640x480ピクセル、背景は灰色([128,128,128,255])
59
+ #"black" 大きさは640x480ピクセル、背景は黒色([0,0,0,255])
60
+ #"half-white" 背景が半分透明な"white"([255,255,255,128])
61
+ #_sym_:: テンプレートに対応した文字列
62
+ #返却値:: 生成したスライド(Partsクラスインスタンス)
63
+ def Slide.[](sym = "640x480")
64
+ return Slide.create(@@templates[sym])
65
+ end
66
+
67
+ #===スライドのテンプレートを追加する
68
+ #指定できるテンプレートの内容は、Sprite.newメソッドの引数がそのまま使える(Hashクラスインスタンスとして渡す)
69
+ #また、追加として、:colorパラメータを使って塗りつぶす色を指定することが出来る。
70
+ #(例):color=>Color[:red]
71
+ #_sym_:: テンプレート名
72
+ #_params_:: 生成時のパラメータ
73
+ def Slide.[]=(sym, params)
74
+ @@templates[sym] = params
75
+ end
76
+
77
+ #===スライド情報を初期化する
78
+ #(例)init_slide(Slide.create(:size=>Size.new(320,240), :color=>[255,0,0]))
79
+ #(例)init_slide(Slide["640x480"]))
80
+ #_template_:: 元となるPartsクラスインスタンス(Slide.createメソッドで作成もしくはSlide.[]で取得できるテンプレートスライド)
81
+ def init_slide(template)
82
+ init_layout
83
+ @body = template
84
+ set_layout_size(*(@body.size))
85
+ @body.snap(self)
86
+ end
87
+
88
+ def piece
89
+ return self
90
+ end
91
+
92
+ private :piece
93
+
94
+ #===名前に対応したパーツを取得する
95
+ #_title_:: 取得したいパーツに対応したシンボル
96
+ #返却値:: シンボルに対応したパーツ
97
+ def [](title)
98
+ return @body[title]
99
+ end
100
+
101
+ #===パーツに名前を割り付けて設定する
102
+ #_title_:: 取得したいパーツに対応したシンボル
103
+ #_objs_:: (1)シンボルに対応させるパーツ(スライドにスナップする)
104
+ #(2)パーツと、スナップさせるパーツの名前(シンボル)
105
+ #返却値:: 自分自身を返す
106
+ def []=(title, objs)
107
+ @body[title] = objs
108
+ return self
109
+ end
110
+
111
+ #===スライドを画面に描画する
112
+ #単純にslide_renderメソッドを呼び出し、結果を返すだけのテンプレートメソッド
113
+ #このメソッドを記述し直すことにより、柔軟なrenderを行える
114
+ #ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
115
+ #ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
116
+ #返却値:: 自分自身を返す
117
+ def render(&block)
118
+ return slide_render(&block)
119
+ end
120
+
121
+ #===スライドを画像に描画する
122
+ #単純にslide_render_toメソッドを呼び出し、結果を返すだけのテンプレートメソッド
123
+ #このメソッドを記述し直すことにより、柔軟なrenderを行える
124
+ #ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
125
+ #ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。
126
+ #_dst_:: 描画先画像(Spriteクラスインスタンスなど)
127
+ #返却値:: 自分自身を返す
128
+ def render_to(dst, &block)
129
+ return slide_render_to(dst, &block)
130
+ end
131
+
132
+ #===スライドを画面に描画する
133
+ #ブロックを渡すと、スライド,画面側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
134
+ #ブロックの引数は、|スライド側SpriteUnit,画面側SpriteUnit|となる。
135
+ #返却値:: 自分自身を返す
136
+ def slide_render(&block)
137
+ @body.render(&block)
138
+ return self
139
+ end
140
+
141
+ #===スライドを画像に描画する
142
+ #ブロックを渡すと、スライド,画像側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
143
+ #ブロックの引数は、|スライド側SpriteUnit,画像側SpriteUnit|となる。
144
+ #_dst_:: 描画先画像(Spriteクラスインスタンスなど)
145
+ #返却値:: 自分自身を返す
146
+ def slide_render_to(dst, &block)
147
+ @body.render(dst, &block)
148
+ return self
149
+ end
150
+
151
+ #===@bodyに登録したオブジェクトとは別に作成していたインスタンスを解放する
152
+ def dispose
153
+ end
154
+
155
+ def_delegators(:@body, :remove, :each, :start, :stop, :reset, :update, :update_animation)
156
+ end
157
+ end