cyross-ruby-miyako 2.0.0 → 2.0.5.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 (102) hide show
  1. data/README +106 -154
  2. data/defines.h +144 -0
  3. data/{miyako_no_katana/extconf.rb → extconf.rb} +10 -0
  4. data/extern.h +29 -0
  5. data/install_miyako.rb +26 -14
  6. data/lib/Miyako/API/audio.rb +2 -2
  7. data/lib/Miyako/API/basic_data.rb +183 -41
  8. data/lib/Miyako/API/bitmap.rb +474 -2
  9. data/lib/Miyako/API/choices.rb +215 -48
  10. data/lib/Miyako/API/collision.rb +267 -251
  11. data/lib/Miyako/API/diagram.rb +58 -70
  12. data/lib/Miyako/API/drawing.rb +93 -52
  13. data/lib/Miyako/API/fixedmap.rb +233 -120
  14. data/lib/Miyako/API/font.rb +59 -40
  15. data/lib/Miyako/API/input.rb +34 -27
  16. data/lib/Miyako/API/layout.rb +154 -172
  17. data/lib/Miyako/API/map.rb +285 -159
  18. data/lib/Miyako/API/map_event.rb +4 -4
  19. data/lib/Miyako/API/modules.rb +1 -1
  20. data/lib/Miyako/API/movie.rb +8 -5
  21. data/lib/Miyako/API/parts.rb +44 -9
  22. data/lib/Miyako/API/plane.rb +37 -2
  23. data/lib/Miyako/API/screen.rb +90 -22
  24. data/lib/Miyako/API/shape.rb +118 -37
  25. data/lib/Miyako/API/sprite.rb +475 -61
  26. data/lib/Miyako/API/sprite_animation.rb +83 -63
  27. data/lib/Miyako/API/spriteunit.rb +47 -13
  28. data/lib/Miyako/API/story.rb +123 -47
  29. data/lib/Miyako/API/textbox.rb +361 -132
  30. data/lib/Miyako/API/utility.rb +388 -0
  31. data/lib/Miyako/API/viewport.rb +54 -349
  32. data/lib/Miyako/API/yuki.rb +570 -353
  33. data/lib/Miyako/EXT/miyako_cairo.rb +5 -3
  34. data/lib/Miyako/EXT/slides.rb +22 -1
  35. data/lib/Miyako/miyako.rb +12 -13
  36. data/logo/EGSR_logo.png +0 -0
  37. data/logo/EGSR_logo_bg.png +0 -0
  38. data/logo/EGSR_logo_fg.png +0 -0
  39. data/logo/EGSR_title_banner.png +0 -0
  40. data/logo/EGSR_title_logo.png +0 -0
  41. data/logo/miyako.png +0 -0
  42. data/logo/miyako_banner.png +0 -0
  43. data/logo/space.png +0 -0
  44. data/miyako_basicdata.c +590 -0
  45. data/miyako_bitmap.c +1225 -0
  46. data/miyako_collision.c +403 -0
  47. data/miyako_drawing.c +187 -0
  48. data/miyako_font.c +334 -0
  49. data/miyako_hsv.c +830 -0
  50. data/miyako_layout.c +191 -0
  51. data/miyako_no_katana.c +1074 -0
  52. data/miyako_transform.c +438 -0
  53. data/miyako_utility.c +288 -0
  54. data/sample/Animation1/m1ku.rb +10 -31
  55. data/sample/Animation1/readme.txt +6 -6
  56. data/sample/Animation2/lex.rb +1 -0
  57. data/sample/Animation2/readme.txt +6 -6
  58. data/sample/Diagram_sample/diagram_sample_yuki2.rb +152 -48
  59. data/sample/Diagram_sample/readme.txt +9 -6
  60. data/sample/Room3/blue.rb +234 -187
  61. data/sample/Room3/ending.rb +68 -63
  62. data/sample/Room3/green.rb +159 -124
  63. data/sample/Room3/main.rb +50 -32
  64. data/sample/Room3/main_component.rb +3 -2
  65. data/sample/Room3/readme.txt +6 -6
  66. data/sample/Room3/red.rb +161 -134
  67. data/sample/Room3/room3.rb +1 -0
  68. data/sample/Room3/title.rb +75 -62
  69. data/sample/ball_action_sample.rb +204 -0
  70. data/sample/blit_rop.rb +70 -0
  71. data/sample/cairo_sample.rb +25 -0
  72. data/sample/circle_collision_test.rb +66 -0
  73. data/sample/collision_test.rb +33 -0
  74. data/sample/collision_test2.rb +108 -0
  75. data/sample/fixed_map_test/fixed_map_sample.rb +23 -32
  76. data/sample/fixed_map_test/readme.txt +38 -38
  77. data/sample/map_test/chara.rb +17 -9
  78. data/sample/map_test/main_parts.rb +30 -9
  79. data/sample/map_test/main_scene.rb +57 -41
  80. data/sample/map_test/map_manager.rb +13 -30
  81. data/sample/map_test/map_test.rb +2 -2
  82. data/sample/map_test/oasis.rb +17 -11
  83. data/sample/map_test/readme.txt +50 -48
  84. data/sample/map_test/route.rb +46 -33
  85. data/sample/map_test/town.rb +19 -13
  86. data/sample/polygon_test.rb +35 -0
  87. data/sample/rasterscroll.rb +25 -0
  88. data/sample/takahashi.rb +42 -0
  89. data/sample/text.png +0 -0
  90. data/sample/textbox_sample.rb +190 -0
  91. data/sample/transform.rb +54 -0
  92. data/sample/utility_test.rb +73 -0
  93. data/sample/utility_test2.rb +61 -0
  94. data/sample/utility_test3.rb +64 -0
  95. data/sample/utility_test4.rb +73 -0
  96. data/uninstall_miyako.rb +19 -0
  97. data/win/miyako_no_katana.so +0 -0
  98. metadata +165 -148
  99. data/miyako.png +0 -0
  100. data/miyako_banner.png +0 -0
  101. data/miyako_no_katana/miyako_no_katana.c +0 -3301
  102. data/sample/fixed_map_test/map_sample.rb +0 -121
@@ -29,6 +29,16 @@ end
29
29
 
30
30
  if enable_config("static-libs",false) then
31
31
  have_library("SDL")
32
+ have_library("freetype")
33
+ have_library("SGE")
34
+ end
35
+
36
+ if have_library("SDL_ttf","TTF_Init") then
37
+ $CFLAGS+= " -D HAVE_SDL_TTF "
38
+ end
39
+
40
+ if have_library("SGE","sge_Line") then
41
+ $CFLAGS+= " -D HAVE_SGE "
32
42
  end
33
43
 
34
44
  create_makefile('miyako_no_katana')
data/extern.h ADDED
@@ -0,0 +1,29 @@
1
+ /*
2
+ --
3
+ Miyako v2.0 Extend Library "Miyako no Katana"
4
+ Copyright (C) 2008 Cyross Makoto
5
+
6
+ This library is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU Lesser General Public
8
+ License as published by the Free Software Foundation; either
9
+ version 2.1 of the License, or (at your option) any later version.
10
+
11
+ This library is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ Lesser General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Lesser General Public
17
+ License along with this library; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ ++
20
+ */
21
+
22
+ extern void _miyako_setup_unit(VALUE unit, SDL_Surface *screen, MiyakoBitmap *mb, VALUE x, VALUE y, int use_yield);
23
+ extern void _miyako_setup_unit_2(VALUE unit_s, VALUE unit_d,
24
+ SDL_Surface *screen,
25
+ MiyakoBitmap *mb_s, MiyakoBitmap *mb_d,
26
+ VALUE x, VALUE y, int use_yield);
27
+ extern int _miyako_init_rect(MiyakoBitmap *src, MiyakoBitmap *dst, MiyakoSize *size);
28
+ extern void _miyako_yield_unit_1(MiyakoBitmap *src);
29
+ extern void _miyako_yield_unit_2(MiyakoBitmap *src, MiyakoBitmap *dst);
data/install_miyako.rb CHANGED
@@ -1,5 +1,8 @@
1
- if RUBY_VERSION < '1.8.7'
2
- puts 'Sorry. Miyako needs Ruby 1.8.7 or above...'
1
+ # Miyako2.0 install script
2
+ # 2009 Cyross Makoto
3
+
4
+ if RUBY_VERSION < '1.9.1'
5
+ puts 'Sorry. Miyako needs Ruby 1.9.1 or above...'
3
6
  exit
4
7
  end
5
8
 
@@ -10,8 +13,8 @@ rescue
10
13
  exit
11
14
  end
12
15
 
13
- if SDL::VERSION < '2.0'
14
- puts 'Sorry. Miyako needs Ruby/SDL 2.0.0 or above...'
16
+ if SDL::VERSION < '2.1'
17
+ puts 'Sorry. Miyako needs Ruby/SDL 2.1.0 or above...'
15
18
  exit
16
19
  end
17
20
 
@@ -35,19 +38,17 @@ osn = Config::CONFIG["target_os"].downcase
35
38
  if osn =~ /mswin|mingw|cygwin|bccwin/
36
39
  ext_dir = "win/"
37
40
  elsif osn =~ /darwin/ # Mac OS X
38
- unless ENV['SDL_CONFIG_PATH']
39
- puts 'Please set SDL_CONFIG_PATH environment variable...'
40
- puts "USAGE: SDL_CONFIG_PATH='/bin/sh /hoge/foo/sdl-config"
41
- exit
41
+ if ENV['SDL_CONFIG_PATH']
42
+ system(Config::CONFIG["ruby_install_name"] + " extconf.rb --with-sdl-config='#{ENV['SDL_CONFIG_PATH']}'; make")
43
+ else
44
+ system(Config::CONFIG["ruby_install_name"] + " extconf.rb --with-sdl-config='sdl-config'; make")
42
45
  end
43
- system("cd miyako_no_katana/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb --with-sdl-config='#{ENV['SDL_CONFIG_PATH']}'; make ; cp miyako_no_katana.bundle ../")
44
46
  else # linux, U*IX...
45
- unless ENV['SDL_CONFIG_PATH']
46
- puts 'Please set SDL_CONFIG_PATH environment variable...'
47
- puts "USAGE: SDL_CONFIG_PATH='/bin/sh /hoge/foo/sdl-config"
48
- exit
47
+ if ENV['SDL_CONFIG_PATH']
48
+ system(Config::CONFIG["ruby_install_name"] + " extconf.rb --with-sdl-config='#{ENV['SDL_CONFIG_PATH']}'; make")
49
+ else
50
+ system(Config::CONFIG["ruby_install_name"] + " extconf.rb --with-sdl-config='sdl-config'; make")
49
51
  end
50
- system("cd miyako_no_katana/ ; " + Config::CONFIG["ruby_install_name"] + " extconf.rb --with-sdl-config='#{ENV['SDL_CONFIG_PATH']}'; make ; cp miyako_no_katana.so ../")
51
52
  end
52
53
 
53
54
  sitelibdir = Config::CONFIG["sitelibdir"] + "/Miyako"
@@ -73,3 +74,14 @@ end
73
74
  Dir.glob("lib/Miyako/*.rb"){|fname| FileUtils.install(fname, sitelibdir, option)}
74
75
  Dir.glob("lib/Miyako/API/*.rb"){|fname| FileUtils.install(fname, apidir, option)}
75
76
  Dir.glob("lib/Miyako/EXT/*.rb"){|fname| FileUtils.install(fname, extdir, option)}
77
+
78
+ unless osn =~ /mswin|mingw|cygwin|bccwin/
79
+ FileUtils.chmod(0755, sitelibdir)
80
+ FileUtils.chmod(0755, apidir)
81
+ FileUtils.chmod(0755, extdir)
82
+ FileUtils.chmod(0644, sitelibdir+'/miyako.rb')
83
+ Dir.glob(sitelibdir+"/*.so"){|fname| FileUtils.chmod(0644, fname)} # for linux,bsd
84
+ Dir.glob(sitelibdir+"/*.bundle"){|fname| FileUtils.chmod(0644, fname)} # for macosx
85
+ Dir.glob(apidir+"/*.rb"){|fname| FileUtils.chmod(0644, fname)}
86
+ Dir.glob(extdir+"/*.rb"){|fname| FileUtils.chmod(0644, fname)}
87
+ end
@@ -1,8 +1,8 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  =begin
3
3
  --
4
- Miyako v1.5
5
- Copyright (C) 2007-2008 Cyross Makoto
4
+ Miyako v2.0
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
6
 
7
7
  This library is free software; you can redistribute it and/or
8
8
  modify it under the terms of the GNU Lesser General Public
@@ -2,7 +2,7 @@
2
2
  =begin
3
3
  --
4
4
  Miyako v2.0
5
- Copyright (C) 2007-2008 Cyross Makoto
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
6
 
7
7
  This library is free software; you can redistribute it and/or
8
8
  modify it under the terms of the GNU Lesser General Public
@@ -25,23 +25,19 @@ module Miyako
25
25
  #位置変更メソッドを追加
26
26
  class PointStruct < Struct
27
27
  #===位置を変更する(変化量を指定)
28
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
28
29
  #_dx_:: 移動量(x方向)。単位はピクセル
29
30
  #_dy_:: 移動量(y方向)。単位はピクセル
30
31
  #返却値:: 自分自身を返す
31
32
  def move(dx, dy)
32
- self[0]+=dx
33
- self[1]+=dy
34
- return self
35
33
  end
36
34
 
37
35
  #===位置を変更する(位置指定)
36
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
38
37
  #_x_:: 移動先位置(x方向)。単位はピクセル
39
38
  #_y_:: 移動先位置(y方向)。単位はピクセル
40
39
  #返却値:: 自分自身を返す
41
40
  def move_to(x, y)
42
- self[0]=x
43
- self[1]=y
44
- return self
45
41
  end
46
42
  end
47
43
 
@@ -49,13 +45,19 @@ module Miyako
49
45
  #サイズ変更メソッドを追加
50
46
  class SizeStruct < Struct
51
47
  #===サイズを変更する(変化量を指定)
48
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
49
+ #_dw_:: 幅変更。単位はピクセル
50
+ #_dh_:: 高さ変更。単位はピクセル
51
+ #返却値:: 自分自身を返す
52
+ def resize(dw, dh)
53
+ end
54
+
55
+ #===サイズを変更する
56
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
52
57
  #_w_:: 幅変更。単位はピクセル
53
58
  #_h_:: 高さ変更。単位はピクセル
54
59
  #返却値:: 自分自身を返す
55
- def resize(w, h)
56
- self[0]=w
57
- self[1]=h
58
- return self
60
+ def resize_to(w, h)
59
61
  end
60
62
  end
61
63
 
@@ -63,33 +65,43 @@ module Miyako
63
65
  #矩形変更メソッドを追加
64
66
  class RectStruct < Struct
65
67
  #===位置を変更する(変化量を指定)
68
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
66
69
  #_dx_:: 移動量(x方向)。単位はピクセル
67
70
  #_dy_:: 移動量(y方向)。単位はピクセル
68
71
  #返却値:: 自分自身を返す
69
72
  def move(dx, dy)
70
- self[0]+=dx
71
- self[1]+=dy
72
- return self
73
73
  end
74
74
 
75
75
  #===位置を変更する(位置指定)
76
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
76
77
  #_x_:: 移動先位置(x方向)。単位はピクセル
77
78
  #_y_:: 移動先位置(y方向)。単位はピクセル
78
79
  #返却値:: 自分自身を返す
79
80
  def move_to(x, y)
80
- self[0]=x
81
- self[1]=y
82
- return self
83
81
  end
84
82
 
85
83
  #===サイズを変更する(変化量を指定)
84
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
85
+ #_dw_:: 幅変更。単位はピクセル
86
+ #_dh_:: 高さ変更。単位はピクセル
87
+ #返却値:: 自分自身を返す
88
+ def resize(dw, dh)
89
+ end
90
+
91
+ #===サイズを変更する
92
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
86
93
  #_w_:: 幅変更。単位はピクセル
87
94
  #_h_:: 高さ変更。単位はピクセル
88
95
  #返却値:: 自分自身を返す
89
- def resize(w, h)
90
- self[2]=w
91
- self[3]=h
92
- return self
96
+ def resize_to(w, h)
97
+ end
98
+
99
+ #===指定の座標が矩形の範囲内かを問い合わせる
100
+ #_x_:: 指定のx座標
101
+ #_y_:: 指定のy座標
102
+ #返却値:: 座標が矩形の範囲内ならtrueを返す
103
+ def in_range?(x, y)
104
+ return (x >= self[0] && y >= self[1] && x < self[0] + self[2] && y < self[1] + self[3])
93
105
  end
94
106
  end
95
107
 
@@ -97,40 +109,165 @@ module Miyako
97
109
  #位置変更メソッドを追加
98
110
  class SquareStruct < Struct
99
111
  #===位置を変更する(変化量を指定)
112
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
100
113
  #_dx_:: 移動量(x方向)。単位はピクセル
101
114
  #_dy_:: 移動量(y方向)。単位はピクセル
102
115
  #返却値:: 自分自身を返す
103
116
  def move(dx, dy)
104
- self[0]+=dx
105
- self[1]+=dy
106
- self[2]+=dx
107
- self[3]+=dy
108
- return self
109
117
  end
110
118
 
111
119
  #===位置を変更する(位置指定)
120
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
112
121
  #_x_:: 移動先位置(x方向)。単位はピクセル
113
122
  #_y_:: 移動先位置(y方向)。単位はピクセル
114
123
  #返却値:: 自分自身を返す
115
124
  def move_to(x, y)
116
- w = self[2] - self[0]
117
- h = self[3] - self[1]
118
- self[0]=x
119
- self[1]=y
120
- self[2]=x+w
121
- self[3]=y+h
122
- return self
123
125
  end
124
126
 
125
127
  #===サイズを変更する(変化量を指定)
128
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
129
+ #_dw_:: 幅変更。単位はピクセル
130
+ #_dh_:: 高さ変更。単位はピクセル
131
+ #返却値:: 自分自身を返す
132
+ def resize(dw, dh)
133
+ end
134
+
135
+ #===サイズを変更する
136
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
126
137
  #_w_:: 幅変更。単位はピクセル
127
138
  #_h_:: 高さ変更。単位はピクセル
128
139
  #返却値:: 自分自身を返す
129
- def resize(w, h)
130
- raise MiyakoError, "Illegal size! w:#{w} h:#{h}" if (w < 0 || h < 0)
131
- self[2]=self[0] + w - 1
132
- self[3]=self[1] + h - 1
133
- return self
140
+ def resize_to(w, h)
141
+ end
142
+
143
+ #===指定の座標が矩形の範囲内かを問い合わせる
144
+ #_x_:: 指定のx座標
145
+ #_y_:: 指定のy座標
146
+ #返却値:: 座標が矩形の範囲内ならtrueを返す
147
+ def in_range?(x, y)
148
+ return (x >= self[0] && y >= self[1] && x <= self[2] && y <= self[3])
149
+ end
150
+ end
151
+
152
+ #==線分の区間情報のための構造体クラス
153
+ #位置変更メソッドを追加
154
+ class SegmentStruct < Struct
155
+ #===Segment構造体インスタンスを生成する
156
+ # 入力した矩形情報(Rect構造体、[x,y,w,h]で表される配列)から、構造体インスタンスを生成する
157
+ #_rect_:: 算出に使用する矩形情報
158
+ #返却値:: 生成したインスタンスを返す
159
+ def SegmentStruct.create(rect)
160
+ return Segment.new([rect[0], rect[0] + rect[2] - 1],
161
+ [rect[1], rect[1] + rect[3] - 1])
162
+ end
163
+
164
+ #===位置を変更する(変化量を指定)
165
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
166
+ #_dx_:: 移動量(x方向)。単位はピクセル
167
+ #_dy_:: 移動量(y方向)。単位はピクセル
168
+ #返却値:: 自分自身を返す
169
+ def move(dx, dy)
170
+ end
171
+
172
+ #===位置を変更する(位置指定)
173
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
174
+ #_x_:: 移動先位置(x方向)。単位はピクセル
175
+ #_y_:: 移動先位置(y方向)。単位はピクセル
176
+ #返却値:: 自分自身を返す
177
+ def move_to(x, y)
178
+ end
179
+
180
+ #===サイズを変更する(変化量を指定)
181
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
182
+ #_dw_:: 幅変更。単位はピクセル
183
+ #_dh_:: 高さ変更。単位はピクセル
184
+ #返却値:: 自分自身を返す
185
+ def resize(dw, dh)
186
+ end
187
+
188
+ #===サイズを変更する
189
+ # ブロックを渡したとき、ブロックの評価した結果、偽になったときは移動させた値を元に戻す
190
+ #_w_:: 幅変更。単位はピクセル
191
+ #_h_:: 高さ変更。単位はピクセル
192
+ #返却値:: 自分自身を返す
193
+ def resize_to(w, h)
194
+ end
195
+
196
+ def reset(min_x, max_x, min_y, max_y) #:nodoc:
197
+ x[0], x[1], y[0], y[1] = min_x, max_x, min_y, max_y
198
+ end
199
+
200
+ #===小線分を移動させたとき、大線分が範囲内かどうかを判別する
201
+ # 移動後の小線分が大線分の範囲内にあるかどうかをtrue/falseで取得する
202
+ #_idx_:: 判別する方向(xもしくはy)。:x, :y, 0, 1のどれかを渡す。それ以外を渡すと例外が発生する
203
+ #_big_segment_:: 大線分の範囲。[min,max]で構成された2要素の配列
204
+ #_d_:: selfの移動量
205
+ #_flag_:: 大線分の端いっぱいも範囲外に含めるときはtrueを設定する。デフォルトはfalse
206
+ #返却値:: 範囲内のときはtrue、範囲外の時はfalseを返す
207
+ def in_bounds?(idx, big_segment, d, flag = false)
208
+ raise MiyakoError, "illegal index : #{idx}" unless [0,1,:x,:y].include?(idx)
209
+ nx = self[idx][0] + d
210
+ nx2 = self[idx][1] + d
211
+ nx, nx2 = nx2, nx if nx > nx2
212
+ return flag ?
213
+ (nx >= big_segment[idx][0] && nx2 <= big_segment[idx][1]) :
214
+ (nx > big_segment[idx][0] && (nx2 - 1) < big_segment[idx][1])
215
+ end
216
+
217
+ #===小線分を移動させたとき、大線分が範囲内かどうかを判別して、その状態によって値を整数で返す
218
+ # 移動後の小線分の範囲が大線分の範囲内のときは0、
219
+ # マイナス方向で範囲外に出るときは-1、
220
+ # プラス方向で出るときは1を返す
221
+ #_idx_:: 判別する方向(xもしくはy)。:x, :y, 0, 1のどれかを渡す。それ以外を渡すと例外が発生する
222
+ #_big_segment_:: 大線分の範囲。[min,max]で構成された2要素の配列
223
+ #_d_:: selfの移動量
224
+ #_flag_:: 大線分の端いっぱいも範囲外に含めるときはtrueを設定する。デフォルトはfalse
225
+ #返却値:: 判別の結果
226
+ def in_bounds_ex?(idx, big_segment, d, flag = false)
227
+ raise MiyakoError, "illegal index : #{idx}" unless [0,1,:x,:y].include?(idx)
228
+ nx = self[idx][0] + d
229
+ nx2 = self[idx][1] + d - 1
230
+ nx, nx2 = nx2, nx if nx > nx2
231
+ return -1 if (nx < big_segment[idx][0]) || (flag && (nx == big_segment[idx][0]))
232
+ return (nx2 > big_segment[idx][1]) || (flag && (nx2 == big_segment[idx][1])) ? 1 : 0
233
+ end
234
+
235
+ #===移動先が表示範囲内かどうかを判別して、その状態によって値を整数で返す
236
+ # 移動後の小線分の範囲が大線分の範囲内のときは0、
237
+ # マイナス方向で範囲外に出るときは1、
238
+ # プラス方向で出るときは-1を返す
239
+ #_idx_:: 判別する方向(xもしくはy)。:x, :y, 0, 1のどれかを渡す。それ以外を渡すと例外が発生する
240
+ #_big_segment_:: 大線分の範囲。[min,max]で構成された2要素の配列
241
+ #_d_:: selfの移動量
242
+ #_flag_:: 大線分の端いっぱいも範囲外に含めるときはtrueを設定する。デフォルトはfalse
243
+ #返却値:: 判別の結果
244
+ def in_bounds_rev?(idx, big_segment, d, flag = false)
245
+ raise MiyakoError, "illegal index : #{idx}" unless [0,1,:x,:y].include?(idx)
246
+ nx = self[idx][0] + d
247
+ nx2 = self[idx][1] + d - 1
248
+ nx, nx2 = nx2, nx if nx > nx2
249
+ return 1 if (nx < big_segment[idx][0]) || (flag && (nx == big_segment[idx][0]))
250
+ return (nx2 > big_segment[idx][1]) || (flag && (nx2 == big_segment[idx][1])) ? -1 : 0
251
+ end
252
+
253
+ #===移動先が表示範囲内かどうかを判別して、その状態によって値を整数で返す
254
+ # 移動量が0のときは0、
255
+ # 移動後の小線分の範囲が大線分の範囲内のときは1、
256
+ # 範囲外に出るときは-1を返す
257
+ #_idx_:: 判別する方向(xもしくはy)。:x, :y, 0, 1のどれかを渡す。それ以外を渡すと例外が発生する
258
+ #_big_segment_:: 大線分の範囲。[min,max]で構成された2要素の配列
259
+ #_d_:: selfの移動量
260
+ #_flag_:: 大線分の端いっぱいも範囲外に含めるときはtrueを設定する。デフォルトはfalse
261
+ #返却値:: 判別の結果
262
+ def in_bounds_rev_ex?(idx, big_segment, d, flag = false)
263
+ raise MiyakoError, "illegal index : #{idx}" unless [0,1,:x,:y].include?(idx)
264
+ return 0 if d == 0
265
+ dir = (d <=> 0)
266
+ nx = self[idx][0] + d
267
+ nx2 = self[idx][1] + d - 1
268
+ nx, nx2 = nx2, nx if nx > nx2
269
+ return -dir if (nx < big_segment[idx][0]) || (flag && (nx == big_segment[idx][0]))
270
+ return (nx2 > big_segment[idx][1]) || (flag && (nx2 == big_segment[idx][1])) ? -dir : dir
134
271
  end
135
272
  end
136
273
 
@@ -158,6 +295,11 @@ module Miyako
158
295
  #_bottom_:: 右下Y座標の値
159
296
  Square = SquareStruct.new(:left, :top, :right, :bottom)
160
297
 
298
+ #==線分を構成するために使用する構造体
299
+ #_x_:: X方向の線分([min_x, max_x]で構成される配列)
300
+ #_y_:: Y方向の線分([min_y, max_y]で構成される配列)
301
+ Segment = SegmentStruct.new(:x, :y)
302
+
161
303
  #==色を管理するクラス
162
304
  #
163
305
  #色情報は、[r(赤),g(緑),b(青),a(透明度)]、[r,g,b,a(透明度)]の2種類の配列
@@ -410,9 +552,9 @@ class Array
410
552
  end
411
553
  end
412
554
 
413
- =begin rdoc
414
- ==1個のインスタンスでイテレータを実装できるモジュール
415
- =end
555
+ #=begin rdoc
556
+ #==1個のインスタンスでイテレータを実装できるモジュール
557
+ #=end
416
558
  module SingleEnumerable
417
559
  include Enumerable
418
560
 
@@ -2,7 +2,7 @@
2
2
  =begin
3
3
  --
4
4
  Miyako v2.0
5
- Copyright (C) 2007-2008 Cyross Makoto
5
+ Copyright (C) 2007-2009 Cyross Makoto
6
6
 
7
7
  This library is free software; you can redistribute it and/or
8
8
  modify it under the terms of the GNU Lesser General Public
@@ -26,10 +26,482 @@ module Miyako
26
26
  #SDLのSurfaceクラスインスタンスを管理するクラス
27
27
  class Bitmap
28
28
  def Bitmap.create(w, h, flag=SDL::HWSURFACE | SDL::SRCCOLORKEY | SDL::SRCALPHA) #:nodoc:
29
- return SDL::Surface.new(flag, w, h, $miyako_bpp, Screen.screen.Rmask, Screen.screen.Gmask, Screen.screen.Bmask, Screen.screen.Amask)
29
+ return SDL::Surface.new(flag, w, h, 32, Screen.bitmap.Rmask, Screen.bitmap.Gmask, Screen.bitmap.Bmask, Screen.bitmap.Amask)
30
30
  end
31
+
31
32
  def Bitmap.load(filename) #:nodoc:
32
33
  return SDL::Surface.load(filename)
33
34
  end
35
+
36
+ #===画像をαチャネル付き画像へ転送する
37
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。
38
+ #src==dstの場合、何も行わない
39
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
40
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
41
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
42
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
43
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
44
+ #_x_:: 転送先の転送開始位置(x方向・単位:ピクセル)
45
+ #_y_:: 転送先の転送開始位置(y方向・単位:ピクセル)
46
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
47
+ def Bitmap.blit_aa(src, dst, x, y)
48
+ end
49
+
50
+ #===2つの画像のandを取り、別の画像へ転送する
51
+ #範囲は、src1側SpriteUnitとsrc2側との(ow,oh)の小さい方の範囲で転送する。
52
+ #src1とsrc2の合成は、src2側SpriteUnitの(x,y)をsrc1側の起点として、src2側SpriteUnitの(ow,oh)の範囲で転送する。
53
+ #dst側は、src1側SpriteUnitの(x,y)を起点に転送する。
54
+ #以下の条件のどれかに合致しているとき、転送を行わなずにnilを返す
55
+ #1.src1とsrc2のどちらかが、もう一方の内側にない
56
+ #2.src2の大きさとdstの大きさが違う
57
+ #3.src1==src2の場合、何も行わない
58
+ #ブロックを渡すと、src1,src2,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る。
59
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
60
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
61
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
62
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
63
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
64
+ def Bitmap.blit_and(src, dst)
65
+ end
66
+
67
+ #===2つの画像のorを取り、別の画像へ転送する
68
+ #範囲は、src1側SpriteUnitとsrc2側との(ow,oh)の小さい方の範囲で転送する。
69
+ #src1とsrc2の合成は、src2側SpriteUnitの(x,y)をsrc1側の起点として、src2側SpriteUnitの(ow,oh)の範囲で転送する。
70
+ #dst側は、src1側SpriteUnitの(x,y)を起点に転送する。
71
+ #以下の条件のどれかに合致しているとき、転送を行わなずにnilを返す
72
+ #1.src1とsrc2のどちらかが、もう一方の内側にない
73
+ #2.src2の大きさとdstの大きさが違う
74
+ #3.src1==src2の場合、何も行わない
75
+ #ブロックを渡すと、src1,src2,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る)
76
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
77
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
78
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
79
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
80
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
81
+ def Bitmap.blit_or(src, dst)
82
+ end
83
+
84
+ #===2つの画像のxorを取り、別の画像へ転送する
85
+ #範囲は、src1側SpriteUnitとsrc2側との(ow,oh)の小さい方の範囲で転送する。
86
+ #src1とsrc2の合成は、src2側SpriteUnitの(x,y)をsrc1側の起点として、src2側SpriteUnitの(ow,oh)の範囲で転送する。
87
+ #dst側は、src1側SpriteUnitの(x,y)を起点に転送する。
88
+ #以下の条件のどれかに合致しているとき、転送を行わなずにnilを返す
89
+ #1.src1とsrc2のどちらかが、もう一方の内側にない
90
+ #2.src2の大きさとdstの大きさが違う
91
+ #3.src1==src2の場合、何も行わない
92
+ #ブロックを渡すと、src1,src2,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
93
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
94
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
95
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
96
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
97
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
98
+ def Bitmap.blit_xor(src, dst)
99
+ end
100
+
101
+ #===画像をαチャネル付き画像へ転送する
102
+ #引数で渡ってきた特定の色に対して、α値をゼロにする画像を生成する
103
+ #src==dstの場合、何も行わずすぐに呼びだし元に戻る
104
+ #範囲は、src側SpriteUnitの(w,h)の範囲で転送する。
105
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
106
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
107
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
108
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
109
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
110
+ #_color_key_:: 透明にしたい色(各要素がr,g,bに対応している整数の配列(0~255))
111
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
112
+ def Bitmap.ck_to_ac(src, dst, color_key)
113
+ end
114
+
115
+ #===画像のαチャネルを255に拡張する
116
+ #αチャネルの値を255に拡張する(α値をリセットする)
117
+ #範囲は、src側SpriteUnitの(w,h)の範囲で転送する。
118
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
119
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
120
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
121
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
122
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
123
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
124
+ def Bitmap.reset_ac(src, dst)
125
+ end
126
+
127
+ #===画像をαチャネル付き画像へ変換する
128
+ #24ビット画像(αチャネルがゼロの画像)に対して、すべてのα値を255にする画像を生成する
129
+ #範囲は、src側SpriteUnitの(w,h)の範囲で転送する。
130
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
131
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
132
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
133
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
134
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
135
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
136
+ def Bitmap.normal_to_ac(src, dst)
137
+ end
138
+
139
+ #===画像をαチャネル付き画像へ破壊的に変更する
140
+ #引数で渡ってきた特定の色に対して、α値をゼロにする画像を生成する
141
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
142
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
143
+ #ブロックの引数は、|dst側SpriteUnit|となる。
144
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
145
+ #_color_key_:: 透明にしたい色(各要素がr,g,bに対応している整数の配列(0~255))
146
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
147
+ def Bitmap.ck_to_ac!(dst, color_key)
148
+ end
149
+
150
+ #===画像のαチャネルを255に拡張する(破壊的に変更)
151
+ #αチャネルの値を255に拡張する(α値をリセットする)
152
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
153
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
154
+ #ブロックの引数は、|dst側SpriteUnit|となる。
155
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
156
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
157
+ def Bitmap.reset_ac!(dst)
158
+ end
159
+
160
+ #===画像をαチャネル付き画像へ破壊的に変換する
161
+ #24ビット画像(αチャネルがゼロの画像)に対して、すべてのα値を255にする画像を生成する
162
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
163
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
164
+ #ブロックの引数は、|dst側SpriteUnit|となる。
165
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
166
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
167
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
168
+ def Bitmap.normal_to_ac!(dst)
169
+ end
170
+
171
+ #===画面(αチャネル無し32bit画像)をαチャネル付き画像へ転送する
172
+ #α値がゼロの画像から、α値を255にする画像を生成する
173
+ #src==dstの場合、何も行わずすぐに呼びだし元に戻る
174
+ #範囲は、src側SpriteUnitの(w,h)の範囲で転送する。
175
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
176
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
177
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
178
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
179
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
180
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
181
+ def Bitmap.screen_to_ac(src, dst)
182
+ end
183
+
184
+ #===画像のαチャネルの値を一定の割合で変化させて転送する
185
+ #degreeの値が1.0に近づけば近づくほど透明に近づき、
186
+ #degreeの値が-1.0に近づけば近づくほど不透明に近づく
187
+ #(値が-1.0のときは完全不透明、値が0.0のときは変化なし、1.0のときは完全に透明になる)
188
+ #但し、元々αの値がゼロの時は変化しない
189
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
190
+ #但しsrc==dstのときはx,yを無視する
191
+ #src == dst : 元の画像を変換した画像に置き換える
192
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
193
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
194
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
195
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
196
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
197
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
198
+ #_degree_:: 減少率。-1.0<=degree<=1.0までの実数
199
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
200
+ def Bitmap.dec_alpha(src, dst, degree)
201
+ end
202
+
203
+ #===画像の色を一定の割合で黒に近づける(ブラックアウト)
204
+ #赤・青・緑・αの各要素を一定の割合で下げ、黒色に近づける。
205
+ #degreeの値が1.0に近づけば近づくほど黒色に近づく(値が0.0のときは変化なし、1.0のときは真っ黒になる)
206
+ #αの値が0のときは変わらないことに注意!
207
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
208
+ #但しsrc==dstのときはx,yを無視する
209
+ #src == dst : 元の画像を変換した画像に置き換える
210
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
211
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
212
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
213
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
214
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
215
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
216
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
217
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
218
+ def Bitmap.black_out(src, dst, degree)
219
+ end
220
+
221
+ #===画像の色を一定の割合で白に近づける(ホワイトアウト)
222
+ #赤・青・緑・αの各要素を一定の割合で上げ、白色に近づける。
223
+ #degreeの値が1.0に近づけば近づくほど白色に近づく(値が0.0のときは変化なし、1.0のときは真っ白になる)
224
+ #αの値が0のときは変わらないことに注意!
225
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
226
+ #但しsrc==dstのときはx,yを無視する
227
+ #src == dst : 元の画像を変換した画像に置き換える
228
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
229
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
230
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
231
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
232
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
233
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
234
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
235
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
236
+ def Bitmap.white_out(src, dst, degree)
237
+ end
238
+
239
+ #===画像のRGB値を反転させる
240
+ #αチャネルの値は変更しない
241
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
242
+ #但しsrc==dstのときはx,yを無視する
243
+ #src == dst : 元の画像を変換した画像に置き換える
244
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
245
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
246
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
247
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
248
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
249
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
250
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
251
+ def Bitmap.inverse(src, dst)
252
+ end
253
+
254
+ #===画像のαチャネルの値を一定の割合で変化させて転送する
255
+ #degreeの値が1.0に近づけば近づくほど透明に近づき、
256
+ #degreeの値が-1.0に近づけば近づくほど不透明に近づく
257
+ #(値が-1.0のときは完全不透明、値が0.0のときは変化なし、1.0のときは完全に透明になる)
258
+ #但し、元々αの値がゼロの時は変化しない
259
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
260
+ #但しsrc==dstのときはx,yを無視する
261
+ #src == dst : 元の画像を変換した画像に置き換える
262
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
263
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
264
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
265
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
266
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
267
+ #_degree_:: 減少率。-1.0<=degree<=1.0までの実数
268
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
269
+ def Bitmap.dec_alpha!(src, degree)
270
+ end
271
+
272
+ #===画像の色を一定の割合で黒に近づける(ブラックアウト)
273
+ #赤・青・緑・αの各要素を一定の割合で下げ、黒色に近づける。
274
+ #degreeの値が1.0に近づけば近づくほど黒色に近づく(値が0.0のときは変化なし、1.0のときは真っ黒になる)
275
+ #αの値が0のときは変わらないことに注意!
276
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
277
+ #但しsrc==dstのときはx,yを無視する
278
+ #src == dst : 元の画像を変換した画像に置き換える
279
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
280
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
281
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
282
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
283
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
284
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
285
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
286
+ def Bitmap.black_out!(src, degree)
287
+ end
288
+
289
+ #===画像の色を一定の割合で白に近づける(ホワイトアウト)
290
+ #赤・青・緑・αの各要素を一定の割合で上げ、白色に近づける。
291
+ #degreeの値が1.0に近づけば近づくほど白色に近づく(値が0.0のときは変化なし、1.0のときは真っ白になる)
292
+ #αの値が0のときは変わらないことに注意!
293
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
294
+ #但しsrc==dstのときはx,yを無視する
295
+ #src == dst : 元の画像を変換した画像に置き換える
296
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
297
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
298
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
299
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
300
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
301
+ #_degree_:: 変化率。0.0<=degree<=1.0までの実数
302
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
303
+ def Bitmap.white_out!(src, degree)
304
+ end
305
+
306
+ #===画像のRGB値を反転させる
307
+ #αチャネルの値は変更しない
308
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
309
+ #但しsrc==dstのときはx,yを無視する
310
+ #src == dst : 元の画像を変換した画像に置き換える
311
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
312
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
313
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
314
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
315
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
316
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
317
+ def Bitmap.inverse!(src)
318
+ end
319
+
320
+ #===2枚の画像の加算合成を行う
321
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
322
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
323
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
324
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
325
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
326
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
327
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
328
+ def Bitmap.additive(src, dst)
329
+ end
330
+
331
+ #===2枚の画像の減算合成を行う
332
+ #範囲は、src側SpriteUnitの(ow,oh)の範囲で転送する。転送先の描画開始位置は、src側SpriteUnitの(x,y)を左上とする。
333
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
334
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
335
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
336
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
337
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
338
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
339
+ def Bitmap.subtraction(src, dst)
340
+ end
341
+
342
+ #===画像を回転させて貼り付ける
343
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、(ow,oh)の範囲で転送する。
344
+ #回転の中心は(ox,oy)を起点に、(cx,cy)が中心になるように設定する。
345
+ #転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、dst側SpriteUnitの(cx,cy)が中心になるように設定にする。
346
+ #回転角度が正だと右回り、負だと左回りに回転する
347
+ #src==dstの場合、何も行わない
348
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
349
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
350
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
351
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
352
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
353
+ #_radian_:: 回転角度。単位はラジアン。値の範囲は0<=radian<2pi
354
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
355
+ def Bitmap.rotate(src, dst, radian)
356
+ end
357
+
358
+ #===画像を拡大・縮小・鏡像(ミラー反転)させて貼り付ける
359
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、(ow,oh)の範囲で転送する。
360
+ #回転の中心は(ox,oy)を起点に、(cx,cy)が中心になるように設定する。
361
+ #転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、dst側SpriteUnitの(cx,cy)が中心になるように設定にする。
362
+ #度合いが scale > 1.0 だと拡大、 0 < scale < 1.0 だと縮小、scale < 0.0 負だと鏡像の拡大・縮小になる(scale == -1.0 のときはミラー反転になる)
363
+ #但し、拡大率が4096分の1以下だと、拡大/縮小しない可能性がある
364
+ #src==dstの場合、何も行わない
365
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
366
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
367
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
368
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
369
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
370
+ #_xscale_:: 拡大率(x方向)
371
+ #_yscale_:: 拡大率(y方向)
372
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
373
+ def Bitmap.scale(src, dst, xscale, yscale)
374
+ end
375
+
376
+ #===画像を変形(回転・拡大・縮小・鏡像)させて貼り付ける
377
+ #転送元の描画範囲は、src側SpriteUnitの(ox,oy)を起点に、src側(ow,oh)の範囲で転送する。
378
+ #回転の中心はsrc側(ox,oy)を起点に、src側(cx,cy)が中心になるように設定する。
379
+ #転送先の描画範囲は、src側SpriteUnitの(x,y)を起点に、dst側SpriteUnitの(cx,cy)が中心になるように設定にする。
380
+ #回転角度は、src側SpriteUnitのangleを使用する
381
+ #回転角度が正だと右回り、負だと左回りに回転する
382
+ #変形の度合いは、src側SpriteUnitのxscale, yscaleを使用する(ともに実数で指定する)。それぞれ、x方向、y方向の度合いとなる
383
+ #度合いが scale > 1.0 だと拡大、 0 < scale < 1.0 だと縮小、scale < 0.0 負だと鏡像の拡大・縮小になる
384
+ #(scale == -1.0 のときはミラー反転になる)
385
+ #但し、拡大率が4096分の1以下だと、拡大/縮小しない可能性がある
386
+ #src==dstの場合、何も行わない
387
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
388
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
389
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
390
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
391
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
392
+ #_radian_:: 回転角度。単位はラジアン。値の範囲は0<=radian<2pi
393
+ #_xscale_:: 拡大率(x方向)
394
+ #_yscale_:: 拡大率(y方向)
395
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
396
+ def Bitmap.transform(src, dst, radian, xscale, yscale)
397
+ end
398
+
399
+ #===画像の色相を変更する
400
+ #範囲は、srcの(ow,oh)の範囲で転送する。転送先の描画開始位置は、
401
+ #srcの(x,y)を左上とする。但しsrc==dstのときはx,yを無視する
402
+ #src == dst : 元の画像を変換した画像に置き換える
403
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
404
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
405
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
406
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
407
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
408
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
409
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
410
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
411
+ def Bitmap.hue(src, dst, degree)
412
+ end
413
+
414
+ #===画像の彩度を変更する
415
+ #範囲は、srcの(ow,oh)の範囲で転送する。転送先の描画開始位置は、
416
+ #srcの(x,y)を左上とする。但しsrc==dstのときはx,yを無視する
417
+ #src == dst : 元の画像を変換した画像に置き換える
418
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
419
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
420
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
421
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
422
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
423
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
424
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
425
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
426
+ def Bitmap.saturation(src, dst, saturation)
427
+ end
428
+
429
+ #===画像の明度を変更する
430
+ #範囲は、srcの(ow,oh)の範囲で転送する。転送先の描画開始位置は、
431
+ #srcの(x,y)を左上とする。但しsrc==dstのときはx,yを無視する
432
+ #src == dst : 元の画像を変換した画像に置き換える
433
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
434
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
435
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
436
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
437
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
438
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
439
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
440
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
441
+ def Bitmap.value(src, dst, value)
442
+ end
443
+
444
+ #===画像の色相・彩度・明度を変更する
445
+ #範囲は、srcの(ow,oh)の範囲で転送する。転送先の描画開始位置は、
446
+ #srcの(x,y)を左上とする。但しsrc==dstのときはx,yを無視する
447
+ #src == dst : 元の画像を変換した画像に置き換える
448
+ #src != dst : 元の画像を対象の画像に転送する(αチャネルの計算付き)
449
+ #ブロックを渡すと、src,dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
450
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
451
+ #ブロックの引数は、|src側SpriteUnit,dst側SpriteUnit|となる。
452
+ #_src_:: 転送元ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
453
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
454
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
455
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
456
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
457
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
458
+ def Bitmap.hsv(src, dst, degree, saturation, value)
459
+ end
460
+
461
+ #===画像の色相を破壊的に変更する
462
+ #範囲は、(ow,oh)で転送する。転送先の描画開始位置は(ox,oy)
463
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
464
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
465
+ #ブロックの引数は、|dst側SpriteUnit|となる。
466
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
467
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
468
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
469
+ def Bitmap.hue!(dst, degree)
470
+ end
471
+
472
+ #===画像の彩度を破壊的に変更する
473
+ #範囲は、(ow,oh)で転送する。転送先の描画開始位置は(ox,oy)
474
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
475
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
476
+ #ブロックの引数は、|dst側SpriteUnit|となる。
477
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
478
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
479
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
480
+ def Bitmap.saturation!(dst, saturation)
481
+ end
482
+
483
+ #===画像の明度を破壊的に変更する
484
+ #範囲は、(ow,oh)で転送する。転送先の描画開始位置は(ox,oy)
485
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
486
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
487
+ #ブロックの引数は、|dst側SpriteUnit|となる。
488
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
489
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
490
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
491
+ def Bitmap.value!(dst, value)
492
+ end
493
+
494
+ #===画像の色相・彩度・明度を破壊的に変更する
495
+ #範囲は、(ow,oh)で転送する。転送先の描画開始位置は(ox,oy)
496
+ #ブロックを渡すと、dst側のSpriteUnitを更新して、それを実際の転送に反映させることが出来る
497
+ #(ブロック引数のインスタンスは複写しているので、メソッドの引数として渡した値が持つSpriteUnitには影響しない)
498
+ #ブロックの引数は、|dst側SpriteUnit|となる。
499
+ #_dst_:: 転送先ビットマップ(to_unitメソッドを呼び出すことが出来る/値がnilではないインスタンス)
500
+ #_degree_:: 色相の変更量。単位は度(実数)。範囲は、-360.0<degree<360.0
501
+ #_saturation_:: 彩度の変更量。範囲は0.0〜1.0の実数
502
+ #_value_:: 明度の変更量。範囲は0.0〜1.0の実数
503
+ #返却値:: 転送に成功すればdstを返す。失敗すればnilを返す
504
+ def Bitmap.hsv!(dst, degree, saturation, value)
505
+ end
34
506
  end
35
507
  end