source: Dev/branches/jQueryUI/client/d3/src/svg/symbol.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.2 KB
Line 
1d3.svg.symbol = function() {
2  var type = d3_svg_symbolType,
3      size = d3_svg_symbolSize;
4
5  function symbol(d, i) {
6    return (d3_svg_symbols[type.call(this, d, i)]
7        || d3_svg_symbols.circle)
8        (size.call(this, d, i));
9  }
10
11  symbol.type = function(x) {
12    if (!arguments.length) return type;
13    type = d3.functor(x);
14    return symbol;
15  };
16
17  // size of symbol in square pixels
18  symbol.size = function(x) {
19    if (!arguments.length) return size;
20    size = d3.functor(x);
21    return symbol;
22  };
23
24  return symbol;
25};
26
27function d3_svg_symbolSize() {
28  return 64;
29}
30
31function d3_svg_symbolType() {
32  return "circle";
33}
34
35// TODO cross-diagonal?
36var d3_svg_symbols = {
37  "circle": function(size) {
38    var r = Math.sqrt(size / Math.PI);
39    return "M0," + r
40        + "A" + r + "," + r + " 0 1,1 0," + (-r)
41        + "A" + r + "," + r + " 0 1,1 0," + r
42        + "Z";
43  },
44  "cross": function(size) {
45    var r = Math.sqrt(size / 5) / 2;
46    return "M" + -3 * r + "," + -r
47        + "H" + -r
48        + "V" + -3 * r
49        + "H" + r
50        + "V" + -r
51        + "H" + 3 * r
52        + "V" + r
53        + "H" + r
54        + "V" + 3 * r
55        + "H" + -r
56        + "V" + r
57        + "H" + -3 * r
58        + "Z";
59  },
60  "diamond": function(size) {
61    var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)),
62        rx = ry * d3_svg_symbolTan30;
63    return "M0," + -ry
64        + "L" + rx + ",0"
65        + " 0," + ry
66        + " " + -rx + ",0"
67        + "Z";
68  },
69  "square": function(size) {
70    var r = Math.sqrt(size) / 2;
71    return "M" + -r + "," + -r
72        + "L" + r + "," + -r
73        + " " + r + "," + r
74        + " " + -r + "," + r
75        + "Z";
76  },
77  "triangle-down": function(size) {
78    var rx = Math.sqrt(size / d3_svg_symbolSqrt3),
79        ry = rx * d3_svg_symbolSqrt3 / 2;
80    return "M0," + ry
81        + "L" + rx +"," + -ry
82        + " " + -rx + "," + -ry
83        + "Z";
84  },
85  "triangle-up": function(size) {
86    var rx = Math.sqrt(size / d3_svg_symbolSqrt3),
87        ry = rx * d3_svg_symbolSqrt3 / 2;
88    return "M0," + -ry
89        + "L" + rx +"," + ry
90        + " " + -rx + "," + ry
91        + "Z";
92  }
93};
94
95d3.svg.symbolTypes = d3.keys(d3_svg_symbols);
96
97var d3_svg_symbolSqrt3 = Math.sqrt(3),
98    d3_svg_symbolTan30 = Math.tan(30 * Math.PI / 180);
Note: See TracBrowser for help on using the repository browser.