rubyvis 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +8 -1
- data/Manifest.txt +100 -416
- data/README.txt +5 -2
- data/examples/barley/barley.rb +79 -0
- data/examples/crimea/crimea.rb +37 -0
- data/examples/crimea/crimea_line.rb +47 -0
- data/examples/second.rb +2 -2
- data/examples/third.rb +16 -0
- data/lib/rubyvis.rb +2 -1
- data/lib/rubyvis/color/color.rb +170 -169
- data/lib/rubyvis/color/colors.rb +4 -4
- data/lib/rubyvis/color/ramp.rb +1 -0
- data/lib/rubyvis/format.rb +2 -2
- data/lib/rubyvis/format/date.rb +9 -2
- data/lib/rubyvis/format/number.rb +3 -3
- data/lib/rubyvis/internals.rb +13 -13
- data/lib/rubyvis/javascript_behaviour.rb +3 -3
- data/lib/rubyvis/label.rb +1 -0
- data/lib/rubyvis/mark.rb +178 -169
- data/lib/rubyvis/mark/anchor.rb +4 -4
- data/lib/rubyvis/mark/area.rb +93 -5
- data/lib/rubyvis/mark/bar.rb +1 -1
- data/lib/rubyvis/mark/label.rb +2 -2
- data/lib/rubyvis/mark/line.rb +11 -5
- data/lib/rubyvis/mark/panel.rb +13 -11
- data/lib/rubyvis/mark/rule.rb +2 -2
- data/lib/rubyvis/property.rb +3 -2
- data/lib/rubyvis/scale.rb +4 -4
- data/lib/rubyvis/scale/linear.rb +2 -2
- data/lib/rubyvis/scale/ordinal.rb +41 -41
- data/lib/rubyvis/scale/quantitative.rb +212 -200
- data/lib/rubyvis/scene/svg_bar.rb +21 -21
- data/lib/rubyvis/scene/svg_label.rb +34 -34
- data/lib/rubyvis/scene/svg_line.rb +185 -0
- data/lib/rubyvis/scene/svg_panel.rb +36 -30
- data/lib/rubyvis/scene/svg_rule.rb +18 -19
- data/lib/rubyvis/scene/svg_scene.rb +33 -30
- data/lib/rubyvis/sceneelement.rb +5 -1
- data/lib/rubyvis/transform.rb +2 -2
- data/spec/mark_spec.rb +6 -6
- data/spec/scale_linear_datetime_spec.rb +52 -0
- data/spec/scale_linear_spec.rb +0 -10
- data/vendor/{protovis-r3.3.js → protovis/protovis-r3.3.js} +0 -0
- data/vendor/{src → protovis/src}/behavior/Behavior.js +0 -0
- data/vendor/{src → protovis/src}/behavior/Drag.js +0 -0
- data/vendor/{src → protovis/src}/behavior/Pan.js +0 -0
- data/vendor/{src → protovis/src}/behavior/Point.js +0 -0
- data/vendor/{src → protovis/src}/behavior/Resize.js +0 -0
- data/vendor/{src → protovis/src}/behavior/Select.js +0 -0
- data/vendor/{src → protovis/src}/behavior/Zoom.js +0 -0
- data/vendor/{src → protovis/src}/color/Color.js +0 -0
- data/vendor/{src → protovis/src}/color/Colors.js +0 -0
- data/vendor/{src → protovis/src}/color/Ramp.js +0 -0
- data/vendor/{src → protovis/src}/data/Arrays.js +0 -0
- data/vendor/{src → protovis/src}/data/Dom.js +0 -0
- data/vendor/{src → protovis/src}/data/Flatten.js +0 -0
- data/vendor/{src → protovis/src}/data/Histogram.js +0 -0
- data/vendor/{src → protovis/src}/data/LinearScale.js +0 -0
- data/vendor/{src → protovis/src}/data/LogScale.js +0 -0
- data/vendor/{src → protovis/src}/data/Nest.js +0 -0
- data/vendor/{src → protovis/src}/data/Numbers.js +0 -0
- data/vendor/{src → protovis/src}/data/Objects.js +0 -0
- data/vendor/{src → protovis/src}/data/OrdinalScale.js +0 -0
- data/vendor/{src → protovis/src}/data/QuantileScale.js +0 -0
- data/vendor/{src → protovis/src}/data/QuantitativeScale.js +0 -0
- data/vendor/{src → protovis/src}/data/RootScale.js +0 -0
- data/vendor/{src → protovis/src}/data/Scale.js +0 -0
- data/vendor/{src → protovis/src}/data/Transform.js +0 -0
- data/vendor/{src → protovis/src}/data/Tree.js +0 -0
- data/vendor/{src → protovis/src}/data/Vector.js +0 -0
- data/vendor/{src → protovis/src}/geo/Geo.js +0 -0
- data/vendor/{src → protovis/src}/geo/GeoScale.js +0 -0
- data/vendor/{src → protovis/src}/geo/LatLng.js +0 -0
- data/vendor/{src → protovis/src}/geo/Projection.js +0 -0
- data/vendor/{src → protovis/src}/geo/Projections.js +0 -0
- data/vendor/{src → protovis/src}/lang/Array.js +0 -0
- data/vendor/{src → protovis/src}/lang/init.js +0 -0
- data/vendor/{src → protovis/src}/layout/Arc.js +0 -0
- data/vendor/{src → protovis/src}/layout/Bullet.js +0 -0
- data/vendor/{src → protovis/src}/layout/Cluster.js +0 -0
- data/vendor/{src → protovis/src}/layout/Force.js +0 -0
- data/vendor/{src → protovis/src}/layout/Grid.js +0 -0
- data/vendor/{src → protovis/src}/layout/Hierarchy.js +0 -0
- data/vendor/{src → protovis/src}/layout/Horizon.js +0 -0
- data/vendor/{src → protovis/src}/layout/Indent.js +0 -0
- data/vendor/{src → protovis/src}/layout/Layout.js +0 -0
- data/vendor/{src → protovis/src}/layout/Matrix.js +0 -0
- data/vendor/{src → protovis/src}/layout/Network.js +0 -0
- data/vendor/{src → protovis/src}/layout/Pack.js +0 -0
- data/vendor/{src → protovis/src}/layout/Partition.js +0 -0
- data/vendor/{src → protovis/src}/layout/Rollup.js +0 -0
- data/vendor/{src → protovis/src}/layout/Stack.js +0 -0
- data/vendor/{src → protovis/src}/layout/Tree.js +0 -0
- data/vendor/{src → protovis/src}/layout/Treemap.js +0 -0
- data/vendor/{src → protovis/src}/mark/Anchor.js +0 -0
- data/vendor/{src → protovis/src}/mark/Area.js +0 -0
- data/vendor/{src → protovis/src}/mark/Bar.js +0 -0
- data/vendor/{src → protovis/src}/mark/Dot.js +0 -0
- data/vendor/{src → protovis/src}/mark/Ease.js +0 -0
- data/vendor/{src → protovis/src}/mark/Image.js +0 -0
- data/vendor/{src → protovis/src}/mark/Label.js +0 -0
- data/vendor/{src → protovis/src}/mark/Line.js +0 -0
- data/vendor/{src → protovis/src}/mark/Mark.js +0 -0
- data/vendor/{src → protovis/src}/mark/Panel.js +0 -0
- data/vendor/{src → protovis/src}/mark/Rule.js +0 -0
- data/vendor/{src → protovis/src}/mark/Transient.js +0 -0
- data/vendor/{src → protovis/src}/mark/Transition.js +0 -0
- data/vendor/{src → protovis/src}/mark/Wedge.js +0 -0
- data/vendor/{src → protovis/src}/physics/BoundConstraint.js +0 -0
- data/vendor/{src → protovis/src}/physics/ChargeForce.js +0 -0
- data/vendor/{src → protovis/src}/physics/CollisionConstraint.js +0 -0
- data/vendor/{src → protovis/src}/physics/Constraint.js +0 -0
- data/vendor/{src → protovis/src}/physics/DragForce.js +0 -0
- data/vendor/{src → protovis/src}/physics/Force.js +0 -0
- data/vendor/{src → protovis/src}/physics/Particle.js +0 -0
- data/vendor/{src → protovis/src}/physics/PositionConstraint.js +0 -0
- data/vendor/{src → protovis/src}/physics/Quadtree.js +0 -0
- data/vendor/{src → protovis/src}/physics/Simulation.js +0 -0
- data/vendor/{src → protovis/src}/physics/SpringForce.js +0 -0
- data/vendor/{src → protovis/src}/pv-internals.js +0 -0
- data/vendor/{src → protovis/src}/pv.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgArea.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgBar.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgCurve.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgDot.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgImage.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgLabel.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgLine.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgPanel.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgRule.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgScene.js +0 -0
- data/vendor/{src → protovis/src}/scene/SvgWedge.js +0 -0
- data/vendor/{src → protovis/src}/text/DateFormat.js +0 -0
- data/vendor/{src → protovis/src}/text/Format.js +0 -0
- data/vendor/{src → protovis/src}/text/NumberFormat.js +0 -0
- data/vendor/{src → protovis/src}/text/TimeFormat.js +0 -0
- metadata +132 -426
- metadata.gz.sig +2 -0
- data/examples/crimea-line.rb +0 -64
- data/vendor/FUTURE +0 -62
- data/vendor/Makefile +0 -138
- data/vendor/TODO +0 -22
- data/vendor/examples/antibiotics/antibiotics-scatter.html +0 -113
- data/vendor/examples/antibiotics/antibiotics.html +0 -140
- data/vendor/examples/antibiotics/antibiotics.js +0 -20
- data/vendor/examples/barley/barley.html +0 -102
- data/vendor/examples/barley/barley.js +0 -122
- data/vendor/examples/cars/cars.html +0 -90
- data/vendor/examples/cars/cars.js +0 -408
- data/vendor/examples/clock/clock.html +0 -91
- data/vendor/examples/crimea/crimea-grouped-bar.html +0 -65
- data/vendor/examples/crimea/crimea-line.html +0 -61
- data/vendor/examples/crimea/crimea-stacked-area.html +0 -61
- data/vendor/examples/crimea/crimea-stacked-bar.html +0 -60
- data/vendor/examples/crimea/crimea.html +0 -100
- data/vendor/examples/crimea/crimea.js +0 -33
- data/vendor/examples/downloadify/LICENSE.txt +0 -22
- data/vendor/examples/downloadify/download.png +0 -0
- data/vendor/examples/downloadify/downloadify.html +0 -57
- data/vendor/examples/downloadify/downloadify.min.js +0 -3
- data/vendor/examples/downloadify/downloadify.swf +0 -0
- data/vendor/examples/downloadify/swfobject.js +0 -4
- data/vendor/examples/ex.css +0 -17
- data/vendor/examples/eyes/eyes.html +0 -53
- data/vendor/examples/eyes/matrix.html +0 -44
- data/vendor/examples/flowers/flowers.html +0 -109
- data/vendor/examples/flowers/flowers.js +0 -154
- data/vendor/examples/group-stack/group-stack.html +0 -79
- data/vendor/examples/group-stack/headcount.js +0 -23
- data/vendor/examples/hotel/hotel.html +0 -76
- data/vendor/examples/hotel/hotel.js +0 -245
- data/vendor/examples/jobs/jobs.html +0 -71
- data/vendor/examples/jobs/jobs.js +0 -1024
- data/vendor/examples/jquery-1.4.2.min.js +0 -154
- data/vendor/examples/nba/nba.html +0 -83
- data/vendor/examples/nba/nba.js +0 -53
- data/vendor/examples/nba/nba2.html +0 -82
- data/vendor/examples/sankey/gdp2009.js +0 -184
- data/vendor/examples/sankey/sankey.html +0 -77
- data/vendor/examples/slider/cell.html +0 -112
- data/vendor/examples/slider/cell.js +0 -31
- data/vendor/examples/slider/horizon.html +0 -85
- data/vendor/examples/slider/jquery-ui-1.8rc3.custom.min.js +0 -71
- data/vendor/examples/slider/slider.html +0 -50
- data/vendor/examples/slider/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/vendor/examples/slider/ui-lightness/images/ui-icons_222222_256x240.png +0 -2
- data/vendor/examples/slider/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -2
- data/vendor/examples/slider/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -2
- data/vendor/examples/slider/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -2
- data/vendor/examples/slider/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -2
- data/vendor/examples/slider/ui-lightness/jquery-ui-1.8rc3.custom.css +0 -302
- data/vendor/examples/tipsy/jquery.tipsy.js +0 -198
- data/vendor/examples/tipsy/tipsy-bar.html +0 -65
- data/vendor/examples/tipsy/tipsy-line.html +0 -67
- data/vendor/examples/tipsy/tipsy.css +0 -12
- data/vendor/examples/tipsy/tipsy.gif +0 -0
- data/vendor/examples/tipsy/tipsy.js +0 -66
- data/vendor/examples/weather/weather.html +0 -86
- data/vendor/examples/weather/weather.js +0 -42
- data/vendor/examples/wheat/wheat.html +0 -130
- data/vendor/examples/wheat/wheat.js +0 -70
- data/vendor/lib/google-compiler/COPYING +0 -202
- data/vendor/lib/google-compiler/README +0 -224
- data/vendor/lib/google-compiler/compiler-20100201.jar +0 -0
- data/vendor/protovis-d3.3.js +0 -15726
- data/vendor/test1.html +0 -30
- data/vendor/tests/behavior/drag-events.html +0 -47
- data/vendor/tests/behavior/drag.html +0 -32
- data/vendor/tests/behavior/drag2.html +0 -33
- data/vendor/tests/behavior/point-area-stacked.html +0 -73
- data/vendor/tests/behavior/point-area-stacked2.html +0 -70
- data/vendor/tests/behavior/point-area.html +0 -67
- data/vendor/tests/behavior/point-bar.html +0 -62
- data/vendor/tests/behavior/point-dot.html +0 -60
- data/vendor/tests/behavior/point-line.html +0 -62
- data/vendor/tests/behavior/point-lines-grid.html +0 -65
- data/vendor/tests/behavior/point-lines.html +0 -61
- data/vendor/tests/behavior/point-wedge.html +0 -43
- data/vendor/tests/behavior/resize.html +0 -69
- data/vendor/tests/behavior/select.html +0 -37
- data/vendor/tests/bzr.js +0 -62
- data/vendor/tests/center.js +0 -13
- data/vendor/tests/data/deviation.html +0 -54
- data/vendor/tests/data/histogram-discrete.html +0 -50
- data/vendor/tests/data/histogram.html +0 -56
- data/vendor/tests/data/log-adjusted.html +0 -48
- data/vendor/tests/data/log-ceil.html +0 -48
- data/vendor/tests/data/log-floor.html +0 -48
- data/vendor/tests/data/log-symmetric.html +0 -48
- data/vendor/tests/data/log.html +0 -48
- data/vendor/tests/data/max-index.html +0 -36
- data/vendor/tests/data/max.html +0 -36
- data/vendor/tests/data/min-index.html +0 -36
- data/vendor/tests/data/min.html +0 -36
- data/vendor/tests/data/ordinal-split-banded.html +0 -45
- data/vendor/tests/data/ordinal-split-banded2.html +0 -45
- data/vendor/tests/data/ordinal-split-flush.html +0 -51
- data/vendor/tests/data/ordinal-split.html +0 -51
- data/vendor/tests/data/range.html +0 -105
- data/vendor/tests/data/scale-date.html +0 -46
- data/vendor/tests/data/scale-date2.html +0 -38
- data/vendor/tests/data/scale-date3.html +0 -38
- data/vendor/tests/data/scale-date4.html +0 -38
- data/vendor/tests/data/scale-degenerate.html +0 -143
- data/vendor/tests/data/scale-linear.html +0 -59
- data/vendor/tests/data/scale-log.html +0 -60
- data/vendor/tests/data/scale-log2.html +0 -60
- data/vendor/tests/data/scale-log3.html +0 -60
- data/vendor/tests/data/scale-log4.html +0 -60
- data/vendor/tests/data/scale-log5.html +0 -60
- data/vendor/tests/data/scale-log6.html +0 -60
- data/vendor/tests/data/scale-quantile.html +0 -47
- data/vendor/tests/data/scale-quantile2.html +0 -50
- data/vendor/tests/data/scale-quantile3.html +0 -48
- data/vendor/tests/data/scale-root.html +0 -60
- data/vendor/tests/data/scale-root2.html +0 -39
- data/vendor/tests/data/scale-tick-format.html +0 -54
- data/vendor/tests/data/scale-ticks.html +0 -45
- data/vendor/tests/data/sum.html +0 -42
- data/vendor/tests/data/variance.html +0 -42
- data/vendor/tests/diamond.js +0 -40
- data/vendor/tests/flare-imports.js +0 -222
- data/vendor/tests/flare.js +0 -284
- data/vendor/tests/geo/countries-hires.js +0 -257
- data/vendor/tests/geo/countries-lores.js +0 -197
- data/vendor/tests/geo/population.js +0 -250
- data/vendor/tests/geo/scale-aitoff.html +0 -58
- data/vendor/tests/geo/scale-gall-peters.html +0 -56
- data/vendor/tests/geo/scale-hammer.html +0 -58
- data/vendor/tests/geo/scale-identity.html +0 -56
- data/vendor/tests/geo/scale-mercator.html +0 -56
- data/vendor/tests/geo/scale-sinusoidal.html +0 -57
- data/vendor/tests/geo/scale-smart-domain.html +0 -58
- data/vendor/tests/geo/scale.html +0 -55
- data/vendor/tests/geo/scale2.html +0 -40
- data/vendor/tests/geo/us-states.js +0 -61
- data/vendor/tests/heatmap.js +0 -63
- data/vendor/tests/lang/globals.html +0 -41
- data/vendor/tests/lang/init.html +0 -31
- data/vendor/tests/layers.js +0 -28
- data/vendor/tests/layout/arc-directed.html +0 -33
- data/vendor/tests/layout/arc-radial.html +0 -36
- data/vendor/tests/layout/arc-undirected.html +0 -32
- data/vendor/tests/layout/arc.html +0 -33
- data/vendor/tests/layout/arc2.html +0 -32
- data/vendor/tests/layout/bullet-multiples.html +0 -60
- data/vendor/tests/layout/bullet.html +0 -45
- data/vendor/tests/layout/bullets.js +0 -37
- data/vendor/tests/layout/cluster-fill-group.html +0 -24
- data/vendor/tests/layout/cluster-fill.html +0 -28
- data/vendor/tests/layout/cluster-partition-radial-fill.html +0 -43
- data/vendor/tests/layout/cluster-radial-fill-radius.html +0 -26
- data/vendor/tests/layout/cluster-radial-fill.html +0 -29
- data/vendor/tests/layout/cluster-radial-group-fill.html +0 -30
- data/vendor/tests/layout/cluster-radial-radius.html +0 -30
- data/vendor/tests/layout/cluster-radial.html +0 -28
- data/vendor/tests/layout/cluster-radial2.html +0 -33
- data/vendor/tests/layout/cluster.html +0 -34
- data/vendor/tests/layout/cluster2.html +0 -32
- data/vendor/tests/layout/force-toggle.html +0 -46
- data/vendor/tests/layout/force.html +0 -45
- data/vendor/tests/layout/force2.html +0 -58
- data/vendor/tests/layout/force3.html +0 -41
- data/vendor/tests/layout/force4.html +0 -45
- data/vendor/tests/layout/force5.html +0 -53
- data/vendor/tests/layout/grid-cols.html +0 -31
- data/vendor/tests/layout/grid-heatmap.html +0 -25
- data/vendor/tests/layout/grid-rows.html +0 -31
- data/vendor/tests/layout/grid.html +0 -34
- data/vendor/tests/layout/horizon-color.html +0 -31
- data/vendor/tests/layout/horizon.html +0 -31
- data/vendor/tests/layout/indent-toggle.html +0 -62
- data/vendor/tests/layout/indent.html +0 -25
- data/vendor/tests/layout/indent2.html +0 -33
- data/vendor/tests/layout/matrix-sort.html +0 -28
- data/vendor/tests/layout/matrix.html +0 -35
- data/vendor/tests/layout/network.html +0 -43
- data/vendor/tests/layout/pack-bubble.html +0 -45
- data/vendor/tests/layout/pack.html +0 -26
- data/vendor/tests/layout/pack2.html +0 -32
- data/vendor/tests/layout/partition-fill.html +0 -27
- data/vendor/tests/layout/partition-fill2.html +0 -22
- data/vendor/tests/layout/partition-fill3.html +0 -27
- data/vendor/tests/layout/partition-radial-fill-radius.html +0 -25
- data/vendor/tests/layout/partition-radial-fill.html +0 -26
- data/vendor/tests/layout/partition-radial-fill2.html +0 -23
- data/vendor/tests/layout/partition-radial-fill3.html +0 -29
- data/vendor/tests/layout/partition-radial-radius.html +0 -29
- data/vendor/tests/layout/partition-radial.html +0 -30
- data/vendor/tests/layout/partition-radial2.html +0 -33
- data/vendor/tests/layout/partition.html +0 -33
- data/vendor/tests/layout/partition2.html +0 -32
- data/vendor/tests/layout/rollup.html +0 -50
- data/vendor/tests/layout/stack-empty.html +0 -27
- data/vendor/tests/layout/stack-expand.html +0 -41
- data/vendor/tests/layout/stack-reverse.html +0 -42
- data/vendor/tests/layout/stack-right.html +0 -42
- data/vendor/tests/layout/stack-rule.html +0 -61
- data/vendor/tests/layout/stack-visible.html +0 -43
- data/vendor/tests/layout/stack.html +0 -53
- data/vendor/tests/layout/tree-radial.html +0 -31
- data/vendor/tests/layout/tree-radial2.html +0 -34
- data/vendor/tests/layout/tree-toggle.html +0 -36
- data/vendor/tests/layout/tree.html +0 -31
- data/vendor/tests/layout/tree2.html +0 -35
- data/vendor/tests/layout/treemap-hierarchy.html +0 -40
- data/vendor/tests/layout/treemap-margin.html +0 -26
- data/vendor/tests/layout/treemap-round.html +0 -40
- data/vendor/tests/layout/treemap-slice.html +0 -34
- data/vendor/tests/layout/treemap.html +0 -37
- data/vendor/tests/life.js +0 -212
- data/vendor/tests/mark/anchor.html +0 -25
- data/vendor/tests/mark/area-anchor-chain.html +0 -42
- data/vendor/tests/mark/area-anchor-line.html +0 -57
- data/vendor/tests/mark/area-anchor-stack.html +0 -35
- data/vendor/tests/mark/area-anchor.html +0 -43
- data/vendor/tests/mark/area-anchor2.html +0 -33
- data/vendor/tests/mark/area-cardinal.html +0 -57
- data/vendor/tests/mark/area-monotone.html +0 -57
- data/vendor/tests/mark/area-segmented-basis.html +0 -30
- data/vendor/tests/mark/area-segmented-cardinal.html +0 -30
- data/vendor/tests/mark/area-segmented-monotone.html +0 -30
- data/vendor/tests/mark/area-segmented-step.html +0 -44
- data/vendor/tests/mark/area-segmented.html +0 -29
- data/vendor/tests/mark/area-stacked-cardinal.html +0 -54
- data/vendor/tests/mark/area-stacked-monotone.html +0 -54
- data/vendor/tests/mark/area-stacked.html +0 -53
- data/vendor/tests/mark/area-step.html +0 -43
- data/vendor/tests/mark/area-zero.html +0 -32
- data/vendor/tests/mark/area.html +0 -57
- data/vendor/tests/mark/bar-anchor-stack.html +0 -51
- data/vendor/tests/mark/bar-anchor.html +0 -44
- data/vendor/tests/mark/bar-column-grouped.html +0 -63
- data/vendor/tests/mark/bar-column-stacked.html +0 -56
- data/vendor/tests/mark/bar-column.html +0 -54
- data/vendor/tests/mark/bar-grouped.html +0 -63
- data/vendor/tests/mark/bar-stacked.html +0 -57
- data/vendor/tests/mark/bar.html +0 -54
- data/vendor/tests/mark/cursor.html +0 -41
- data/vendor/tests/mark/def-type.html +0 -23
- data/vendor/tests/mark/dot-anchor.html +0 -33
- data/vendor/tests/mark/dot-radius.html +0 -22
- data/vendor/tests/mark/dot-stroke.html +0 -43
- data/vendor/tests/mark/dot.html +0 -52
- data/vendor/tests/mark/dot2.html +0 -61
- data/vendor/tests/mark/ease.html +0 -90
- data/vendor/tests/mark/event-dblclick.html +0 -30
- data/vendor/tests/mark/event-prototype.html +0 -45
- data/vendor/tests/mark/event-render.html +0 -45
- data/vendor/tests/mark/event.html +0 -24
- data/vendor/tests/mark/image-color-inherit.html +0 -33
- data/vendor/tests/mark/image-color.html +0 -35
- data/vendor/tests/mark/image-color2.html +0 -35
- data/vendor/tests/mark/image-heatmap.html +0 -29
- data/vendor/tests/mark/image.html +0 -32
- data/vendor/tests/mark/label-break.html +0 -54
- data/vendor/tests/mark/label-decoration.html +0 -22
- data/vendor/tests/mark/label-events.html +0 -32
- data/vendor/tests/mark/line-anchor.html +0 -42
- data/vendor/tests/mark/line-basis.html +0 -54
- data/vendor/tests/mark/line-brownian.html +0 -57
- data/vendor/tests/mark/line-cardinal.html +0 -77
- data/vendor/tests/mark/line-catmull-rom.html +0 -78
- data/vendor/tests/mark/line-curve.html +0 -65
- data/vendor/tests/mark/line-eccentricity.html +0 -39
- data/vendor/tests/mark/line-fill.html +0 -24
- data/vendor/tests/mark/line-join.html +0 -51
- data/vendor/tests/mark/line-monotone-non-monotone.html +0 -53
- data/vendor/tests/mark/line-monotone-two-way.html +0 -61
- data/vendor/tests/mark/line-monotone.html +0 -53
- data/vendor/tests/mark/line-polar.html +0 -36
- data/vendor/tests/mark/line-segmented-basis.html +0 -57
- data/vendor/tests/mark/line-segmented-cardinal.html +0 -80
- data/vendor/tests/mark/line-segmented-join.html +0 -52
- data/vendor/tests/mark/line-segmented-monotone.html +0 -56
- data/vendor/tests/mark/line-segmented-polar.html +0 -30
- data/vendor/tests/mark/line-segmented-step.html +0 -41
- data/vendor/tests/mark/line-segmented-step2.html +0 -32
- data/vendor/tests/mark/line-segmented.html +0 -30
- data/vendor/tests/mark/line-step.html +0 -39
- data/vendor/tests/mark/line-tension.html +0 -59
- data/vendor/tests/mark/line.html +0 -51
- data/vendor/tests/mark/panel-anchor.html +0 -37
- data/vendor/tests/mark/panel-anchor2.html +0 -31
- data/vendor/tests/mark/panel-anchor3.html +0 -22
- data/vendor/tests/mark/panel-anchor4.html +0 -28
- data/vendor/tests/mark/panel-anchor5.html +0 -28
- data/vendor/tests/mark/panel-append.html +0 -29
- data/vendor/tests/mark/panel-canvas.html +0 -107
- data/vendor/tests/mark/panel-fill.html +0 -50
- data/vendor/tests/mark/panel-mouse.html +0 -53
- data/vendor/tests/mark/panel-transform.html +0 -67
- data/vendor/tests/mark/property-cast.html +0 -24
- data/vendor/tests/mark/render-partial.html +0 -42
- data/vendor/tests/mark/rule-anchor.html +0 -29
- data/vendor/tests/mark/title.html +0 -41
- data/vendor/tests/mark/transition-anchor.html +0 -47
- data/vendor/tests/mark/transition-wedge.html +0 -47
- data/vendor/tests/mark/transition.html +0 -106
- data/vendor/tests/mark/wedge-donut.html +0 -35
- data/vendor/tests/mark/wedge-implied.html +0 -42
- data/vendor/tests/mark/wedge-pie.html +0 -37
- data/vendor/tests/mark/wedge-ring.html +0 -27
- data/vendor/tests/miserables.js +0 -348
- data/vendor/tests/physics/dorling.html +0 -70
- data/vendor/tests/physics/simulation.html +0 -56
- data/vendor/tests/social.js +0 -28
- data/vendor/tests/stanford.png +0 -0
- data/vendor/tests/style.css +0 -5
- data/vendor/tests/testify.css +0 -29
- data/vendor/tests/testify.js +0 -16
- data/vendor/tests/text/format-number.html +0 -75
@@ -3,27 +3,27 @@ module Rubyvis
|
|
3
3
|
def self.bar(scenes)
|
4
4
|
e=scenes._g.elements[1]
|
5
5
|
scenes.each_with_index do |s,i|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
6
|
+
next unless s.visible
|
7
|
+
fill=s.fill_style
|
8
|
+
stroke=s.stroke_style
|
9
|
+
next if(fill.opacity==0.0 and stroke.opacity==0.0)
|
10
|
+
e=SvgScene.expect(e,'rect', {
|
11
|
+
"shape-rendering"=> s.antialias ? nil : "crispEdges",
|
12
|
+
"pointer-events"=> s.events,
|
13
|
+
"cursor"=> s.cursor,
|
14
|
+
"x"=> s.left,
|
15
|
+
"y"=> s.top,
|
16
|
+
"width"=> [1E-10, s.width].max,
|
17
|
+
"height"=> [1E-10, s.height].max,
|
18
|
+
"fill"=> fill.color,
|
19
|
+
"fill-opacity"=> (fill.opacity==0) ? nil : fill.opacity,
|
20
|
+
"stroke"=> stroke.color,
|
21
|
+
"stroke-opacity"=> (stroke.opacity==0) ? nil : stroke.opacity,
|
22
|
+
"stroke-width"=> stroke.opacity ? s.line_width / SvgScene.scale.to_f : nil
|
23
|
+
})
|
24
|
+
|
25
|
+
e=SvgScene.append(e,scenes,i)
|
26
|
+
|
27
27
|
end
|
28
28
|
e
|
29
29
|
end
|
@@ -3,47 +3,47 @@ module Rubyvis
|
|
3
3
|
def self.label(scenes)
|
4
4
|
e=scenes._g.elements[1]
|
5
5
|
scenes.each_with_index do |s,i|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
next unless s.visible
|
7
|
+
fill=s.text_style
|
8
|
+
next if(fill.opacity==0 or s.text.nil?)
|
9
|
+
x=0
|
10
|
+
y=0
|
11
|
+
dy=0
|
12
|
+
anchor='start'
|
13
|
+
case s.text_baseline
|
14
14
|
when 'middle'
|
15
15
|
dy=".35em"
|
16
16
|
when "top"
|
17
17
|
dy = ".71em"; y = s.text_margin
|
18
18
|
when "bottom"
|
19
19
|
y = "-" + s.text_margin.to_s
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
20
|
+
end
|
21
|
+
case s.text_align
|
22
|
+
when 'rigth'
|
23
|
+
anchor = "end"; x = "-" + s.text_margin.to_s
|
24
|
+
when "center"
|
25
|
+
anchor = "middle"
|
26
|
+
|
27
|
+
when "left"
|
28
|
+
x = s.text_margin
|
29
|
+
end
|
30
|
+
e=SvgScene.expect(e,'text', {
|
31
|
+
"pointer-events"=> s.events,
|
32
|
+
"cursor"=> s.cursor,
|
33
|
+
"x"=> x,
|
34
|
+
"y"=> y,
|
35
|
+
"dy"=> dy,
|
36
|
+
"transform"=> "translate(" + s.left.to_s + "," + s.top.to_s + ")" + (s.text_angle!=0 ? " rotate(" + (180 * s.text_angle / Math::PI).to_s + ")" : "") + (self.scale != 1 ? " scale(" + 1 / self.scale + ")" : ""),
|
37
|
+
"fill"=> fill.color,
|
38
|
+
"fill-opacity"=> fill.opacity || nil,
|
39
|
+
"text-anchor"=> anchor
|
40
|
+
}, {
|
41
41
|
"font"=> s.font, "text-shadow"=> s.text_shadow, "text-decoration"=> s.text_decoration })
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
e.text=s.text
|
43
|
+
|
44
|
+
|
45
|
+
e=SvgScene.append(e,scenes,i)
|
46
|
+
|
47
47
|
end
|
48
48
|
e
|
49
49
|
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
module Rubyvis
|
2
|
+
module SvgScene
|
3
|
+
def self.line(scenes)
|
4
|
+
|
5
|
+
e=scenes._g.elements[1]
|
6
|
+
return e if (scenes.size < 2)
|
7
|
+
s = scenes[0]
|
8
|
+
|
9
|
+
# segmented */
|
10
|
+
return self.line_segment(scenes) if (s.segmented)
|
11
|
+
|
12
|
+
#/* visible */
|
13
|
+
return e if (!s.visible)
|
14
|
+
fill = s.fill_style
|
15
|
+
stroke = s.stroke_style
|
16
|
+
|
17
|
+
return e if (fill.opacity==0.0 and stroke.opacity==0.0)
|
18
|
+
#/* points */
|
19
|
+
|
20
|
+
d = "M" + s.left.to_s + "," + s.top.to_s
|
21
|
+
|
22
|
+
if (scenes.size > 2 and (s.interpolate == "basis" or s.interpolate == "cardinal" or s.interpolate == "monotone"))
|
23
|
+
case (s.interpolate)
|
24
|
+
when "basis"
|
25
|
+
d = d+ curve_basis(scenes)
|
26
|
+
when "cardinal"
|
27
|
+
d = d+curve_cardinal(scenes, s.tension)
|
28
|
+
when "monotone"
|
29
|
+
d = d+curve_monotone(scenes)
|
30
|
+
end
|
31
|
+
|
32
|
+
else
|
33
|
+
(1...scenes.size).each {|i|
|
34
|
+
d+= path_segment(scenes[i-1],scenes[i])
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
e = SvgScene.expect(e, "path", {
|
39
|
+
"shape-rendering"=> s.antialias ? nil : "crispEdges",
|
40
|
+
"pointer-events"=> s.events,
|
41
|
+
"cursor"=> s.cursor,
|
42
|
+
"d"=> d,
|
43
|
+
"fill"=> fill.color,
|
44
|
+
"fill-opacity"=> (fill.opacity==0.0) ? nil : fill.opacity,
|
45
|
+
"stroke"=> stroke.color,
|
46
|
+
"stroke-opacity"=> (stroke.opacity==0.0) ? nil : stroke.opacity,
|
47
|
+
"stroke-width"=> (stroke.opacity>0) ? s.line_width / self.scale : nil,
|
48
|
+
"stroke-linejoin"=> s.line_join
|
49
|
+
});
|
50
|
+
return SvgScene.append(e, scenes, 0);
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.line_segment(scenes)
|
54
|
+
|
55
|
+
e=scenes._g.elements[1]
|
56
|
+
|
57
|
+
s = scenes[0];
|
58
|
+
paths=nil
|
59
|
+
case s.interpolate
|
60
|
+
when "basis"
|
61
|
+
paths = curve_basis_segments(scenes)
|
62
|
+
when "cardinal"
|
63
|
+
paths=curve_cardinal_segments(scenes, s.tension)
|
64
|
+
when "monotone"
|
65
|
+
paths = curve_monotone_segments(scenes)
|
66
|
+
end
|
67
|
+
|
68
|
+
(scenes.length-1).times {|i|
|
69
|
+
|
70
|
+
s1 = scenes[i]
|
71
|
+
s2 = scenes[i + 1];
|
72
|
+
|
73
|
+
#/* visible */
|
74
|
+
next if (!s1.visible and !s2.visible)
|
75
|
+
|
76
|
+
stroke = s1.stroke_style
|
77
|
+
fill = pv.Color.transparent
|
78
|
+
|
79
|
+
next if stroke.opacity==0.0
|
80
|
+
|
81
|
+
#/* interpolate */
|
82
|
+
d=nil
|
83
|
+
if ((s1.interpolate == "linear") and (s1.lineJoin == "miter"))
|
84
|
+
fill = stroke;
|
85
|
+
stroke = pv.Color.transparent;
|
86
|
+
d = path_join(scenes[i - 1], s1, s2, scenes[i + 2]);
|
87
|
+
elsif(paths)
|
88
|
+
d = paths[i];
|
89
|
+
else
|
90
|
+
d = "M" + s1.left + "," + s1.top + path_segment(s1, s2);
|
91
|
+
end
|
92
|
+
|
93
|
+
e = SvgScene.expect(e, "path", {
|
94
|
+
"shape-rendering"=> s1.antialias ? nil : "crispEdges",
|
95
|
+
"pointer-events"=> s1.events,
|
96
|
+
"cursor"=> s1.cursor,
|
97
|
+
"d"=> d,
|
98
|
+
"fill"=> fill.color,
|
99
|
+
"fill-opacity"=> (fill.opacity==0.0) ? nil : fill.opacity,
|
100
|
+
"stroke"=> stroke.color,
|
101
|
+
"stroke-opacity"=> (stroke.opacity==0.0) ? nil : stroke.opacity,
|
102
|
+
"stroke-width"=> stroke.opacity>0 ? s1.line_width / self.scale : nil,
|
103
|
+
"stroke-linejoin"=> s1.line_join
|
104
|
+
});
|
105
|
+
e = SvgScene.append(e, scenes, i);
|
106
|
+
}
|
107
|
+
return e
|
108
|
+
end
|
109
|
+
|
110
|
+
#/** @private Returns the path segment for the specified points. */
|
111
|
+
|
112
|
+
def self.path_segment(s1, s2)
|
113
|
+
l = 1; # sweep-flag
|
114
|
+
case (s1.interpolate)
|
115
|
+
when "polar-reverse"
|
116
|
+
l = 0;
|
117
|
+
when "polar"
|
118
|
+
dx = s2.left - s1.left,
|
119
|
+
dy = s2.top - s1.top
|
120
|
+
e = 1 - s1.eccentricity
|
121
|
+
r = Math.sqrt(dx * dx + dy * dy) / (2 * e)
|
122
|
+
if !((e<=0) and (e>1))
|
123
|
+
return "A" + r + "," + r + " 0 0," + l + " " + s2.left + "," + s2.top
|
124
|
+
end
|
125
|
+
when "step-before"
|
126
|
+
return "V" + s2.top + "H" + s2.left
|
127
|
+
when "step-after"
|
128
|
+
return "H" + s2.left + "V" + s2.top
|
129
|
+
end
|
130
|
+
return "L" + s2.left.to_s + "," + s2.top.to_s
|
131
|
+
end
|
132
|
+
|
133
|
+
#/** @private Line-line intersection, per Akenine-Moller 16.16.1. */
|
134
|
+
def self.line_intersect(o1, d1, o2, d2)
|
135
|
+
return o1.plus(d1.times(o2.minus(o1).dot(d2.perp()) / d1.dot(d2.perp())));
|
136
|
+
end
|
137
|
+
|
138
|
+
#/** @private Returns the miter join path for the specified points. */
|
139
|
+
def self.path_join(s0, s1, s2, s3)
|
140
|
+
#
|
141
|
+
# P1-P2 is the current line segment. V is a vector that is perpendicular to
|
142
|
+
# the line segment, and has length lineWidth / 2. ABCD forms the initial
|
143
|
+
# bounding box of the line segment (i.e., the line segment if we were to do
|
144
|
+
# no joins).
|
145
|
+
#
|
146
|
+
|
147
|
+
p1 = pv.vector(s1.left, s1.top)
|
148
|
+
|
149
|
+
p2 = pv.vector(s2.left, s2.top)
|
150
|
+
|
151
|
+
p = p2.minus(p1)
|
152
|
+
|
153
|
+
v = p.perp().norm()
|
154
|
+
|
155
|
+
w = v.times(s1.lineWidth / (2 * this.scale))
|
156
|
+
|
157
|
+
a = p1.plus(w)
|
158
|
+
b = p2.plus(w)
|
159
|
+
c = p2.minus(w)
|
160
|
+
d = p1.minus(w)
|
161
|
+
|
162
|
+
#/*
|
163
|
+
# * Start join. P0 is the previous line segment's start point. We define the
|
164
|
+
# * cutting plane as the average of the vector perpendicular to P0-P1, and
|
165
|
+
# * the vector perpendicular to P1-P2. This insures that the cross-section of
|
166
|
+
# * the line on the cutting plane is equal if the line-width is unchanged.
|
167
|
+
# * Note that we don't implement miter limits, so these can get wild.
|
168
|
+
# */
|
169
|
+
if (s0 and s0.visible)
|
170
|
+
v1 = p1.minus(s0.left, s0.top).perp().norm().plus(v);
|
171
|
+
d = line_intersect(p1, v1, d, p);
|
172
|
+
a = line_intersect(p1, v1, a, p);
|
173
|
+
end
|
174
|
+
|
175
|
+
#/* Similarly, for end join. */
|
176
|
+
if (s3 && s3.visible)
|
177
|
+
v2 = pv.vector(s3.left, s3.top).minus(p2).perp().norm().plus(v);
|
178
|
+
c = line_intersect(p2, v2, c, p);
|
179
|
+
b = line_intersect(p2, v2, b, p);
|
180
|
+
end
|
181
|
+
|
182
|
+
return "M" + a.x + "," + a.y+ "L" + b.x + "," + b.y+ " " + c.x + "," + c.y+ " " + d.x + "," + d.y
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
module Rubyvis
|
2
2
|
module SvgScene
|
3
3
|
def self.panel(scenes)
|
4
|
+
puts " -> panel: #{scenes.inspect}" if $DEBUG
|
4
5
|
g=scenes._g
|
5
|
-
e=(
|
6
|
+
e=(g.nil?) ? nil : g.elements[1]
|
6
7
|
if g
|
7
|
-
e=g.elements[
|
8
|
+
e=g.elements[1]
|
8
9
|
end
|
9
10
|
scenes.each_with_index do |s,i|
|
10
11
|
next unless s.visible
|
11
|
-
|
12
|
+
|
12
13
|
if(!scenes.parent)
|
13
14
|
if g and g.parent!=s.canvas
|
14
15
|
g=s.canvas.elements[1]
|
@@ -31,7 +32,7 @@ module Rubyvis
|
|
31
32
|
if s.overflow=='hidden'
|
32
33
|
id=Rubyvis.id.to_s(36)
|
33
34
|
c=self.expect(e,'g',{'clip-path'=>'url(#'+id+')'});
|
34
|
-
g.add_element(c) if(!c.parent)
|
35
|
+
g.add_element(c) if(!c.parent)
|
35
36
|
scenes._g=g=c
|
36
37
|
e=c.elements[1]
|
37
38
|
e=self.expect(e,'clipPath',{'id'=>id})
|
@@ -42,20 +43,21 @@ module Rubyvis
|
|
42
43
|
r.attributes['height']=s.height
|
43
44
|
g.add_element(e) if !e.parent
|
44
45
|
e=e.next_sibling_node
|
45
|
-
|
46
|
+
|
46
47
|
end
|
47
48
|
e=self.fill(e,scenes, i)
|
48
49
|
k=self.scale
|
49
50
|
t=s.transform
|
50
|
-
|
51
|
+
|
51
52
|
x=s.left+t.x
|
52
53
|
y=s.top+t.y
|
53
|
-
|
54
|
-
|
54
|
+
|
55
|
+
|
55
56
|
SvgScene.scale=SvgScene.scale*t.k
|
56
|
-
|
57
|
+
|
58
|
+
s.children.each_with_index {|child, i2|
|
57
59
|
child._g=e=SvgScene.expect(e, "g", {
|
58
|
-
|
60
|
+
"transform"=> "translate(" + x.to_s + "," + y.to_s + ")" + (t.k != 1 ? " scale(" + t.k.to_s + ")" : "")
|
59
61
|
})
|
60
62
|
SvgScene.update_all(child)
|
61
63
|
g.add_element(e) if(!e.parent)
|
@@ -63,46 +65,50 @@ module Rubyvis
|
|
63
65
|
}
|
64
66
|
SvgScene.scale=k
|
65
67
|
e=SvgScene.stroke(e,scenes,i)
|
66
|
-
|
67
|
-
|
68
|
+
if (s.overflow=='hidden')
|
69
|
+
scenes._g=g=c.parent
|
70
|
+
e=c.next_sibling_node
|
71
|
+
end
|
68
72
|
end
|
69
|
-
|
73
|
+
return e
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
|
70
78
|
|
71
|
-
|
72
|
-
|
73
79
|
def self.fill(e,scenes,i)
|
74
80
|
s=scenes[i]
|
75
81
|
fill=s.fill_style
|
76
82
|
if(fill.opacity>0 or s.events=='all')
|
77
83
|
e=SvgScene.expect(e,'rect', {
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
})
|
84
|
+
"shape-rendering"=> s.antialias ? nil : "crispEdges",
|
85
|
+
"pointer-events"=> s.events,
|
86
|
+
"cursor"=> s.cursor,
|
87
|
+
"x"=> s.left,
|
88
|
+
"y"=> s.top,
|
89
|
+
"width"=> s.width,
|
90
|
+
"height"=> s.height,
|
91
|
+
"fill"=> fill.color,
|
92
|
+
"fill-opacity"=> fill.opacity,
|
93
|
+
"stroke"=> nil
|
94
|
+
})
|
89
95
|
e=SvgScene.append(e,scenes, i)
|
90
96
|
end
|
91
97
|
e
|
92
98
|
end
|
93
|
-
|
94
|
-
|
99
|
+
|
100
|
+
|
95
101
|
def self.stroke(e, scenes, i)
|
96
102
|
s = scenes[i]
|
97
103
|
stroke = s.stroke_style
|
98
|
-
if (stroke.opacity>0 or s.events == "all")
|
104
|
+
if (stroke.opacity>0 or s.events == "all")
|
99
105
|
e = self.expect(e, "rect", {
|
100
106
|
"shape-rendering"=> s.antialias ? nil : "crispEdges",
|
101
107
|
"pointer-events"=> s.events == "all" ? "stroke" : s.events,
|
102
108
|
"cursor"=> s.cursor,
|
103
109
|
"x"=> s.left,
|
104
110
|
"y"=> s.top,
|
105
|
-
"width"=> [1E-10, s.width].max,
|
111
|
+
"width"=> [1E-10, s.width].max,
|
106
112
|
"height"=>[1E-10, s.height].max,
|
107
113
|
"fill"=>nil,
|
108
114
|
"stroke"=> stroke.color,
|
@@ -3,25 +3,24 @@ module Rubyvis
|
|
3
3
|
def self.rule(scenes)
|
4
4
|
e=scenes._g.elements[1]
|
5
5
|
scenes.each_with_index do |s,i|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
6
|
+
next unless s.visible
|
7
|
+
stroke=s.stroke_style
|
8
|
+
next if(!stroke.opacity)
|
9
|
+
e=SvgScene.expect(e,'line', {
|
10
|
+
"shape-rendering"=> s.antialias ? nil : "crispEdges",
|
11
|
+
"pointer-events"=> s.events,
|
12
|
+
"cursor"=> s.cursor,
|
13
|
+
"x1"=> s.left,
|
14
|
+
"y1"=> s.top,
|
15
|
+
'x2'=> s.left+s.width,
|
16
|
+
'y2'=>s.top+s.height,
|
17
|
+
"stroke"=> stroke.color,
|
18
|
+
"stroke-opacity"=> stroke.opacity,
|
19
|
+
"stroke-width"=> s.line_width/self.scale.to_f
|
20
|
+
})
|
21
|
+
|
22
|
+
e=SvgScene.append(e,scenes,i)
|
23
|
+
|
25
24
|
end
|
26
25
|
e
|
27
26
|
end
|