source: Dev/branches/jQueryUI/client/d3/src/svg/arc.js @ 249

Last change on this file since 249 was 249, checked in by hendrikvanantwerpen, 13 years ago

This one's for Subversion, because it's so close...

First widget (stripped down sequencer).
Seperated client and server code in two direcotry trees.

File size: 2.5 KB
Line 
1d3.svg.arc = function() {
2  var innerRadius = d3_svg_arcInnerRadius,
3      outerRadius = d3_svg_arcOuterRadius,
4      startAngle = d3_svg_arcStartAngle,
5      endAngle = d3_svg_arcEndAngle;
6
7  function arc() {
8    var r0 = innerRadius.apply(this, arguments),
9        r1 = outerRadius.apply(this, arguments),
10        a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset,
11        a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset,
12        da = a1 - a0,
13        df = da < Math.PI ? "0" : "1",
14        c0 = Math.cos(a0),
15        s0 = Math.sin(a0),
16        c1 = Math.cos(a1),
17        s1 = Math.sin(a1);
18    return da >= d3_svg_arcMax
19      ? (r0
20      ? "M0," + r1
21      + "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)
22      + "A" + r1 + "," + r1 + " 0 1,1 0," + r1
23      + "M0," + r0
24      + "A" + r0 + "," + r0 + " 0 1,1 0," + (-r0)
25      + "A" + r0 + "," + r0 + " 0 1,1 0," + r0
26      + "Z"
27      : "M0," + r1
28      + "A" + r1 + "," + r1 + " 0 1,1 0," + (-r1)
29      + "A" + r1 + "," + r1 + " 0 1,1 0," + r1
30      + "Z")
31      : (r0
32      ? "M" + r1 * c0 + "," + r1 * s0
33      + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1
34      + "L" + r0 * c1 + "," + r0 * s1
35      + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0
36      + "Z"
37      : "M" + r1 * c0 + "," + r1 * s0
38      + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1
39      + "L0,0"
40      + "Z");
41  }
42
43  arc.innerRadius = function(v) {
44    if (!arguments.length) return innerRadius;
45    innerRadius = d3.functor(v);
46    return arc;
47  };
48
49  arc.outerRadius = function(v) {
50    if (!arguments.length) return outerRadius;
51    outerRadius = d3.functor(v);
52    return arc;
53  };
54
55  arc.startAngle = function(v) {
56    if (!arguments.length) return startAngle;
57    startAngle = d3.functor(v);
58    return arc;
59  };
60
61  arc.endAngle = function(v) {
62    if (!arguments.length) return endAngle;
63    endAngle = d3.functor(v);
64    return arc;
65  };
66
67  arc.centroid = function() {
68    var r = (innerRadius.apply(this, arguments)
69        + outerRadius.apply(this, arguments)) / 2,
70        a = (startAngle.apply(this, arguments)
71        + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
72    return [Math.cos(a) * r, Math.sin(a) * r];
73  };
74
75  return arc;
76};
77
78var d3_svg_arcOffset = -Math.PI / 2,
79    d3_svg_arcMax = 2 * Math.PI - 1e-6;
80
81function d3_svg_arcInnerRadius(d) {
82  return d.innerRadius;
83}
84
85function d3_svg_arcOuterRadius(d) {
86  return d.outerRadius;
87}
88
89function d3_svg_arcStartAngle(d) {
90  return d.startAngle;
91}
92
93function d3_svg_arcEndAngle(d) {
94  return d.endAngle;
95}
Note: See TracBrowser for help on using the repository browser.