ruby-miyako 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +275 -20
- data/extern.h +21 -1
- data/install_miyako.rb +5 -3
- data/lib/Miyako/API/audio.rb +11 -6
- data/lib/Miyako/API/basic_data.rb +0 -985
- data/lib/Miyako/API/bitmap.rb +19 -22
- data/lib/Miyako/API/choices.rb +203 -69
- data/lib/Miyako/API/collision.rb +451 -9
- data/lib/Miyako/API/color.rb +177 -0
- data/lib/Miyako/API/diagram.rb +18 -20
- data/lib/Miyako/API/fixedmap.rb +207 -73
- data/lib/Miyako/API/font.rb +111 -18
- data/lib/Miyako/API/i_yuki.rb +1201 -0
- data/lib/Miyako/API/input.rb +65 -0
- data/lib/Miyako/API/layout.rb +41 -29
- data/lib/Miyako/API/map.rb +202 -157
- data/lib/Miyako/API/map_event.rb +86 -19
- data/lib/Miyako/API/map_struct.rb +268 -0
- data/lib/Miyako/API/modules.rb +136 -37
- data/lib/Miyako/API/movie.rb +8 -8
- data/lib/Miyako/API/parts.rb +63 -20
- data/lib/Miyako/API/plane.rb +4 -4
- data/lib/Miyako/API/screen.rb +16 -8
- data/lib/Miyako/API/sprite.rb +290 -23
- data/lib/Miyako/API/sprite_animation.rb +23 -11
- data/lib/Miyako/API/sprite_list.rb +406 -183
- data/lib/Miyako/API/story.rb +4 -65
- data/lib/Miyako/API/struct_point.rb +157 -0
- data/lib/Miyako/API/struct_rect.rb +233 -0
- data/lib/Miyako/API/struct_segment.rb +641 -0
- data/lib/Miyako/API/struct_size.rb +158 -0
- data/lib/Miyako/API/struct_square.rb +253 -0
- data/lib/Miyako/API/textbox.rb +49 -35
- data/lib/Miyako/API/viewport.rb +5 -5
- data/lib/Miyako/API/wait_counter.rb +350 -0
- data/lib/Miyako/API/yuki.rb +95 -60
- data/lib/Miyako/EXT/raster_scroll.rb +30 -8
- data/lib/Miyako/EXT/slides.rb +6 -6
- data/lib/Miyako/miyako.rb +25 -11
- data/lib/miyako.rb +28 -0
- data/lib/miyako_require_only.rb +35 -0
- data/miyako_basicdata.c +201 -17
- data/miyako_collision.c +315 -6
- data/miyako_diagram.c +331 -0
- data/miyako_drawing.c +26 -7
- data/miyako_font.c +259 -129
- data/miyako_input_audio.c +24 -14
- data/miyako_layout.c +106 -8
- data/miyako_no_katana.c +398 -171
- data/miyako_sprite2.c +275 -38
- data/miyako_transform.c +113 -107
- data/miyako_utility.c +34 -48
- data/miyako_yuki.c +241 -0
- data/sample/Diagram_sample/diagram_sample_yuki2.rb +30 -30
- data/sample/Room3/blue.rb +19 -19
- data/sample/Room3/green.rb +9 -9
- data/sample/Room3/main.rb +12 -12
- data/sample/Room3/red.rb +12 -12
- data/sample/Room3/title.rb +15 -10
- data/sample/collision_test2.rb +2 -1
- data/sample/fixed_map_test/fixed_map_sample.rb +7 -6
- data/sample/map_test/main_scene.rb +12 -10
- data/sample/map_test/map_manager.rb +14 -13
- data/sample/rasterscroll.rb +5 -5
- data/sample/takahashi.rb +3 -3
- data/sample/textbox_sample.rb +7 -6
- data/sample/transform.rb +2 -1
- data/uninstall_miyako.rb +4 -1
- data/win/miyako_no_katana.so +0 -0
- metadata +15 -4
- data/lib/Miyako/EXT/miyako_cairo.rb +0 -62
- data/sample/cairo_sample.rb +0 -25
data/miyako_font.c
CHANGED
@@ -63,7 +63,7 @@ static VALUE font_draw_text(VALUE self, VALUE vdst, VALUE str, VALUE vx, VALUE v
|
|
63
63
|
StringValue(str);
|
64
64
|
|
65
65
|
str = rb_funcall(str, id_encode, 1, rb_const_get(cEncoding, id_utf8));
|
66
|
-
|
66
|
+
|
67
67
|
TTF_Font *font = Get_TTFont(rb_iv_get(self, "@font"))->font;
|
68
68
|
|
69
69
|
VALUE *p_font_color = RARRAY_PTR(rb_iv_get(self, "@color"));
|
@@ -88,8 +88,9 @@ static VALUE font_draw_text(VALUE self, VALUE vdst, VALUE str, VALUE vx, VALUE v
|
|
88
88
|
int hspace = NUM2INT(rb_iv_get(self, "@hspace"));
|
89
89
|
|
90
90
|
SDL_Surface *scr = GetSurface(rb_iv_get(mScreen, "@@screen"))->surface;
|
91
|
+
SDL_Rect drect;
|
91
92
|
|
92
|
-
|
93
|
+
MiyakoBitmap src, dst;
|
93
94
|
_miyako_setup_unit(vdst, scr, &dst, vx, vy, 0);
|
94
95
|
|
95
96
|
char *sptr = RSTRING_PTR(str);
|
@@ -97,7 +98,9 @@ static VALUE font_draw_text(VALUE self, VALUE vdst, VALUE str, VALUE vx, VALUE v
|
|
97
98
|
src.x = dst.x;
|
98
99
|
src.y = dst.y;
|
99
100
|
|
100
|
-
|
101
|
+
int x, y;
|
102
|
+
Uint32 sr, sg, sb, sa;
|
103
|
+
Uint32 dr, dg, db, da;
|
101
104
|
|
102
105
|
if(use_shadow == Qtrue)
|
103
106
|
{
|
@@ -105,77 +108,140 @@ static VALUE font_draw_text(VALUE self, VALUE vdst, VALUE str, VALUE vx, VALUE v
|
|
105
108
|
|
106
109
|
if(ssrc2 == NULL) return INT2NUM(src.x);
|
107
110
|
Uint32 *psrc2 = (Uint32 *)(ssrc2->pixels);
|
108
|
-
|
111
|
+
|
109
112
|
src.x += shadow_margin_x;
|
110
113
|
src.y += shadow_margin_y;
|
111
|
-
|
112
|
-
|
113
|
-
size2.w = dst.rect.w - (src.x < 0 ? -(src.x) : src.x);
|
114
|
-
size2.h = dst.rect.h - (src.y < 0 ? -(src.y) : src.y);
|
115
|
-
if(size2.w > ssrc2->w){ size2.w = ssrc2->w; }
|
116
|
-
if(size2.h > ssrc2->h){ size2.h = ssrc2->h; }
|
117
|
-
|
118
|
-
SDL_LockSurface(ssrc2);
|
119
|
-
SDL_LockSurface(dst.surface);
|
120
|
-
|
121
|
-
for(y = 0; y < size2.h; y++)
|
114
|
+
|
115
|
+
if(dst.surface == scr)
|
122
116
|
{
|
123
|
-
|
124
|
-
|
125
|
-
|
117
|
+
drect.x = src.x;
|
118
|
+
drect.y = src.y;
|
119
|
+
SDL_BlitSurface(ssrc2, NULL, dst.surface, &(drect));
|
120
|
+
}
|
121
|
+
else
|
122
|
+
{
|
123
|
+
MiyakoSize size2;
|
124
|
+
size2.w = dst.rect.w - (src.x < 0 ? 0 : src.x);
|
125
|
+
if(size2.w <= 0)
|
126
126
|
{
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
127
|
+
SDL_FreeSurface(ssrc2);
|
128
|
+
return INT2NUM(dst.x);
|
129
|
+
}
|
130
|
+
if(size2.w > ssrc2->w){ size2.w = ssrc2->w; }
|
131
|
+
|
132
|
+
int margin_x = 0;
|
133
|
+
if(src.x < 0)
|
134
|
+
{
|
135
|
+
int tmp_w = ssrc2->w + src.x;
|
136
|
+
if(tmp_w < size2.w) size2.w += src.x;
|
137
|
+
if(size2.w <= 0)
|
138
|
+
{
|
139
|
+
SDL_FreeSurface(ssrc2);
|
140
|
+
return INT2NUM(dst.x);
|
136
141
|
}
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
if(
|
154
|
-
|
142
|
+
margin_x = -src.x;
|
143
|
+
src.x = 0;
|
144
|
+
}
|
145
|
+
|
146
|
+
size2.h = dst.rect.h - (src.y < 0 ? 0 : src.y);
|
147
|
+
if(size2.h <= 0)
|
148
|
+
{
|
149
|
+
SDL_FreeSurface(ssrc2);
|
150
|
+
return INT2NUM(dst.x);
|
151
|
+
}
|
152
|
+
if(size2.h > ssrc2->h){ size2.h = ssrc2->h; }
|
153
|
+
|
154
|
+
int margin_y = 0;
|
155
|
+
if(src.y < 0)
|
156
|
+
{
|
157
|
+
int tmp_h = ssrc2->h + src.y;
|
158
|
+
if(tmp_h < size2.h) size2.h += src.y;
|
159
|
+
if(size2.h <= 0)
|
160
|
+
{
|
161
|
+
SDL_FreeSurface(ssrc2);
|
162
|
+
return INT2NUM(dst.x);
|
163
|
+
}
|
164
|
+
margin_y = -src.y;
|
165
|
+
src.y = 0;
|
166
|
+
}
|
167
|
+
|
168
|
+
SDL_LockSurface(ssrc2);
|
169
|
+
SDL_LockSurface(dst.surface);
|
170
|
+
|
171
|
+
for(y = 0; y < size2.h; y++)
|
172
|
+
{
|
173
|
+
Uint32 *ppsrc2 = psrc2 + (y+margin_y) * ssrc2->w + margin_x;
|
174
|
+
Uint32 *ppdst = dst.ptr + (src.y + y) * dst.surface->w + src.x;
|
175
|
+
for(x = 0; x < size2.w; x++)
|
176
|
+
{
|
177
|
+
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
|
178
|
+
da = (*ppdst >> 24) | dst.a255;
|
179
|
+
sa = *ppsrc2 >> 24;
|
180
|
+
if(sa == 0){ ppsrc2++; ppdst++; continue; }
|
181
|
+
if(da == 0 || sa == 255){
|
182
|
+
*ppdst = *ppsrc2;
|
183
|
+
ppsrc2++;
|
184
|
+
ppdst++;
|
185
|
+
continue;
|
186
|
+
}
|
187
|
+
#if 0
|
188
|
+
dr = (Uint32)((*ppdst >> 16)) & 0xff;
|
189
|
+
dg = (Uint32)((*ppdst >> 8)) & 0xff;
|
190
|
+
db = (Uint32)((*ppdst)) & 0xff;
|
191
|
+
sr = (Uint32)((*ppsrc2 >> 16)) & 0xff;
|
192
|
+
sg = (Uint32)((*ppsrc2 >> 8)) & 0xff;
|
193
|
+
sb = (Uint32)((*ppsrc2)) & 0xff;
|
194
|
+
int a1 = sa + 1;
|
195
|
+
int a2 = 256 - sa;
|
196
|
+
*ppdst = (((sr * a1 + dr * a2) >> 8)) << 16 |
|
197
|
+
(((sg * a1 + dg * a2) >> 8)) << 8 |
|
198
|
+
(((sb * a1 + db * a2) >> 8)) |
|
199
|
+
0xff000000;
|
200
|
+
#else
|
201
|
+
dr = *ppdst & 0xff0000;
|
202
|
+
dg = *ppdst & 0xff00;
|
203
|
+
db = *ppdst & 0xff;
|
204
|
+
sr = *ppsrc2 & 0xff0000;
|
205
|
+
sg = *ppsrc2 & 0xff00;
|
206
|
+
sb = *ppsrc2 & 0xff;
|
207
|
+
int a1 = sa + 1;
|
208
|
+
int a2 = 256 - sa;
|
209
|
+
*ppdst = ((sr * a1 + dr * a2) & 0xff000000 |
|
210
|
+
(sg * a1 + dg * a2) & 0xff0000 |
|
211
|
+
(sb * a1 + db * a2)) >> 8 |
|
212
|
+
0xff000000;
|
213
|
+
#endif
|
214
|
+
#else
|
215
|
+
da = (Uint32)(((*ppdst & dst.fmt->Amask) | dst.a255;
|
216
|
+
sa = (Uint32)(((*ppsrc2 & ssrc2->format->Amask)));
|
217
|
+
if(sa == 0){ ppsrc2++; ppdst++; continue; }
|
218
|
+
if(da == 0 || sa == 255){
|
219
|
+
*ppdst = *ppsrc2;
|
220
|
+
ppsrc2++;
|
221
|
+
ppdst++;
|
222
|
+
continue;
|
223
|
+
}
|
224
|
+
dr = (Uint32)(((*ppdst & dst.fmt->Rmask) >> dst.fmt->Rshift));
|
225
|
+
dg = (Uint32)(((*ppdst & dst.fmt->Gmask) >> dst.fmt->Gshift));
|
226
|
+
db = (Uint32)(((*ppdst & dst.fmt->Bmask) >> dst.fmt->Bshift));
|
227
|
+
sr = (Uint32)(((*ppsrc2 & ssrc2->format->Rmask) >> ssrc2->format->Rshift));
|
228
|
+
sg = (Uint32)(((*ppsrc2 & ssrc2->format->Gmask) >> ssrc2->format->Gshift));
|
229
|
+
sb = (Uint32)(((*ppsrc2 & ssrc2->format->Bmask) >> ssrc2->format->Bshift));
|
230
|
+
int a1 = sa + 1;
|
231
|
+
int a2 = 256 - sa;
|
232
|
+
*ppdst = (((sr * a1 + dr * a2) >> 8)) << dst.fmt->Rshift |
|
233
|
+
(((sg * a1 + dg * a2) >> 8)) << dst.fmt->Gshift |
|
234
|
+
(((sb * a1 + db * a2) >> 8)) << dst.fmt->Bshift |
|
235
|
+
(255 >> dst.fmt->Aloss);
|
236
|
+
#endif
|
155
237
|
ppsrc2++;
|
156
238
|
ppdst++;
|
157
|
-
continue;
|
158
239
|
}
|
159
|
-
dst.color.r = (Uint32)(((*ppdst & dst.fmt->Rmask) >> dst.fmt->Rshift));
|
160
|
-
dst.color.g = (Uint32)(((*ppdst & dst.fmt->Gmask) >> dst.fmt->Gshift));
|
161
|
-
dst.color.b = (Uint32)(((*ppdst & dst.fmt->Bmask) >> dst.fmt->Bshift));
|
162
|
-
src.color.r = (Uint32)(((*ppsrc2 & ssrc2->format->Rmask) >> ssrc2->format->Rshift));
|
163
|
-
src.color.g = (Uint32)(((*ppsrc2 & ssrc2->format->Gmask) >> ssrc2->format->Gshift));
|
164
|
-
src.color.b = (Uint32)(((*ppsrc2 & ssrc2->format->Bmask) >> ssrc2->format->Bshift));
|
165
|
-
int a1 = src.color.a + 1;
|
166
|
-
int a2 = 256 - src.color.a;
|
167
|
-
*ppdst = (((src.color.r * a1 + dst.color.r * a2) >> 8)) << dst.fmt->Rshift |
|
168
|
-
(((src.color.g * a1 + dst.color.g * a2) >> 8)) << dst.fmt->Gshift |
|
169
|
-
(((src.color.b * a1 + dst.color.b * a2) >> 8)) << dst.fmt->Bshift |
|
170
|
-
(255 >> dst.fmt->Aloss);
|
171
|
-
#endif
|
172
|
-
ppsrc2++;
|
173
|
-
ppdst++;
|
174
240
|
}
|
175
|
-
}
|
176
241
|
|
177
|
-
|
178
|
-
|
242
|
+
SDL_UnlockSurface(ssrc2);
|
243
|
+
SDL_UnlockSurface(dst.surface);
|
244
|
+
}
|
179
245
|
|
180
246
|
SDL_FreeSurface(ssrc2);
|
181
247
|
|
@@ -187,75 +253,139 @@ static VALUE font_draw_text(VALUE self, VALUE vdst, VALUE str, VALUE vx, VALUE v
|
|
187
253
|
|
188
254
|
if(ssrc == NULL) return INT2NUM(src.x);
|
189
255
|
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
256
|
+
if(dst.surface == scr)
|
257
|
+
{
|
258
|
+
drect.x = src.x;
|
259
|
+
drect.y = src.y;
|
260
|
+
SDL_BlitSurface(ssrc, NULL, dst.surface, &(drect));
|
261
|
+
}
|
262
|
+
else
|
263
|
+
{
|
264
|
+
Uint32 *psrc = (Uint32 *)(ssrc->pixels);
|
265
|
+
|
266
|
+
MiyakoSize size;
|
267
|
+
|
268
|
+
size.w = dst.rect.w - (src.x < 0 ? 0 : src.x);
|
269
|
+
if(size.w <= 0)
|
270
|
+
{
|
271
|
+
SDL_FreeSurface(ssrc);
|
272
|
+
return INT2NUM(dst.x);
|
273
|
+
}
|
274
|
+
if(size.w > ssrc->w){ size.w = ssrc->w; }
|
275
|
+
|
276
|
+
int margin_x = 0;
|
277
|
+
if(src.x < 0)
|
278
|
+
{
|
279
|
+
int tmp_w = ssrc->w + src.x;
|
280
|
+
if(tmp_w < size.w) size.w += src.x;
|
281
|
+
if(size.w <= 0)
|
282
|
+
{
|
283
|
+
SDL_FreeSurface(ssrc);
|
284
|
+
return INT2NUM(dst.x);
|
285
|
+
}
|
286
|
+
margin_x = -src.x;
|
287
|
+
src.x = 0;
|
288
|
+
}
|
289
|
+
|
290
|
+
size.h = dst.rect.h - (src.y < 0 ? 0 : src.y);
|
291
|
+
if(size.h <= 0)
|
292
|
+
{
|
293
|
+
SDL_FreeSurface(ssrc);
|
294
|
+
return INT2NUM(dst.x);
|
295
|
+
}
|
296
|
+
if(size.h > ssrc->h){ size.h = ssrc->h; }
|
297
|
+
|
298
|
+
int margin_y = 0;
|
299
|
+
if(src.y < 0)
|
300
|
+
{
|
301
|
+
int tmp_h = ssrc->h + src.y;
|
302
|
+
if(tmp_h < size.h) size.h += src.y;
|
303
|
+
if(size.h <= 0)
|
304
|
+
{
|
305
|
+
SDL_FreeSurface(ssrc);
|
306
|
+
return INT2NUM(dst.x);
|
307
|
+
}
|
308
|
+
margin_y = -src.y;
|
309
|
+
src.y = 0;
|
310
|
+
}
|
311
|
+
|
312
|
+
SDL_LockSurface(ssrc);
|
313
|
+
SDL_LockSurface(dst.surface);
|
314
|
+
|
315
|
+
for(y = 0; y < size.h; y++)
|
316
|
+
{
|
317
|
+
Uint32 *ppsrc = psrc + (y+margin_y) * ssrc->w + margin_x;
|
318
|
+
Uint32 *ppdst = dst.ptr + (src.y + y) * dst.surface->w + src.x;
|
319
|
+
for(x = 0; x < size.w; x++)
|
320
|
+
{
|
207
321
|
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
322
|
+
da = (*ppdst >> 24) | dst.a255;
|
323
|
+
sa = *ppsrc >> 24;
|
324
|
+
if(sa == 0){ ppsrc++; ppdst++; continue; }
|
325
|
+
if(da == 0 || sa == 255){
|
326
|
+
*ppdst = *ppsrc;
|
327
|
+
ppsrc++;
|
328
|
+
ppdst++;
|
329
|
+
continue;
|
330
|
+
}
|
331
|
+
#if 0
|
332
|
+
dr = (Uint32)(((*ppdst) >> 16)) & 0xff;
|
333
|
+
dg = (Uint32)(((*ppdst) >> 8)) & 0xff;
|
334
|
+
db = (Uint32)(((*ppdst))) & 0xff;
|
335
|
+
sr = (Uint32)(((*ppsrc) >> 16)) & 0xff;
|
336
|
+
sg = (Uint32)(((*ppsrc) >> 8)) & 0xff;
|
337
|
+
sb = (Uint32)(((*ppsrc))) & 0xff;
|
338
|
+
int a1 = sa + 1;
|
339
|
+
int a2 = 256 - sa;
|
340
|
+
*ppdst = (((sr * a1 + dr * a2) >> 8)) << 16 |
|
341
|
+
(((sg * a1 + dg * a2) >> 8)) << 8 |
|
342
|
+
(((sb * a1 + db * a2) >> 8)) |
|
343
|
+
0xff000000;
|
344
|
+
#else
|
345
|
+
dr = *ppdst & 0xff0000;
|
346
|
+
dg = *ppdst & 0xff00;
|
347
|
+
db = *ppdst & 0xff;
|
348
|
+
sr = *ppsrc & 0xff0000;
|
349
|
+
sg = *ppsrc & 0xff00;
|
350
|
+
sb = *ppsrc & 0xff;
|
351
|
+
int a1 = sa + 1;
|
352
|
+
int a2 = 256 - sa;
|
353
|
+
*ppdst = ((sr * a1 + dr * a2) & 0xff000000 |
|
354
|
+
(sg * a1 + dg * a2) & 0xff0000 |
|
355
|
+
(sb * a1 + db * a2)) >> 8 |
|
356
|
+
0xff000000;
|
357
|
+
#endif
|
229
358
|
#else
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
359
|
+
da = (Uint32)(((*ppdst & dst.fmt->Amask)) << dst.fmt->Aloss) | dst.a255;
|
360
|
+
sa = (Uint32)(((*ppsrc & ssrc->format->Amask)) << ssrc->format->Aloss);
|
361
|
+
if(sa == 0){ ppsrc++; ppdst++; continue; }
|
362
|
+
if(da == 0 || sa == 255){
|
363
|
+
*ppdst = *ppsrc;
|
364
|
+
ppsrc++;
|
365
|
+
ppdst++;
|
366
|
+
continue;
|
367
|
+
}
|
368
|
+
dr = (Uint32)(((*ppdst & dst.fmt->Rmask) >> dst.fmt->Rshift));
|
369
|
+
dg = (Uint32)(((*ppdst & dst.fmt->Gmask) >> dst.fmt->Gshift));
|
370
|
+
db = (Uint32)(((*ppdst & dst.fmt->Bmask) >> dst.fmt->Bshift));
|
371
|
+
sr = (Uint32)(((*ppsrc & ssrc->format->Rmask) >> ssrc->format->Rshift));
|
372
|
+
sg = (Uint32)(((*ppsrc & ssrc->format->Gmask) >> ssrc->format->Gshift));
|
373
|
+
sb = (Uint32)(((*ppsrc & ssrc->format->Bmask) >> ssrc->format->Bshift));
|
374
|
+
int a1 = sa + 1;
|
375
|
+
int a2 = 256 - sa;
|
376
|
+
*ppdst = (((sr * a1 + dr * a2) >> 8)) << dst.fmt->Rshift |
|
377
|
+
(((sg * a1 + dg * a2) >> 8)) << dst.fmt->Gshift |
|
378
|
+
(((sb * a1 + db * a2) >> 8)) << dst.fmt->Bshift |
|
379
|
+
(255 >> dst.fmt->Aloss);
|
251
380
|
#endif
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
381
|
+
ppsrc++;
|
382
|
+
ppdst++;
|
383
|
+
}
|
384
|
+
}
|
256
385
|
|
257
|
-
|
258
|
-
|
386
|
+
SDL_UnlockSurface(ssrc);
|
387
|
+
SDL_UnlockSurface(dst.surface);
|
388
|
+
}
|
259
389
|
SDL_FreeSurface(ssrc);
|
260
390
|
|
261
391
|
int i, n;
|
data/miyako_input_audio.c
CHANGED
@@ -72,19 +72,19 @@ static VALUE input_update(VALUE self)
|
|
72
72
|
int i;
|
73
73
|
VALUE *ptr;
|
74
74
|
|
75
|
-
VALUE btn = rb_iv_get(self, "@@btn");
|
76
|
-
VALUE mouse = rb_iv_get(self, "@@mouse");
|
77
|
-
VALUE process = rb_iv_get(self, "@@process");
|
78
|
-
VALUE toggle = rb_iv_get(self, "@@toggle_screen_mode");
|
75
|
+
VALUE btn = rb_iv_get(self, "@@btn");
|
76
|
+
VALUE mouse = rb_iv_get(self, "@@mouse");
|
77
|
+
VALUE process = rb_iv_get(self, "@@process");
|
78
|
+
VALUE toggle = rb_iv_get(self, "@@toggle_screen_mode");
|
79
79
|
|
80
80
|
VALUE trigger = rb_hash_lookup(btn, sy_trigger);
|
81
81
|
VALUE pushed = rb_hash_lookup(btn, sy_pushed);
|
82
82
|
VALUE click = rb_hash_lookup(mouse, sy_click);
|
83
83
|
VALUE drop = rb_hash_lookup(mouse, sy_drop);
|
84
84
|
VALUE pos = rb_hash_lookup(mouse, sy_pos);
|
85
|
-
|
85
|
+
|
86
86
|
rb_funcall(cJoystick, id_update_all, 0);
|
87
|
-
|
87
|
+
|
88
88
|
VALUE keys = rb_funcall(pushed, rb_intern("keys"), 0);
|
89
89
|
ptr = RARRAY_PTR(keys);
|
90
90
|
for(i=0; i<RARRAY_LEN(keys); i++)
|
@@ -100,7 +100,7 @@ static VALUE input_update(VALUE self)
|
|
100
100
|
rb_hash_aset(drop, sy_left, Qfalse);
|
101
101
|
rb_hash_aset(drop, sy_middle, Qfalse);
|
102
102
|
rb_hash_aset(drop, sy_right, Qfalse);
|
103
|
-
|
103
|
+
|
104
104
|
VALUE e_list = rb_ary_new();
|
105
105
|
VALUE e = rb_funcall(cEvent, id_poll, 0);
|
106
106
|
while(e != Qnil)
|
@@ -125,10 +125,15 @@ static VALUE input_update(VALUE self)
|
|
125
125
|
rb_hash_aset(pushed, sy_ent, nZero);
|
126
126
|
}
|
127
127
|
}
|
128
|
-
|
128
|
+
|
129
129
|
return Qnil;
|
130
130
|
}
|
131
131
|
|
132
|
+
void _miyako_input_update()
|
133
|
+
{
|
134
|
+
input_update(mInput);
|
135
|
+
}
|
136
|
+
|
132
137
|
/*
|
133
138
|
:nodoc:
|
134
139
|
*/
|
@@ -136,7 +141,7 @@ static VALUE bgm_update(VALUE self)
|
|
136
141
|
{
|
137
142
|
VALUE nua = rb_gv_get("$not_use_audio");
|
138
143
|
if(nua == Qfalse) return Qnil;
|
139
|
-
|
144
|
+
|
140
145
|
VALUE pb = rb_iv_get(self, "@@playin_bgm");
|
141
146
|
if(pb == Qnil) return Qnil;
|
142
147
|
|
@@ -167,14 +172,14 @@ static VALUE se_update(VALUE self)
|
|
167
172
|
{
|
168
173
|
VALUE nua = rb_gv_get("$not_use_audio");
|
169
174
|
if(nua == Qfalse) return Qnil;
|
170
|
-
|
175
|
+
|
171
176
|
VALUE playings = rb_iv_get(self, "@@playings");
|
172
177
|
VALUE *ptr = RARRAY_PTR(playings);
|
173
178
|
int i;
|
174
179
|
for(i=0; i<RARRAY_LEN(playings); i++)
|
175
180
|
{
|
176
181
|
VALUE pl = *(ptr+i);
|
177
|
-
|
182
|
+
|
178
183
|
if(rb_funcall(pl, id_is_playing_wo_loop, 0) == Qfalse &&
|
179
184
|
rb_funcall(pl, id_in_the_loop, 0) == Qtrue)
|
180
185
|
{
|
@@ -192,7 +197,7 @@ static VALUE se_update(VALUE self)
|
|
192
197
|
rb_funcall(pl, id_allow_countup, 0);
|
193
198
|
}
|
194
199
|
}
|
195
|
-
|
200
|
+
|
196
201
|
return Qnil;
|
197
202
|
}
|
198
203
|
|
@@ -206,6 +211,11 @@ static VALUE audio_update(VALUE self)
|
|
206
211
|
return self;
|
207
212
|
}
|
208
213
|
|
214
|
+
void _miyako_audio_update()
|
215
|
+
{
|
216
|
+
audio_update(mAudio);
|
217
|
+
}
|
218
|
+
|
209
219
|
void Init_miyako_input_audio()
|
210
220
|
{
|
211
221
|
mSDL = rb_define_module("SDL");
|
@@ -247,8 +257,8 @@ void Init_miyako_input_audio()
|
|
247
257
|
one = 1;
|
248
258
|
nOne = INT2NUM(one);
|
249
259
|
|
250
|
-
|
251
|
-
|
260
|
+
rb_define_singleton_method(mInput, "update", input_update, 0);
|
261
|
+
rb_define_singleton_method(mAudio, "update", audio_update, 0);
|
252
262
|
rb_define_singleton_method(cBGM, "update", bgm_update, 0);
|
253
263
|
rb_define_singleton_method(cSE, "update", se_update, 0);
|
254
264
|
}
|