diff --git a/pd/src/g_template.c b/pd/src/g_template.c index 193c74ab06f87b53c291ed0e7436da2b2abb5c9c..d1cde73e8beced30943a238fcb9115ac41b0b2f5 100644 --- a/pd/src/g_template.c +++ b/pd/src/g_template.c @@ -41,6 +41,7 @@ static void template_conformarray(t_template *tfrom, t_template *tto, static void template_conformglist(t_template *tfrom, t_template *tto, t_glist *glist, int *conformaction); t_canvas *canvas_templatecanvas_forgroup(t_canvas *c); +static int drawimage_getindex(void *z, t_template *template, t_word *data); /* ---------------------- storage ------------------------- */ @@ -1453,7 +1454,7 @@ void svg_doupdate(t_svg *x, t_canvas *c, t_symbol *s) x->x_vec+3, template, data, 1)); redraw_bbox = 1; } - } + } else if (s == gensym("vis")) { sprintf(str, "-state %s", (int)fielddesc_getcoord( @@ -1504,6 +1505,12 @@ void svg_doupdate(t_svg *x, t_canvas *c, t_symbol *s) } sys_gui("}\n"); } + else if (s == gensym("index")) + { + sys_vgui("pdtk_drawimage_index .x%lx.c .x%lx .draw%lx.%lx %d\n", + visible, parent, parent, data, drawimage_getindex(parent, + template, data)); + } else if (s == gensym("points")) { /* this needs to be abstracted out somehow... */ @@ -1545,12 +1552,13 @@ void svg_doupdate(t_svg *x, t_canvas *c, t_symbol *s) sys_gui("\n"); } if (x->x_type == gensym("group") && s != gensym("data") && - s != gensym("points")) + s != gensym("points") && s != gensym("index")) { sys_vgui(".x%lx.c itemconfigure .dgroup%lx.%lx %s\n", visible, parent, data, str); } - else if (s != gensym("data") && s != gensym("points")) + else if (s != gensym("data") && s != gensym("points") && + s != gensym("index")) { sys_vgui(".x%lx.c itemconfigure .draw%lx.%lx %s\n", visible, parent, data, str); @@ -3504,6 +3512,7 @@ static void draw_motion(void *z, t_floatarg dx, t_floatarg dy) { t_draw *x = (t_draw *)z; t_svg *sa = (t_svg *)x->x_attr; + t_float mtx1[3][3]; t_float mtx2[3][3]; t_float m1, m2, m3, m4, m5, m6, tdx, tdy; @@ -6821,6 +6830,13 @@ void drawimage_size(t_drawimage *x, t_float w, t_float h) x->x_h = h; } +static int drawimage_getindex(void *z, t_template *template, t_word *data) +{ + t_drawimage *x = (t_drawimage *)z; + int index = (int)fielddesc_getcoord(&x->x_value, template, data, 1); + return (index); +} + static void drawimage_index(t_drawimage *x, t_symbol *s, int argc, t_atom *argv) { @@ -6831,7 +6847,7 @@ static void drawimage_index(t_drawimage *x, t_symbol *s, int argc, post("drawimage warning: sequence variable is only " "used with drawsprite"); fielddesc_setfloatarg(&x->x_value, argc, argv); - canvas_redrawallfortemplatecanvas(c, 0); + svg_update((t_svg *)x->x_attr, gensym("index")); } } diff --git a/pd/src/pdtk_drawimage.tcl b/pd/src/pdtk_drawimage.tcl index ccf28c0ca0e4fc403ec91898f39f1fa9d9aedf0f..2bae0dc479fe2c184287ce176593153e0143088d 100644 --- a/pd/src/pdtk_drawimage.tcl +++ b/pd/src/pdtk_drawimage.tcl @@ -72,6 +72,12 @@ proc pdtk_drawimage_vis {c x y obj tag seqno l2orktag1 l2orktag2 tag3 drawtag} { $c create pimage $x $y -image ${img}$seqno -tags [list $tag $l2orktag1 $l2orktag2 $drawtag] -parent $tag3 } +proc pdtk_drawimage_index {c obj drawtag index} { + pdtk_post "drawimage thinking \n" + set img ::drawimage_${obj} + $c itemconfigure $drawtag -image ${img}$index +} + proc pdtk_drawimage_unvis {c tag} { $c delete $tag }