pnm 0.3.3 → 0.3.4
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/pnm/image.rb +19 -15
- data/lib/pnm/version.rb +2 -2
- data/test/test_exceptions.rb +2 -2
- data/test/test_image.rb +5 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a67b8402e945e8d27962981006428433aa2bf5d
|
4
|
+
data.tar.gz: adc0238ba64a48028c43c4a2daa60d94e3074297
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ac2f0cf568b65fe2d70e6b9665db5c88c8011003446bea7858a74c2367bbc71d6af34c855b669dc7c1e2682aef15d7571a0c24ce73312c09c4c84882143ef7f
|
7
|
+
data.tar.gz: 3501103cd58fa19bf20ef47e9f482ed4d1243c9bc2acf8b4e1b270e5a1a46cb94d4162b4efd6d32547f251bace34e21a0c385766bd41f62780cd3562b93002b8
|
data/README.md
CHANGED
data/lib/pnm/image.rb
CHANGED
@@ -47,6 +47,8 @@ module PNM
|
|
47
47
|
# By explicitly setting +type+, PGM images can be
|
48
48
|
# created from bilevel pixel data, and PPM images can be
|
49
49
|
# created from bilevel or gray pixel data.
|
50
|
+
# String values (<tt>"pbm"</tt>, <tt>"pgm"</tt>,
|
51
|
+
# or <tt>"ppm"</tt>) are also accepted.
|
50
52
|
# +maxgray+:: The maximum gray or color value.
|
51
53
|
# For PGM and PPM, +maxgray+ must be less or equal 255
|
52
54
|
# (the default value).
|
@@ -61,6 +63,8 @@ module PNM
|
|
61
63
|
@comment = options[:comment]
|
62
64
|
@pixels = pixels.dup
|
63
65
|
|
66
|
+
@type = @type.to_sym if @type && String === @type
|
67
|
+
|
64
68
|
assert_valid_type if @type
|
65
69
|
assert_valid_maxgray if @maxgray
|
66
70
|
assert_valid_comment if @comment
|
@@ -124,7 +128,7 @@ module PNM
|
|
124
128
|
|
125
129
|
private
|
126
130
|
|
127
|
-
def type_string
|
131
|
+
def type_string # :nodoc:
|
128
132
|
case type
|
129
133
|
when :pbm
|
130
134
|
'Bilevel'
|
@@ -135,7 +139,7 @@ module PNM
|
|
135
139
|
end
|
136
140
|
end
|
137
141
|
|
138
|
-
def detect_type(pixels, maxgray)
|
142
|
+
def detect_type(pixels, maxgray) # :nodoc:
|
139
143
|
if pixels.first.first.kind_of?(Array)
|
140
144
|
:ppm
|
141
145
|
elsif (maxgray && maxgray > 1) || pixels.flatten.max > 1
|
@@ -145,7 +149,7 @@ module PNM
|
|
145
149
|
end
|
146
150
|
end
|
147
151
|
|
148
|
-
def assert_valid_array
|
152
|
+
def assert_valid_array # :nodoc:
|
149
153
|
msg = "invalid pixel data: Array expected"
|
150
154
|
raise PNM::ArgumentError, msg unless Array === pixels
|
151
155
|
|
@@ -166,14 +170,14 @@ module PNM
|
|
166
170
|
end
|
167
171
|
end
|
168
172
|
|
169
|
-
def assert_valid_pixel(pixel)
|
173
|
+
def assert_valid_pixel(pixel) # :nodoc:
|
170
174
|
unless Fixnum === pixel
|
171
175
|
msg = "invalid pixel value: Fixnum expected - #{pixel.inspect}"
|
172
176
|
raise PNM::DataError, msg
|
173
177
|
end
|
174
178
|
end
|
175
179
|
|
176
|
-
def assert_valid_color_pixel(pixel)
|
180
|
+
def assert_valid_color_pixel(pixel) # :nodoc:
|
177
181
|
unless Array === pixel && pixel.map(&:class) == [Fixnum, Fixnum, Fixnum]
|
178
182
|
msg = "invalid pixel value: "
|
179
183
|
msg << "Array of 3 Fixnums expected - #{pixel.inspect}"
|
@@ -182,33 +186,33 @@ module PNM
|
|
182
186
|
end
|
183
187
|
end
|
184
188
|
|
185
|
-
def assert_valid_type
|
189
|
+
def assert_valid_type # :nodoc:
|
186
190
|
unless [:pbm, :pgm, :ppm].include?(type)
|
187
191
|
msg = "invalid image type - #{type.inspect}"
|
188
192
|
raise PNM::ArgumentError, msg
|
189
193
|
end
|
190
194
|
end
|
191
195
|
|
192
|
-
def assert_matching_type_and_data
|
196
|
+
def assert_matching_type_and_data # :nodoc:
|
193
197
|
if Array === pixels.first.first && [:pbm, :pgm].include?(type)
|
194
198
|
msg = "specified type does not match data - #{type.inspect}"
|
195
199
|
raise PNM::DataError, msg
|
196
200
|
end
|
197
201
|
end
|
198
202
|
|
199
|
-
def assert_valid_maxgray
|
203
|
+
def assert_valid_maxgray # :nodoc:
|
200
204
|
unless Fixnum === maxgray && maxgray > 0 && maxgray <= 255
|
201
205
|
raise PNM::ArgumentError, "invalid maxgray value - #{maxgray.inspect}"
|
202
206
|
end
|
203
207
|
end
|
204
208
|
|
205
|
-
def assert_valid_comment
|
209
|
+
def assert_valid_comment # :nodoc:
|
206
210
|
unless String === comment
|
207
211
|
raise PNM::ArgumentError, "invalid comment value - #{comment.inspect}"
|
208
212
|
end
|
209
213
|
end
|
210
214
|
|
211
|
-
def assert_valid_pixel_values
|
215
|
+
def assert_valid_pixel_values # :nodoc:
|
212
216
|
unless pixels.flatten.max <= maxgray
|
213
217
|
raise PNM::DataError, "invalid data: value(s) greater than maxgray"
|
214
218
|
end
|
@@ -217,7 +221,7 @@ module PNM
|
|
217
221
|
end
|
218
222
|
end
|
219
223
|
|
220
|
-
def header(encoding)
|
224
|
+
def header(encoding) # :nodoc:
|
221
225
|
header = "#{PNM.magic_number[type][encoding]}\n"
|
222
226
|
comment_lines.each do |line|
|
223
227
|
header << (line.empty? ? "#\n" : "# #{line}\n")
|
@@ -228,7 +232,7 @@ module PNM
|
|
228
232
|
header
|
229
233
|
end
|
230
234
|
|
231
|
-
def comment_lines
|
235
|
+
def comment_lines # :nodoc:
|
232
236
|
return [] unless comment
|
233
237
|
return [''] if comment.empty?
|
234
238
|
|
@@ -236,19 +240,19 @@ module PNM
|
|
236
240
|
comment.split(/\n/, keep_trailing_null_fields)
|
237
241
|
end
|
238
242
|
|
239
|
-
def to_ascii
|
243
|
+
def to_ascii # :nodoc:
|
240
244
|
data_string = Converter.array2ascii(pixels)
|
241
245
|
|
242
246
|
header(:ascii) << data_string
|
243
247
|
end
|
244
248
|
|
245
|
-
def to_binary
|
249
|
+
def to_binary # :nodoc:
|
246
250
|
data_string = Converter.array2binary(type, pixels)
|
247
251
|
|
248
252
|
header(:binary) << data_string
|
249
253
|
end
|
250
254
|
|
251
|
-
def gray_to_rgb(gray_value)
|
255
|
+
def gray_to_rgb(gray_value) # :nodoc:
|
252
256
|
Array.new(3, gray_value)
|
253
257
|
end
|
254
258
|
end
|
data/lib/pnm/version.rb
CHANGED
data/test/test_exceptions.rb
CHANGED
@@ -14,9 +14,9 @@ describe 'PNM::Image.new' do
|
|
14
14
|
lambda { PNM::Image.new(data) }.must_raise PNM::ArgumentError
|
15
15
|
end
|
16
16
|
|
17
|
-
it 'raises an exception for invalid type
|
17
|
+
it 'raises an exception for invalid type' do
|
18
18
|
data = [[0, 0], [0, 0]]
|
19
|
-
lambda { PNM::Image.new(data, :type =>
|
19
|
+
lambda { PNM::Image.new(data, :type => :abc) }.must_raise PNM::ArgumentError
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'raises an exception for invalid maxgray (String)' do
|
data/test/test_image.rb
CHANGED
@@ -81,6 +81,11 @@ describe PNM::Image do
|
|
81
81
|
image.maxgray.must_equal 255
|
82
82
|
end
|
83
83
|
|
84
|
+
it 'also accepts types given as string instead of symbol' do
|
85
|
+
image = PNM::Image.new([[0,1,0], [1,0,1]], {:type => "pgm"})
|
86
|
+
image.type.must_equal :pgm
|
87
|
+
end
|
88
|
+
|
84
89
|
it 'can create a grayscale image from bilevel values (using maxgray)' do
|
85
90
|
image = PNM::Image.new([[0,1,0], [1,0,1]], {:maxgray => 2})
|
86
91
|
image.type.must_equal :pgm
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pnm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcus Stollsteimer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|