@@ -139,17 +139,21 @@ function collageForms(w,h,forms) {
139 return canvas;
139 return canvas;
142+function applyTransforms(theta,scale,x,y,w,h,e) {
143+ var t = "translate(" + (x - w / 2) + "px,"+ (y - h / 2) + "px)";
144+ var r = theta === (~~theta) ? "" : "rotate(" + theta*360 + "deg)";
145+ var s = scale === 1 ? "" : "scale(" + scale + "," + scale + ")";
146+ var transforms = t + " " + s + " " + r;
147+ e.style.transform = transforms;
148+ e.style.msTransform = transforms;
149+ e.style.MozTransform = transforms;
150+ e.style.webkitTransform = transforms;
151+ e.style.OTransform = transforms;
142function collageElement(w,h,theta,scale,x,y,elem) {
154function collageElement(w,h,theta,scale,x,y,elem) {
143 var e = Render.render(elem);
155 var e = Render.render(elem);
144− var t = "translate(" + (x - elem[3] / 2) + "px,"+ (y - elem[4] / 2) + "px)";
156+ applyTransforms(theta,scale,x,y,elem[3],elem[4],e);
145− var r = theta === (~~theta) ? "" : "rotate(" + theta*360 + "deg)";
146− var s = scale === 1 ? "" : "scale(" + scale + "," + scale + ")";
147− var transforms = t + " " + s + " " + r;
148− e.style.transform = transforms;
149− e.style.msTransform = transforms;
150− e.style.MozTransform = transforms;
151− e.style.webkitTransform = transforms;
152− e.style.OTransform = transforms;
153 var div = Render.newElement('div');
157 var div = Render.newElement('div');
154 Render.addTo(div,e);
158 Render.addTo(div,e);
155 div.style.width = (~~w) + "px";
159 div.style.width = (~~w) + "px";
@@ -174,25 +178,27 @@ function collage(w,h,formss) {
176function updateFormSet(node,currSet,nextSet) {
180function updateFormSet(node,currSet,nextSet) {
177− if (Value.eq(nextSet,currSet)) return;
181+ if (Value.eq(nextSet,currSet)) return;
178− var w = node.style.width.slice(0,-2) - 0;
182+ var w = node.style.width.slice(0,-2) - 0;
179− var h = node.style.height.slice(0,-2) - 0;
183+ var h = node.style.height.slice(0,-2) - 0;
180− if (typeof nextSet[0] === "object") {
184+ if (typeof nextSet[0] === "object") {
181− if (typeof currSet[0] === "object") {
185+ if (typeof currSet[0] === "object") {
182− if (node.getContext) {
186+ if (node.getContext) {
183− var ctx = node.getContext('2d');
187+ var ctx = node.getContext('2d');
184− function redo() { renderForms(this,ctx,w,h,nextSet); }
188+ function redo() { renderForms(this,ctx,w,h,nextSet); }
185− return renderForms(redo,ctx,w,h,nextSet);
189+ return renderForms(redo,ctx,w,h,nextSet);
188− var newNode = collageForms(w,h,nextSet);
189− newNode.style.position = 'absolute';
190− return node.parentNode.replaceChild(newNode,node);
192− var f = nextSet;
192+ var newNode = collageForms(w,h,nextSet);
193− var newNode = collageElement(w,h,f[1],f[2],f[3][1],f[3][2],f[4][1]);
194 newNode.style.position = 'absolute';
193 newNode.style.position = 'absolute';
195 return node.parentNode.replaceChild(newNode,node);
194 return node.parentNode.replaceChild(newNode,node);
196+ node.style.width = (~~w) + "px";
197+ node.style.height = (~~h) + "px";
199+ var next = nextSet[4][1];
200+ Render.update(node.firstChild, currSet[4][1], next);
201+ applyTransforms(f[1],f[2],f[3][1],f[3][2],next[3],next[4],node.firstChild);
198// assumes that the form sets are the same length.
204// assumes that the form sets are the same length.