cdf
Version:
A library for creating oldschool demo-like animations with JavaScript
115 lines (100 loc) • 3.87 kB
JavaScript
/* sin and zoom fx */
(function (global) {
var lib = global.cdf || {};
var fx = lib.FX = lib.fx = function (src, dst, params) {
this.src = src;
this.dst = dst;
this.params = params;
};
fx.prototype = {
siny: function (posx, posy) {
var oldvalue = new Array();
var tmp = this.dst.contex.globalAlpha;
this.dst.contex.globalAlpha = 1;
for (var j = 0; j < this.params.length; j++) {
oldvalue[j] = this.params[j].value;
}
for (var i = 0; i < this.src.canvas.width; i++) {
var prov = 0;
for (var j = 0; j < this.params.length; j++) {
prov += Math.sin(this.params[j].value) * this.params[j].amp;
}
this.src.drawPart(this.dst, i + posx, prov + posy, i, 0, 1, this.src.canvas.height);
for (var j = 0; j < this.params.length; j++) {
this.params[j].value += this.params[j].inc;
}
}
for (var j = 0; j < this.params.length; j++) {
this.params[j].value = oldvalue[j] + this.params[j].offset;
}
this.dst.contex.globalAlpha = tmp;
},
zoomy: function (posx, posy, max) {
var oldvalue = new Array();
var tmp = this.dst.contex.globalAlpha;
this.dst.contex.globalAlpha = 1;
for (var j = 0; j < this.params.length; j++) {
oldvalue[j] = this.params[j].value;
}
for (var i = 0; i < this.src.canvas.width; i++) {
var prov = 0;
for (var j = 0; j < this.params.length; j++) {
prov += Math.sin(this.params[j].value) * this.params[j].amp;
}
this.src.drawPart(this.dst, i + posx, posy, i, 0, 1, this.src.canvas.height, 1, 0, 1, prov);
for (var j = 0; j < this.params.length; j++) {
this.params[j].value += this.params[j].inc;
}
}
for (var j = 0; j < this.params.length; j++) {
this.params[j].value = oldvalue[j] + this.params[j].offset;
}
this.dst.contex.globalAlpha = tmp;
},
sinx: function (posx, posy) {
var tmp = this.dst.contex.globalAlpha;
this.dst.contex.globalAlpha = 1;
var oldvalue = new Array();
for (var j = 0; j < this.params.length; j++) {
oldvalue[j] = this.params[j].value;
}
for (var i = 0; i < this.src.canvas.height; i++) {
var prov = 0;
for (var j = 0; j < this.params.length; j++) {
prov += Math.sin(this.params[j].value) * this.params[j].amp;
}
this.src.drawPart(this.dst, prov + posx, i + posy, 0, i, this.src.canvas.width, 1);
for (var j = 0; j < this.params.length; j++) {
this.params[j].value += this.params[j].inc;
}
}
for (var j = 0; j < this.params.length; j++) {
this.params[j].value = oldvalue[j] + this.params[j].offset;
}
this.dst.contex.globalAlpha = tmp;
},
zoomx: function (posx, posy, max) {
var tmp = this.dst.contex.globalAlpha;
this.dst.contex.globalAlpha = 1;
var oldvalue = new Array();
for (var j = 0; j < this.params.length; j++) {
oldvalue[j] = this.params[j].value;
}
for (var i = 0; i < this.src.canvas.height; i++) {
var prov = 0;
for (var j = 0; j < this.params.length; j++) {
prov += max + this.params[j].amp + Math.sin(this.params[j].value) * this.params[j].amp;
}
this.src.drawPart(this.dst, posx, i + posy, 0, i, this.src.canvas.width, 1, 1, 0, prov, 1);
for (var j = 0; j < this.params.length; j++) {
this.params[j].value += this.params[j].inc;
}
}
for (var j = 0; j < this.params.length; j++) {
this.params[j].value = oldvalue[j] + this.params[j].offset;
}
this.dst.contex.globalAlpha = tmp;
}
};
if(typeof module!=='undefined'&& module.exports){module.exports=lib;}else{global.cdf=lib;}
})(window);