Module: Idml::Render::PageItemRenderer
- Defined in:
- lib/idml/render/page_item_renderer.rb
Overview
Registry-based dispatch for page-item rendering. Maps element classes to renderer classes. Adding a new page-item type = adding a new entry to RENDERER_MAP + creating the renderer class. Renderers are loaded lazily via autoload (no eager require).
Constant Summary collapse
- RENDERER_MAP =
{ Idml::Elements::Rectangle => "RectangleRenderer", Idml::Elements::TextFrame => "TextFrameRenderer", Idml::Elements::Polygon => "PolygonRenderer", Idml::Elements::GraphicLine => "GraphicLineRenderer", Idml::Elements::Group => "GroupRenderer", Idml::Elements::Table => "TableRenderer", }.freeze
Class Method Summary collapse
Class Method Details
.render(canvas, context) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/idml/render/page_item_renderer.rb', line 19 def self.render(canvas, context) renderer = renderer_for(context.item) return nil unless renderer renderer.render(canvas, context) end |
.renderer_for(item) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/idml/render/page_item_renderer.rb', line 26 def self.renderer_for(item) renderer_name = RENDERER_MAP[item.class] return nil unless renderer_name Render::Renderers.const_get(renderer_name) end |