From 5b319020eaaaa365b1c36f4ed4f20cd69e2af9fc Mon Sep 17 00:00:00 2001 From: Jonas Kulla Date: Fri, 15 Aug 2014 22:49:22 +0200 Subject: [PATCH] MRI-Binding: Bitmap: 'draw_text' and 'text_size' should call #to_s (RGSS2) --- binding-mri/bitmap-binding.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/binding-mri/bitmap-binding.cpp b/binding-mri/bitmap-binding.cpp index 0d2de74..16a8a7a 100644 --- a/binding-mri/bitmap-binding.cpp +++ b/binding-mri/bitmap-binding.cpp @@ -252,7 +252,17 @@ RB_METHOD(bitmapDrawText) VALUE rectObj; Rect *rect; +#ifdef RGSS2 + VALUE strObj; + rb_get_args(argc, argv, "oo|i", &rectObj, &strObj, &align RB_ARG_END); + + if (rb_type(strObj) != RUBY_T_STRING) + strObj = rb_funcallv(strObj, rb_intern("to_s"), 0, 0); + + str = RSTRING_PTR(strObj); +#else rb_get_args(argc, argv, "oz|i", &rectObj, &str, &align RB_ARG_END); +#endif rect = getPrivateDataCheck(rectObj, RectType); @@ -262,7 +272,17 @@ RB_METHOD(bitmapDrawText) { int x, y, width, height; +#ifdef RGSS2 + VALUE strObj; + rb_get_args(argc, argv, "iiiio|i", &x, &y, &width, &height, &strObj, &align RB_ARG_END); + + if (rb_type(strObj) != RUBY_T_STRING) + strObj = rb_funcallv(strObj, rb_intern("to_s"), 0, 0); + + str = RSTRING_PTR(strObj); +#else rb_get_args(argc, argv, "iiiiz|i", &x, &y, &width, &height, &str, &align RB_ARG_END); +#endif GUARD_EXC( b->drawText(x, y, width, height, str, align); ); } @@ -276,7 +296,17 @@ RB_METHOD(bitmapTextSize) const char *str; +#ifdef RGSS2 + VALUE strObj; + rb_get_args(argc, argv, "o", &strObj RB_ARG_END); + + if (rb_type(strObj) != RUBY_T_STRING) + strObj = rb_funcallv(strObj, rb_intern("to_s"), 0, 0); + + str = RSTRING_PTR(strObj); +#else rb_get_args(argc, argv, "z", &str RB_ARG_END); +#endif IntRect value; GUARD_EXC( value = b->textSize(str); );