diff options
| author | lstrzebinczyk <[email protected]> | 2017-04-29 20:28:52 +0200 |
|---|---|---|
| committer | Tom Black <[email protected]> | 2017-05-19 16:23:05 -0400 |
| commit | abfb596bc9212c5094dc7ec3645ace4e7d35856b (patch) | |
| tree | bd167dd602f833f84582ed9e18734ffe979d2914 /ext | |
| parent | b4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9 (diff) | |
| download | ruby2d-abfb596bc9212c5094dc7ec3645ace4e7d35856b.tar.gz ruby2d-abfb596bc9212c5094dc7ec3645ace4e7d35856b.zip | |
introduce lines
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/ruby2d/ruby2d-opal.rb | 17 | ||||
| -rw-r--r-- | ext/ruby2d/ruby2d.c | 43 |
2 files changed, 54 insertions, 6 deletions
diff --git a/ext/ruby2d/ruby2d-opal.rb b/ext/ruby2d/ruby2d-opal.rb index 666a354..3d4be42 100644 --- a/ext/ruby2d/ruby2d-opal.rb +++ b/ext/ruby2d/ruby2d-opal.rb @@ -12,9 +12,10 @@ $R2D_WINDOW = nil // @type_id values for rendering const $R2D_TRIANGLE = 1; const $R2D_QUAD = 2; -const $R2D_IMAGE = 3; -const $R2D_SPRITE = 4; -const $R2D_TEXT = 5; +const $R2D_LINE = 3; +const $R2D_IMAGE = 4; +const $R2D_SPRITE = 5; +const $R2D_TEXT = 6; function on_key(e) { @@ -126,6 +127,16 @@ function render() { ); break; + case $R2D_LINE: + S2D.DrawLine( + el.x1, el.y1, el.x2, el.y2, el.width, + el.c1.r, el.c1.g, el.c1.b, el.c1.a, + el.c2.r, el.c2.g, el.c2.b, el.c2.a, + el.c3.r, el.c3.g, el.c3.b, el.c3.a, + el.c4.r, el.c4.g, el.c4.b, el.c4.a + ); + break; + case $R2D_IMAGE: el.data.x = el.x; el.data.y = el.y; diff --git a/ext/ruby2d/ruby2d.c b/ext/ruby2d/ruby2d.c index ae39fbb..ac4100d 100644 --- a/ext/ruby2d/ruby2d.c +++ b/ext/ruby2d/ruby2d.c @@ -92,9 +92,10 @@ // @type_id values for rendering #define R2D_TRIANGLE 1 #define R2D_QUAD 2 -#define R2D_IMAGE 3 -#define R2D_SPRITE 4 -#define R2D_TEXT 5 +#define R2D_LINE 3 +#define R2D_IMAGE 4 +#define R2D_SPRITE 5 +#define R2D_TEXT 6 // Create the MRuby context #if MRUBY @@ -664,6 +665,42 @@ static void render() { } break; + case R2D_LINE: { + R_VAL c1 = r_iv_get(el, "@c1"); + R_VAL c2 = r_iv_get(el, "@c2"); + R_VAL c3 = r_iv_get(el, "@c3"); + R_VAL c4 = r_iv_get(el, "@c4"); + + S2D_DrawLine( + NUM2DBL(r_iv_get(el, "@x1")), + NUM2DBL(r_iv_get(el, "@y1")), + NUM2DBL(r_iv_get(el, "@x2")), + NUM2DBL(r_iv_get(el, "@y2")), + NUM2DBL(r_iv_get(el, "@width")), + + NUM2DBL(r_iv_get(c1, "@r")), + NUM2DBL(r_iv_get(c1, "@g")), + NUM2DBL(r_iv_get(c1, "@b")), + NUM2DBL(r_iv_get(c1, "@a")), + + NUM2DBL(r_iv_get(c2, "@r")), + NUM2DBL(r_iv_get(c2, "@g")), + NUM2DBL(r_iv_get(c2, "@b")), + NUM2DBL(r_iv_get(c2, "@a")), + + NUM2DBL(r_iv_get(c3, "@r")), + NUM2DBL(r_iv_get(c3, "@g")), + NUM2DBL(r_iv_get(c3, "@b")), + NUM2DBL(r_iv_get(c3, "@a")), + + NUM2DBL(r_iv_get(c4, "@r")), + NUM2DBL(r_iv_get(c4, "@g")), + NUM2DBL(r_iv_get(c4, "@b")), + NUM2DBL(r_iv_get(c4, "@a")) + ); + } + break; + case R2D_IMAGE: { S2D_Image *img; r_data_get_struct(el, "@data", &image_data_type, S2D_Image, img); |
