djatoka 0.0.7 → 0.0.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
data/bin/djatoka_url CHANGED
@@ -22,11 +22,13 @@ EOS
22
22
  opt :scale, "Scale", :type => String
23
23
  opt :format, 'Format', :type => String
24
24
  opt :clayer, 'clayer', :type => String
25
- opt :square, 'Squares the image by cropping'
26
25
  opt :smallbox, 'Creates a 75x75 image'
27
26
  opt :metadata, 'Output metadata'
28
27
  opt :levels, 'Output Levels'
29
28
  opt :browser, 'Set the browser to open JSON and images with', :type => String
29
+ opt :square, 'Squares the image by cropping both sides'
30
+ opt :topleftsquare, 'Squares the image by justifying to the top left'
31
+ opt :bottomrightsquare, 'Squares the image by jutifying to the bottom right'
30
32
  end
31
33
 
32
34
  resolver = Djatoka::Resolver.new(opts[:resolver])
@@ -44,6 +46,14 @@ if opts[:square]
44
46
  region.square
45
47
  end
46
48
 
49
+ if opts[:topleftsquare]
50
+ region.top_left_square
51
+ end
52
+
53
+ if opts[:bottomrightsquare]
54
+ region.bottom_right_square
55
+ end
56
+
47
57
  if opts[:metadata] or opts[:levels]
48
58
  metadata = resolver.metadata(opts[:rftid])
49
59
  metadata.perform
@@ -30,7 +30,17 @@ module Djatoka::Common
30
30
 
31
31
  # public alias for #square_params. Returns self (a Djatoka::Region)
32
32
  def square
33
- square_params
33
+ square_params(:center)
34
+ self
35
+ end
36
+
37
+ def top_left_square
38
+ square_params(:top_left)
39
+ self
40
+ end
41
+
42
+ def bottom_right_square
43
+ square_params(:bottom_right)
34
44
  self
35
45
  end
36
46
 
@@ -46,6 +56,10 @@ module Djatoka::Common
46
56
  square_uri.to_s
47
57
  end
48
58
 
59
+ # return a region as a square justified to the top-left of image.
60
+ # for a portrait image it will be justified to the top and for landscape it
61
+ # should be justified to the
62
+
49
63
  # So far we figure the best level to ask for based on any scale parameter and
50
64
  # try to compensate for any difference between the dwtLevels and djatoka levels
51
65
  # so that we get a decent image returned.
@@ -74,7 +88,7 @@ module Djatoka::Common
74
88
  # how djatoka determines levels. See the comments for the places where the code
75
89
  # tries to reconcile this difference in a way that seems to work in the cases
76
90
  # seen so far.
77
- def square_params
91
+ def square_params(justify = :center)
78
92
  metadata = Djatoka::Metadata.new(resolver, rft_id).perform
79
93
  if metadata
80
94
  orig_height = metadata.height.to_i
@@ -85,16 +99,7 @@ module Djatoka::Common
85
99
  level(pick_best_level(metadata))
86
100
  end
87
101
  if query.level
88
- # we try to compensate for when there is a difference between the
89
- # dwtLevels and the djatoka levels. So far the only case seen is where
90
- # the dwtLevels are greater than the djatoka levels.
91
- # if metadata.dwt_levels.to_i > metadata.levels.to_i
92
- # difference = metadata.dwt_levels.to_i - metadata.levels.to_i
93
- # good_query_level = query.level.to_i + difference
94
- # dwtLevels in the cases seen so far almost always match the djatoka levels.
95
- # elsif metadata.dwt_levels.to_i == metadata.levels.to_i
96
- good_query_level = query.level.to_i
97
- # end
102
+ good_query_level = query.level.to_i
98
103
  height = metadata.all_levels[good_query_level].height
99
104
  width = metadata.all_levels[good_query_level].width
100
105
  else
@@ -105,18 +110,36 @@ module Djatoka::Common
105
110
  # height and width are relative to the level selected and one if not already
106
111
  # a square then the longest side is cropped.
107
112
  if height != width
108
- if height > width
109
- x = '0'
110
- y = ((orig_height - orig_width)/2).to_s
111
-
112
- h = width.to_s
113
- w = width.to_s
114
- elsif width > height
115
- y = '0'
116
- x = ((orig_width - orig_height)/2).to_s
117
- h = height.to_s
118
- w = height.to_s
119
- end
113
+ # portrait
114
+ if height > width
115
+ h = width.to_s
116
+ w = width.to_s
117
+ if justify == :center
118
+ x = '0'
119
+ y = ((orig_height - orig_width)/2).to_s
120
+ elsif justify == :top_left
121
+ x = '0'
122
+ y = '0'
123
+ elsif justify == :bottom_right
124
+ x = '0'
125
+ y = (orig_height - orig_width).to_s
126
+ end
127
+
128
+ # landscape
129
+ elsif width > height
130
+ h = height.to_s
131
+ w = height.to_s
132
+ if justify == :center
133
+ y = '0'
134
+ x = ((orig_width - orig_height)/2).to_s
135
+ elsif justify == :top_left
136
+ x = '0'
137
+ y = '0'
138
+ elsif justify == :bottom_right
139
+ y = '0'
140
+ x = (orig_width - orig_height).to_s
141
+ end
142
+ end
120
143
  region([y,x,h,w])
121
144
  end
122
145
  end
data/test/test_common.rb CHANGED
@@ -26,6 +26,12 @@ context 'A Djatoka Resolver' do
26
26
  assert_equal '0,874,3372,3372', @region.square.query.region
27
27
  assert_equal nil, @region.square.query.scale
28
28
  end
29
+ should 'create a query for a left justified version of the image' do
30
+ assert_equal '0,0,3372,3372', @region.top_left_square.query.region
31
+ end
32
+ should 'create a query for a right justified version of the image' do
33
+ assert_equal '0,1750,3372,3372', @region.bottom_right_square.query.region
34
+ end
29
35
  should 'return a uri for a square version of the image' do
30
36
  assert_equal '0,874,3372,3372', @region.square_uri.query_values['svc.region']
31
37
  assert_equal nil, @region.square_uri.query_values['svc.scale']
@@ -53,11 +59,17 @@ context 'A Djatoka Resolver' do
53
59
  setup do
54
60
  @region = Djatoka::Region.new(@resolver, 'info:lanl-repo/ds/b820f537-26a1-4af8-b86a-e7a4cac6187a')
55
61
  end
56
- should 'crop appropriately into a square' do
62
+ should 'crop appropriately into a centered square' do
57
63
  assert_equal '513,0,4093,4093', @region.square.query.region
58
64
  end
65
+ should 'crop appropriately into a top justified square' do
66
+ assert_equal '0,0,4093,4093', @region.top_left_square.query.region
67
+ end
68
+ should 'crop appropriately into bottom justified square' do
69
+ assert_equal '1027,0,4093,4093', @region.bottom_right_square.query.region
70
+ end
59
71
  end
60
-
72
+
61
73
  context 'an image where the dwt_levels do not match the djatoka levels' do
62
74
  setup do
63
75
  @region2 = Djatoka::Region.new(@resolver, 'ua023_015-006-bx0003-014-075')
@@ -67,7 +79,9 @@ context 'A Djatoka Resolver' do
67
79
  assert @region2.url
68
80
  end
69
81
  end
70
-
82
+
83
+
84
+
71
85
  end
72
86
 
73
87
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: djatoka
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jason Ronallo
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-28 00:00:00 -04:00
18
+ date: 2010-11-02 00:00:00 -04:00
19
19
  default_executable: djatoka_url
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -167,13 +167,13 @@ files:
167
167
  - lib/djatoka/region.rb
168
168
  - lib/djatoka/resolver.rb
169
169
  - lib/djatoka/view_helpers.rb
170
+ - test/test_common.rb
171
+ - test/test_region.rb
172
+ - test/helper.rb
170
173
  - test/test_metadata.rb
171
- - test/test_djatoka.rb
172
174
  - test/test_resolver.rb
173
175
  - test/test_view_helpers.rb
174
- - test/test_region.rb
175
- - test/helper.rb
176
- - test/test_common.rb
176
+ - test/test_djatoka.rb
177
177
  has_rdoc: true
178
178
  homepage: http://github.com/jronallo/djatoka
179
179
  licenses: []
@@ -209,10 +209,10 @@ signing_key:
209
209
  specification_version: 3
210
210
  summary: Djatoka image server helpers for Ruby and Rails.
211
211
  test_files:
212
+ - test/test_common.rb
213
+ - test/test_region.rb
214
+ - test/helper.rb
212
215
  - test/test_metadata.rb
213
- - test/test_djatoka.rb
214
216
  - test/test_resolver.rb
215
217
  - test/test_view_helpers.rb
216
- - test/test_region.rb
217
- - test/helper.rb
218
- - test/test_common.rb
218
+ - test/test_djatoka.rb