rubyvis 0.1.0 → 0.1.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 (443) hide show
  1. data/History.txt +6 -1
  2. data/Manifest.txt +421 -1
  3. data/README.txt +12 -10
  4. data/examples/first.rb +2 -2
  5. data/examples/second.rb +6 -3
  6. data/lib/rubyvis.rb +18 -3
  7. data/lib/rubyvis/mark.rb +101 -83
  8. data/lib/rubyvis/mark/anchor.rb +5 -7
  9. data/lib/rubyvis/mark/area.rb +19 -17
  10. data/lib/rubyvis/mark/bar.rb +3 -10
  11. data/lib/rubyvis/mark/label.rb +3 -4
  12. data/lib/rubyvis/mark/line.rb +20 -4
  13. data/lib/rubyvis/mark/panel.rb +31 -6
  14. data/lib/rubyvis/mark/rule.rb +8 -4
  15. data/lib/rubyvis/property.rb +11 -0
  16. data/lib/rubyvis/scene/svg_label.rb +1 -1
  17. data/lib/rubyvis/scene/svg_scene.rb +2 -1
  18. data/lib/rubyvis/sceneelement.rb +2 -0
  19. data/spec/bar_spec.rb +50 -0
  20. data/spec/label_spec.rb +41 -0
  21. data/spec/mark_spec.rb +16 -0
  22. data/spec/panel_spec.rb +22 -4
  23. data/spec/spec_helper.rb +1 -0
  24. data/vendor/FUTURE +62 -0
  25. data/vendor/Makefile +138 -0
  26. data/vendor/TODO +22 -0
  27. data/vendor/examples/antibiotics/antibiotics-scatter.html +113 -0
  28. data/vendor/examples/antibiotics/antibiotics.html +140 -0
  29. data/vendor/examples/antibiotics/antibiotics.js +20 -0
  30. data/vendor/examples/barley/barley.html +102 -0
  31. data/vendor/examples/barley/barley.js +122 -0
  32. data/vendor/examples/cars/cars.html +90 -0
  33. data/vendor/examples/cars/cars.js +408 -0
  34. data/vendor/examples/clock/clock.html +91 -0
  35. data/vendor/examples/crimea/crimea-grouped-bar.html +65 -0
  36. data/vendor/examples/crimea/crimea-line.html +61 -0
  37. data/vendor/examples/crimea/crimea-stacked-area.html +61 -0
  38. data/vendor/examples/crimea/crimea-stacked-bar.html +60 -0
  39. data/vendor/examples/crimea/crimea.html +100 -0
  40. data/vendor/examples/crimea/crimea.js +33 -0
  41. data/vendor/examples/downloadify/LICENSE.txt +22 -0
  42. data/vendor/examples/downloadify/download.png +0 -0
  43. data/vendor/examples/downloadify/downloadify.html +57 -0
  44. data/vendor/examples/downloadify/downloadify.min.js +3 -0
  45. data/vendor/examples/downloadify/downloadify.swf +0 -0
  46. data/vendor/examples/downloadify/swfobject.js +4 -0
  47. data/vendor/examples/ex.css +17 -0
  48. data/vendor/examples/eyes/eyes.html +53 -0
  49. data/vendor/examples/eyes/matrix.html +44 -0
  50. data/vendor/examples/flowers/flowers.html +109 -0
  51. data/vendor/examples/flowers/flowers.js +154 -0
  52. data/vendor/examples/group-stack/group-stack.html +79 -0
  53. data/vendor/examples/group-stack/headcount.js +23 -0
  54. data/vendor/examples/hotel/hotel.html +76 -0
  55. data/vendor/examples/hotel/hotel.js +245 -0
  56. data/vendor/examples/jobs/jobs.html +71 -0
  57. data/vendor/examples/jobs/jobs.js +1024 -0
  58. data/vendor/examples/jquery-1.4.2.min.js +154 -0
  59. data/vendor/examples/nba/nba.html +83 -0
  60. data/vendor/examples/nba/nba.js +53 -0
  61. data/vendor/examples/nba/nba2.html +82 -0
  62. data/vendor/examples/sankey/gdp2009.js +184 -0
  63. data/vendor/examples/sankey/sankey.html +77 -0
  64. data/vendor/examples/slider/cell.html +112 -0
  65. data/vendor/examples/slider/cell.js +31 -0
  66. data/vendor/examples/slider/horizon.html +85 -0
  67. data/vendor/examples/slider/jquery-ui-1.8rc3.custom.min.js +71 -0
  68. data/vendor/examples/slider/slider.html +50 -0
  69. data/vendor/examples/slider/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  70. data/vendor/examples/slider/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  71. data/vendor/examples/slider/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  72. data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  73. data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  74. data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  75. data/vendor/examples/slider/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  76. data/vendor/examples/slider/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  77. data/vendor/examples/slider/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  78. data/vendor/examples/slider/ui-lightness/images/ui-icons_222222_256x240.png +2 -0
  79. data/vendor/examples/slider/ui-lightness/images/ui-icons_228ef1_256x240.png +2 -0
  80. data/vendor/examples/slider/ui-lightness/images/ui-icons_ef8c08_256x240.png +2 -0
  81. data/vendor/examples/slider/ui-lightness/images/ui-icons_ffd27a_256x240.png +2 -0
  82. data/vendor/examples/slider/ui-lightness/images/ui-icons_ffffff_256x240.png +2 -0
  83. data/vendor/examples/slider/ui-lightness/jquery-ui-1.8rc3.custom.css +302 -0
  84. data/vendor/examples/tipsy/jquery.tipsy.js +198 -0
  85. data/vendor/examples/tipsy/tipsy-bar.html +65 -0
  86. data/vendor/examples/tipsy/tipsy-line.html +67 -0
  87. data/vendor/examples/tipsy/tipsy.css +12 -0
  88. data/vendor/examples/tipsy/tipsy.gif +0 -0
  89. data/vendor/examples/tipsy/tipsy.js +66 -0
  90. data/vendor/examples/weather/weather.html +86 -0
  91. data/vendor/examples/weather/weather.js +42 -0
  92. data/vendor/examples/wheat/wheat.html +130 -0
  93. data/vendor/examples/wheat/wheat.js +70 -0
  94. data/vendor/lib/google-compiler/COPYING +202 -0
  95. data/vendor/lib/google-compiler/README +224 -0
  96. data/vendor/lib/google-compiler/compiler-20100201.jar +0 -0
  97. data/vendor/protovis-d3.3.js +15726 -0
  98. data/vendor/protovis-r3.3.js +287 -0
  99. data/vendor/src/behavior/Behavior.js +32 -0
  100. data/vendor/src/behavior/Drag.js +112 -0
  101. data/vendor/src/behavior/Pan.js +110 -0
  102. data/vendor/src/behavior/Point.js +157 -0
  103. data/vendor/src/behavior/Resize.js +104 -0
  104. data/vendor/src/behavior/Select.js +100 -0
  105. data/vendor/src/behavior/Zoom.js +85 -0
  106. data/vendor/src/color/Color.js +598 -0
  107. data/vendor/src/color/Colors.js +135 -0
  108. data/vendor/src/color/Ramp.js +17 -0
  109. data/vendor/src/data/Arrays.js +277 -0
  110. data/vendor/src/data/Dom.js +380 -0
  111. data/vendor/src/data/Flatten.js +146 -0
  112. data/vendor/src/data/Histogram.js +120 -0
  113. data/vendor/src/data/LinearScale.js +54 -0
  114. data/vendor/src/data/LogScale.js +142 -0
  115. data/vendor/src/data/Nest.js +257 -0
  116. data/vendor/src/data/Numbers.js +313 -0
  117. data/vendor/src/data/Objects.js +78 -0
  118. data/vendor/src/data/OrdinalScale.js +267 -0
  119. data/vendor/src/data/QuantileScale.js +180 -0
  120. data/vendor/src/data/QuantitativeScale.js +440 -0
  121. data/vendor/src/data/RootScale.js +55 -0
  122. data/vendor/src/data/Scale.js +86 -0
  123. data/vendor/src/data/Transform.js +109 -0
  124. data/vendor/src/data/Tree.js +124 -0
  125. data/vendor/src/data/Vector.js +118 -0
  126. data/vendor/src/geo/Geo.js +5 -0
  127. data/vendor/src/geo/GeoScale.js +307 -0
  128. data/vendor/src/geo/LatLng.js +23 -0
  129. data/vendor/src/geo/Projection.js +43 -0
  130. data/vendor/src/geo/Projections.js +117 -0
  131. data/vendor/src/lang/Array.js +112 -0
  132. data/vendor/src/lang/init.js +26 -0
  133. data/vendor/src/layout/Arc.js +178 -0
  134. data/vendor/src/layout/Bullet.js +164 -0
  135. data/vendor/src/layout/Cluster.js +205 -0
  136. data/vendor/src/layout/Force.js +309 -0
  137. data/vendor/src/layout/Grid.js +119 -0
  138. data/vendor/src/layout/Hierarchy.js +249 -0
  139. data/vendor/src/layout/Horizon.js +159 -0
  140. data/vendor/src/layout/Indent.js +83 -0
  141. data/vendor/src/layout/Layout.js +56 -0
  142. data/vendor/src/layout/Matrix.js +177 -0
  143. data/vendor/src/layout/Network.js +302 -0
  144. data/vendor/src/layout/Pack.js +323 -0
  145. data/vendor/src/layout/Partition.js +203 -0
  146. data/vendor/src/layout/Rollup.js +203 -0
  147. data/vendor/src/layout/Stack.js +391 -0
  148. data/vendor/src/layout/Tree.js +282 -0
  149. data/vendor/src/layout/Treemap.js +347 -0
  150. data/vendor/src/mark/Anchor.js +81 -0
  151. data/vendor/src/mark/Area.js +268 -0
  152. data/vendor/src/mark/Bar.js +93 -0
  153. data/vendor/src/mark/Dot.js +212 -0
  154. data/vendor/src/mark/Ease.js +150 -0
  155. data/vendor/src/mark/Image.js +154 -0
  156. data/vendor/src/mark/Label.js +155 -0
  157. data/vendor/src/mark/Line.js +195 -0
  158. data/vendor/src/mark/Mark.js +1237 -0
  159. data/vendor/src/mark/Panel.js +273 -0
  160. data/vendor/src/mark/Rule.js +143 -0
  161. data/vendor/src/mark/Transient.js +7 -0
  162. data/vendor/src/mark/Transition.js +195 -0
  163. data/vendor/src/mark/Wedge.js +244 -0
  164. data/vendor/src/physics/BoundConstraint.js +75 -0
  165. data/vendor/src/physics/ChargeForce.js +184 -0
  166. data/vendor/src/physics/CollisionConstraint.js +113 -0
  167. data/vendor/src/physics/Constraint.js +26 -0
  168. data/vendor/src/physics/DragForce.js +49 -0
  169. data/vendor/src/physics/Force.js +25 -0
  170. data/vendor/src/physics/Particle.js +81 -0
  171. data/vendor/src/physics/PositionConstraint.js +72 -0
  172. data/vendor/src/physics/Quadtree.js +195 -0
  173. data/vendor/src/physics/Simulation.js +159 -0
  174. data/vendor/src/physics/SpringForce.js +141 -0
  175. data/vendor/src/pv-internals.js +154 -0
  176. data/vendor/src/pv.js +95 -0
  177. data/vendor/src/scene/SvgArea.js +172 -0
  178. data/vendor/src/scene/SvgBar.js +28 -0
  179. data/vendor/src/scene/SvgCurve.js +354 -0
  180. data/vendor/src/scene/SvgDot.js +81 -0
  181. data/vendor/src/scene/SvgImage.js +45 -0
  182. data/vendor/src/scene/SvgLabel.js +46 -0
  183. data/vendor/src/scene/SvgLine.js +159 -0
  184. data/vendor/src/scene/SvgPanel.js +126 -0
  185. data/vendor/src/scene/SvgRule.js +26 -0
  186. data/vendor/src/scene/SvgScene.js +185 -0
  187. data/vendor/src/scene/SvgWedge.js +66 -0
  188. data/vendor/src/text/DateFormat.js +262 -0
  189. data/vendor/src/text/Format.js +78 -0
  190. data/vendor/src/text/NumberFormat.js +227 -0
  191. data/vendor/src/text/TimeFormat.js +115 -0
  192. data/vendor/test1.html +30 -0
  193. data/vendor/tests/behavior/drag-events.html +47 -0
  194. data/vendor/tests/behavior/drag.html +32 -0
  195. data/vendor/tests/behavior/drag2.html +33 -0
  196. data/vendor/tests/behavior/point-area-stacked.html +73 -0
  197. data/vendor/tests/behavior/point-area-stacked2.html +70 -0
  198. data/vendor/tests/behavior/point-area.html +67 -0
  199. data/vendor/tests/behavior/point-bar.html +62 -0
  200. data/vendor/tests/behavior/point-dot.html +60 -0
  201. data/vendor/tests/behavior/point-line.html +62 -0
  202. data/vendor/tests/behavior/point-lines-grid.html +65 -0
  203. data/vendor/tests/behavior/point-lines.html +61 -0
  204. data/vendor/tests/behavior/point-wedge.html +43 -0
  205. data/vendor/tests/behavior/resize.html +69 -0
  206. data/vendor/tests/behavior/select.html +37 -0
  207. data/vendor/tests/bzr.js +62 -0
  208. data/vendor/tests/center.js +13 -0
  209. data/vendor/tests/data/deviation.html +54 -0
  210. data/vendor/tests/data/histogram-discrete.html +50 -0
  211. data/vendor/tests/data/histogram.html +56 -0
  212. data/vendor/tests/data/log-adjusted.html +48 -0
  213. data/vendor/tests/data/log-ceil.html +48 -0
  214. data/vendor/tests/data/log-floor.html +48 -0
  215. data/vendor/tests/data/log-symmetric.html +48 -0
  216. data/vendor/tests/data/log.html +48 -0
  217. data/vendor/tests/data/max-index.html +36 -0
  218. data/vendor/tests/data/max.html +36 -0
  219. data/vendor/tests/data/min-index.html +36 -0
  220. data/vendor/tests/data/min.html +36 -0
  221. data/vendor/tests/data/ordinal-split-banded.html +45 -0
  222. data/vendor/tests/data/ordinal-split-banded2.html +45 -0
  223. data/vendor/tests/data/ordinal-split-flush.html +51 -0
  224. data/vendor/tests/data/ordinal-split.html +51 -0
  225. data/vendor/tests/data/range.html +105 -0
  226. data/vendor/tests/data/scale-date.html +46 -0
  227. data/vendor/tests/data/scale-date2.html +38 -0
  228. data/vendor/tests/data/scale-date3.html +38 -0
  229. data/vendor/tests/data/scale-date4.html +38 -0
  230. data/vendor/tests/data/scale-degenerate.html +143 -0
  231. data/vendor/tests/data/scale-linear.html +59 -0
  232. data/vendor/tests/data/scale-log.html +60 -0
  233. data/vendor/tests/data/scale-log2.html +60 -0
  234. data/vendor/tests/data/scale-log3.html +60 -0
  235. data/vendor/tests/data/scale-log4.html +60 -0
  236. data/vendor/tests/data/scale-log5.html +60 -0
  237. data/vendor/tests/data/scale-log6.html +60 -0
  238. data/vendor/tests/data/scale-quantile.html +47 -0
  239. data/vendor/tests/data/scale-quantile2.html +50 -0
  240. data/vendor/tests/data/scale-quantile3.html +48 -0
  241. data/vendor/tests/data/scale-root.html +60 -0
  242. data/vendor/tests/data/scale-root2.html +39 -0
  243. data/vendor/tests/data/scale-tick-format.html +54 -0
  244. data/vendor/tests/data/scale-ticks.html +45 -0
  245. data/vendor/tests/data/sum.html +42 -0
  246. data/vendor/tests/data/variance.html +42 -0
  247. data/vendor/tests/diamond.js +40 -0
  248. data/vendor/tests/flare-imports.js +222 -0
  249. data/vendor/tests/flare.js +284 -0
  250. data/vendor/tests/geo/countries-hires.js +257 -0
  251. data/vendor/tests/geo/countries-lores.js +197 -0
  252. data/vendor/tests/geo/population.js +250 -0
  253. data/vendor/tests/geo/scale-aitoff.html +58 -0
  254. data/vendor/tests/geo/scale-gall-peters.html +56 -0
  255. data/vendor/tests/geo/scale-hammer.html +58 -0
  256. data/vendor/tests/geo/scale-identity.html +56 -0
  257. data/vendor/tests/geo/scale-mercator.html +56 -0
  258. data/vendor/tests/geo/scale-sinusoidal.html +57 -0
  259. data/vendor/tests/geo/scale-smart-domain.html +58 -0
  260. data/vendor/tests/geo/scale.html +55 -0
  261. data/vendor/tests/geo/scale2.html +40 -0
  262. data/vendor/tests/geo/us-states.js +61 -0
  263. data/vendor/tests/heatmap.js +63 -0
  264. data/vendor/tests/lang/globals.html +41 -0
  265. data/vendor/tests/lang/init.html +31 -0
  266. data/vendor/tests/layers.js +28 -0
  267. data/vendor/tests/layout/arc-directed.html +33 -0
  268. data/vendor/tests/layout/arc-radial.html +36 -0
  269. data/vendor/tests/layout/arc-undirected.html +32 -0
  270. data/vendor/tests/layout/arc.html +33 -0
  271. data/vendor/tests/layout/arc2.html +32 -0
  272. data/vendor/tests/layout/bullet-multiples.html +60 -0
  273. data/vendor/tests/layout/bullet.html +45 -0
  274. data/vendor/tests/layout/bullets.js +37 -0
  275. data/vendor/tests/layout/cluster-fill-group.html +24 -0
  276. data/vendor/tests/layout/cluster-fill.html +28 -0
  277. data/vendor/tests/layout/cluster-partition-radial-fill.html +43 -0
  278. data/vendor/tests/layout/cluster-radial-fill-radius.html +26 -0
  279. data/vendor/tests/layout/cluster-radial-fill.html +29 -0
  280. data/vendor/tests/layout/cluster-radial-group-fill.html +30 -0
  281. data/vendor/tests/layout/cluster-radial-radius.html +30 -0
  282. data/vendor/tests/layout/cluster-radial.html +28 -0
  283. data/vendor/tests/layout/cluster-radial2.html +33 -0
  284. data/vendor/tests/layout/cluster.html +34 -0
  285. data/vendor/tests/layout/cluster2.html +32 -0
  286. data/vendor/tests/layout/force-toggle.html +46 -0
  287. data/vendor/tests/layout/force.html +45 -0
  288. data/vendor/tests/layout/force2.html +58 -0
  289. data/vendor/tests/layout/force3.html +41 -0
  290. data/vendor/tests/layout/force4.html +45 -0
  291. data/vendor/tests/layout/force5.html +53 -0
  292. data/vendor/tests/layout/grid-cols.html +31 -0
  293. data/vendor/tests/layout/grid-heatmap.html +25 -0
  294. data/vendor/tests/layout/grid-rows.html +31 -0
  295. data/vendor/tests/layout/grid.html +34 -0
  296. data/vendor/tests/layout/horizon-color.html +31 -0
  297. data/vendor/tests/layout/horizon.html +31 -0
  298. data/vendor/tests/layout/indent-toggle.html +62 -0
  299. data/vendor/tests/layout/indent.html +25 -0
  300. data/vendor/tests/layout/indent2.html +33 -0
  301. data/vendor/tests/layout/matrix-sort.html +28 -0
  302. data/vendor/tests/layout/matrix.html +35 -0
  303. data/vendor/tests/layout/network.html +43 -0
  304. data/vendor/tests/layout/pack-bubble.html +45 -0
  305. data/vendor/tests/layout/pack.html +26 -0
  306. data/vendor/tests/layout/pack2.html +32 -0
  307. data/vendor/tests/layout/partition-fill.html +27 -0
  308. data/vendor/tests/layout/partition-fill2.html +22 -0
  309. data/vendor/tests/layout/partition-fill3.html +27 -0
  310. data/vendor/tests/layout/partition-radial-fill-radius.html +25 -0
  311. data/vendor/tests/layout/partition-radial-fill.html +26 -0
  312. data/vendor/tests/layout/partition-radial-fill2.html +23 -0
  313. data/vendor/tests/layout/partition-radial-fill3.html +29 -0
  314. data/vendor/tests/layout/partition-radial-radius.html +29 -0
  315. data/vendor/tests/layout/partition-radial.html +30 -0
  316. data/vendor/tests/layout/partition-radial2.html +33 -0
  317. data/vendor/tests/layout/partition.html +33 -0
  318. data/vendor/tests/layout/partition2.html +32 -0
  319. data/vendor/tests/layout/rollup.html +50 -0
  320. data/vendor/tests/layout/stack-empty.html +27 -0
  321. data/vendor/tests/layout/stack-expand.html +41 -0
  322. data/vendor/tests/layout/stack-reverse.html +42 -0
  323. data/vendor/tests/layout/stack-right.html +42 -0
  324. data/vendor/tests/layout/stack-rule.html +61 -0
  325. data/vendor/tests/layout/stack-visible.html +43 -0
  326. data/vendor/tests/layout/stack.html +53 -0
  327. data/vendor/tests/layout/tree-radial.html +31 -0
  328. data/vendor/tests/layout/tree-radial2.html +34 -0
  329. data/vendor/tests/layout/tree-toggle.html +36 -0
  330. data/vendor/tests/layout/tree.html +31 -0
  331. data/vendor/tests/layout/tree2.html +35 -0
  332. data/vendor/tests/layout/treemap-hierarchy.html +40 -0
  333. data/vendor/tests/layout/treemap-margin.html +26 -0
  334. data/vendor/tests/layout/treemap-round.html +40 -0
  335. data/vendor/tests/layout/treemap-slice.html +34 -0
  336. data/vendor/tests/layout/treemap.html +37 -0
  337. data/vendor/tests/life.js +212 -0
  338. data/vendor/tests/mark/anchor.html +25 -0
  339. data/vendor/tests/mark/area-anchor-chain.html +42 -0
  340. data/vendor/tests/mark/area-anchor-line.html +57 -0
  341. data/vendor/tests/mark/area-anchor-stack.html +35 -0
  342. data/vendor/tests/mark/area-anchor.html +43 -0
  343. data/vendor/tests/mark/area-anchor2.html +33 -0
  344. data/vendor/tests/mark/area-cardinal.html +57 -0
  345. data/vendor/tests/mark/area-monotone.html +57 -0
  346. data/vendor/tests/mark/area-segmented-basis.html +30 -0
  347. data/vendor/tests/mark/area-segmented-cardinal.html +30 -0
  348. data/vendor/tests/mark/area-segmented-monotone.html +30 -0
  349. data/vendor/tests/mark/area-segmented-step.html +44 -0
  350. data/vendor/tests/mark/area-segmented.html +29 -0
  351. data/vendor/tests/mark/area-stacked-cardinal.html +54 -0
  352. data/vendor/tests/mark/area-stacked-monotone.html +54 -0
  353. data/vendor/tests/mark/area-stacked.html +53 -0
  354. data/vendor/tests/mark/area-step.html +43 -0
  355. data/vendor/tests/mark/area-zero.html +32 -0
  356. data/vendor/tests/mark/area.html +57 -0
  357. data/vendor/tests/mark/bar-anchor-stack.html +51 -0
  358. data/vendor/tests/mark/bar-anchor.html +44 -0
  359. data/vendor/tests/mark/bar-column-grouped.html +63 -0
  360. data/vendor/tests/mark/bar-column-stacked.html +56 -0
  361. data/vendor/tests/mark/bar-column.html +54 -0
  362. data/vendor/tests/mark/bar-grouped.html +63 -0
  363. data/vendor/tests/mark/bar-stacked.html +57 -0
  364. data/vendor/tests/mark/bar.html +54 -0
  365. data/vendor/tests/mark/cursor.html +41 -0
  366. data/vendor/tests/mark/def-type.html +23 -0
  367. data/vendor/tests/mark/dot-anchor.html +33 -0
  368. data/vendor/tests/mark/dot-radius.html +22 -0
  369. data/vendor/tests/mark/dot-stroke.html +43 -0
  370. data/vendor/tests/mark/dot.html +52 -0
  371. data/vendor/tests/mark/dot2.html +61 -0
  372. data/vendor/tests/mark/ease.html +90 -0
  373. data/vendor/tests/mark/event-dblclick.html +30 -0
  374. data/vendor/tests/mark/event-prototype.html +45 -0
  375. data/vendor/tests/mark/event-render.html +45 -0
  376. data/vendor/tests/mark/event.html +24 -0
  377. data/vendor/tests/mark/image-color-inherit.html +33 -0
  378. data/vendor/tests/mark/image-color.html +35 -0
  379. data/vendor/tests/mark/image-color2.html +35 -0
  380. data/vendor/tests/mark/image-heatmap.html +29 -0
  381. data/vendor/tests/mark/image.html +32 -0
  382. data/vendor/tests/mark/label-break.html +54 -0
  383. data/vendor/tests/mark/label-decoration.html +22 -0
  384. data/vendor/tests/mark/label-events.html +32 -0
  385. data/vendor/tests/mark/line-anchor.html +42 -0
  386. data/vendor/tests/mark/line-basis.html +54 -0
  387. data/vendor/tests/mark/line-brownian.html +57 -0
  388. data/vendor/tests/mark/line-cardinal.html +77 -0
  389. data/vendor/tests/mark/line-catmull-rom.html +78 -0
  390. data/vendor/tests/mark/line-curve.html +65 -0
  391. data/vendor/tests/mark/line-eccentricity.html +39 -0
  392. data/vendor/tests/mark/line-fill.html +24 -0
  393. data/vendor/tests/mark/line-join.html +51 -0
  394. data/vendor/tests/mark/line-monotone-non-monotone.html +53 -0
  395. data/vendor/tests/mark/line-monotone-two-way.html +61 -0
  396. data/vendor/tests/mark/line-monotone.html +53 -0
  397. data/vendor/tests/mark/line-polar.html +36 -0
  398. data/vendor/tests/mark/line-segmented-basis.html +57 -0
  399. data/vendor/tests/mark/line-segmented-cardinal.html +80 -0
  400. data/vendor/tests/mark/line-segmented-join.html +52 -0
  401. data/vendor/tests/mark/line-segmented-monotone.html +56 -0
  402. data/vendor/tests/mark/line-segmented-polar.html +30 -0
  403. data/vendor/tests/mark/line-segmented-step.html +41 -0
  404. data/vendor/tests/mark/line-segmented-step2.html +32 -0
  405. data/vendor/tests/mark/line-segmented.html +30 -0
  406. data/vendor/tests/mark/line-step.html +39 -0
  407. data/vendor/tests/mark/line-tension.html +59 -0
  408. data/vendor/tests/mark/line.html +51 -0
  409. data/vendor/tests/mark/panel-anchor.html +37 -0
  410. data/vendor/tests/mark/panel-anchor2.html +31 -0
  411. data/vendor/tests/mark/panel-anchor3.html +22 -0
  412. data/vendor/tests/mark/panel-anchor4.html +28 -0
  413. data/vendor/tests/mark/panel-anchor5.html +28 -0
  414. data/vendor/tests/mark/panel-append.html +29 -0
  415. data/vendor/tests/mark/panel-canvas.html +107 -0
  416. data/vendor/tests/mark/panel-fill.html +50 -0
  417. data/vendor/tests/mark/panel-mouse.html +53 -0
  418. data/vendor/tests/mark/panel-transform.html +67 -0
  419. data/vendor/tests/mark/property-cast.html +24 -0
  420. data/vendor/tests/mark/render-partial.html +42 -0
  421. data/vendor/tests/mark/rule-anchor.html +29 -0
  422. data/vendor/tests/mark/title.html +41 -0
  423. data/vendor/tests/mark/transition-anchor.html +47 -0
  424. data/vendor/tests/mark/transition-wedge.html +47 -0
  425. data/vendor/tests/mark/transition.html +106 -0
  426. data/vendor/tests/mark/wedge-donut.html +35 -0
  427. data/vendor/tests/mark/wedge-implied.html +42 -0
  428. data/vendor/tests/mark/wedge-pie.html +37 -0
  429. data/vendor/tests/mark/wedge-ring.html +27 -0
  430. data/vendor/tests/miserables.js +348 -0
  431. data/vendor/tests/physics/dorling.html +70 -0
  432. data/vendor/tests/physics/simulation.html +56 -0
  433. data/vendor/tests/social.js +28 -0
  434. data/vendor/tests/stanford.png +0 -0
  435. data/vendor/tests/style.css +5 -0
  436. data/vendor/tests/testify.css +29 -0
  437. data/vendor/tests/testify.js +16 -0
  438. data/vendor/tests/text/format-number.html +75 -0
  439. data/web/first.svg +1 -0
  440. data/web/index.html +48 -0
  441. metadata +434 -31
  442. data.tar.gz.sig +0 -0
  443. metadata.gz.sig +0 -2
data/examples/first.rb CHANGED
@@ -6,7 +6,7 @@ vis.add(pv.Bar).data([1, 1.2, 1.7, 1.5, 0.7, 0.3]).
6
6
  width(20).
7
7
  height(lambda {|d| d * 80}).
8
8
  bottom(0).
9
- left(lambda {self.index * 25});
9
+ left(lambda {self.index * 25})
10
10
 
11
11
 
12
12
  =begin
@@ -14,4 +14,4 @@ Should generate this
14
14
  <svg height="150" width="150" stroke-width="1.5" stroke="none" fill="none" font-family="sans-serif" font-size="10px"><g><rect fill="rgb(31,119,180)" height="80" width="20" y="70"></rect><rect fill="rgb(31,119,180)" height="96" width="20" y="54" x="25"></rect><rect fill="rgb(31,119,180)" height="136" width="20" y="14" x="50"></rect><rect fill="rgb(31,119,180)" height="120" width="20" y="30" x="75"></rect><rect fill="rgb(31,119,180)" height="56" width="20" y="94" x="100"></rect><rect fill="rgb(31,119,180)" height="24" width="20" y="126" x="125"></rect></g></svg>
15
15
  =end
16
16
  vis.render()
17
- puts vis.canvas.elements[1]
17
+ puts vis.to_svg
data/examples/second.rb CHANGED
@@ -3,12 +3,15 @@ require 'rubyvis'
3
3
 
4
4
  vis = pv.Panel.new().width(150).height(150);
5
5
 
6
- vis.add(pv.Rule).data(pv.range(0, 2, 0.5)).bottom(lambda {|d| d * 80 + 0.5}).add(pv.Label)
6
+ vis.add(pv.Rule).data(pv.range(0, 2, 0.5)).bottom(lambda {|d| d * 80 + 0.5}).add(pv.Label).left(0)
7
7
 
8
8
 
9
- vis.add(pv.Bar).data([1, 1.2, 1.7, 1.5, 0.7]).width(20).height(lambda {|d| d * 80}).bottom(0).left(lambda { self.index * 25 + 25}).anchor("bottom").add(pv.Label)
9
+ vis.add(pv.Bar).data([1, 1.2, 1.7, 1.5, 0.7]).width(20).height(lambda {|d| d * 80}).bottom(0).left(lambda { self.index * 25 + 25}).add(pv.Label)
10
+
11
+ #puts vis.children_inspect
12
+ #exit
10
13
 
11
14
  vis.render();
12
- puts vis.canvas
15
+ puts vis.to_svg
13
16
 
14
17
  # <svg height="150" width="150" stroke-width="1.5" stroke="none" fill="none" font-family="sans-serif" font-size="10px"><g><line stroke-width="1" stroke="rgb(0,0,0)" y2="149.5" x2="150" y1="149.5" x1="0" shape-rendering="crispEdges"></line><line stroke-width="1" stroke="rgb(0,0,0)" y2="109.5" x2="150" y1="109.5" x1="0" shape-rendering="crispEdges"></line><line stroke-width="1" stroke="rgb(0,0,0)" y2="69.5" x2="150" y1="69.5" x1="0" shape-rendering="crispEdges"></line><line stroke-width="1" stroke="rgb(0,0,0)" y2="29.5" x2="150" y1="29.5" x1="0" shape-rendering="crispEdges"></line></g><g><text fill="rgb(0,0,0)" transform="translate(75, 149.5)" y="-3" x="3" pointer-events="none">0</text><text fill="rgb(0,0,0)" transform="translate(75, 109.5)" y="-3" x="3" pointer-events="none">0.5</text><text fill="rgb(0,0,0)" transform="translate(75, 69.5)" y="-3" x="3" pointer-events="none">1</text><text fill="rgb(0,0,0)" transform="translate(75, 29.5)" y="-3" x="3" pointer-events="none">1.5</text></g><g><rect fill="rgb(31,119,180)" height="80" width="20" y="70" x="25"></rect><rect fill="rgb(31,119,180)" height="96" width="20" y="54" x="50"></rect><rect fill="rgb(31,119,180)" height="136" width="20" y="14" x="75"></rect><rect fill="rgb(31,119,180)" height="120" width="20" y="30" x="100"></rect><rect fill="rgb(31,119,180)" height="56" width="20" y="94" x="125"></rect></g><g><text text-anchor="middle" fill="rgb(0,0,0)" transform="translate(35, 150)" y="-3" pointer-events="none">1</text><text text-anchor="middle" fill="rgb(0,0,0)" transform="translate(60, 150)" y="-3" pointer-events="none">1.2</text><text text-anchor="middle" fill="rgb(0,0,0)" transform="translate(85, 150)" y="-3" pointer-events="none">1.7</text><text text-anchor="middle" fill="rgb(0,0,0)" transform="translate(110, 150)" y="-3" pointer-events="none">1.5</text><text text-anchor="middle" fill="rgb(0,0,0)" transform="translate(135, 150)" y="-3" pointer-events="none">0.7</text></g></svg>
data/lib/rubyvis.rb CHANGED
@@ -1,9 +1,12 @@
1
1
  require 'date'
2
2
  require 'ostruct'
3
3
  require 'rexml/document'
4
+ require 'rexml/formatters/default'
5
+
4
6
  require 'pp'
5
7
  require 'rubyvis/internals'
6
8
  require 'rubyvis/sceneelement'
9
+ require 'rubyvis/property'
7
10
 
8
11
  require 'rubyvis/javascript_behaviour'
9
12
  require 'rubyvis/format'
@@ -21,7 +24,7 @@ def pv
21
24
  end
22
25
 
23
26
  module Rubyvis
24
- VERSION = '0.1.0'
27
+ VERSION = '0.1.1'
25
28
  Infinity=1.0 / 0 # You actually can do it! http://snipplr.com/view/2137/uses-for-infinity-in-ruby/
26
29
  # :section: basic methods
27
30
  def self.identity
@@ -36,8 +39,20 @@ module Rubyvis
36
39
  def self.parent
37
40
  lambda {|*args| self.parent.index}
38
41
  end
42
+ def self.clear_document
43
+ @document=REXML::Document.new
44
+ @document.add_element("document")
45
+ end
39
46
  def self.document
40
- @document||=REXML::Document.new
47
+ if @document.nil?
48
+ @document=REXML::Document.new
49
+ @document.add_element("document")
50
+ end
51
+ @document.root
52
+ end
53
+ def self.to_svg
54
+ s=""
55
+ @document.write(s)
56
+ s
41
57
  end
42
-
43
58
  end
data/lib/rubyvis/mark.rb CHANGED
@@ -19,7 +19,7 @@ module Rubyvis
19
19
  if arguments.size>0
20
20
  type=(!_def).to_i<<1 | (v.is_a? Proc).to_i
21
21
  property_value(name,(type & 1 !=0) ? lambda {|*args| v.js_apply(self, args)} : v)._type=type
22
- @_properties_types[name]=type
22
+ #@_properties_types[name]=type
23
23
  return self
24
24
  end
25
25
  i=instance()
@@ -33,10 +33,10 @@ module Rubyvis
33
33
  end
34
34
  end
35
35
  def property_value(name,v)
36
- prop=OpenStruct.new({:name=>name, :id=>Rubyvis.id, :value=>v})
36
+ prop=Property.new({:name=>name, :id=>Rubyvis.id, :value=>v})
37
37
  @_properties.delete_if{|v| v.name==name}
38
38
  @_properties.push(prop)
39
- @_properties_values[name]=v
39
+ #@_properties_values[name]=v
40
40
  return prop
41
41
  end
42
42
  def margin(n)
@@ -67,7 +67,8 @@ module Rubyvis
67
67
  end
68
68
 
69
69
  attr_accessor :parent, :root, :index, :child_index, :scene, :proto, :target, :scale
70
- attr_accessor_dsl :data,:visible, :left, :right, :top, :bottom, :title, :reverse, :antialias, :id
70
+ attr_reader :_properties
71
+ attr_accessor_dsl :data,:visible, :left, :right, :top, :bottom, :cursor, :title, :reverse, :antialias, :events, :id
71
72
 
72
73
  @scene=nil
73
74
  @stack=[]
@@ -75,10 +76,10 @@ module Rubyvis
75
76
  def self.properties
76
77
  @properties
77
78
  end
78
- def self.index
79
+ def Mark.index
79
80
  @index
80
81
  end
81
- def self.index=(v)
82
+ def Mark.index=(v)
82
83
  @index=v
83
84
  end
84
85
 
@@ -101,12 +102,12 @@ module Rubyvis
101
102
  end
102
103
 
103
104
  def initialize(opts=Hash.new)
104
- @_properties_values={}
105
- @_properties_types={}
105
+ #@_properties_values={}
106
+ #@_properties_types={}
106
107
  @_properties=[]
107
- @options=defaults.merge opts
108
+ #@options=opts
108
109
  # @stack=[]
109
- @options.each {|k,v|
110
+ opts.each {|k,v|
110
111
  self.send("#{k}=",v) if self.respond_to? k
111
112
  }
112
113
  @defs={}
@@ -119,35 +120,55 @@ module Rubyvis
119
120
  def type
120
121
  "mark"
121
122
  end
122
- def _properties
123
- out={}
124
- @_properties_values.each {|k,v|
125
- out[k]=OpenStruct.new({:name=>k.to_s,:value=>v, :_type=>@_properties_types[k]})
126
- }
127
- out
128
- end
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
- def defaults
137
- {:data=>lambda {|d| [d]}, :visible=>true, :antialias=>true}
123
+ def self.defaults
124
+ Mark.new({:data=>lambda {|d| [d]}, :visible=>true, :antialias=>true, :events=>'painted'})
138
125
  end
139
126
  def extend(proto)
140
127
  @proto=proto
141
- @target=target
128
+ @target=proto.target
142
129
  self
143
130
  end
144
131
 
132
+ def instances(source)
133
+
134
+ mark = self
135
+ index = []
136
+ scene=nil
137
+ while (!(scene = mark.scene)) do
138
+ source = source.parent;
139
+ index.push(OpenStruct.new({:index=>source.index, :child_index=>mark.child_index}))
140
+ mark = mark.parent
141
+ end
142
+ while (index.size>0) do
143
+ i = index.pop()
144
+ scene = scene[i.index].children[i.child_index]
145
+ end
146
+ #
147
+ # When the anchor target is also an ancestor, as in the case of adding
148
+ # to a panel anchor, only generate one instance per panel. Also, set
149
+ # the margins to zero, since they are offset by the enclosing panel.
150
+ # /
151
+ if (self.respond_to? :index and self.index)
152
+
153
+ s = scene[self.index].dup
154
+ s.right = s.top = s.left = s.bottom = 0;
155
+ return [s];
156
+ end
157
+ return scene;
158
+ end
159
+
160
+
161
+
162
+
163
+
164
+
165
+
145
166
  def add(type)
146
167
  parent.add(type).extend(self)
147
168
  end
148
- def anchor(name=nil)
149
- name = "center" if (!name) # default anchor name
150
- return Rubyvis::Anchor.new(self).name(name).data(lambda {
169
+ def anchor(name="center")
170
+
171
+ anchor=Rubyvis::Anchor.new(self).name(name).data(lambda {
151
172
  self.scene.target.map {|s| s.data} }).visible(lambda {
152
173
  self.scene.target[self.index].visible
153
174
  }).id(lambda {self.scene.target[self.index].id}).left(lambda {
@@ -195,9 +216,9 @@ module Rubyvis
195
216
  'bottom'
196
217
  end
197
218
  })
198
-
199
219
 
200
220
 
221
+ return anchor
201
222
  end
202
223
 
203
224
 
@@ -210,11 +231,11 @@ module Rubyvis
210
231
  t=s.top
211
232
  b=s.bottom
212
233
  prop=self.properties
213
- w = (prop[:width] and !prop[:width].nil?) ? s.width : 0
214
- h = (prop[:height] and !prop[:height].nil?) ? s.height : 0
215
- #puts "#{l},#{r},#{t},#{b}"
216
- #puts "#{w},#{h}"
217
-
234
+ #p self
235
+ w = (prop[:width]) ? s.width : 0
236
+ h = (prop[:height]) ? s.height : 0
237
+ #puts "l:#{l},r:#{r},t:#{t},b:#{b}"
238
+ #puts "w:#{w},h:#{h}"
218
239
  width=self.parent ? self.parent.width(): (w+(l.nil? ? 0 : l)+(r.nil? ? 0 :r))
219
240
  if w.nil?
220
241
  r||=0
@@ -264,23 +285,32 @@ module Rubyvis
264
285
  s.fill_style=Rubyvis::Color.transparent if prop[:fill_style] and !s.fill_style
265
286
  s.stroke_style=Rubyvis::Color.transparent if prop[:stroke_style] and !s.stroke_style
266
287
  end
267
-
268
-
269
-
270
-
271
- def pr_svg(name)
272
- res=self.send(name)
273
- if res.nil?
274
- "none"
275
- else
276
- res.to_s
288
+ def render
289
+ parent=self.parent
290
+ @stack=Mark.stack
291
+ if parent and !self.root.scene
292
+ root.render()
293
+ return
294
+ end
295
+ @indexes=[]
296
+ mark=self
297
+ until mark.parent.nil?
298
+ @indexes.unshift(mark.child_index)
277
299
  end
300
+ bind
301
+ while(parent and !parent.respond_to? :index) do
302
+ parent=parent.parent
303
+ end
304
+
305
+ self.context( parent ? parent.scene : nil, parent ? parent.index : -1, lambda {render_render(self.root, 0,1)})
306
+
278
307
  end
308
+
279
309
  def render_render(mark,depth,scale)
280
310
  mark.scale=scale
281
311
  if (depth < @indexes.size)
282
312
  @stack.unshift(nil)
283
- if (mark.respond_to? :index)
313
+ if (mark.respond_to? :index and mark.index)
284
314
  render_instance(mark, depth, scale);
285
315
  else
286
316
  mark.scene.size.times {|i|
@@ -323,16 +353,17 @@ module Rubyvis
323
353
  private :render_render, :render_instance
324
354
  def bind_bind(mark)
325
355
  begin
326
- @_properties.each {|v|
327
- k=v.name.to_s
356
+ mark._properties.each {|v|
357
+ #p v.name
358
+ k=v.name
328
359
  if !@seen.has_key?(k)
329
360
  @seen[k]=v
330
361
  case k
331
- when "data"
362
+ when :data
332
363
  @_data=v
333
- when "visible"
364
+ when :visible
334
365
  @_required.push(v)
335
- when "id"
366
+ when :id
336
367
  @_required.push(v)
337
368
  else
338
369
  @types[v._type].push(v)
@@ -341,46 +372,31 @@ module Rubyvis
341
372
  }
342
373
  end while(mark = mark.proto)
343
374
  end
375
+
344
376
  attr_accessor :binds
377
+
345
378
  def bind()
346
379
  @seen={}
347
380
  @types={1=>[],2=>[],3=>[]}
348
381
  @_data=nil
349
382
  @_required=[]
350
383
  bind_bind(self)
384
+ bind_bind((self.class).defaults)
351
385
  @types[1].reverse!
352
386
  @types[3].reverse!
353
387
  mark=self
354
388
  begin
355
- properties.each {|name,v|
356
- if !@seen[name.to_s]
357
- @seen[name.to_s]=OpenStruct.new(:name=>name.to_s, :_type=>2, :value=>nil)
358
- @types[2].push(@seen[name.to_s])
359
- end
360
- }
389
+ properties.each {|name,v|
390
+ if !@seen[name]
391
+ @seen[name]=Property.new(:name=>name, :_type=>2, :value=>nil)
392
+ @types[2].push(@seen[name])
393
+ end
394
+ }
361
395
  end while(mark=mark.proto)
362
396
  @binds=OpenStruct.new({:properties=>@seen, :data=>@_data, :required=>@_required, :optional=>@types[1]+@types[2]+@types[3]
363
397
  })
364
398
  end
365
- def render
366
- parent=self.parent
367
- @stack=Mark.stack
368
- if parent and !self.root.scene
369
- root.render()
370
- return
371
- end
372
- @indexes=[]
373
- mark=self
374
- until mark.parent.nil?
375
- indexes.unshift(mark.child_index)
376
- end
377
- self.bind()
378
- while(parent and !parent.respond_to? :index) do
379
- parent=parent.parent
380
- end
381
- self.context( parent ? parent.scene : nil, parent ? parent.index : -1, lambda {render_render(self.root, 0,1)})
382
-
383
- end
399
+
384
400
 
385
401
  def context_apply(scene,index)
386
402
  Mark.scene=scene
@@ -455,7 +471,7 @@ module Rubyvis
455
471
  def build
456
472
  scene=self.scene
457
473
  stack=Mark.stack
458
- #p self.type
474
+
459
475
  if(!scene)
460
476
  self.scene=SceneElement.new
461
477
  scene=self.scene
@@ -467,10 +483,12 @@ module Rubyvis
467
483
  scene.parent_index=self.parent.index
468
484
  end
469
485
  end
486
+ # Resolve anchor target
487
+ #puts "Resolve target"
470
488
  if(self.target)
471
489
  scene.target=self.target.instances(scene)
472
490
  end
473
-
491
+ #pp self.binds
474
492
  data=self.binds.data
475
493
  #puts "stack:#{stack}"
476
494
  #puts "data_value:#{data.value}"
@@ -480,7 +498,7 @@ module Rubyvis
480
498
 
481
499
  stack.unshift(nil)
482
500
  scene.size=data.size
483
- data.each_with_index {|d,i|
501
+ data.each_with_index {|d, i|
484
502
  Mark.index=self.index=i
485
503
  s=scene[i]
486
504
  if !s
@@ -508,7 +526,6 @@ module Rubyvis
508
526
  v=prop.value
509
527
 
510
528
  # p "#{prop.name}=#{v}"
511
-
512
529
  if prop._type==3
513
530
  v=v.js_apply(self, Mark.stack)
514
531
  end
@@ -519,10 +536,11 @@ module Rubyvis
519
536
  end
520
537
  end
521
538
 
539
+ require 'rubyvis/mark/anchor'
522
540
  require 'rubyvis/mark/bar'
523
541
  require 'rubyvis/mark/panel'
524
- require 'rubyvis/mark/rule'
525
542
  require 'rubyvis/mark/area'
526
- require 'rubyvis/mark/anchor'
543
+ require 'rubyvis/mark/line'
544
+ require 'rubyvis/mark/rule'
527
545
  require 'rubyvis/mark/label'
528
546
 
@@ -4,18 +4,16 @@ module Rubyvis
4
4
  end
5
5
 
6
6
  class Anchor < Mark
7
- @properties=Mark.properties
8
- attr_accessor_dsl :name, :text_baseline, :text_align
9
- def type
10
- 'area'
11
- end
7
+ @properties=Mark.properties.dup
8
+ attr_accessor_dsl :name, :text_align, :text_baseline
9
+
12
10
  def initialize(target)
13
11
  super()
14
12
  self.target=target
15
13
  self.parent=target.parent
16
14
  end
17
- def _extend(proto)
18
- self.proto=proto
15
+ def extend(proto)
16
+ @proto=proto
19
17
  return self
20
18
  end
21
19
  end
@@ -2,33 +2,35 @@ module Rubyvis
2
2
  def self.Area
3
3
  Rubyvis::Area
4
4
  end
5
-
5
+ module AreaPrototype
6
+ def area_anchor(name)
7
+ scene=nil
8
+ self.anchor(name).interpolate(lambda {
9
+ self.scene.target[self.index].interpolate
10
+ }).eccentricity(lambda {
11
+ self.scene.target[self.index].eccentricity
12
+ }).tension(lambda {
13
+ self.scene.target[self.index].tension
14
+ })
15
+ end
16
+ end
6
17
  class Area < Mark
7
- @properties=Mark.properties
18
+ include AreaPrototype
19
+ @properties=Mark.properties.dup
8
20
  attr_accessor_dsl :width, :height, :line_width, :stroke_style, :fill_style, :segmented, :interpolate, :tension
9
21
  def type
10
22
  'area'
11
23
  end
12
- def defaults
13
- sd=super
14
- return sd.merge({:line_width=>1.5, :fill_style=>pv.Colors.category20.by(pv.parent), :interpolate=>'linear', :tension=>0.7})
24
+ def self.defaults
25
+ Area.new.extend(Mark.defaults).line_width(1.5).fill_style(pv.Colors.category20.by(pv.parent)).interpolate('linear').tension(0.7)
26
+ end
27
+ def anchor(name)
28
+ area_anchor(name)
15
29
  end
16
30
  def build_implied(s)
17
31
  s.heigth=0 if s.height.nil?
18
32
  s.width=0 if s.width.nil?
19
33
  super(s)
20
34
  end
21
- def self.anchor(name)
22
- Mark.anchor(name).interpolate(lambda {
23
- self.scene.target[self.index].interpolate
24
- }).eccentricity(lambda {
25
- self.scene.target[self.index].eccentricity
26
- }).tension(lambda {
27
- self.scene.target[self.index].tension
28
- })
29
- end
30
- def anchor
31
- (self.class).anchor(name)
32
- end
33
35
  end
34
36
  end