Class: Idml::Render::ImageCollector
- Inherits:
-
Object
- Object
- Idml::Render::ImageCollector
- 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
-
#collect(spread) ⇒ Object
Enumerate every page item in
spread, register its image children with the writer, and return the list of placement refs. -
#initialize(writer:, base_dir:, page_height: DEFAULT_PAGE_HEIGHT) ⇒ ImageCollector
constructor
A new instance of ImageCollector.
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 |