lib/artwork/model.rb in artwork-0.6.1 vs lib/artwork/model.rb in artwork-0.7.0

- old
+ new

@@ -1,13 +1,20 @@ require 'artwork/thumbnail' module Artwork module Model - def artwork_thumb_for(attachment_name, size) + def artwork_thumb_for(attachment_name, size, alternative_sizes = nil) + size = determine_alternative_size_for(alternative_sizes) || size + + size, base_resolution = size.to_s.split('@') + base_resolution ||= Artwork.base_resolution + desired_thumb = Thumbnail.new(size) matching_thumb_name = nil + ratio_for_current_resolution = base_resolution.to_f / Artwork.current_resolution.to_f + if desired_thumb.compatible? desired_size = desired_thumb.width / ratio_for_current_resolution thumbs = attachment_styles_for(attachment_name).map { |thumb_name| Thumbnail.new(thumb_name) } @@ -40,20 +47,26 @@ matching_thumb_name.to_sym end def artwork_url(attachment_name, size, options = {}) - thumb_name = artwork_thumb_for(attachment_name, size) + thumb_name = artwork_thumb_for(attachment_name, size, options) send(attachment_name).url(thumb_name, options) end def attachment_styles_for(attachment_name) self.class.attachment_definitions[attachment_name.to_sym][:styles].keys end private - def ratio_for_current_resolution - Artwork.default_resolution.to_f / Artwork.current_resolution.to_f + def determine_alternative_size_for(alternative_sizes) + return unless alternative_sizes + + new_size_definition = alternative_sizes \ + .sort_by { |max_resolution, size| max_resolution } \ + .find { |max_resolution, size| Artwork.actual_resolution <= max_resolution } + + new_size_definition.last if new_size_definition end end end