class Asset

def geometry(style_name = 'original')

def geometry(style_name = 'original')
  unless style?(style_name)
    raise Paperclip::StyleError,
          "Requested style #{style_name} is not defined for this asset."
  end
  @geometry ||= {}
  begin
    @geometry[style_name] ||= if style_name.to_s == 'original'
                                original_geometry
                              else
                                style = asset.styles[style_name.to_sym]
                                original_geometry.transformed_by(style.geometry)
                                # this can return dimensions for fully specified style sizes but not for relative sizes when there are no original dimensions
                              end
  rescue Paperclip::TransformationError => e
    Rails.logger.warn "geometry transformation error: #{e}"
    original_geometry # returns a blank geometry if the real geometry cannot be calculated
  end
end