source: Dev/trunk/d3/src/svg/area.js @ 76

Last change on this file since 76 was 76, checked in by fpvanagthoven, 14 years ago

d3

File size: 1.7 KB
Line 
1function d3_svg_area(projection) {
2  var x0 = d3_svg_lineX,
3      x1 = d3_svg_lineX,
4      y0 = 0,
5      y1 = d3_svg_lineY,
6      interpolate = "linear",
7      interpolator = d3_svg_lineInterpolators[interpolate],
8      tension = .7;
9
10  function area(d) {
11    if (d.length < 1) return null;
12    var points0 = d3_svg_linePoints(this, d, x0, y0),
13        points1 = d3_svg_linePoints(this, d, x0 === x1 ? d3_svg_areaX(points0) : x1, y0 === y1 ? d3_svg_areaY(points0) : y1);
14    return "M" + interpolator(projection(points1), tension)
15         + "L" + interpolator(projection(points0.reverse()), tension)
16         + "Z";
17  }
18
19  area.x = function(x) {
20    if (!arguments.length) return x1;
21    x0 = x1 = x;
22    return area;
23  };
24
25  area.x0 = function(x) {
26    if (!arguments.length) return x0;
27    x0 = x;
28    return area;
29  };
30
31  area.x1 = function(x) {
32    if (!arguments.length) return x1;
33    x1 = x;
34    return area;
35  };
36
37  area.y = function(y) {
38    if (!arguments.length) return y1;
39    y0 = y1 = y;
40    return area;
41  };
42
43  area.y0 = function(y) {
44    if (!arguments.length) return y0;
45    y0 = y;
46    return area;
47  };
48
49  area.y1 = function(y) {
50    if (!arguments.length) return y1;
51    y1 = y;
52    return area;
53  };
54
55  area.interpolate = function(x) {
56    if (!arguments.length) return interpolate;
57    interpolator = d3_svg_lineInterpolators[interpolate = x];
58    return area;
59  };
60
61  area.tension = function(x) {
62    if (!arguments.length) return tension;
63    tension = x;
64    return area;
65  };
66
67  return area;
68}
69
70d3.svg.area = function() {
71  return d3_svg_area(Object);
72};
73
74function d3_svg_areaX(points) {
75  return function(d, i) {
76    return points[i][0];
77  };
78}
79
80function d3_svg_areaY(points) {
81  return function(d, i) {
82    return points[i][1];
83  };
84}
Note: See TracBrowser for help on using the repository browser.