Class: Idml::Render::SpreadRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/idml/render/spread_renderer.rb

Overview

Renders a typed Parts::Spread onto a Pdfrb::Content::Canvas.

Instance Method Summary collapse

Constructor Details

#initialize(font_resolver: nil, font_ps_name: Render::DEFAULT_FONT, package: nil, layer_filter: LayerFilter::EXCLUDE_NONE, font_ref_resolver: nil) ⇒ SpreadRenderer

Returns a new instance of SpreadRenderer.



7
8
9
10
11
12
13
14
15
# File 'lib/idml/render/spread_renderer.rb', line 7

def initialize(font_resolver: nil, font_ps_name: Render::DEFAULT_FONT,
               package: nil, layer_filter: LayerFilter::EXCLUDE_NONE,
               font_ref_resolver: nil)
  @font_resolver = font_resolver
  @font_ps_name = font_ps_name
  @package = package
  @layer_filter = layer_filter
  @font_ref_resolver = font_ref_resolver
end

Instance Method Details

#render(canvas, spread, page_width:, page_height:, image_refs: []) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/idml/render/spread_renderer.rb', line 17

def render(canvas, spread, page_width:, page_height:, image_refs: [])
  context_base = {
    package: @package,
    font_resolver: @font_resolver,
    font_ref_resolver: @font_ref_resolver,
    color_resolver: build_color_resolver,
    font_ps_name: @font_ps_name,
    page_width: page_width,
    page_height: page_height,
    layer_filter: @layer_filter,
  }

  canvas.save_graphics_state do
    render_background(canvas, page_width, page_height)
    render_images(canvas, image_refs)
    render_master_items(canvas, spread, context_base)
    spread.each_page_item do |item|
      next unless @layer_filter.visible?(item)

      context = RenderContext.new(context_base.merge(item: item))
      PageItemRenderer.render(canvas, context)
    end
  end
end