// Generated by CoffeeScript 1.10.0 (function() { window.sizeify = function(n) { if (n.children == null) { n.n = 0; n.size = 1; return 1; } else { n.size = 0; n.children.forEach(function(c) { return n.size += sizeify(c); }); n.n = Math.ceil(Math.log(n.size) / Math.log(4)); n.size = Math.pow(4, n.n); return n.size; } }; window.quad_layout = function(mapping, size) { return function(digits) { var m; m = mapping(digits); return { x: m.j / Math.pow(2, m.n) * size, y: m.i / Math.pow(2, m.n) * size, dx: 1 / Math.pow(2, m.n) * size, dy: 1 / Math.pow(2, m.n) * size, digits: m.digits }; }; }; window.hquad = function(digits) { var d, i, i_temp, j, k, l, n; n = digits.length; l = 1; i = 0; j = 0; for (k = digits.length - 1; k >= 0; k += -1) { d = digits[k]; switch (d) { case '0': i_temp = i; i = j; j = i_temp; break; case '1': i += l; break; case '2': i += l; j += l; break; case '3': i_temp = i; i = l - j - 1; j = 2 * l - i_temp - 1; } l = 2 * l; } return { j: j, i: i, n: n, digits: digits }; }; window.quad = function(digits) { var d, i, j, k, l, n; n = digits.length; l = 1; i = 0; j = 0; for (k = digits.length - 1; k >= 0; k += -1) { d = digits[k]; switch (d) { case '1': j += l; break; case '2': i += l; break; case '3': i += l; j += l; } l = 2 * l; } return { j: j, i: i, n: n, digits: digits }; }; }).call(this);