Class: Refinery::ThumbnailDimensions
- Inherits:
-
Object
- Object
- Refinery::ThumbnailDimensions
- Defined in:
- app/models/refinery/thumbnail_dimensions.rb
Defined Under Namespace
Classes: Geometry
Instance Attribute Summary collapse
-
#geometry ⇒ Object
Returns the value of attribute geometry.
-
#height ⇒ Object
Returns the value of attribute height.
-
#original_height ⇒ Object
Returns the value of attribute original_height.
-
#original_width ⇒ Object
Returns the value of attribute original_width.
-
#width ⇒ Object
Returns the value of attribute width.
Instance Method Summary collapse
- #crop ⇒ Object
-
#initialize(geometry, original_width, original_height) ⇒ ThumbnailDimensions
constructor
A new instance of ThumbnailDimensions.
- #original_dimensions ⇒ Object
- #process ⇒ Object
- #resize_geometry ⇒ Object
- #resize_necessary ⇒ Object
- #scale ⇒ Object
- #thumb_geometry ⇒ Object
- #valid_geometry ⇒ Object
Constructor Details
#initialize(geometry, original_width, original_height) ⇒ ThumbnailDimensions
Returns a new instance of ThumbnailDimensions.
6 7 8 9 10 11 12 13 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 6 def initialize(geometry, original_width, original_height) @geometry = Geometry.new(geometry) @original_width = original_width.to_f @original_height = original_height.to_f process end |
Instance Attribute Details
#geometry ⇒ Object
Returns the value of attribute geometry.
4 5 6 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 4 def geometry @geometry end |
#height ⇒ Object
Returns the value of attribute height.
4 5 6 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 4 def height @height end |
#original_height ⇒ Object
Returns the value of attribute original_height.
4 5 6 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 4 def original_height @original_height end |
#original_width ⇒ Object
Returns the value of attribute original_width.
4 5 6 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 4 def original_width @original_width end |
#width ⇒ Object
Returns the value of attribute width.
4 5 6 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 4 def width @width end |
Instance Method Details
#crop ⇒ Object
45 46 47 48 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 45 def crop @width = geometry.width @height = geometry.height end |
#original_dimensions ⇒ Object
40 41 42 43 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 40 def original_dimensions @width = original_width @height = original_height end |
#process ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 15 def process if valid_geometry && resize_geometry && resize_necessary scale elsif valid_geometry && !resize_geometry crop else original_dimensions end end |
#resize_geometry ⇒ Object
29 30 31 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 29 def resize_geometry ::Dragonfly::ImageMagick::Processors::Thumb::RESIZE_GEOMETRY === geometry.geometry end |
#resize_necessary ⇒ Object
33 34 35 36 37 38 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 33 def resize_necessary !geometry.custom? || (geometry.custom? && (original_width > geometry.width || original_height > geometry.height)) end |
#scale ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 50 def scale # Try scaling with width factor first. (wf = width factor) wf_width = geometry.width.round wf_height = (original_height * geometry.width / original_width).round # Scale with height factor (hf = height factor) hf_width = (original_width * geometry.height / original_height).round hf_height = geometry.height.round # Take the highest value that doesn't exceed either axis limit. use_wf = wf_width > 0 && wf_width <= geometry.width && wf_height <= geometry.height if use_wf && hf_width <= geometry.width && hf_height <= geometry.height use_wf = wf_width * wf_height > hf_width * hf_height end if use_wf @width = wf_width @height = wf_height else @width = hf_width @height = hf_height end end |
#thumb_geometry ⇒ Object
74 75 76 77 78 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 74 def thumb_geometry Regexp.union(::Dragonfly::ImageMagick::Processors::Thumb::RESIZE_GEOMETRY, ::Dragonfly::ImageMagick::Processors::Thumb::CROPPED_RESIZE_GEOMETRY, ::Dragonfly::ImageMagick::Processors::Thumb::CROP_GEOMETRY) end |
#valid_geometry ⇒ Object
25 26 27 |
# File 'app/models/refinery/thumbnail_dimensions.rb', line 25 def valid_geometry (original_width * original_height > 0) && thumb_geometry === geometry.geometry end |