cdf
Version:
A library for creating oldschool demo-like animations with JavaScript
101 lines (92 loc) • 3.08 kB
JavaScript
/*! stats.js - http://github.com/mrdoob/stats.js*/
(function (global) {
var f = function () {
function e(a) {
c.appendChild(a.dom);
return a
}
function u(a) {
for (var d = 0; d < c.children.length; d++) c.children[d].style.display = d === a ? "block" : "none";
l = a
}
var l = 0, c = document.createElement("div");
c.style.cssText = "position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";
c.addEventListener("click", function (a) {
a.preventDefault();
u(++l % c.children.length)
}, !1);
var k = (performance || Date).now(), g = k, a = 0, r = e(new f.Panel("FPS", "#c0deff", "#559")),
h = e(new f.Panel("mS", "#0f8", "#027"));
if (self.performance && self.performance.memory) var t = e(new f.Panel("MB", "#f08", "#201"));
u(0);
return {
REVISION: 16, dom: c, addPanel: e, showPanel: u, begin: function () {
k = (performance || Date).now()
}, end: function () {
a++;
var c = (performance || Date).now();
h.update(c - k, 200);
if (c > g + 1E3 && (r.update(1E3 * a / (c - g), 100), g = c, a = 0, t)) {
var d = performance.memory;
t.update(d.usedJSHeapSize /
1048576, d.jsHeapSizeLimit / 1048576)
}
return c
}, update: function () {
k = this.end()
}, domElement: c, setMode: u
}
};
f.Panel = function (e, f, l) {
var c = Infinity, k = 0, g = Math.round, a = g(window.devicePixelRatio || 1), r = 80 * a, h = 48 * a, t = 3 * a,
v = 2 * a, d = 3 * a, m = 15 * a, n = 74 * a, p = 30 * a, q = document.createElement("canvas");
q.width = r;
q.height = h;
q.style.cssText = "width:80px;height:48px";
var b = q.getContext("2d");
b.font = "bold " + 9 * a + "px Helvetica,Arial,sans-serif";
b.textBaseline = "top";
b.fillStyle = l;
b.fillRect(0, 0, r, h);
b.fillStyle = f;
b.fillText(e, t, v);
b.fillRect(d, m, n, p);
b.fillStyle = l;
b.globalAlpha = .9;
b.fillRect(d, m, n, p);
return {
dom: q, update: function (h, w) {
c = Math.min(c, h);
k = Math.max(k, h);
b.fillStyle = l;
b.globalAlpha = 1;
b.fillRect(0, 0, r, m);
b.fillStyle = f;
b.fillText(g(h) + " " + e + " (" + g(c) + "-" + g(k) + ")", t, v);
b.drawImage(q, d + a, m, n - a, p, d, m, n - a, p);
b.fillRect(d + n - a, m, a, p);
b.fillStyle = l;
b.globalAlpha = .9;
b.fillRect(d + n - a, m, a, g((1 - h / w) * p))
}
}
};
var lib = global.cdf || {};
var s = lib.codef_stats = new f();
(function (s) {
s.position = 'absolute';
s.top = '0px';
s.left = '0px';
})(s.domElement.style);
lib.addstats = lib.addStats = function () {
document.body.appendChild(s.domElement);
};
lib.updatestats = lib.updateStats = function () {
s.update();
};
if (typeof module !== 'undefined' && module.exports) {
module.exports = lib;
} else {
global.cdf = lib;
}
})(window);