UNPKG

cdf

Version:

A library for creating oldschool demo-like animations with JavaScript

115 lines (100 loc) 3.87 kB
/* 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);