class DragonflyLibvips::Dimensions

Public Class Methods

call(*args) click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 3
def self.call(*args)
  new(*args).call
end

Public Instance Methods

call() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 7
def call
  return OpenStruct.new(width: orig_w, height: orig_h, scale: 1) if do_not_resize_if_image_smaller_than_requested? || do_not_resize_if_image_larger_than_requested?
  OpenStruct.new(width: width, height: height, scale: scale)
end

Private Instance Methods

aspect_ratio() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 39
def aspect_ratio
  orig_h.to_f / orig_w
end
dimensions() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 34
def dimensions
  w, h = geometry.scan(/\A(\d*)x(\d*)/).flatten.map(&:to_f)
  OpenStruct.new(width: w, height: h)
end
dimensions_specified_by_height?() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 47
def dimensions_specified_by_height?
  dimensions.height > 0
end
dimensions_specified_by_width?() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 43
def dimensions_specified_by_width?
  dimensions.width > 0
end
do_not_resize_if_image_larger_than_requested?() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 64
def do_not_resize_if_image_larger_than_requested?
  return false unless geometry.include? '<'
  orig_w > width && orig_h > height
end
do_not_resize_if_image_smaller_than_requested?() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 59
def do_not_resize_if_image_smaller_than_requested?
  return false unless geometry.include? '>'
  orig_w < width && orig_h < height
end
height() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 22
def height
  if landscape?
    dimensions_specified_by_width? ? dimensions.width * aspect_ratio : dimensions.height
  else
    dimensions_specified_by_height? ? dimensions.height : dimensions.width * aspect_ratio
  end
end
landscape?() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 51
def landscape?
  aspect_ratio <= 1.0
end
portrait?() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 55
def portrait?
  !landscape?
end
scale() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 30
def scale
  width.to_f / orig_w.to_f
end
width() click to toggle source
# File lib/dragonfly_libvips/dimensions.rb, line 14
def width
  if landscape?
    dimensions_specified_by_width? ? dimensions.width : dimensions.height / aspect_ratio
  else
    dimensions_specified_by_height? ? dimensions.height / aspect_ratio : dimensions.width
  end
end