elm/core-js/collage/Form.js

33 lines
939 B
JavaScript
Raw Normal View History

2012-04-20 03:10:25 +00:00
var Form = function() {
var move = function(x) { return function(y) { return function(form) {
var t = form[1];
return [form[0], [[x + t[0][0], y + t[0][1]], t[1], t[2]]];
};
};
};
var rotate = function(theta) { return function(form) {
var t = form[1];
return [form[0], [t[0], t[1] + 2* Math.PI*theta, t[2]]];
};
};
var scale = function(s) { return function(form) {
var t = form[1];
return [form[0], [t[0], t[1], t[2] * s]];
};
};
var create = function(howToDraw, center) {
return [howToDraw, Transforms.create(center, 0, 1)];
};
var draw = function(form) {
ctx.save();
var trans = form[1];
ctx.translate(trans[0][0], trans[0][1]);
ctx.rotate(trans[1]);
ctx.scale(trans[2], trans[2]);
form[0](ctx);
ctx.restore();
return ctx;
};
return {create:create, move:move, rotate:rotate, scale:scale, draw:draw};
}();