Spaces:
Sleeping
Sleeping
| import "scale"; | |
| d3.scale.quantize = function() { | |
| return d3_scale_quantize(0, 1, [0, 1]); | |
| }; | |
| function d3_scale_quantize(x0, x1, range) { | |
| var kx, i; | |
| function scale(x) { | |
| return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; | |
| } | |
| function rescale() { | |
| kx = range.length / (x1 - x0); | |
| i = range.length - 1; | |
| return scale; | |
| } | |
| scale.domain = function(x) { | |
| if (!arguments.length) return [x0, x1]; | |
| x0 = +x[0]; | |
| x1 = +x[x.length - 1]; | |
| return rescale(); | |
| }; | |
| scale.range = function(x) { | |
| if (!arguments.length) return range; | |
| range = x; | |
| return rescale(); | |
| }; | |
| scale.invertExtent = function(y) { | |
| y = range.indexOf(y); | |
| y = y < 0 ? NaN : y / kx + x0; | |
| return [y, y + 1 / kx]; | |
| }; | |
| scale.copy = function() { | |
| return d3_scale_quantize(x0, x1, range); // copy on write | |
| }; | |
| return rescale(); | |
| } | |