Class: Idml::Render::ImageCollector

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

Overview

Walks a Spread's page items, resolves image URIs against the package's base directory, deduplicates by URI, and emits placement refs ({ name:, placement:, clip_box: }) ready for SpreadRenderer#render_images.

Extracted from Pipeline so the pipeline stays a sequence of high-level steps and the image-loading details live behind one object. Owns: file I/O, format detection, deduplication, placement math. Does not own: rendering (SpreadRenderer draws), layer filtering (caller passes a visible-only iterable).

Constant Summary collapse

DEFAULT_PAGE_HEIGHT =
792

Instance Method Summary collapse

Constructor Details

#initialize(writer:, base_dir:, page_height: DEFAULT_PAGE_HEIGHT) ⇒ ImageCollector

Returns a new instance of ImageCollector.



18
19
20
21
22
# File 'lib/idml/render/image_collector.rb', line 18

def initialize(writer:, base_dir:, page_height: DEFAULT_PAGE_HEIGHT)
  @writer = writer
  @base_dir = base_dir
  @page_height = page_height
end

Instance Method Details

#collect(spread) ⇒ Object

Enumerate every page item in spread, register its image children with the writer, and return the list of placement refs. Items whose image collection is empty or whose URIs cannot be resolved are skipped silently.



28
29
30
31
32
33
34
35
36
37
# File 'lib/idml/render/image_collector.rb', line 28

def collect(spread)
  refs = []
  spread.each_page_item do |item|
    images_for(item).each do |image|
      ref = register(image, item)
      refs << ref if ref
    end
  end
  refs
end