summaryrefslogtreecommitdiffhomepage
path: root/ext
diff options
context:
space:
mode:
authorlstrzebinczyk <[email protected]>2017-04-29 20:28:52 +0200
committerTom Black <[email protected]>2017-05-19 16:23:05 -0400
commitabfb596bc9212c5094dc7ec3645ace4e7d35856b (patch)
treebd167dd602f833f84582ed9e18734ffe979d2914 /ext
parentb4ba5e2ffc71906c84e6fb0b730379ea9a74fdc9 (diff)
downloadruby2d-abfb596bc9212c5094dc7ec3645ace4e7d35856b.tar.gz
ruby2d-abfb596bc9212c5094dc7ec3645ace4e7d35856b.zip
introduce lines
Diffstat (limited to 'ext')
-rw-r--r--ext/ruby2d/ruby2d-opal.rb17
-rw-r--r--ext/ruby2d/ruby2d.c43
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);