module IIIFManifest class ManifestBuilder class ImageBuilder attr_reader :display_image def initialize(display_image) @display_image = display_image build_resource end def apply(canvas) annotation['on'] = canvas['@id'] canvas['width'] = annotation.resource['width'] canvas['height'] = annotation.resource['height'] canvas.images << annotation end private def build_resource resource_builder.apply(annotation) end def resource_builder ResourceBuilder.new(display_image) end def annotation @annotation ||= IIIF::Presentation::Annotation.new end end end end