rubyvis 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +13 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +37 -0
  6. data/History.txt +6 -0
  7. data/LICENSE.txt +23 -0
  8. data/{README.txt → README.md} +15 -12
  9. data/Rakefile +4 -11
  10. data/lib/rubyvis.rb +1 -1
  11. data/lib/rubyvis/scale/quantitative.rb +14 -18
  12. data/lib/rubyvis/scene/svg_label.rb +1 -1
  13. data/rubyvis.gemspec +21 -0
  14. data/spec/anchor_spec.rb +2 -1
  15. data/spec/line_spec.rb +2 -2
  16. data/spec/scale_linear_datetime_spec.rb +23 -8
  17. data/spec/spec_helper.rb +2 -1
  18. metadata +31 -214
  19. data/.gemtest +0 -0
  20. data/vendor/protovis/protovis-r3.3.js +0 -287
  21. data/vendor/protovis/src/behavior/Behavior.js +0 -32
  22. data/vendor/protovis/src/behavior/Drag.js +0 -112
  23. data/vendor/protovis/src/behavior/Pan.js +0 -110
  24. data/vendor/protovis/src/behavior/Point.js +0 -157
  25. data/vendor/protovis/src/behavior/Resize.js +0 -104
  26. data/vendor/protovis/src/behavior/Select.js +0 -100
  27. data/vendor/protovis/src/behavior/Zoom.js +0 -85
  28. data/vendor/protovis/src/color/Color.js +0 -598
  29. data/vendor/protovis/src/color/Colors.js +0 -135
  30. data/vendor/protovis/src/color/Ramp.js +0 -17
  31. data/vendor/protovis/src/data/Arrays.js +0 -277
  32. data/vendor/protovis/src/data/Dom.js +0 -380
  33. data/vendor/protovis/src/data/Flatten.js +0 -146
  34. data/vendor/protovis/src/data/Histogram.js +0 -120
  35. data/vendor/protovis/src/data/LinearScale.js +0 -54
  36. data/vendor/protovis/src/data/LogScale.js +0 -142
  37. data/vendor/protovis/src/data/Nest.js +0 -257
  38. data/vendor/protovis/src/data/Numbers.js +0 -313
  39. data/vendor/protovis/src/data/Objects.js +0 -78
  40. data/vendor/protovis/src/data/OrdinalScale.js +0 -267
  41. data/vendor/protovis/src/data/QuantileScale.js +0 -180
  42. data/vendor/protovis/src/data/QuantitativeScale.js +0 -440
  43. data/vendor/protovis/src/data/RootScale.js +0 -55
  44. data/vendor/protovis/src/data/Scale.js +0 -86
  45. data/vendor/protovis/src/data/Transform.js +0 -109
  46. data/vendor/protovis/src/data/Tree.js +0 -124
  47. data/vendor/protovis/src/data/Vector.js +0 -118
  48. data/vendor/protovis/src/geo/Geo.js +0 -5
  49. data/vendor/protovis/src/geo/GeoScale.js +0 -307
  50. data/vendor/protovis/src/geo/LatLng.js +0 -23
  51. data/vendor/protovis/src/geo/Projection.js +0 -43
  52. data/vendor/protovis/src/geo/Projections.js +0 -117
  53. data/vendor/protovis/src/lang/Array.js +0 -112
  54. data/vendor/protovis/src/lang/init.js +0 -26
  55. data/vendor/protovis/src/layout/Arc.js +0 -178
  56. data/vendor/protovis/src/layout/Bullet.js +0 -164
  57. data/vendor/protovis/src/layout/Cluster.js +0 -205
  58. data/vendor/protovis/src/layout/Force.js +0 -309
  59. data/vendor/protovis/src/layout/Grid.js +0 -119
  60. data/vendor/protovis/src/layout/Hierarchy.js +0 -249
  61. data/vendor/protovis/src/layout/Horizon.js +0 -159
  62. data/vendor/protovis/src/layout/Indent.js +0 -83
  63. data/vendor/protovis/src/layout/Layout.js +0 -56
  64. data/vendor/protovis/src/layout/Matrix.js +0 -177
  65. data/vendor/protovis/src/layout/Network.js +0 -302
  66. data/vendor/protovis/src/layout/Pack.js +0 -323
  67. data/vendor/protovis/src/layout/Partition.js +0 -203
  68. data/vendor/protovis/src/layout/Rollup.js +0 -203
  69. data/vendor/protovis/src/layout/Stack.js +0 -391
  70. data/vendor/protovis/src/layout/Tree.js +0 -282
  71. data/vendor/protovis/src/layout/Treemap.js +0 -347
  72. data/vendor/protovis/src/mark/Anchor.js +0 -81
  73. data/vendor/protovis/src/mark/Area.js +0 -268
  74. data/vendor/protovis/src/mark/Bar.js +0 -93
  75. data/vendor/protovis/src/mark/Dot.js +0 -212
  76. data/vendor/protovis/src/mark/Ease.js +0 -150
  77. data/vendor/protovis/src/mark/Image.js +0 -154
  78. data/vendor/protovis/src/mark/Label.js +0 -155
  79. data/vendor/protovis/src/mark/Line.js +0 -195
  80. data/vendor/protovis/src/mark/Mark.js +0 -1237
  81. data/vendor/protovis/src/mark/Panel.js +0 -273
  82. data/vendor/protovis/src/mark/Rule.js +0 -143
  83. data/vendor/protovis/src/mark/Transient.js +0 -7
  84. data/vendor/protovis/src/mark/Transition.js +0 -195
  85. data/vendor/protovis/src/mark/Wedge.js +0 -244
  86. data/vendor/protovis/src/physics/BoundConstraint.js +0 -75
  87. data/vendor/protovis/src/physics/ChargeForce.js +0 -184
  88. data/vendor/protovis/src/physics/CollisionConstraint.js +0 -113
  89. data/vendor/protovis/src/physics/Constraint.js +0 -26
  90. data/vendor/protovis/src/physics/DragForce.js +0 -49
  91. data/vendor/protovis/src/physics/Force.js +0 -25
  92. data/vendor/protovis/src/physics/Particle.js +0 -81
  93. data/vendor/protovis/src/physics/PositionConstraint.js +0 -72
  94. data/vendor/protovis/src/physics/Quadtree.js +0 -195
  95. data/vendor/protovis/src/physics/Simulation.js +0 -159
  96. data/vendor/protovis/src/physics/SpringForce.js +0 -141
  97. data/vendor/protovis/src/pv-internals.js +0 -154
  98. data/vendor/protovis/src/pv.js +0 -95
  99. data/vendor/protovis/src/scene/SvgArea.js +0 -172
  100. data/vendor/protovis/src/scene/SvgBar.js +0 -28
  101. data/vendor/protovis/src/scene/SvgCurve.js +0 -354
  102. data/vendor/protovis/src/scene/SvgDot.js +0 -81
  103. data/vendor/protovis/src/scene/SvgImage.js +0 -45
  104. data/vendor/protovis/src/scene/SvgLabel.js +0 -46
  105. data/vendor/protovis/src/scene/SvgLine.js +0 -159
  106. data/vendor/protovis/src/scene/SvgPanel.js +0 -126
  107. data/vendor/protovis/src/scene/SvgRule.js +0 -26
  108. data/vendor/protovis/src/scene/SvgScene.js +0 -185
  109. data/vendor/protovis/src/scene/SvgWedge.js +0 -66
  110. data/vendor/protovis/src/text/DateFormat.js +0 -262
  111. data/vendor/protovis/src/text/Format.js +0 -78
  112. data/vendor/protovis/src/text/NumberFormat.js +0 -227
  113. data/vendor/protovis/src/text/TimeFormat.js +0 -115
@@ -1,150 +0,0 @@
1
- /*
2
- * TERMS OF USE - EASING EQUATIONS
3
- *
4
- * Open source under the BSD License.
5
- *
6
- * Copyright 2001 Robert Penner
7
- * All rights reserved.
8
- *
9
- * Redistribution and use in source and binary forms, with or without
10
- * modification, are permitted provided that the following conditions are met:
11
- *
12
- * - Redistributions of source code must retain the above copyright notice, this
13
- * list of conditions and the following disclaimer.
14
- *
15
- * - Redistributions in binary form must reproduce the above copyright notice,
16
- * this list of conditions and the following disclaimer in the documentation
17
- * and/or other materials provided with the distribution.
18
- *
19
- * - Neither the name of the author nor the names of contributors may be used to
20
- * endorse or promote products derived from this software without specific
21
- * prior written permission.
22
- *
23
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
- * POSSIBILITY OF SUCH DAMAGE.
34
- */
35
-
36
- pv.Ease = (function() {
37
-
38
- function reverse(f) {
39
- return function(t) {
40
- return 1 - f(1 - t);
41
- };
42
- }
43
-
44
- function reflect(f) {
45
- return function(t) {
46
- return .5 * (t < .5 ? f(2 * t) : (2 - f(2 - 2 * t)));
47
- };
48
- }
49
-
50
- function poly(e) {
51
- return function(t) {
52
- return t < 0 ? 0 : t > 1 ? 1 : Math.pow(t, e);
53
- }
54
- }
55
-
56
- function sin(t) {
57
- return 1 - Math.cos(t * Math.PI / 2);
58
- }
59
-
60
- function exp(t) {
61
- return t ? Math.pow(2, 10 * (t - 1)) - 0.001 : 0;
62
- }
63
-
64
- function circle(t) {
65
- return -(Math.sqrt(1 - t * t) - 1);
66
- }
67
-
68
- function elastic(a, p) {
69
- var s;
70
- if (!p) p = 0.45;
71
- if (!a || a < 1) { a = 1; s = p / 4; }
72
- else s = p / (2 * Math.PI) * Math.asin(1 / a);
73
- return function(t) {
74
- return t <= 0 || t >= 1 ? t
75
- : -(a * Math.pow(2, 10 * (--t)) * Math.sin((t - s) * (2 * Math.PI) / p));
76
- };
77
- }
78
-
79
- function back(s) {
80
- if (!s) s = 1.70158;
81
- return function(t) {
82
- return t * t * ((s + 1) * t - s);
83
- };
84
- }
85
-
86
- function bounce(t) {
87
- return t < 1 / 2.75 ? 7.5625 * t * t
88
- : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75
89
- : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375
90
- : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
91
- }
92
-
93
- var quad = poly(2),
94
- cubic = poly(3),
95
- elasticDefault = elastic(),
96
- backDefault = back();
97
-
98
- var eases = {
99
- "linear": pv.identity,
100
- "quad-in": quad,
101
- "quad-out": reverse(quad),
102
- "quad-in-out": reflect(quad),
103
- "quad-out-in": reflect(reverse(quad)),
104
- "cubic-in": cubic,
105
- "cubic-out": reverse(cubic),
106
- "cubic-in-out": reflect(cubic),
107
- "cubic-out-in": reflect(reverse(cubic)),
108
- "sin-in": sin,
109
- "sin-out": reverse(sin),
110
- "sin-in-out": reflect(sin),
111
- "sin-out-in": reflect(reverse(sin)),
112
- "exp-in": exp,
113
- "exp-out": reverse(exp),
114
- "exp-in-out": reflect(exp),
115
- "exp-out-in": reflect(reverse(exp)),
116
- "circle-in": circle,
117
- "circle-out": reverse(circle),
118
- "circle-in-out": reflect(circle),
119
- "circle-out-in": reflect(reverse(circle)),
120
- "elastic-in": elasticDefault,
121
- "elastic-out": reverse(elasticDefault),
122
- "elastic-in-out": reflect(elasticDefault),
123
- "elastic-out-in": reflect(reverse(elasticDefault)),
124
- "back-in": backDefault,
125
- "back-out": reverse(backDefault),
126
- "back-in-out": reflect(backDefault),
127
- "back-out-in": reflect(reverse(backDefault)),
128
- "bounce-in": bounce,
129
- "bounce-out": reverse(bounce),
130
- "bounce-in-out": reflect(bounce),
131
- "bounce-out-in": reflect(reverse(bounce))
132
- };
133
-
134
- pv.ease = function(f) {
135
- return eases[f];
136
- };
137
-
138
- return {
139
- reverse: reverse,
140
- reflect: reflect,
141
- linear: function() { return pv.identity; },
142
- sin: function() { return sin; },
143
- exp: function() { return exp; },
144
- circle: function() { return circle; },
145
- elastic: elastic,
146
- back: back,
147
- bounce: bounce,
148
- poly: poly
149
- };
150
- })();
@@ -1,154 +0,0 @@
1
- /**
2
- * Constructs a new image with default properties. Images are not typically
3
- * constructed directly, but by adding to a panel or an existing mark via
4
- * {@link pv.Mark#add}.
5
- *
6
- * @class Represents an image, either a static resource or a dynamically-
7
- * generated pixel buffer. Images share the same layout and style properties as
8
- * bars. The external image resource is specified via the {@link #url}
9
- * property. The optional fill, if specified, appears beneath the image, while
10
- * the optional stroke appears above the image.
11
- *
12
- * <p>Dynamic images such as heatmaps are supported using the {@link #image}
13
- * psuedo-property. This function is passed the <i>x</i> and <i>y</i> index, in
14
- * addition to the current data stack. The return value is a {@link pv.Color},
15
- * or null for transparent. A string can also be returned, which will be parsed
16
- * into a color; however, it is typically much faster to return an object with
17
- * <tt>r</tt>, <tt>g</tt>, <tt>b</tt> and <tt>a</tt> attributes, to avoid the
18
- * cost of parsing and object instantiation.
19
- *
20
- * <p>See {@link pv.Bar} for details on positioning properties.
21
- *
22
- * @extends pv.Bar
23
- */
24
- pv.Image = function() {
25
- pv.Bar.call(this);
26
- };
27
-
28
- pv.Image.prototype = pv.extend(pv.Bar)
29
- .property("url", String)
30
- .property("imageWidth", Number)
31
- .property("imageHeight", Number);
32
-
33
- pv.Image.prototype.type = "image";
34
-
35
- /**
36
- * The URL of the image to display. The set of supported image types is
37
- * browser-dependent; PNG and JPEG are recommended.
38
- *
39
- * @type string
40
- * @name pv.Image.prototype.url
41
- */
42
-
43
- /**
44
- * The width of the image in pixels. For static images, this property is
45
- * computed implicitly from the loaded image resources. For dynamic images, this
46
- * property can be used to specify the width of the pixel buffer; otherwise, the
47
- * value is derived from the <tt>width</tt> property.
48
- *
49
- * @type number
50
- * @name pv.Image.prototype.imageWidth
51
- */
52
-
53
- /**
54
- * The height of the image in pixels. For static images, this property is
55
- * computed implicitly from the loaded image resources. For dynamic images, this
56
- * property can be used to specify the height of the pixel buffer; otherwise, the
57
- * value is derived from the <tt>height</tt> property.
58
- *
59
- * @type number
60
- * @name pv.Image.prototype.imageHeight
61
- */
62
-
63
- /**
64
- * Default properties for images. By default, there is no stroke or fill style.
65
- *
66
- * @type pv.Image
67
- */
68
- pv.Image.prototype.defaults = new pv.Image()
69
- .extend(pv.Bar.prototype.defaults)
70
- .fillStyle(null);
71
-
72
- /**
73
- * Specifies the dynamic image function. By default, no image function is
74
- * specified and the <tt>url</tt> property is used to load a static image
75
- * resource. If an image function is specified, it will be invoked for each
76
- * pixel in the image, based on the related <tt>imageWidth</tt> and
77
- * <tt>imageHeight</tt> properties.
78
- *
79
- * <p>For example, given a two-dimensional array <tt>heatmap</tt>, containing
80
- * numbers in the range [0, 1] in row-major order, a simple monochrome heatmap
81
- * image can be specified as:
82
- *
83
- * <pre>vis.add(pv.Image)
84
- * .imageWidth(heatmap[0].length)
85
- * .imageHeight(heatmap.length)
86
- * .image(pv.ramp("white", "black").by(function(x, y) heatmap[y][x]));</pre>
87
- *
88
- * For fastest performance, use an ordinal scale which caches the fixed color
89
- * palette, or return an object literal with <tt>r</tt>, <tt>g</tt>, <tt>b</tt>
90
- * and <tt>a</tt> attributes. A {@link pv.Color} or string can also be returned,
91
- * though this typically results in slower performance.
92
- *
93
- * @param {function} f the new sizing function.
94
- * @returns {pv.Layout.Pack} this.
95
- */
96
- pv.Image.prototype.image = function(f) {
97
- /** @private */
98
- this.$image = function() {
99
- var c = f.apply(this, arguments);
100
- return c == null ? pv.Color.transparent
101
- : typeof c == "string" ? pv.color(c)
102
- : c;
103
- };
104
- return this;
105
- };
106
-
107
- /** @private Scan the proto chain for an image function. */
108
- pv.Image.prototype.bind = function() {
109
- pv.Bar.prototype.bind.call(this);
110
- var binds = this.binds, mark = this;
111
- do {
112
- binds.image = mark.$image;
113
- } while (!binds.image && (mark = mark.proto));
114
- };
115
-
116
- /** @private */
117
- pv.Image.prototype.buildImplied = function(s) {
118
- pv.Bar.prototype.buildImplied.call(this, s);
119
- if (!s.visible) return;
120
-
121
- /* Compute the implied image dimensions. */
122
- if (s.imageWidth == null) s.imageWidth = s.width;
123
- if (s.imageHeight == null) s.imageHeight = s.height;
124
-
125
- /* Compute the pixel values. */
126
- if ((s.url == null) && this.binds.image) {
127
-
128
- /* Cache the canvas element to reuse across renders. */
129
- var canvas = this.$canvas || (this.$canvas = document.createElement("canvas")),
130
- context = canvas.getContext("2d"),
131
- w = s.imageWidth,
132
- h = s.imageHeight,
133
- stack = pv.Mark.stack,
134
- data;
135
-
136
- /* Evaluate the image function, storing into a CanvasPixelArray. */
137
- canvas.width = w;
138
- canvas.height = h;
139
- data = (s.image = context.createImageData(w, h)).data;
140
- stack.unshift(null, null);
141
- for (var y = 0, p = 0; y < h; y++) {
142
- stack[1] = y;
143
- for (var x = 0; x < w; x++) {
144
- stack[0] = x;
145
- var color = this.binds.image.apply(this, stack);
146
- data[p++] = color.r;
147
- data[p++] = color.g;
148
- data[p++] = color.b;
149
- data[p++] = 255 * color.a;
150
- }
151
- }
152
- stack.splice(0, 2);
153
- }
154
- };
@@ -1,155 +0,0 @@
1
- /**
2
- * Constructs a new label mark with default properties. Labels are not typically
3
- * constructed directly, but by adding to a panel or an existing mark via
4
- * {@link pv.Mark#add}.
5
- *
6
- * @class Represents a text label, allowing textual annotation of other marks or
7
- * arbitrary text within the visualization. The character data must be plain
8
- * text (unicode), though the text can be styled using the {@link #font}
9
- * property. If rich text is needed, external HTML elements can be overlaid on
10
- * the canvas by hand.
11
- *
12
- * <p>Labels are positioned using the box model, similarly to {@link Dot}. Thus,
13
- * a label has no width or height, but merely a text anchor location. The text
14
- * is positioned relative to this anchor location based on the
15
- * {@link #textAlign}, {@link #textBaseline} and {@link #textMargin} properties.
16
- * Furthermore, the text may be rotated using {@link #textAngle}.
17
- *
18
- * <p>Labels ignore events, so as to not interfere with event handlers on
19
- * underlying marks, such as bars. In the future, we may support event handlers
20
- * on labels.
21
- *
22
- * <p>See also the <a href="../../api/Label.html">Label guide</a>.
23
- *
24
- * @extends pv.Mark
25
- */
26
- pv.Label = function() {
27
- pv.Mark.call(this);
28
- };
29
-
30
- pv.Label.prototype = pv.extend(pv.Mark)
31
- .property("text", String)
32
- .property("font", String)
33
- .property("textAngle", Number)
34
- .property("textStyle", pv.color)
35
- .property("textAlign", String)
36
- .property("textBaseline", String)
37
- .property("textMargin", Number)
38
- .property("textDecoration", String)
39
- .property("textShadow", String);
40
-
41
- pv.Label.prototype.type = "label";
42
-
43
- /**
44
- * The character data to render; a string. The default value of the text
45
- * property is the identity function, meaning the label's associated datum will
46
- * be rendered using its <tt>toString</tt>.
47
- *
48
- * @type string
49
- * @name pv.Label.prototype.text
50
- */
51
-
52
- /**
53
- * The font format, per the CSS Level 2 specification. The default font is "10px
54
- * sans-serif", for consistency with the HTML 5 canvas element specification.
55
- * Note that since text is not wrapped, any line-height property will be
56
- * ignored. The other font-style, font-variant, font-weight, font-size and
57
- * font-family properties are supported.
58
- *
59
- * @see <a href="http://www.w3.org/TR/CSS2/fonts.html#font-shorthand">CSS2 fonts</a>
60
- * @type string
61
- * @name pv.Label.prototype.font
62
- */
63
-
64
- /**
65
- * The rotation angle, in radians. Text is rotated clockwise relative to the
66
- * anchor location. For example, with the default left alignment, an angle of
67
- * Math.PI / 2 causes text to proceed downwards. The default angle is zero.
68
- *
69
- * @type number
70
- * @name pv.Label.prototype.textAngle
71
- */
72
-
73
- /**
74
- * The text color. The name "textStyle" is used for consistency with "fillStyle"
75
- * and "strokeStyle", although it might be better to rename this property (and
76
- * perhaps use the same name as "strokeStyle"). The default color is black.
77
- *
78
- * @type string
79
- * @name pv.Label.prototype.textStyle
80
- * @see pv.color
81
- */
82
-
83
- /**
84
- * The horizontal text alignment. One of:<ul>
85
- *
86
- * <li>left
87
- * <li>center
88
- * <li>right
89
- *
90
- * </ul>The default horizontal alignment is left.
91
- *
92
- * @type string
93
- * @name pv.Label.prototype.textAlign
94
- */
95
-
96
- /**
97
- * The vertical text alignment. One of:<ul>
98
- *
99
- * <li>top
100
- * <li>middle
101
- * <li>bottom
102
- *
103
- * </ul>The default vertical alignment is bottom.
104
- *
105
- * @type string
106
- * @name pv.Label.prototype.textBaseline
107
- */
108
-
109
- /**
110
- * The text margin; may be specified in pixels, or in font-dependent units (such
111
- * as ".1ex"). The margin can be used to pad text away from its anchor location,
112
- * in a direction dependent on the horizontal and vertical alignment
113
- * properties. For example, if the text is left- and middle-aligned, the margin
114
- * shifts the text to the right. The default margin is 3 pixels.
115
- *
116
- * @type number
117
- * @name pv.Label.prototype.textMargin
118
- */
119
-
120
- /**
121
- * A list of shadow effects to be applied to text, per the CSS Text Level 3
122
- * text-shadow property. An example specification is "0.1em 0.1em 0.1em
123
- * rgba(0,0,0,.5)"; the first length is the horizontal offset, the second the
124
- * vertical offset, and the third the blur radius.
125
- *
126
- * @see <a href="http://www.w3.org/TR/css3-text/#text-shadow">CSS3 text</a>
127
- * @type string
128
- * @name pv.Label.prototype.textShadow
129
- */
130
-
131
- /**
132
- * A list of decoration to be applied to text, per the CSS Text Level 3
133
- * text-decoration property. An example specification is "underline".
134
- *
135
- * @see <a href="http://www.w3.org/TR/css3-text/#text-decoration">CSS3 text</a>
136
- * @type string
137
- * @name pv.Label.prototype.textDecoration
138
- */
139
-
140
- /**
141
- * Default properties for labels. See the individual properties for the default
142
- * values.
143
- *
144
- * @type pv.Label
145
- */
146
- pv.Label.prototype.defaults = new pv.Label()
147
- .extend(pv.Mark.prototype.defaults)
148
- .events("none")
149
- .text(pv.identity)
150
- .font("10px sans-serif")
151
- .textAngle(0)
152
- .textStyle("black")
153
- .textAlign("left")
154
- .textBaseline("bottom")
155
- .textMargin(3);