ruby-miyako-mswin32 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 (148) hide show
  1. data/README +1115 -0
  2. data/img/cursor.png +0 -0
  3. data/img/cursors.png +0 -0
  4. data/img/dice.png +0 -0
  5. data/img/wait_cursor.png +0 -0
  6. data/img/win_base.png +0 -0
  7. data/img/window.png +0 -0
  8. data/install_miyako.rb +87 -0
  9. data/lib/Miyako/API/audio.rb +584 -0
  10. data/lib/Miyako/API/basic_data.rb +1026 -0
  11. data/lib/Miyako/API/bitmap.rb +534 -0
  12. data/lib/Miyako/API/choices.rb +481 -0
  13. data/lib/Miyako/API/collision.rb +638 -0
  14. data/lib/Miyako/API/diagram.rb +586 -0
  15. data/lib/Miyako/API/drawing.rb +151 -0
  16. data/lib/Miyako/API/exceptions.rb +105 -0
  17. data/lib/Miyako/API/fixedmap.rb +462 -0
  18. data/lib/Miyako/API/font.rb +430 -0
  19. data/lib/Miyako/API/input.rb +456 -0
  20. data/lib/Miyako/API/layout.rb +644 -0
  21. data/lib/Miyako/API/map.rb +583 -0
  22. data/lib/Miyako/API/map_event.rb +222 -0
  23. data/lib/Miyako/API/modules.rb +357 -0
  24. data/lib/Miyako/API/movie.rb +166 -0
  25. data/lib/Miyako/API/parts.rb +188 -0
  26. data/lib/Miyako/API/plane.rb +205 -0
  27. data/lib/Miyako/API/screen.rb +341 -0
  28. data/lib/Miyako/API/shape.rb +443 -0
  29. data/lib/Miyako/API/sprite.rb +773 -0
  30. data/lib/Miyako/API/sprite_animation.rb +494 -0
  31. data/lib/Miyako/API/sprite_list.rb +1135 -0
  32. data/lib/Miyako/API/spriteunit.rb +168 -0
  33. data/lib/Miyako/API/story.rb +350 -0
  34. data/lib/Miyako/API/textbox.rb +773 -0
  35. data/lib/Miyako/API/utility.rb +419 -0
  36. data/lib/Miyako/API/viewport.rb +190 -0
  37. data/lib/Miyako/API/yuki.rb +1180 -0
  38. data/lib/Miyako/EXT/miyako_cairo.rb +62 -0
  39. data/lib/Miyako/EXT/raster_scroll.rb +138 -0
  40. data/lib/Miyako/EXT/slides.rb +157 -0
  41. data/lib/Miyako/miyako.rb +201 -0
  42. data/lib/Miyako/miyako_no_katana.so +0 -0
  43. data/lib/Miyako/miyako_require_only.rb +35 -0
  44. data/logo/EGSR_logo.png +0 -0
  45. data/logo/EGSR_logo_bg.png +0 -0
  46. data/logo/EGSR_logo_fg.png +0 -0
  47. data/logo/EGSR_title_banner.png +0 -0
  48. data/logo/EGSR_title_logo.png +0 -0
  49. data/logo/miyako.png +0 -0
  50. data/logo/miyako_banner.png +0 -0
  51. data/logo/space.png +0 -0
  52. data/sample/Animation1/m1ku.rb +68 -0
  53. data/sample/Animation1/m1ku_arm_0.png +0 -0
  54. data/sample/Animation1/m1ku_arm_1.png +0 -0
  55. data/sample/Animation1/m1ku_arm_2.png +0 -0
  56. data/sample/Animation1/m1ku_arm_3.png +0 -0
  57. data/sample/Animation1/m1ku_back.jpg +0 -0
  58. data/sample/Animation1/m1ku_body.png +0 -0
  59. data/sample/Animation1/m1ku_eye_0.png +0 -0
  60. data/sample/Animation1/m1ku_eye_1.png +0 -0
  61. data/sample/Animation1/m1ku_eye_2.png +0 -0
  62. data/sample/Animation1/m1ku_eye_3.png +0 -0
  63. data/sample/Animation1/m1ku_hair_front.png +0 -0
  64. data/sample/Animation1/m1ku_hair_rear.png +0 -0
  65. data/sample/Animation1/readme.txt +72 -0
  66. data/sample/Animation2/lex.rb +96 -0
  67. data/sample/Animation2/lex_back.png +0 -0
  68. data/sample/Animation2/lex_body.png +0 -0
  69. data/sample/Animation2/lex_roadroller.png +0 -0
  70. data/sample/Animation2/lex_wheel_0.png +0 -0
  71. data/sample/Animation2/lex_wheel_1.png +0 -0
  72. data/sample/Animation2/lex_wheel_2.png +0 -0
  73. data/sample/Animation2/readme.txt +72 -0
  74. data/sample/Animation2/song_title.png +0 -0
  75. data/sample/Diagram_sample/back.png +0 -0
  76. data/sample/Diagram_sample/chr01.png +0 -0
  77. data/sample/Diagram_sample/chr02.png +0 -0
  78. data/sample/Diagram_sample/cursor.png +0 -0
  79. data/sample/Diagram_sample/diagram_sample_yuki2.rb +329 -0
  80. data/sample/Diagram_sample/readme.txt +90 -0
  81. data/sample/Diagram_sample/wait_cursor.png +0 -0
  82. data/sample/Room3/blue.rb +297 -0
  83. data/sample/Room3/ending.rb +180 -0
  84. data/sample/Room3/green.rb +220 -0
  85. data/sample/Room3/image/akamatsu.png +0 -0
  86. data/sample/Room3/image/aoyama.png +0 -0
  87. data/sample/Room3/image/congra.png +0 -0
  88. data/sample/Room3/image/congratulation.png +0 -0
  89. data/sample/Room3/image/congratulation_bg.png +0 -0
  90. data/sample/Room3/image/cursor.png +0 -0
  91. data/sample/Room3/image/midori.png +0 -0
  92. data/sample/Room3/image/mittsu_no_oheya.png +0 -0
  93. data/sample/Room3/image/mittsu_no_oheya_logo.png +0 -0
  94. data/sample/Room3/image/room_blue.png +0 -0
  95. data/sample/Room3/image/room_green.png +0 -0
  96. data/sample/Room3/image/room_red.png +0 -0
  97. data/sample/Room3/image/start.png +0 -0
  98. data/sample/Room3/image/three_doors.png +0 -0
  99. data/sample/Room3/image/wait_cursor.png +0 -0
  100. data/sample/Room3/main.rb +120 -0
  101. data/sample/Room3/main_component.rb +59 -0
  102. data/sample/Room3/readme.txt +76 -0
  103. data/sample/Room3/red.rb +227 -0
  104. data/sample/Room3/room3.rb +25 -0
  105. data/sample/Room3/title.rb +184 -0
  106. data/sample/ball_action_sample.rb +204 -0
  107. data/sample/blit_rop.rb +70 -0
  108. data/sample/cairo_sample.rb +25 -0
  109. data/sample/circle_collision_test.rb +66 -0
  110. data/sample/collision_test.rb +33 -0
  111. data/sample/collision_test2.rb +108 -0
  112. data/sample/fixed_map_test/cursor.png +0 -0
  113. data/sample/fixed_map_test/fixed_map_sample.rb +140 -0
  114. data/sample/fixed_map_test/map.csv +19 -0
  115. data/sample/fixed_map_test/map_01.png +0 -0
  116. data/sample/fixed_map_test/mapchip.csv +23 -0
  117. data/sample/fixed_map_test/monster.png +0 -0
  118. data/sample/fixed_map_test/readme.txt +72 -0
  119. data/sample/map_test/chara.rb +58 -0
  120. data/sample/map_test/chr1.png +0 -0
  121. data/sample/map_test/cursor.png +0 -0
  122. data/sample/map_test/main_parts.rb +69 -0
  123. data/sample/map_test/main_scene.rb +153 -0
  124. data/sample/map_test/map.png +0 -0
  125. data/sample/map_test/map2.png +0 -0
  126. data/sample/map_test/map_layer.csv +127 -0
  127. data/sample/map_test/map_manager.rb +75 -0
  128. data/sample/map_test/map_test.rb +23 -0
  129. data/sample/map_test/mapchip.csv +21 -0
  130. data/sample/map_test/oasis.rb +71 -0
  131. data/sample/map_test/readme.txt +89 -0
  132. data/sample/map_test/route.rb +157 -0
  133. data/sample/map_test/sea.png +0 -0
  134. data/sample/map_test/town.rb +74 -0
  135. data/sample/map_test/wait_cursor.png +0 -0
  136. data/sample/map_test/window.png +0 -0
  137. data/sample/polygon_test.rb +35 -0
  138. data/sample/rasterscroll.rb +25 -0
  139. data/sample/takahashi.rb +42 -0
  140. data/sample/text.png +0 -0
  141. data/sample/textbox_sample.rb +190 -0
  142. data/sample/transform.rb +54 -0
  143. data/sample/utility_test.rb +73 -0
  144. data/sample/utility_test2.rb +61 -0
  145. data/sample/utility_test3.rb +64 -0
  146. data/sample/utility_test4.rb +73 -0
  147. data/uninstall_miyako.rb +19 -0
  148. metadata +199 -0
@@ -0,0 +1,773 @@
1
+ # -*- encoding: utf-8 -*-
2
+ =begin
3
+ --
4
+ Miyako 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
+ ++
21
+ =end
22
+
23
+ require 'Forwardable'
24
+
25
+ # スプライト関連クラス群
26
+ module Miyako
27
+ #==スプライト管理クラス
28
+ class Sprite
29
+ include SpriteBase
30
+ include Animation
31
+ include Layout
32
+ include SingleEnumerable
33
+ extend Forwardable
34
+
35
+ attr_accessor :visible #レンダリングの可否(true->描画 false->非描画)
36
+ attr_reader :tr_color #カラーキーが有向になっている場合のRGB値。[R,G,B]の配列(各要素は0~255の整数)
37
+ attr_reader :type #画像の透明度・透過タイプを取得する(詳細はSprite.newメソッドを参照)
38
+
39
+ @@abb = {:ck => :color_key, :as => :alpha_surface, :ac => :alpha_channel}
40
+
41
+ def setup #:nodoc:
42
+ @unit = SpriteUnitFactory.create
43
+ @aa = false
44
+ @tr_color = Color[:black]
45
+ @update = nil
46
+ @w = 0
47
+ @h = 0
48
+ @draw_list = nil
49
+ @visible = true
50
+ end
51
+
52
+ private :setup
53
+
54
+ #===インスタンス生成
55
+ #スプライトをファイルや画像サイズから生成します。
56
+ #Screen.init/Miyako.openが呼ばれる前に作成しようとするとMiyakoError例外が発生します
57
+ #
58
+ #v1.5以前は、ファイルからスプライトを生成するときは、ファイル名で画像が共有されていましたが、
59
+ #v2.0では廃止されました。
60
+ #
61
+ #_param_:: 各種設定(ハッシュ引数。詳細は後述)
62
+ #返却値:: 生成したインスタンス
63
+ #
64
+ #<引数の内容>
65
+ #* 1.画像の元データ(括弧内は省略形)。以下の3種類のどれかを必ず指定する。
66
+ # * 画像ファイル(ファイル名)から生成。 (書式):filename(:file)=>画像ファイル名 (例):file=>"image.png"
67
+ # * 画像サイズ(2要素の整数の配列もしくはSize構造体)から生成。
68
+ #  (書式1):size=>2要素の配列((例):size=>[100,100])
69
+ #  (書式2):size=>Size構造体((例):size=>Size.new(100,100))
70
+ # * SDL::Surfaceクラスのインスタンスから生成。 
71
+ # (書式):bitmap(:bmp)=>SDL::Surfaceクラスのインスタンス((例):bmp=>@surface)
72
+ # * SpriteUnit構造体のインスタンスから生成(ビットマップ以外のUnitの値は引き継がれる。
73
+ # しかし、snapの親子関係は引き継がれない)。
74
+ # (書式):unit=>SpriteUnit構造体のインスタンス((例):unit=>@spr.to_unit)
75
+ #* 2.透過設定(括弧内は省略形)。以下の3種類のどれかを必ず指定する。
76
+ # * カラーキーによる透過は行わない方式(デフォルトの方式) (書式):type=>:alpha_surface(:as)
77
+ # * カラーキーの指定。 (書式):type=>:color_key(:ck) カラーキー指定の方法は以下のとおり
78
+ # * 透明色にするピクセルの位置(2要素の整数の配列、Point構造体)
79
+ #  (書式1):point=>2要素の配列((例):type=>:ck, :point=>[20,20])
80
+ #  (書式2):point=>Point構造体((例):type=>:ck, :point=>Point.new(20,20))
81
+ # * 色を直接指定
82
+ #  (書式):tr_color=>色情報(Color.to_rgbメソッドで生成できるパラメータ)
83
+ # ((例1):type=>:ck, :tr_color=>[255,0,255] # 紫色を透明色に
84
+ #  (例2):type=>:ck, :tr_color=>:red # 赤色を透明色に)
85
+ # * デフォルト:画像の[0,0]の位置にあるピクセルの色
86
+ #* 3. αチャネル付き画像を使用(設定変更不可) (書式):type=>:alpha_channel(:ac)
87
+ def initialize(param)
88
+ raise MiyakoError, "Sprite instance cannot create uninitialized yet!" unless Screen.initialized?
89
+ raise MiyakoTypeError, "Sprite parameter is not Hash!" unless param.kind_of?(Hash)
90
+ setup
91
+ init_layout
92
+
93
+ bitmap = nil
94
+ @tr_color = nil
95
+
96
+ param[:type] ||= :color_key
97
+ param[:type] = @@abb[param[:type]] if @@abb.has_key?(param[:type])
98
+ param[:point] ||= Point.new(0, 0)
99
+ param[:tr_color] ||= Color[:black]
100
+ param[:is_fill] ||= false
101
+
102
+ if param.has_key?(:bitmap) || param.has_key?(:bmp)
103
+ bitmap = param[:bitmap] || param[:bmp]
104
+ elsif param.has_key?(:size)
105
+ bitmap = Bitmap.create(*(param[:size].to_a))
106
+ param[:is_fill] = true
107
+ elsif param.has_key?(:filename) || param.has_key?(:file)
108
+ name = param[:filename] || param[:file]
109
+ raise MiyakoIOError.no_file(name) unless File.exist?(name)
110
+ begin
111
+ bitmap = Bitmap.load(name)
112
+ rescue SDL::Error
113
+ raise MiyakoFileFormatError, "Illegal file format! collect? #{name}"
114
+ end
115
+ elsif param.has_key?(:unit)
116
+ bitmap = param[:unit].bitmap
117
+ else
118
+ raise MiyakoError, "Illegal Sprite parameter!"
119
+ end
120
+
121
+ case param[:type]
122
+ when :color_key
123
+ if param.has_key?(:point)
124
+ @tr_color = Color.to_rgb(bitmap.get_rgb(bitmap.getPixel(*(param[:point].to_a))))
125
+ else
126
+ @tr_color = Color.to_rgb(param[:tr_color])
127
+ end
128
+ # カラーキーのα値を0にしたビットマップを作成
129
+ # self.bitmap = Bitmap.create_from(bitmap)
130
+ self.bitmap = bitmap.display_format_alpha
131
+ if param[:is_fill]
132
+ @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
133
+ Bitmap.ck_to_ac!(@unit, [0,0,0])
134
+ else
135
+ Bitmap.ck_to_ac!(@unit, @tr_color)
136
+ end
137
+ when :alpha_surface
138
+ # カラーキーのα値を0にしたビットマップを作成
139
+ # self.bitmap = Bitmap.create_from(bitmap)
140
+ self.bitmap = bitmap.display_format_alpha
141
+ Bitmap.normal_to_ac!(@unit)
142
+ if param[:is_fill]
143
+ @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
144
+ Bitmap.ck_to_ac!(@unit, [0,0,0])
145
+ end
146
+ when :alpha_channel
147
+ # self.bitmap = Bitmap.create_from(bitmap)
148
+ self.bitmap = bitmap.display_format_alpha
149
+ if param[:is_fill]
150
+ @unit.bitmap.fill_rect(0,0,@unit.bitmap.w,@unit.bitmap.h,[0, 0, 0])
151
+ Bitmap.ck_to_ac!(@unit, [0,0,0])
152
+ end
153
+ when :movie
154
+ # self.bitmap = Bitmap.create_from(bitmap)
155
+ self.bitmap = bitmap.display_format_alpha
156
+ end
157
+ @type = param[:type]
158
+
159
+ if param.has_key?(:unit)
160
+ SpriteUnitFactory.apply(@unit, :ow=>param[:unit].ow, :oh=>param[:unit].oh,
161
+ :cx => param[:unit].cx, :cy => param[:unit].cy)
162
+ self.move_to!(param[:unit].x, param[:unit].y)
163
+ end
164
+ end
165
+
166
+ def_delegators(:@unit, :ox, :oy, :ow, :oh, :x, :y)
167
+
168
+ #===複写時に呼び出されるメソッド
169
+ #複写と同時に、本インスタンスに対するスナップの関係を解消
170
+ def initialize_copy(obj)
171
+ self.unit = obj.to_unit
172
+ copy_layout
173
+ end
174
+
175
+ def unit=(unit) #:nodoc:
176
+ @unit = unit
177
+ end
178
+
179
+ def update_layout_position #:nodoc:
180
+ @unit.move_to!(*@layout.pos)
181
+ end
182
+
183
+ #===画像の幅を取得する
184
+ #返却値:: 画像の幅(ピクセル)
185
+ def w
186
+ return @unit.bitmap.w
187
+ end
188
+
189
+ #===画像の高さを取得する
190
+ #返却値:: 画像の高さ(ピクセル)
191
+ def h
192
+ return @unit.bitmap.h
193
+ end
194
+
195
+ def bitmap #:nodoc:
196
+ return @unit.bitmap
197
+ end
198
+
199
+ def bitmap=(bmp) #:nodoc:
200
+ @unit.bitmap = bmp
201
+ @unit.ow = @unit.bitmap.w
202
+ @unit.oh = @unit.bitmap.h
203
+ @w = @unit.bitmap.w
204
+ @h = @unit.bitmap.h
205
+ set_layout_size(@unit.ow, @unit.oh)
206
+ end
207
+
208
+ #===画像全体を指定の色で塗りつぶす
209
+ #_color_:: 塗りつぶす色。Color.to_rgbメソッドのパラメータでの指定が可能
210
+ #返却値:: 自分自身を返す
211
+ def fill(color)
212
+ @unit.bitmap.fill_rect(0,0,self.w,self.h,Color.to_rgb(color))
213
+ return self
214
+ end
215
+
216
+ #===画像の表示開始位置(X座標)を指定する
217
+ #oxを指定すると、表示の左上位置が変更される。
218
+ #値が画像の幅の範囲外(値がマイナス、画像の幅を超える値)のときは例外が発生する
219
+ #_v_:: 表示開始位置。整数で指定
220
+ def ox=(v)
221
+ raise MiyakoValueError, "Illegal ox parameter! : #{v} (range: 0..#{@w-@unit.ow})" if (v < 0 || (v+@unit.ow) > @w)
222
+ @unit.ox = v
223
+ end
224
+
225
+ #===画像の表示開始位置(Y座標)を指定する
226
+ #oyを指定すると、表示の左上位置が変更される。
227
+ #値が画像の高さの範囲外(値がマイナス、画像の高さを超える値)のときは例外が発生する
228
+ #_v_:: 表示開始位置。整数で指定
229
+ def oy=(v)
230
+ raise MiyakoValueError, "Illegal oy parameter! : #{v} (range: 0..#{@h-@unit.oh})" if (v < 0 || (v+@unit.oh) > @h)
231
+ @unit.oy = v
232
+ end
233
+
234
+ #===画像の表示幅を指定する
235
+ #owを指定すると、横方向の一部のみ表示される。
236
+ #値が画像の幅の範囲外(値がマイナス、画像の幅を超える値)のときは例外が発生する
237
+ #_v_:: 表示幅。整数で指定
238
+ def ow=(v)
239
+ raise MiyakoValueError, "Illegal ox parameter! : #{v} (range: 0..#{@w-@unit.ox})" if (v < 0 || (@unit.ox+v) > @w)
240
+ @unit.ow = v
241
+ set_layout_size(v, @unit.oh)
242
+ end
243
+
244
+ #===画像の表示高を指定する
245
+ #ohを指定すると、縦方向の一部のみ表示される。
246
+ #値が画像の高さの範囲外(値がマイナス、画像の高さを超える値)のときは例外が発生する
247
+ #_v_:: 表示高。整数で指定
248
+ def oh=(v)
249
+ raise MiyakoValueError, "Illegal ox parameter! : #{v} (range: 0..#{@h-@unit.oy})" if (v < 0 || (@unit.oy+v) > @h)
250
+ @unit.oh = v
251
+ set_layout_size(@unit.ow, v)
252
+ end
253
+
254
+ #===画像の回転・拡大・縮小の中心座標を取得する
255
+ #x方向の中心座標を取得する
256
+ #返却値:: 中心座標。
257
+ def center_x
258
+ return @unit.cx
259
+ end
260
+
261
+ #===画像の回転・拡大・縮小の中心座標を取得する
262
+ #x方向の中心座標を取得する
263
+ #_pos_:: 中心座標
264
+ def center_x=(pos)
265
+ @unit.cx = pos
266
+ end
267
+
268
+ #===画像の回転・拡大・縮小の中心座標を取得する
269
+ #y方向の中心座標を取得する
270
+ #返却値:: 中心座標。
271
+ def center_y
272
+ return @unit.cy
273
+ end
274
+
275
+ #===画像の回転・拡大・縮小の中心座標を取得する
276
+ #y方向の中心座標を取得する
277
+ #_pos_:: 中心座標
278
+ def center_y=(pos)
279
+ @unit.cy = pos
280
+ end
281
+
282
+ #===画像の表示矩形を取得する
283
+ #画像が表示されているときの矩形(Rect構造体)を取得する
284
+ #返却値:: 生成された矩形(Rect構造体インスタンス)
285
+ def rect
286
+ return Rect.new(@unit.x, @unit.y, @unit.ow, @unit.oh)
287
+ end
288
+
289
+ #===現在の画面の最大の大きさを矩形で取得する
290
+ #但し、Spriteの場合は最大の大きさ=スプライトの大きさなので、rectと同じ値が得られる
291
+ #返却値:: 画像の大きさ(Rect構造体のインスタンス)
292
+ def broad_rect
293
+ return self.rect
294
+ end
295
+
296
+ def update #:nodoc:
297
+ @update.call(self) if @update
298
+ yield self if block_given?
299
+ return self
300
+ end
301
+
302
+ def update=(u) #:nodoc:
303
+ @update = u
304
+ end
305
+
306
+ #===画像を解放する
307
+ #内部で使用しているデータをインスタンスから解放する
308
+ def dispose
309
+ layout_dispose
310
+ @unit.bitmap = nil
311
+ @unit = nil
312
+ end
313
+
314
+ #===インスタンスをSpriteUnit構造体に変換して取得する
315
+ #新しいSpriteUnitを作成して返す
316
+ #返却値:: SpriteUnit化したスプライト
317
+ def to_unit
318
+ return @unit.dup
319
+ end
320
+
321
+ #===インスタンスをスプライト化して返す
322
+ #インスタンスの複製を行う(画像インスタンスも複製)
323
+ #引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
324
+ #注意事項:
325
+ #1.複製のため、呼び出していくとメモリ使用量が著しく上がる
326
+ #2.レイアウト情報がリセットされる(snapの親子関係が解消される)
327
+ #返却値:: 生成したインスタンスを返す
328
+ def to_sprite
329
+ unit = @unit.dup
330
+ unit.bitmap = Bitmap.create(unit.bitmap.w, unit.bitmap.h)
331
+ sprite = Sprite.new(size: [unit.bitmap.w, unit.bitmap.h], type: :ac)
332
+ Drawing.fill(sprite, [0,0,0])
333
+ Bitmap.ck_to_ac!(sprite, [0,0,0])
334
+ Bitmap.blit_aa(self, sprite, 0, 0)
335
+ yield sprite if block_given?
336
+ return sprite
337
+ end
338
+
339
+ #===画像の内容を破壊的に消去する
340
+ #インスタンスの複製を行う(画像インスタンスも複製)
341
+ #引数1個のブロックを渡せば、スプライトに補正をかけることが出来る
342
+ #注意事項:
343
+ #1.複製のため、呼び出していくとメモリ使用量が著しく上がる
344
+ #2.レイアウト情報がリセットされる(snapの親子関係が解消される)
345
+ #返却値:: 自分自身を返す
346
+ def clear!
347
+ Drawing.fill(self, [0,0,0])
348
+ Bitmap.ck_to_ac!(self, [0,0,0])
349
+ return self
350
+ end
351
+
352
+ #===インスタンスの内容を別のインスタンスに描画する
353
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
354
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
355
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
356
+ #ブロックの引数は、|転送元のSpriteUnit,転送先のSpriteUnit|となる。
357
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
358
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
359
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
360
+ #返却値:: 自分自身を返す
361
+ def Sprite.render_to(src, dst)
362
+ end
363
+
364
+ #===インスタンスの内容を画面に描画する
365
+ #現在の画像を、現在の状態で描画するよう指示する
366
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
367
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
368
+ #ブロックの引数は、|インスタンスのSpriteUnit, 画面のSpriteUnit|となる。
369
+ #visibleメソッドの値がfalseのときは描画されない。
370
+ #返却値:: 自分自身を返す
371
+ def render
372
+ end
373
+
374
+ #===インスタンスの内容を別のインスタンスに描画する
375
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
376
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に設定にする。
377
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
378
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
379
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
380
+ #visibleメソッドの値がfalseのときは描画されない。
381
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
382
+ #返却値:: 自分自身を返す
383
+ def render_to(dst)
384
+ end
385
+
386
+ #===インスタンスの内容を画面に描画する(回転/拡大/縮小/鏡像付き)
387
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。回転の中心はsrc側(ox,oy)を起点に、src側(cx,cy)が中心になるように設定する。
388
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、画面側SpriteUnitの(cx,cy)が中心になるように設定にする。
389
+ #回転角度が正だと右回り、負だと左回りに回転する
390
+ #変形の度合いは、src側SpriteUnitのxscale, yscaleを使用する(ともに実数で指定する)。それぞれ、x方向、y方向の度合いとなる
391
+ #度合いが scale > 1.0 だと拡大、 0 < scale < 1.0 だと縮小、scale < 0.0 負だと鏡像の拡大・縮小になる(scale == -1.0 のときはミラー反転になる)
392
+ #また、変形元の幅・高さのいずれかが32768以上の時は回転・転送を行わない
393
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
394
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
395
+ #ブロックの引数は、|インスタンスのSpriteUnit,画面のSpriteUnit|となる。
396
+ #visibleメソッドの値がfalseのときは描画されない。
397
+ #_radian_:: 回転角度。単位はラジアン。値の範囲は0<=radian<2pi
398
+ #_xscale_:: 拡大率(x方向)
399
+ #_yscale_:: 拡大率(y方向)
400
+ #返却値:: 自分自身を返す
401
+ def render_transform(radian, xscale, yscale)
402
+ end
403
+
404
+ #===インスタンスの内容を画面に描画する(回転/拡大/縮小/鏡像付き)
405
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。回転の中心はsrc側(ox,oy)を起点に、src側(cx,cy)が中心になるように設定する。
406
+ #画面の描画範囲は、src側SpriteUnitの(x,y)を起点に、画面側SpriteUnitの(cx,cy)が中心になるように設定にする。
407
+ #回転角度が正だと右回り、負だと左回りに回転する
408
+ #変形の度合いは、src側SpriteUnitのxscale, yscaleを使用する(ともに実数で指定する)。それぞれ、x方向、y方向の度合いとなる
409
+ #度合いが scale > 1.0 だと拡大、 0 < scale < 1.0 だと縮小、scale < 0.0 負だと鏡像の拡大・縮小になる(scale == -1.0 のときはミラー反転になる)
410
+ #また、変形元の幅・高さのいずれかが32768以上の時は回転・転送を行わない
411
+ #ブロック付きで呼び出し可能(レシーバに対応したSpriteUnit構造体が引数として得られるので、補正をかけることが出来る)
412
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
413
+ #ブロックの引数は、|インスタンスのSpriteUnit,転送先のSpriteUnit|となる。
414
+ #visibleメソッドの値がfalseのときは描画されない。
415
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
416
+ #_radian_:: 回転角度。単位はラジアン。値の範囲は0<=radian<2pi
417
+ #_xscale_:: 拡大率(x方向)
418
+ #_yscale_:: 拡大率(y方向)
419
+ #返却値:: 自分自身を返す
420
+ def render_to_transform(dst, radian, xscale, yscale)
421
+ end
422
+
423
+ #===2つの画像のandを取り、別の画像へ転送する
424
+ #重ね合わせの式は、"src and self -> dst"で表される。自分自身と転送先画像は同じ大きさとなる。
425
+ #範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。
426
+ #src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。
427
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
428
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
429
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
430
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
431
+ #返却値:: 変更後の新しい画像インスタンス
432
+ def and(src, &block)
433
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
434
+ self.render_to(dst)
435
+ raise MiyakoValueError, "illegal range!" unless Bitmap.blit_and(src, dst, &block)
436
+ return dst
437
+ end
438
+
439
+ #===2つの画像のandを破壊的に行う
440
+ #重ね合わせの式は、"src and self -> self"で表される。
441
+ #範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。
442
+ #src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。
443
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
444
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
445
+ #ブロックの引数は、|SpriteUnit|となる。
446
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
447
+ #返却値:: 変更後の自分自身を返す
448
+ def and!(src, &block)
449
+ raise MiyakoValueError, "illegal range!" unless Bitmap.blit_and(src, self, &block)
450
+ return self
451
+ end
452
+
453
+ #===2つの画像のorを取り、別の画像へ転送する
454
+ #重ね合わせの式は、"src or self -> dst"で表される。自分自身と転送先画像は同じ大きさとなる。
455
+ #範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。
456
+ #src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。
457
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
458
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
459
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
460
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
461
+ #返却値:: 変更後の新しい画像インスタンス
462
+ def or(src, &block)
463
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
464
+ self.render_to(dst)
465
+ raise MiyakoValueError, "illegal range!" unless Bitmap.blit_or(src, dst, &block)
466
+ return dst
467
+ end
468
+
469
+ #===2つの画像のorを破壊的に行う
470
+ #重ね合わせの式は、"src or self -> self"で表される。
471
+ #範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。
472
+ #src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。
473
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
474
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
475
+ #ブロックの引数は、|SpriteUnit|となる。
476
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
477
+ #返却値:: 変更後の自分自身を返す
478
+ def or!(src, &block)
479
+ raise MiyakoValueError, "illegal range!" unless Bitmap.blit_or(src, self, &block)
480
+ return self
481
+ end
482
+
483
+ #===2つの画像のxorを取り、別の画像へ転送する
484
+ #重ね合わせの式は、"src xor self -> dst"で表される。自分自身と転送先画像は同じ大きさとなる。
485
+ #範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。
486
+ #src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。
487
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
488
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
489
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
490
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
491
+ #返却値:: 変更後の新しい画像インスタンス
492
+ def xor(src, &block)
493
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
494
+ self.render_to(dst)
495
+ raise MiyakoValueError, "illegal range!" unless Bitmap.blit_xor(src, dst, &block)
496
+ return dst
497
+ end
498
+
499
+ #===2つの画像のxorを破壊的に行う
500
+ #重ね合わせの式は、"src xor self -> self"で表される。
501
+ #範囲は、インスタンス側とsrc側との(ow,oh)の小さい方の範囲で転送する。
502
+ #src側の(x,y)をインスタンス側の起点として、src側の(ow,oh)の範囲で転送する。
503
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
504
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
505
+ #ブロックの引数は、|SpriteUnit|となる。
506
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
507
+ #返却値:: 変更後の自分自身を返す
508
+ def xor!(src, &block)
509
+ raise MiyakoValueError, "illegal range!" unless Bitmap.blit_xor(src, self, &block)
510
+ return self
511
+ end
512
+
513
+ #===画像のαチャネルの値を一定の割合で変化させて転送する
514
+ #degreeの値が1.0に近づけば近づくほど透明に近づき、
515
+ #degreeの値が-1.0に近づけば近づくほど不透明に近づく(値が-1.0のときは完全不透明、値が0.0のときは変化なし、1.0のときは完全に透明になる)
516
+ #但し、元々αの値がゼロの時は変化しない
517
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
518
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
519
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
520
+ #_degree_:: 減少率。-1.0<=degree<=1.0までの実数
521
+ #返却値:: 変更後の新しい画像インスタンス
522
+ def dec_alpha(degree, &block)
523
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
524
+ raise MiyakoValueError, "illegal range!" unless Bitmap.dec_alpha(self, dst, degree, &block)
525
+ return dst
526
+ end
527
+
528
+ #===画像のαチャネルの値を一定の割合で破壊的に変化させる
529
+ #degreeの値が1.0に近づけば近づくほど透明に近づき、
530
+ #degreeの値が-1.0に近づけば近づくほど不透明に近づく
531
+ #(値が-1.0のときは完全不透明、値が0.0のときは変化なし、1.0のときは完全に透明になる)
532
+ #但し、元々αの値がゼロの時は変化しない
533
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
534
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
535
+ #ブロックの引数は、|SpriteUnit|となる。
536
+ #_degree_:: 減少率。-1.0<=degree<=1.0までの実数
537
+ #返却値:: 変更後の自分自身を返す
538
+ def dec_alpha!(degree, &block)
539
+ raise MiyakoValueError, "illegal range!" unless Bitmap.dec_alpha!(self, degree, &block)
540
+ return self
541
+ end
542
+
543
+ #===画像の色を一定の割合で黒に近づける(ブラックアウト)
544
+ #赤・青・緑・αの各要素を一定の割合で下げ、黒色に近づける。
545
+ #degreeの値が1.0に近づけば近づくほど黒色に近づく(値が0.0のときは変化なし、1.0のときは真っ黒になる)
546
+ #αの値が0のときは変わらないことに注意!
547
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
548
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
549
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
550
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
551
+ #返却値:: 変更後の新しい画像インスタンス
552
+ def black_out(degree, &block)
553
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
554
+ raise MiyakoValueError, "illegal range!" unless Bitmap.black_out(self, dst, degree, &block)
555
+ return dst
556
+ end
557
+
558
+ #===画像の色を一定の割合で黒に近づける(ブラックアウト)
559
+ #赤・青・緑・αの各要素を一定の割合で下げ、黒色に近づける。
560
+ #degreeの値が1.0に近づけば近づくほど黒色に近づく(値が0.0のときは変化なし、1.0のときは真っ黒になる)
561
+ #αの値が0のときは変わらないことに注意!
562
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
563
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
564
+ #ブロックの引数は、|SpriteUnit|となる。
565
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
566
+ #返却値:: 変更後の自分自身を返す
567
+ def black_out!(degree, &block)
568
+ raise MiyakoValueError, "illegal range!" unless Bitmap.black_out!(self, degree, &block)
569
+ return self
570
+ end
571
+
572
+ #===画像の色を一定の割合で白に近づける(ホワイトアウト)
573
+ #赤・青・緑・αの各要素を一定の割合で上げ、白色に近づける。
574
+ #degreeの値が1.0に近づけば近づくほど白色に近づく(値が0.0のときは変化なし、1.0のときは真っ白になる)
575
+ #αの値が0のときは変わらないことに注意!
576
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
577
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
578
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
579
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
580
+ #返却値:: 変更後の新しい画像インスタンス
581
+ def white_out(degree, &block)
582
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
583
+ raise MiyakoValueError, "illegal range!" unless Bitmap.white_out(self, dst, degree, &block)
584
+ return dst
585
+ end
586
+
587
+ #===画像の色を一定の割合で白に近づける(ホワイトアウト)
588
+ #赤・青・緑・αの各要素を一定の割合で上げ、白色に近づける。
589
+ #degreeの値が1.0に近づけば近づくほど白色に近づく(値が0.0のときは変化なし、1.0のときは真っ白になる)
590
+ #αの値が0のときは変わらないことに注意!
591
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
592
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
593
+ #ブロックの引数は、|SpriteUnit|となる。
594
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
595
+ #返却値:: 変更後の自分自身を返す
596
+ def white_out!(degree, &block)
597
+ raise MiyakoValueError, "illegal range!" unless Bitmap.white_out!(self, degree, &block)
598
+ return self
599
+ end
600
+
601
+ #===画像のRGB値を反転させる
602
+ #αチャネルの値は変更しない
603
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
604
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
605
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
606
+ #返却値:: 変更後の新しい画像インスタンス
607
+ def inverse(&block)
608
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
609
+ raise MiyakoValueError, "illegal range!" unless Bitmap.inverse(self, dst, &block)
610
+ return dst
611
+ end
612
+
613
+ #===画像のRGB値を反転させる
614
+ #αチャネルの値は変更しない
615
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
616
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
617
+ #ブロックの引数は、|SpriteUnit|となる。
618
+ #返却値:: 変更後の自分自身を返す
619
+ def inverse!(&block)
620
+ raise MiyakoValueError, "illegal range!" unless Bitmap.inverse!(self, &block)
621
+ return self
622
+ end
623
+
624
+ #===2枚の画像の加算合成を行う
625
+ #範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。
626
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
627
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
628
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
629
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
630
+ #返却値:: 変更後の新しい画像インスタンス
631
+ def additive(src, &block)
632
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
633
+ self.render_to(dst)
634
+ raise MiyakoValueError, "illegal range!" unless Bitmap.additive(src, dst, &block)
635
+ return dst
636
+ end
637
+
638
+ #===2枚の画像の加算合成を行う
639
+ #範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。
640
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
641
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
642
+ #ブロックの引数は、|SpriteUnit|となる。
643
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
644
+ #返却値:: 変更後の自分自身を返す
645
+ def additive!(src, &block)
646
+ raise MiyakoValueError, "illegal range!" unless Bitmap.additive(src, self, &block)
647
+ return self
648
+ end
649
+
650
+ #===2枚の画像の減算合成を行う
651
+ #範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。
652
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
653
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
654
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
655
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
656
+ #返却値:: 変更後の新しい画像インスタンス
657
+ def subtraction(src, &block)
658
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
659
+ self.render_to(dst)
660
+ raise MiyakoValueError, "illegal range!" unless Bitmap.subtraction(src, dst, &block)
661
+ return dst
662
+ end
663
+
664
+ #===2枚の画像の減算合成を行う
665
+ #範囲は、src側の(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側の(x,y)を左上とする。
666
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
667
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
668
+ #ブロックの引数は、|SpriteUnit|となる。
669
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
670
+ #返却値:: 変更後の自分自身を返す
671
+ def subtraction!(src, &block)
672
+ raise MiyakoValueError, "illegal range!" unless Bitmap.subtraction(src, self, &block)
673
+ return self
674
+ end
675
+
676
+ #===画像の色相を変更する
677
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
678
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
679
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
680
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
681
+ #返却値:: 変更後の新しい画像インスタンス
682
+ def hue(degree, &block)
683
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
684
+ raise MiyakoValueError, "illegal range!" unless Bitmap.hue(self, dst, degree, &block)
685
+ return dst
686
+ end
687
+
688
+ #===画像の色相を変更する
689
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
690
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
691
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
692
+ #ブロックの引数は、|SpriteUnit|となる。
693
+ #返却値:: 変更後の画像インスタンス
694
+ #返却値:: 変更後の自分自身を返す
695
+ def hue!(degree, &block)
696
+ raise MiyakoValueError, "illegal range!" unless Bitmap.hue!(self, degree, &block)
697
+ return self
698
+ end
699
+
700
+ #===画像の彩度を変更する
701
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
702
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
703
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
704
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
705
+ #返却値:: 変更後の新しい画像インスタンス
706
+ def saturation(saturation, &block)
707
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
708
+ raise MiyakoValueError, "illegal range!" unless Bitmap.saturation(self, dst, saturation, &block)
709
+ return dst
710
+ end
711
+
712
+ #===画像の彩度を変更する
713
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
714
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
715
+ #ブロックの引数は、|SpriteUnit|となる。
716
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
717
+ #返却値:: 変更後の自分自身を返す
718
+ def saturation!(saturation, &block)
719
+ raise MiyakoValueError, "illegal range!" unless Bitmap.saturation!(self, saturation, &block)
720
+ return self
721
+ end
722
+
723
+ #===画像の明度を変更する
724
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
725
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
726
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
727
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
728
+ #返却値:: 変更後の新しい画像インスタンス
729
+ def value(value, &block)
730
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
731
+ raise MiyakoValueError, "illegal range!" unless Bitmap.value(self, dst, value, &block)
732
+ return dst
733
+ end
734
+
735
+ #===画像の明度を変更する
736
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
737
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
738
+ #ブロックの引数は、|SpriteUnit|となる。
739
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
740
+ #返却値:: 変更後の画像インスタンス
741
+ def value!(value, &block)
742
+ raise MiyakoValueError, "illegal range!" unless Bitmap.value!(self, value, &block)
743
+ return self
744
+ end
745
+
746
+ #===画像の色相・彩度・明度を変更する
747
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
748
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
749
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
750
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
751
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
752
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
753
+ #返却値:: 変更後の新しい画像インスタンス
754
+ def hsv(degree, saturation, value, &block)
755
+ dst = Sprite.new(:size=>self.size, :type=>:ac)
756
+ raise MiyakoValueError, "illegal range!" unless Bitmap.hsv(self, dst, degree, saturation, value, &block)
757
+ return dst
758
+ end
759
+
760
+ #===画像の色相・彩度・明度を変更する
761
+ #ブロックを渡すと、自分自身のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
762
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
763
+ #ブロックの引数は、|SpriteUnit|となる。
764
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
765
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
766
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
767
+ #返却値:: 変更後の画像インスタンス
768
+ def hsv!(degree, saturation, value, &block)
769
+ raise MiyakoValueError, "illegal range!" unless Bitmap.hsv!(self, degree, saturation, value, &block)
770
+ return self
771
+ end
772
+ end
773
+ end