Class: Scruffy::Layers::Area
Overview
Scruffy::Layers::Area
Author |
Brasten Sager |
Date |
August 6th, 2006 |
Standard area graph.
Instance Attribute Summary
Attributes inherited from Base
#color, #complexity, #height, #max_value, #min_value, #opacity, #options, #points, #preferred_color, #relevant_data, #title, #width
Instance Method Summary (collapse)
-
- (Object) draw(svg, coords, options = {})
Render area graph.
Methods inherited from Base
#bottom_value, #initialize, #legend_data, #relevant_data?, #render, #sum_values, #top_value
Constructor Details
This class inherits a constructor from Scruffy::Layers::Base
Instance Method Details
- (Object) draw(svg, coords, options = {})
Render area graph.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/scruffy/layers/area.rb', line 11 def draw(svg, coords, ={}) # svg.polygon wants a long string of coords. points_value = "0,#{height} #{stringify_coords(coords).join(' ')} #{width},#{height}" # Experimental, for later user. # This was supposed to add some fun filters, 3d effects and whatnot. # Neither ImageMagick nor Mozilla SVG render this well (at all). Maybe a future thing. # # svg.defs { # svg.filter(:id => 'MyFilter', :filterUnits => 'userSpaceOnUse', :x => 0, :y => 0, :width => 200, :height => '120') { # svg.feGaussianBlur(:in => 'SourceAlpha', :stdDeviation => 4, :result => 'blur') # svg.feOffset(:in => 'blur', :dx => 4, :dy => 4, :result => 'offsetBlur') # svg.feSpecularLighting( :in => 'blur', :surfaceScale => 5, :specularConstant => '.75', # :specularExponent => 20, 'lighting-color' => '#bbbbbb', # :result => 'specOut') { # svg.fePointLight(:x => '-5000', :y => '-10000', :z => '20000') # } # # svg.feComposite(:in => 'specOut', :in2 => 'SourceAlpha', :operator => 'in', :result => 'specOut') # svg.feComposite(:in => 'sourceGraphic', :in2 => 'specOut', :operator => 'arithmetic', # :k1 => 0, :k2 => 1, :k3 => 1, :k4 => 0, :result => 'litPaint') # # svg.feMerge { # svg.feMergeNode(:in => 'offsetBlur') # svg.feMergeNode(:in => 'litPaint') # } # } # } svg.g(:transform => "translate(0, -#{relative(2)})") { svg.polygon(:points => points_value, :style => "fill: black; stroke: black; fill-opacity: 0.06; stroke-opacity: 0.06;") } svg.polygon(:points => points_value, :fill => color.to_s, :stroke => color.to_s, 'style' => "opacity: #{opacity}") end |