From 5cb0c0581b2ba9b9c436edb7b6699c2b44243e2f Mon Sep 17 00:00:00 2001 From: lstrzebinczyk Date: Wed, 29 Mar 2017 21:28:14 +0200 Subject: Implement Text#height and Text#width --- ext/ruby2d/ruby2d-opal.rb | 10 ++++++---- ext/ruby2d/ruby2d.c | 11 +++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'ext') diff --git a/ext/ruby2d/ruby2d-opal.rb b/ext/ruby2d/ruby2d-opal.rb index 6980e3b..ff372dc 100644 --- a/ext/ruby2d/ruby2d-opal.rb +++ b/ext/ruby2d/ruby2d-opal.rb @@ -130,7 +130,6 @@ function render() { module Ruby2D - class Image def init(path) `#{self}.data = S2D.CreateImage(path);` @@ -146,11 +145,14 @@ module Ruby2D class Text def init `#{self}.data = S2D.CreateText(#{self}.font, #{self}.text, #{self}.size);` + @width = `#{self}.data.width;` + @height = `#{self}.data.height;` end - def text=(t) - @text = t - `S2D.SetText(#{self}.data, #{self}.text);` + def ext_text_set(msg) + `S2D.SetText(#{self}.data, #{msg});` + @width = `#{self}.data.width;` + @height = `#{self}.data.height;` end end diff --git a/ext/ruby2d/ruby2d.c b/ext/ruby2d/ruby2d.c index 7f530a5..f25587d 100644 --- a/ext/ruby2d/ruby2d.c +++ b/ext/ruby2d/ruby2d.c @@ -229,6 +229,9 @@ static R_VAL ruby2d_text_init(R_VAL self) { NUM2DBL(r_iv_get(self, "@size")) ); + r_iv_set(self, "@width", INT2NUM(txt->width)); + r_iv_set(self, "@height", INT2NUM(txt->height)); + r_iv_set(self, "@data", r_data_wrap_struct(text, txt)); return R_NIL; } @@ -244,14 +247,14 @@ static R_VAL ruby2d_ext_text_set(mrb_state* mrb, R_VAL self) { #else static R_VAL ruby2d_ext_text_set(R_VAL self, R_VAL text) { #endif - - // If called before window is shown, return - if (!r_test(ruby2d_window)) return R_NIL; - S2D_Text *txt; r_data_get_struct(self, "@data", &text_data_type, S2D_Text, txt); S2D_SetText(txt, RSTRING_PTR(text)); + + r_iv_set(self, "@width", INT2NUM(txt->width)); + r_iv_set(self, "@height", INT2NUM(txt->height)); + return R_NIL; } -- cgit v1.2.3