From df090118c3abbf474c0be8088682a1a333949795 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Fri, 17 Jul 2015 20:55:33 -0400
Subject: [PATCH] more work on [draw image]

---
 pd/nw/pdgui.js      | 56 +++++++++++++++++++++++++--------------------
 pd/src/g_template.c |  7 +++---
 2 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js
index d854f3f3b..b745f0f45 100644
--- a/pd/nw/pdgui.js
+++ b/pd/nw/pdgui.js
@@ -3140,13 +3140,28 @@ function gui_drawimage_new(obj_tag, file_path, canvasdir, flags) {
     }
 }
 
-function gui_drawimage_vis(cid, x, y, obj_tag, seqno, parent_tag) {
+function img_size_setter(cid, obj, obj_tag, i) {
+    var img = new pd_window.window.Image();
+    img.onload = function() {
+        var w = this.width,
+            h = this.height;
+        configure_item(get_item(cid, obj_tag + i), {
+            width: w,
+            height: h
+        });
+    };
+    img.src = 'data:image/' + drawimage_data[obj][i].type +
+        ';base64,' + drawimage_data[obj][i].data;
+}
+
+function gui_drawimage_vis(cid, x, y, obj, data, seqno, parent_tag) {
     var item,
         g = get_item(cid, parent_tag), // main <g> within the scalar
-        len = drawimage_data[obj_tag].length,
+        len = drawimage_data[obj].length,
         i,
-        img,
-        image_container;
+        image_container,
+        obj_tag = 'draw' + obj.slice(1) + '.' + data.slice(1);
+console.log("obj_tag is " + obj_tag);
     if (len < 1) {
         return;
     }
@@ -3155,7 +3170,7 @@ function gui_drawimage_vis(cid, x, y, obj_tag, seqno, parent_tag) {
         seqno %= len;
     }
     image_container = create_item(cid, 'g', {
-        id: obj_tag + 'image_container'
+        id: obj_tag
     });
     for (i = 0; i < len; i++) {
         item = create_item(cid, 'image', {
@@ -3163,42 +3178,33 @@ function gui_drawimage_vis(cid, x, y, obj_tag, seqno, parent_tag) {
             y: y,
             id: obj_tag + i,
             visibility: seqno === i ? 'visible' : 'hidden',
-            preserveAspectRatio: "xMinYMin meet"
+//            preserveAspectRatio: "xMinYMin meet"
         });
         item.setAttributeNS('http://www.w3.org/1999/xlink', 'href', 
-            'data:image/' + drawimage_data[obj_tag][i].type + ';base64,' +
-             drawimage_data[obj_tag][i].data);
+            'data:image/' + drawimage_data[obj][i].type + ';base64,' +
+             drawimage_data[obj][i].data);
         image_container.appendChild(item);
     }
     g.appendChild(image_container);
 
     // Hack to set correct width and height
-    img = new pd_window.Image();
-    img.onload = function() {
-        var w = this.width,
-            h = this.height;
-        for (i = 0; i < len; i++) {
-            configure_item(get_item(cid, obj_tag + i), {
-                width: w,
-                height: h
-            });
-        }
-    };
-    img.src = 'data:image/' + drawimage_data[obj_tag][0].type +
-        ';base64,' + drawimage_data[obj_tag][0].data;
+    for (i = 0; i < len; i++) {
+        img_size_setter(cid, obj, obj_tag, i);
+    }
 }
 
-function gui_drawimage_index(cid, obj_tag, index) {
+function gui_drawimage_index(cid, obj, data, index) {
+    var obj_tag = 'draw' + obj.slice(1) + '.' + data.slice(1);
     var i,
-        len = drawimage_data[obj_tag].length,
-        image_container = get_item(cid, obj_tag + 'image_container'),
+        len = drawimage_data[obj].length,
+        image_container = get_item(cid, obj_tag),
         last_image,
         image = image_container.childNodes[index],
         last_image = image_container.querySelectorAll('[visibility="visible"]');
         for (i = 0; i < last_image.length; i++) {
             configure_item(last_image[i], { visibility: 'hidden' });
         }
-    configure_item(image, { visibility: 'visible' });
+        configure_item(image, { visibility: 'visible' });
 }
 
 function add_popup(cid, popup) {
diff --git a/pd/src/g_template.c b/pd/src/g_template.c
index 93ec6371d..b1aa7556c 100644
--- a/pd/src/g_template.c
+++ b/pd/src/g_template.c
@@ -1681,8 +1681,8 @@ void svg_sendupdate(t_svg *x, t_canvas *c, t_symbol *s,
         //sys_vgui("pdtk_drawimage_index .x%lx.c .x%lx .draw%lx.%lx %d\n",
         //    glist_getcanvas(c), parent, parent, data, drawimage_getindex(parent,
         //        template, data)); 
-        gui_vmess("gui_drawimage_index", "xxi",
-            glist_getcanvas(c), parent, drawimage_getindex(parent, template, data));
+        gui_vmess("gui_drawimage_index", "xxxi",
+            glist_getcanvas(c), parent, data, drawimage_getindex(parent, template, data));
     }
     else if (s == gensym("points"))
     {
@@ -7093,11 +7093,12 @@ static void drawimage_vis(t_gobj *z, t_glist *glist, t_glist *parentglist,
             in_array ? (long unsigned int)parentglist : (long unsigned int)parent,
             (long unsigned int)data);
 
-        gui_vmess("gui_drawimage_vis", "xiixis",
+        gui_vmess("gui_drawimage_vis", "xiixxis",
             glist_getcanvas(glist),
             xloc,
             yloc,
             x,
+            data,
             (int)fielddesc_getfloat(&x->x_value, template, data, 0),
             parent_tagbuf);
 
-- 
GitLab