class VitalsImage::Optimizer::Variable

Public Class Methods

accept?(source) click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 5
def self.accept?(source)
  source.respond_to?(:variable?) && source.variable?
end

Private Instance Methods

alpha?() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 34
def alpha?
  @options["alpha"]
end
analyzed?() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 30
def analyzed?
  metadata[:analyzed]
end
dimensions() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 38
def dimensions
  if fixed_dimensions?
    [(requested_width * VitalsImage.resolution).floor, (requested_height * VitalsImage.resolution).floor]
  elsif VitalsImage.resolution * scale > 1
    [original_width, original_height]
  else
    [(width * VitalsImage.resolution).floor, (height * VitalsImage.resolution).floor]
  end
end
metadata() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 26
def metadata
  @source.metadata
end
optimize_generic() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 75
def optimize_generic
  if alpha? || !VitalsImage.convert_to_jpeg
    @source.variant resize
  else
    @source.variant resize_and_flatten(VitalsImage.jpeg_conversion)
  end
end
optimize_jpeg() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 63
def optimize_jpeg
  @source.variant resize_and_flatten(VitalsImage.jpeg_optimization)
end
optimize_png() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 67
def optimize_png
  if alpha? || !VitalsImage.convert_to_jpeg
    @source.variant resize(VitalsImage.png_optimization)
  else
    @source.variant resize_and_flatten(VitalsImage.jpeg_conversion)
  end
end
original_height() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 22
def original_height
  metadata[:height]
end
original_width() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 18
def original_width
  metadata[:width]
end
resize(defaults = {}) click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 88
def resize(defaults = {})
  defaults.merge "#{resize_mode}": dimensions
end
resize_and_flatten(defaults = {}) click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 83
def resize_and_flatten(defaults = {})
  resize  = resize_mode != :resize_and_pad ? dimensions : dimensions.push(background: [255])
  defaults.merge "#{resize_mode}": resize
end
resize_mode() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 48
def resize_mode
  @options[:resize_mode] || @source.metadata["white_background"] ? :resize_and_pad : :resize_to_fill
end
source_url() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 10
def source_url
  if analyzed?
    variant
  else
    @source
  end
end
variant() click to toggle source
# File lib/vitals_image/optimizer/variable.rb, line 52
def variant
  case (@source.content_type)
  when /jpg|jpeg/
    optimize_jpeg
  when /png/
    optimize_png
  else
    optimize_generic
  end
end