imgry 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,10 +10,15 @@ module Imgry
10
10
  ask_height ||= 0
11
11
  aspect_ratio = orig_width.to_f / orig_height.to_f
12
12
 
13
- scale = Proc.new do
14
- if ask_width == 0 || ask_width < ask_height
13
+ scale = Proc.new do |ask_is_maximum = true|
14
+ ask_aspect_ratio = ask_width.to_f / ask_height.to_f
15
+ # Fill requested height if result should cover narrower aspect or should be contained within wider aspect
16
+ fill_height = (ask_is_maximum && ask_aspect_ratio > aspect_ratio) || (!ask_is_maximum && ask_aspect_ratio < aspect_ratio)
17
+ if ask_width == 0 || (ask_height != 0 && fill_height)
18
+ # Fill height, calculate width
15
19
  new_width, new_height = scale_by_height(ask_height, aspect_ratio)
16
20
  else
21
+ # Fill width, calculate height
17
22
  new_width, new_height = scale_by_width(ask_width, aspect_ratio)
18
23
  end
19
24
  end
@@ -21,6 +26,8 @@ module Imgry
21
26
  case op
22
27
  when '!'
23
28
  new_width, new_height = ask_width.to_i, ask_height.to_i
29
+ when '^'
30
+ scale.call(false)
24
31
  when '>'
25
32
  scale.call if orig_width > ask_width || orig_height > ask_height
26
33
  when '<'
@@ -60,6 +67,6 @@ module Imgry
60
67
  end
61
68
  [width, height, x, y, flag]
62
69
  end
63
-
70
+
64
71
  end
65
72
  end
data/lib/imgry/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Imgry
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
@@ -17,6 +17,22 @@ describe Imgry::Geometry do
17
17
  size.should == [400, 300]
18
18
  end
19
19
 
20
+ it 'fits given maximum dimensions with aspect ratio maintained when image aspect > 1' do
21
+ size = Imgry::Geometry.scale(1024, 768, "300x600")
22
+ size.should == [300, 225]
23
+
24
+ size = Imgry::Geometry.scale(1024, 768, "600x300")
25
+ size.should == [400, 300]
26
+ end
27
+
28
+ it 'fits given maximum dimensions with aspect ratio maintained when image aspect < 1' do
29
+ size = Imgry::Geometry.scale(768, 1024, "300x600")
30
+ size.should == [300, 400]
31
+
32
+ size = Imgry::Geometry.scale(768, 1024, "600x300")
33
+ size.should == [225, 300]
34
+ end
35
+
20
36
  it 'shrinks to a size when dimensions are larger then corresponding width/height' do
21
37
  size = Imgry::Geometry.scale(1024, 768, "600x600>")
22
38
  size.should == [600, 450]
@@ -30,6 +46,22 @@ describe Imgry::Geometry do
30
46
  size.should == [1024, 768]
31
47
 
32
48
  size = Imgry::Geometry.scale(300, 400, "600x600<")
49
+ size.should == [450, 600]
50
+ end
51
+
52
+ it 'covers minimum specified dimensions with aspect ratio maintained when image aspect > 1' do
53
+ size = Imgry::Geometry.scale(1024, 768, "100x600^")
54
+ size.should == [800, 600]
55
+
56
+ size = Imgry::Geometry.scale(1024, 768, "600x100^")
57
+ size.should == [600, 450]
58
+ end
59
+
60
+ it 'covers minimum specified dimensions with aspect ratio maintained when image aspect < 1' do
61
+ size = Imgry::Geometry.scale(768, 1024, "100x600^")
62
+ size.should == [450, 600]
63
+
64
+ size = Imgry::Geometry.scale(768, 1024, "600x100^")
33
65
  size.should == [600, 800]
34
66
  end
35
67
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imgry
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-16 00:00:00.000000000 Z
12
+ date: 2013-02-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  version: 1.3.6
80
80
  requirements: []
81
81
  rubyforge_project:
82
- rubygems_version: 1.8.24
82
+ rubygems_version: 1.8.25
83
83
  signing_key:
84
84
  specification_version: 3
85
85
  summary: Fast image resizing/cropping designed for JRuby with MRI support
@@ -99,3 +99,4 @@ test_files:
99
99
  - spec/support/mexico-cmyk.jpg
100
100
  - spec/support/transparent_background.png
101
101
  - spec/support/transparent_background_saved.png
102
+ has_rdoc: