lib/whirled_peas/graphics/renderer.rb in whirled_peas-0.5.0 vs lib/whirled_peas/graphics/renderer.rb in whirled_peas-0.6.0
- old
+ new
@@ -1,49 +1,21 @@
-require 'whirled_peas/template/box_element'
-require 'whirled_peas/template/container'
-require 'whirled_peas/template/grid_element'
-require 'whirled_peas/template/text_element'
-
-require_relative 'box_painter'
require_relative 'canvas'
-require_relative 'grid_painter'
-require_relative 'text_painter'
module WhirledPeas
module Graphics
class Renderer
- PAINTERS = {
- Template::BoxElement => BoxPainter,
- Template::GridElement => GridPainter,
- Template::TextElement => TextPainter
- }
def initialize(template, width, height)
@template = template
@width = width
@height = height
end
def paint(&block)
- painter.paint(Canvas.new(0, 0, width, height, 0, 0), &block)
+ template.paint(Canvas.new(0, 0, width, height, 0, 0), &block)
end
- def painter
- build(template)
- end
-
private
attr_reader :template, :width, :height
-
- def build(element)
- unless PAINTERS.key?(element.class)
- raise ArgumentError, "Unable to render #{element.class}"
- end
- painter = PAINTERS[element.class].new(element, element.settings, element.name)
- if element.is_a?(Template::Container)
- element.each_child { |child| painter.add_child(build(child)) }
- end
- painter
- end
end
end
end