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