equal
deleted
inserted
replaced
|
1 d3.scale.quantize = function() { |
|
2 return d3_scale_quantize(0, 1, [0, 1]); |
|
3 }; |
|
4 |
|
5 function d3_scale_quantize(x0, x1, range) { |
|
6 var kx, i; |
|
7 |
|
8 function scale(x) { |
|
9 return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))]; |
|
10 } |
|
11 |
|
12 function rescale() { |
|
13 kx = range.length / (x1 - x0); |
|
14 i = range.length - 1; |
|
15 return scale; |
|
16 } |
|
17 |
|
18 scale.domain = function(x) { |
|
19 if (!arguments.length) return [x0, x1]; |
|
20 x0 = +x[0]; |
|
21 x1 = +x[x.length - 1]; |
|
22 return rescale(); |
|
23 }; |
|
24 |
|
25 scale.range = function(x) { |
|
26 if (!arguments.length) return range; |
|
27 range = x; |
|
28 return rescale(); |
|
29 }; |
|
30 |
|
31 scale.copy = function() { |
|
32 return d3_scale_quantize(x0, x1, range); // copy on write |
|
33 }; |
|
34 |
|
35 return rescale(); |
|
36 }; |