Class: Refinery::Image

Inherits:
Core::BaseModel
  • Object
show all
Includes:
Refinery::Images::Validators
Defined in:
app/models/refinery/image.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.per_page(dialog = false, has_size_options = false) ⇒ Object

How many images per page should be displayed?



26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/refinery/image.rb', line 26

def per_page(dialog = false, has_size_options = false)
  if dialog
    unless has_size_options
      Images.pages_per_dialog
    else
      Images.pages_per_dialog_that_have_size_options
    end
  else
    Images.pages_per_admin_index
  end
end

Instance Method Details

#thumbnail(geometry = nil) ⇒ Object

Get a thumbnail job object given a geometry.



40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/refinery/image.rb', line 40

def thumbnail(geometry = nil)
  if geometry.is_a?(Symbol) and Refinery::Images.user_image_sizes.keys.include?(geometry)
    geometry = Refinery::Images.user_image_sizes[geometry]
  end

  if geometry.present? && !geometry.is_a?(Symbol)
    image.thumb(geometry)
  else
    image
  end
end

#thumbnail_dimensions(geometry) ⇒ Object

Intelligently works out dimensions for a thumbnail of this image based on the Dragonfly geometry string.



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/models/refinery/image.rb', line 53

def thumbnail_dimensions(geometry)
  geometry = geometry.to_s
  width = original_width = self.image_width.to_f
  height = original_height = self.image_height.to_f
  geometry_width, geometry_height = geometry.split(%r{\#{1,2}|\+|>|!|x}im)[0..1].map(&:to_f)
  if (original_width * original_height > 0) && geometry =~ ::Dragonfly::ImageMagick::Processor::THUMB_GEOMETRY
    if geometry =~ ::Dragonfly::ImageMagick::Processor::RESIZE_GEOMETRY
      if geometry !~ %r{\d+x\d+>} || (geometry =~ %r{\d+x\d+>} && (width > geometry_width.to_f || height > geometry_height.to_f))
        # Try scaling with width factor first. (wf = width factor)
        wf_width = (original_width * (geometry_width / width)).ceil
        wf_height = (original_height * (geometry_width / width)).ceil

        # Scale with height factor (hf = height factor)
        hf_width = (original_width * (geometry_height / height)).ceil
        hf_height = (original_height * (geometry_height / height)).ceil

        # Take the highest value that doesn't exceed either axis limit.
        use_wf = 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
    else
      # cropping
      width = geometry_width
      height = geometry_height
    end
  end

  { :width => width.to_i, :height => height.to_i }
end

#titleObject

Returns a titleized version of the filename my_file.jpg returns My File



95
96
97
# File 'app/models/refinery/image.rb', line 95

def title
  CGI::unescape(image_name.to_s).gsub(/\.\w+$/, '').titleize
end