summaryrefslogtreecommitdiffhomepage
path: root/ext
diff options
context:
space:
mode:
authorTom Black <[email protected]>2021-04-26 19:33:08 -0500
committerTom Black <[email protected]>2021-04-26 19:33:08 -0500
commit2f194a30ff9d6cdf281d35c3b7b93182436650d2 (patch)
tree793669c629a2222b01f6e11e8670448f7eba9c51 /ext
parent426f677cb4c1543c62f0a1eafba34777c6525646 (diff)
downloadruby2d-direct-draw.tar.gz
ruby2d-direct-draw.zip
Direct draw imagesdirect-draw
Diffstat (limited to 'ext')
-rw-r--r--ext/ruby2d/ruby2d.c36
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");