lib/rubyvis/scene/svg_line.rb in rubyvis-0.1.7 vs lib/rubyvis/scene/svg_line.rb in rubyvis-0.2.0
- old
+ new
@@ -15,18 +15,18 @@
return e if (fill.opacity==0.0 and stroke.opacity==0.0)
#/* points */
d = "M" + s.left.to_s + "," + s.top.to_s
- if (scenes.size > 2 and (s.interpolate == "basis" or s.interpolate == "cardinal" or s.interpolate == "monotone"))
+ if (scenes.size > 2 and (['basis', 'cardinal', 'monotone'].include? s.interpolate))
case (s.interpolate)
- when "basis"
- d = d+ curve_basis(scenes)
- when "cardinal"
- d = d+curve_cardinal(scenes, s.tension)
- when "monotone"
- d = d+curve_monotone(scenes)
+ when "basis"
+ d = d+ curve_basis(scenes)
+ when "cardinal"
+ d = d+curve_cardinal(scenes, s.tension)
+ when "monotone"
+ d = d+curve_monotone(scenes)
end
else
(1...scenes.size).each {|i|
d+= path_segment(scenes[i-1],scenes[i])
@@ -66,26 +66,26 @@
(scenes.length-1).times {|i|
s1 = scenes[i]
s2 = scenes[i + 1];
- #/* visible */
+ # visible
next if (!s1.visible and !s2.visible)
stroke = s1.stroke_style
fill = Rubyvis.Color.transparent
next if stroke.opacity==0.0
- #/* interpolate */
+ # interpolate
d=nil
if ((s1.interpolate == "linear") and (s1.lineJoin == "miter"))
fill = stroke;
stroke = Rubyvis.Color.transparent;
d = path_join(scenes[i - 1], s1, s2, scenes[i + 2]);
elsif(paths)
- d = paths[i];
+ d = paths[i]
else
d = "M" + s1.left + "," + s1.top + path_segment(s1, s2);
end
e = SvgScene.expect(e, "path", {
@@ -107,25 +107,27 @@
#/** @private Returns the path segment for the specified points. */
def self.path_segment(s1, s2)
l = 1; # sweep-flag
- case (s1.interpolate)
- when "polar-reverse"
- l = 0;
- when "polar"
- dx = s2.left - s1.left,
+ l = 0 if s1.interpolate=='polar-reverse'
+
+ if s1.interpolate=='polar' or s1.interpolate=='polar-reverse'
+ dx = s2.left - s1.left
dy = s2.top - s1.top
e = 1 - s1.eccentricity
r = Math.sqrt(dx * dx + dy * dy) / (2 * e)
- if !((e<=0) and (e>1))
+ if !((e<=0) or (e>1))
return "A#{r},#{r} 0 0,#{l} #{s2.left},#{s2.top}"
end
- when "step-before"
+ end
+
+ if s1.interpolate=="step-before"
return "V#{s2.top}H#{s2.left}"
- when "step-after"
+ elsif s1.interpolate=="step-after"
return "H#{s2.left}V#{s2.top}"
end
+
return "L#{s2.left},#{s2.top}"
end
#/** @private Line-line intersection, per Akenine-Moller 16.16.1. */
def self.line_intersect(o1, d1, o2, d2)