diff options
| author | Tom Black <[email protected]> | 2021-04-26 19:33:08 -0500 |
|---|---|---|
| committer | Tom Black <[email protected]> | 2021-04-26 19:33:08 -0500 |
| commit | 2f194a30ff9d6cdf281d35c3b7b93182436650d2 (patch) | |
| tree | 793669c629a2222b01f6e11e8670448f7eba9c51 /ext | |
| parent | 426f677cb4c1543c62f0a1eafba34777c6525646 (diff) | |
| download | ruby2d-2f194a30ff9d6cdf281d35c3b7b93182436650d2.tar.gz ruby2d-2f194a30ff9d6cdf281d35c3b7b93182436650d2.zip | |
Direct draw imagesdirect-draw
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/ruby2d/ruby2d.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/ext/ruby2d/ruby2d.c b/ext/ruby2d/ruby2d.c index c7db19d..bfc8a73 100644 --- a/ext/ruby2d/ruby2d.c +++ b/ext/ruby2d/ruby2d.c @@ -394,34 +394,36 @@ static R_VAL ruby2d_image_ext_init(R_VAL self, R_VAL path) { /* - * Ruby2D::Image#ext_render + * Ruby2D::Image#self.ext_draw */ #if MRUBY -static R_VAL ruby2d_image_ext_render(mrb_state* mrb, R_VAL self) { +static R_VAL ruby2d_image_ext_draw(mrb_state* mrb, R_VAL self) { + mrb_value a; + mrb_get_args(mrb, "o", &a); #else -static R_VAL ruby2d_image_ext_render(R_VAL self) { +static R_VAL ruby2d_image_ext_draw(R_VAL self, R_VAL a) { #endif + // `a` is the array representing the image + R2D_Image *img; - r_data_get_struct(self, "@data", &image_data_type, R2D_Image, img); + r_data_get_struct(r_ary_entry(a, 0), "@data", &image_data_type, R2D_Image, img); - img->x = NUM2DBL(r_iv_get(self, "@x")); - img->y = NUM2DBL(r_iv_get(self, "@y")); + img->x = NUM2DBL(r_ary_entry(a, 1)); + img->y = NUM2DBL(r_ary_entry(a, 2)); - R_VAL w = r_iv_get(self, "@width"); - R_VAL h = r_iv_get(self, "@height"); + R_VAL w = r_ary_entry(a, 3); + R_VAL h = r_ary_entry(a, 4); if (r_test(w)) img->width = NUM2INT(w); if (r_test(h)) img->height = NUM2INT(h); - R2D_RotateImage(img, NUM2DBL(r_iv_get(self, "@rotate")), R2D_CENTER); + R2D_RotateImage(img, NUM2DBL(r_ary_entry(a, 5)), R2D_CENTER); - R_VAL c = r_iv_get(self, "@color"); - img->color.r = NUM2DBL(r_iv_get(c, "@r")); - img->color.g = NUM2DBL(r_iv_get(c, "@g")); - img->color.b = NUM2DBL(r_iv_get(c, "@b")); - img->color.a = NUM2DBL(r_iv_get(c, "@a")); + img->color.r = NUM2DBL(r_ary_entry(a, 6)); + img->color.g = NUM2DBL(r_ary_entry(a, 7)); + img->color.b = NUM2DBL(r_ary_entry(a, 8)); + img->color.a = NUM2DBL(r_ary_entry(a, 9)); R2D_DrawImage(img); - return R_NIL; } @@ -1210,8 +1212,8 @@ void Init_ruby2d() { // Ruby2D::Image#ext_init r_define_method(ruby2d_image_class, "ext_init", ruby2d_image_ext_init, r_args_req(1)); - // Ruby2D::Image#ext_render - r_define_method(ruby2d_image_class, "ext_render", ruby2d_image_ext_render, r_args_none); + // Ruby2D::Image#self.ext_draw + r_define_class_method(ruby2d_image_class, "ext_draw", ruby2d_image_ext_draw, r_args_req(1)); // Ruby2D::Sprite R_CLASS ruby2d_sprite_class = r_define_class(ruby2d_module, "Sprite"); |
