on master help sign in
Fix `group` and `groupTransform`
dc3b220evancz
runtime/Render/Collage.js+11−9
@@ -123,6 +123,7 @@ function renderForm(redo, ctx, form) {
123 var f = form.form;
123 var f = form.form;
124 switch(f.ctor) {
124 switch(f.ctor) {
125 case 'FPath' : drawLine(ctx, f._0, f._1); break;
125 case 'FPath' : drawLine(ctx, f._0, f._1); break;
126+ case 'FImage': drawImage(redo, ctx, f); break;
126 case 'FShape':
127 case 'FShape':
127 if (f._0.ctor === 'Left') {
128 if (f._0.ctor === 'Left') {
128 f._1.closed = true;
129 f._1.closed = true;
@@ -131,7 +132,6 @@ function renderForm(redo, ctx, form) {
131 drawShape(redo, ctx, f._0._0, f._1);
132 drawShape(redo, ctx, f._0._0, f._1);
132 }
133 }
133 break;
134 break;
134− case 'FImage': drawImage(redo, ctx, f); break;
135 }
135 }
136 ctx.restore();
136 ctx.restore();
137}
137}
@@ -166,12 +166,13 @@ function collageElement(width, height, matrices, form) {
166 return div;
166 return div;
167}
167}
168
168
169−function stepperHelp(group) {
169+function stepperHelp(list) {
170+ var arr = fromList(list);
170 var i = 0;
171 var i = 0;
171− function hasNext() { return i < group.length; }
172+ function hasNext() { return i < arr.length; }
172 // assumes that there is a next element
173 // assumes that there is a next element
173 function next() {
174 function next() {
174− var out = group[i];
175+ var out = arr[i];
175 ++i;
176 ++i;
176 return out;
177 return out;
177 }
178 }
@@ -179,7 +180,7 @@ function stepperHelp(group) {
179}
180}
180
181
181function stepper(forms) {
182function stepper(forms) {
182− var ps = [stepperHelp(fromList(forms))];
183+ var ps = [stepperHelp(forms)];
183 var matrices = [];
184 var matrices = [];
184 function hasNext() {
185 function hasNext() {
185 var len = ps.length;
186 var len = ps.length;
@@ -192,11 +193,12 @@ function stepper(forms) {
192 function next(ctx) {
193 function next(ctx) {
193 while (!ps[0].hasNext()) { ps.shift(); matrices.pop(); ctx.restore(); }
194 while (!ps[0].hasNext()) { ps.shift(); matrices.pop(); ctx.restore(); }
194 var out = ps[0].next();
195 var out = ps[0].next();
196+ var f = out.form;
195− if (out.ctor === 'FGroup') {
197+ if (f.ctor === 'FGroup') {
196− ps.unshift(stepperHelp(out._1));
198+ ps.unshift(stepperHelp(f._1));
197− matrices.push(out._0);
198− ctx.save();
199 var m = f._0;
199 var m = f._0;
200+ matrices.push(m);
201+ ctx.save();
200 ctx.transform(m[0], m[3], m[1], m[4], m[2], -m[5]);
202 ctx.transform(m[0], m[3], m[1], m[4], m[2], -m[5]);
201 }
203 }
202 return out;
204 return out;