Brasten Sager
August 14th, 2006
Provides all the base functionality needed to render a graph, but does not provide a default layout.
For a basic layout, see Scruffy::Renderers::Standard.
# File lib/scruffy/renderers/base.rb, line 17 def initialize(options = {}) self.components = [] self.options = options define_layout end
# File lib/scruffy/renderers/base.rb, line 49 def before_render if self.options set_values(self.options[:values]) if (self.options[:values] && self.options[:values] != :hide) hide_grid if (self.options[:grid] == :hide) hide_values if (self.options[:values] == :hide) hide_labels if (self.options[:labels] == :hide) end end
# File lib/scruffy/renderers/base.rb, line 58 def method_missing(sym, *args) self.options = {} if self.options.nil? if args.size > 0 self.options[sym] = args[0] else return self.options[sym] end end
Renders the graph and all components.
# File lib/scruffy/renderers/base.rb, line 24 def render(options = {}) options[:graph_id] ||= 'scruffy_graph' options[:complexity] ||= (global_complexity || :normal) # Allow subclasses to muck with components prior to renders. rendertime_renderer = self.clone rendertime_renderer.instance_eval { before_render if respond_to?(:before_render) } svg = Builder::XmlMarkup.new(:indent => 2) unless options[:no_doctype_header] svg.instruct! svg.declare! :DOCTYPE, :svg, :PUBLIC, "-//W3C//DTD SVG 1.0//EN", "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" end svg.svg(:xmlns => "http://www.w3.org/2000/svg", 'xmlns:xlink' => "http://www.w3.org/1999/xlink", :width => options[:size].first, :height => options[:size].last) { svg.g(:id => options[:graph_id]) { rendertime_renderer.components.each do |component| component.render(svg, bounds_for( options[:size], component.position, component.size ), options) end } } svg.target! end
# File lib/scruffy/renderers/base.rb, line 69 def hide_grid grids.each { |grid| grid.visible = false } end
# File lib/scruffy/renderers/base.rb, line 82 def hide_labels labels.each { |label| label.visible = false } end
# File lib/scruffy/renderers/base.rb, line 78 def hide_values values.each { |value| value.visible = false } end
# File lib/scruffy/renderers/base.rb, line 73 def set_values(val) values.each { |value| value.markers = val } grids.each { |grid| grid.markers = val } end