chunky_png 1.3.9 → 1.3.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +5 -5
  2. data/.standard.yml +16 -0
  3. data/.travis.yml +8 -6
  4. data/.yardopts +1 -1
  5. data/CHANGELOG.rdoc +9 -1
  6. data/CONTRIBUTING.rdoc +17 -8
  7. data/Gemfile +3 -3
  8. data/LICENSE +1 -1
  9. data/README.md +6 -1
  10. data/Rakefile +3 -3
  11. data/benchmarks/decoding_benchmark.rb +17 -17
  12. data/benchmarks/encoding_benchmark.rb +22 -19
  13. data/benchmarks/filesize_benchmark.rb +6 -6
  14. data/bin/rake +29 -0
  15. data/bin/standardrb +29 -0
  16. data/chunky_png.gemspec +19 -15
  17. data/lib/chunky_png.rb +16 -25
  18. data/lib/chunky_png/canvas.rb +28 -27
  19. data/lib/chunky_png/canvas/adam7_interlacing.rb +14 -10
  20. data/lib/chunky_png/canvas/data_url_exporting.rb +1 -3
  21. data/lib/chunky_png/canvas/data_url_importing.rb +1 -3
  22. data/lib/chunky_png/canvas/drawing.rb +28 -43
  23. data/lib/chunky_png/canvas/masking.rb +12 -14
  24. data/lib/chunky_png/canvas/operations.rb +26 -24
  25. data/lib/chunky_png/canvas/png_decoding.rb +36 -32
  26. data/lib/chunky_png/canvas/png_encoding.rb +106 -100
  27. data/lib/chunky_png/canvas/resampling.rb +26 -33
  28. data/lib/chunky_png/canvas/stream_exporting.rb +6 -8
  29. data/lib/chunky_png/canvas/stream_importing.rb +6 -8
  30. data/lib/chunky_png/chunk.rb +69 -60
  31. data/lib/chunky_png/color.rb +211 -206
  32. data/lib/chunky_png/datastream.rb +22 -24
  33. data/lib/chunky_png/dimension.rb +16 -11
  34. data/lib/chunky_png/image.rb +9 -11
  35. data/lib/chunky_png/palette.rb +4 -9
  36. data/lib/chunky_png/point.rb +25 -26
  37. data/lib/chunky_png/rmagick.rb +8 -10
  38. data/lib/chunky_png/vector.rb +26 -29
  39. data/lib/chunky_png/version.rb +1 -1
  40. data/spec/chunky_png/canvas/adam7_interlacing_spec.rb +20 -21
  41. data/spec/chunky_png/canvas/data_url_exporting_spec.rb +8 -5
  42. data/spec/chunky_png/canvas/data_url_importing_spec.rb +5 -6
  43. data/spec/chunky_png/canvas/drawing_spec.rb +46 -38
  44. data/spec/chunky_png/canvas/masking_spec.rb +15 -16
  45. data/spec/chunky_png/canvas/operations_spec.rb +68 -67
  46. data/spec/chunky_png/canvas/png_decoding_spec.rb +37 -38
  47. data/spec/chunky_png/canvas/png_encoding_spec.rb +59 -50
  48. data/spec/chunky_png/canvas/resampling_spec.rb +19 -21
  49. data/spec/chunky_png/canvas/stream_exporting_spec.rb +47 -27
  50. data/spec/chunky_png/canvas/stream_importing_spec.rb +10 -11
  51. data/spec/chunky_png/canvas_spec.rb +57 -52
  52. data/spec/chunky_png/color_spec.rb +115 -114
  53. data/spec/chunky_png/datastream_spec.rb +55 -51
  54. data/spec/chunky_png/dimension_spec.rb +10 -10
  55. data/spec/chunky_png/image_spec.rb +11 -14
  56. data/spec/chunky_png/point_spec.rb +21 -23
  57. data/spec/chunky_png/rmagick_spec.rb +7 -8
  58. data/spec/chunky_png/vector_spec.rb +21 -17
  59. data/spec/chunky_png_spec.rb +2 -2
  60. data/spec/png_suite_spec.rb +35 -40
  61. data/spec/spec_helper.rb +6 -10
  62. data/tasks/benchmarks.rake +7 -8
  63. metadata +38 -7
  64. data/lib/chunky_png/compatibility.rb +0 -15
@@ -1,41 +1,40 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChunkyPNG::Canvas::Masking do
4
-
5
- subject { reference_canvas('clock') }
4
+ subject { reference_canvas("clock") }
6
5
 
7
6
  before(:all) do
8
- @theme_color = ChunkyPNG::Color('#e10f7a')
9
- @new_color = ChunkyPNG::Color('#ff0000')
10
- @background_color = ChunkyPNG::Color('white')
7
+ @theme_color = ChunkyPNG::Color("#e10f7a")
8
+ @new_color = ChunkyPNG::Color("#ff0000")
9
+ @background_color = ChunkyPNG::Color("white")
11
10
  end
12
11
 
13
- describe '#change_theme_color!' do
12
+ describe "#change_theme_color!" do
14
13
  it "should change the theme color correctly" do
15
14
  subject.change_theme_color!(@theme_color, @new_color)
16
- expect(subject).to eql reference_canvas('clock_updated')
15
+ expect(subject).to eql reference_canvas("clock_updated")
17
16
  end
18
17
  end
19
18
 
20
- describe '#extract_mask' do
19
+ describe "#extract_mask" do
21
20
  it "should create the correct base and mask image" do
22
21
  base, mask = subject.extract_mask(@theme_color, @background_color)
23
- expect(base).to eql reference_canvas('clock_base')
24
- expect(mask).to eql reference_canvas('clock_mask')
22
+ expect(base).to eql reference_canvas("clock_base")
23
+ expect(mask).to eql reference_canvas("clock_mask")
25
24
  end
26
25
 
27
26
  it "should create a mask image with only one opaque color" do
28
- base, mask = subject.extract_mask(@theme_color, @background_color)
27
+ _, mask = subject.extract_mask(@theme_color, @background_color)
29
28
  expect(mask.palette.opaque_palette.size).to eql 1
30
29
  end
31
30
  end
32
31
 
33
- describe '#change_mask_color!' do
34
- before { @mask = reference_canvas('clock_mask') }
32
+ describe "#change_mask_color!" do
33
+ before { @mask = reference_canvas("clock_mask") }
35
34
 
36
35
  it "should replace the mask color correctly" do
37
36
  @mask.change_mask_color!(@new_color)
38
- expect(@mask).to eql reference_canvas('clock_mask_updated')
37
+ expect(@mask).to eql reference_canvas("clock_mask_updated")
39
38
  end
40
39
 
41
40
  it "should still only have one opaque color" do
@@ -44,7 +43,7 @@ describe ChunkyPNG::Canvas::Masking do
44
43
  end
45
44
 
46
45
  it "should raise an exception when the mask image has more than once color" do
47
- not_a_mask = reference_canvas('operations')
46
+ not_a_mask = reference_canvas("operations")
48
47
  expect { not_a_mask.change_mask_color!(@new_color) }.to raise_error(ChunkyPNG::ExpectationFailed)
49
48
  end
50
49
  end
@@ -1,16 +1,15 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChunkyPNG::Canvas::Operations do
4
+ subject { reference_canvas("operations") }
4
5
 
5
- subject { reference_canvas('operations') }
6
-
7
- describe '#grayscale' do
6
+ describe "#grayscale" do
8
7
  it "should not return itself" do
9
8
  subject.grayscale.should_not equal(subject)
10
9
  end
11
10
 
12
11
  it "should convert the image correctly" do
13
- expect(subject.grayscale).to eql reference_canvas('operations_grayscale')
12
+ expect(subject.grayscale).to eql reference_canvas("operations_grayscale")
14
13
  end
15
14
 
16
15
  it "should not adjust the current image" do
@@ -18,20 +17,20 @@ describe ChunkyPNG::Canvas::Operations do
18
17
  end
19
18
  end
20
19
 
21
- describe '#grayscale!' do
20
+ describe "#grayscale!" do
22
21
  it "should return itself" do
23
22
  expect(subject.grayscale!).to equal(subject)
24
23
  end
25
24
 
26
25
  it "should convert the image correctly" do
27
26
  subject.grayscale!
28
- expect(subject).to eql reference_canvas('operations_grayscale')
27
+ expect(subject).to eql reference_canvas("operations_grayscale")
29
28
  end
30
29
  end
31
30
 
32
- describe '#crop' do
31
+ describe "#crop" do
33
32
  it "should crop the right pixels from the original canvas" do
34
- expect(subject.crop(10, 5, 4, 8)).to eql reference_canvas('cropped')
33
+ expect(subject.crop(10, 5, 4, 8)).to eql reference_canvas("cropped")
35
34
  end
36
35
 
37
36
  it "should not return itself" do
@@ -47,18 +46,19 @@ describe ChunkyPNG::Canvas::Operations do
47
46
  end
48
47
  end
49
48
 
50
- describe '#crop!' do
51
- context 'when cropping both width and height' do
49
+ describe "#crop!" do
50
+ context "when cropping both width and height" do
52
51
  let(:crop_opts) { [10, 5, 4, 8] }
53
52
 
54
53
  it "should crop the right pixels from the original canvas" do
55
54
  subject.crop!(*crop_opts)
56
- expect(subject).to eql reference_canvas('cropped')
55
+ expect(subject).to eql reference_canvas("cropped")
57
56
  end
58
57
 
59
58
  it "should have a new width and height" do
60
- expect { subject.crop!(*crop_opts) }.to change { subject.dimension }.
61
- from(ChunkyPNG::Dimension('16x16')).to(ChunkyPNG::Dimension('4x8'))
59
+ expect { subject.crop!(*crop_opts) }.to change { subject.dimension }
60
+ .from(ChunkyPNG::Dimension("16x16"))
61
+ .to(ChunkyPNG::Dimension("4x8"))
62
62
  end
63
63
 
64
64
  it "should return itself" do
@@ -71,12 +71,13 @@ describe ChunkyPNG::Canvas::Operations do
71
71
 
72
72
  it "should crop the right pixels from the original canvas" do
73
73
  subject.crop!(*crop_opts)
74
- expect(subject).to eql reference_canvas('cropped_height')
74
+ expect(subject).to eql reference_canvas("cropped_height")
75
75
  end
76
76
 
77
77
  it "should have a new width and height" do
78
- expect { subject.crop!(*crop_opts) }.to change { subject.dimension }.
79
- from(ChunkyPNG::Dimension('16x16')).to(ChunkyPNG::Dimension('16x8'))
78
+ expect { subject.crop!(*crop_opts) }.to change { subject.dimension }
79
+ .from(ChunkyPNG::Dimension("16x16"))
80
+ .to(ChunkyPNG::Dimension("16x8"))
80
81
  end
81
82
 
82
83
  it "should return itself" do
@@ -91,91 +92,90 @@ describe ChunkyPNG::Canvas::Operations do
91
92
  end
92
93
  end
93
94
 
94
- describe '#compose' do
95
+ describe "#compose" do
95
96
  it "should compose pixels correctly" do
96
97
  subcanvas = ChunkyPNG::Canvas.new(4, 8, ChunkyPNG::Color.rgba(0, 0, 0, 75))
97
- expect(subject.compose(subcanvas, 8, 4)).to eql reference_canvas('composited')
98
+ expect(subject.compose(subcanvas, 8, 4)).to eql reference_canvas("composited")
98
99
  end
99
100
 
100
101
  it "should leave the original intact" do
101
- subject.compose(ChunkyPNG::Canvas.new(1,1))
102
- expect(subject).to eql reference_canvas('operations')
102
+ subject.compose(ChunkyPNG::Canvas.new(1, 1))
103
+ expect(subject).to eql reference_canvas("operations")
103
104
  end
104
105
 
105
106
  it "should not return itself" do
106
- subject.compose(ChunkyPNG::Canvas.new(1,1)).should_not equal(subject)
107
+ subject.compose(ChunkyPNG::Canvas.new(1, 1)).should_not equal(subject)
107
108
  end
108
109
 
109
110
  it "should raise an exception when the pixels to compose fall outside the image" do
110
- expect { subject.compose(ChunkyPNG::Canvas.new(1,1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
111
+ expect { subject.compose(ChunkyPNG::Canvas.new(1, 1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
111
112
  end
112
113
  end
113
114
 
114
- describe '#compose!' do
115
+ describe "#compose!" do
115
116
  it "should compose pixels correctly" do
116
117
  subcanvas = ChunkyPNG::Canvas.new(4, 8, ChunkyPNG::Color.rgba(0, 0, 0, 75))
117
118
  subject.compose!(subcanvas, 8, 4)
118
- expect(subject).to eql reference_canvas('composited')
119
+ expect(subject).to eql reference_canvas("composited")
119
120
  end
120
121
 
121
122
  it "should return itself" do
122
- expect(subject.compose!(ChunkyPNG::Canvas.new(1,1))).to equal(subject)
123
+ expect(subject.compose!(ChunkyPNG::Canvas.new(1, 1))).to equal(subject)
123
124
  end
124
125
 
125
126
  it "should compose a base image and mask correctly" do
126
- base = reference_canvas('clock_base')
127
- mask = reference_canvas('clock_mask_updated')
127
+ base = reference_canvas("clock_base")
128
+ mask = reference_canvas("clock_mask_updated")
128
129
  base.compose!(mask)
129
- expect(base).to eql reference_canvas('clock_updated')
130
+ expect(base).to eql reference_canvas("clock_updated")
130
131
  end
131
132
 
132
133
  it "should raise an exception when the pixels to compose fall outside the image" do
133
- expect { subject.compose!(ChunkyPNG::Canvas.new(1,1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
134
+ expect { subject.compose!(ChunkyPNG::Canvas.new(1, 1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
134
135
  end
135
136
  end
136
137
 
137
- describe '#replace' do
138
+ describe "#replace" do
138
139
  it "should replace the correct pixels" do
139
140
  subcanvas = ChunkyPNG::Canvas.new(3, 2, ChunkyPNG::Color.rgb(200, 255, 0))
140
- expect(subject.replace(subcanvas, 5, 4)).to eql reference_canvas('replaced')
141
+ expect(subject.replace(subcanvas, 5, 4)).to eql reference_canvas("replaced")
141
142
  end
142
143
 
143
144
  it "should not return itself" do
144
- subject.replace(ChunkyPNG::Canvas.new(1,1)).should_not equal(subject)
145
+ subject.replace(ChunkyPNG::Canvas.new(1, 1)).should_not equal(subject)
145
146
  end
146
147
 
147
148
  it "should leave the original intact" do
148
- subject.replace(ChunkyPNG::Canvas.new(1,1))
149
- expect(subject).to eql reference_canvas('operations')
149
+ subject.replace(ChunkyPNG::Canvas.new(1, 1))
150
+ expect(subject).to eql reference_canvas("operations")
150
151
  end
151
152
 
152
153
  it "should raise an exception when the pixels to replace fall outside the image" do
153
- expect { subject.replace(ChunkyPNG::Canvas.new(1,1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
154
+ expect { subject.replace(ChunkyPNG::Canvas.new(1, 1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
154
155
  end
155
156
  end
156
157
 
157
- describe '#replace!' do
158
+ describe "#replace!" do
158
159
  it "should replace the correct pixels" do
159
160
  subcanvas = ChunkyPNG::Canvas.new(3, 2, ChunkyPNG::Color.rgb(200, 255, 0))
160
161
  subject.replace!(subcanvas, 5, 4)
161
- expect(subject).to eql reference_canvas('replaced')
162
+ expect(subject).to eql reference_canvas("replaced")
162
163
  end
163
164
 
164
165
  it "should return itself" do
165
- expect(subject.replace!(ChunkyPNG::Canvas.new(1,1))).to equal(subject)
166
+ expect(subject.replace!(ChunkyPNG::Canvas.new(1, 1))).to equal(subject)
166
167
  end
167
168
 
168
169
  it "should raise an exception when the pixels to replace fall outside the image" do
169
- expect { subject.replace!(ChunkyPNG::Canvas.new(1,1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
170
+ expect { subject.replace!(ChunkyPNG::Canvas.new(1, 1), 16, 16) }.to raise_error(ChunkyPNG::OutOfBounds)
170
171
  end
171
172
  end
172
173
  end
173
174
 
174
175
  describe ChunkyPNG::Canvas::Operations do
175
-
176
176
  subject { ChunkyPNG::Canvas.new(2, 3, [1, 2, 3, 4, 5, 6]) }
177
177
 
178
- describe '#flip_horizontally!' do
178
+ describe "#flip_horizontally!" do
179
179
  it "should flip the pixels horizontally in place" do
180
180
  subject.flip_horizontally!
181
181
  expect(subject).to eql ChunkyPNG::Canvas.new(2, 3, [5, 6, 3, 4, 1, 2])
@@ -186,7 +186,7 @@ describe ChunkyPNG::Canvas::Operations do
186
186
  end
187
187
  end
188
188
 
189
- describe '#flip_horizontally' do
189
+ describe "#flip_horizontally" do
190
190
  it "should flip the pixels horizontally" do
191
191
  expect(subject.flip_horizontally).to eql ChunkyPNG::Canvas.new(2, 3, [5, 6, 3, 4, 1, 2])
192
192
  end
@@ -200,7 +200,7 @@ describe ChunkyPNG::Canvas::Operations do
200
200
  end
201
201
  end
202
202
 
203
- describe '#flip_vertically!' do
203
+ describe "#flip_vertically!" do
204
204
  it "should flip the pixels vertically" do
205
205
  subject.flip_vertically!
206
206
  expect(subject).to eql ChunkyPNG::Canvas.new(2, 3, [2, 1, 4, 3, 6, 5])
@@ -211,7 +211,7 @@ describe ChunkyPNG::Canvas::Operations do
211
211
  end
212
212
  end
213
213
 
214
- describe '#flip_vertically' do
214
+ describe "#flip_vertically" do
215
215
  it "should flip the pixels vertically" do
216
216
  expect(subject.flip_vertically).to eql ChunkyPNG::Canvas.new(2, 3, [2, 1, 4, 3, 6, 5])
217
217
  end
@@ -225,9 +225,9 @@ describe ChunkyPNG::Canvas::Operations do
225
225
  end
226
226
  end
227
227
 
228
- describe '#rotate_left' do
228
+ describe "#rotate_left" do
229
229
  it "should rotate the pixels 90 degrees counter-clockwise" do
230
- expect(subject.rotate_left).to eql ChunkyPNG::Canvas.new(3, 2, [2, 4, 6, 1, 3, 5] )
230
+ expect(subject.rotate_left).to eql ChunkyPNG::Canvas.new(3, 2, [2, 4, 6, 1, 3, 5])
231
231
  end
232
232
 
233
233
  it "should not return itself" do
@@ -251,10 +251,10 @@ describe ChunkyPNG::Canvas::Operations do
251
251
  end
252
252
  end
253
253
 
254
- describe '#rotate_left!' do
254
+ describe "#rotate_left!" do
255
255
  it "should rotate the pixels 90 degrees clockwise" do
256
256
  subject.rotate_left!
257
- expect(subject).to eql ChunkyPNG::Canvas.new(3, 2, [2, 4, 6, 1, 3, 5] )
257
+ expect(subject).to eql ChunkyPNG::Canvas.new(3, 2, [2, 4, 6, 1, 3, 5])
258
258
  end
259
259
 
260
260
  it "should return itself" do
@@ -262,14 +262,14 @@ describe ChunkyPNG::Canvas::Operations do
262
262
  end
263
263
 
264
264
  it "should change the image dimensions" do
265
- expect { subject.rotate_left! }.to change { subject.dimension }.
266
- from(ChunkyPNG::Dimension('2x3')).to(ChunkyPNG::Dimension('3x2'))
265
+ expect { subject.rotate_left! }.to change { subject.dimension }
266
+ .from(ChunkyPNG::Dimension("2x3")).to(ChunkyPNG::Dimension("3x2"))
267
267
  end
268
268
  end
269
269
 
270
- describe '#rotate_right' do
270
+ describe "#rotate_right" do
271
271
  it "should rotate the pixels 90 degrees clockwise" do
272
- expect(subject.rotate_right).to eql ChunkyPNG::Canvas.new(3, 2, [5, 3, 1, 6, 4, 2] )
272
+ expect(subject.rotate_right).to eql ChunkyPNG::Canvas.new(3, 2, [5, 3, 1, 6, 4, 2])
273
273
  end
274
274
 
275
275
  it "should not return itself" do
@@ -293,10 +293,10 @@ describe ChunkyPNG::Canvas::Operations do
293
293
  end
294
294
  end
295
295
 
296
- describe '#rotate_right!' do
296
+ describe "#rotate_right!" do
297
297
  it "should rotate the pixels 90 degrees clockwise" do
298
298
  subject.rotate_right!
299
- expect(subject).to eql ChunkyPNG::Canvas.new(3, 2, [5, 3, 1, 6, 4, 2] )
299
+ expect(subject).to eql ChunkyPNG::Canvas.new(3, 2, [5, 3, 1, 6, 4, 2])
300
300
  end
301
301
 
302
302
  it "should return itself" do
@@ -304,12 +304,13 @@ describe ChunkyPNG::Canvas::Operations do
304
304
  end
305
305
 
306
306
  it "should change the image dimensions" do
307
- expect { subject.rotate_right! }.to change { subject.dimension }.
308
- from(ChunkyPNG::Dimension('2x3')).to(ChunkyPNG::Dimension('3x2'))
307
+ expect { subject.rotate_right! }.to change { subject.dimension }
308
+ .from(ChunkyPNG::Dimension("2x3"))
309
+ .to(ChunkyPNG::Dimension("3x2"))
309
310
  end
310
311
  end
311
312
 
312
- describe '#rotate_180' do
313
+ describe "#rotate_180" do
313
314
  it "should rotate the pixels 180 degrees" do
314
315
  expect(subject.rotate_180).to eql ChunkyPNG::Canvas.new(2, 3, [6, 5, 4, 3, 2, 1])
315
316
  end
@@ -323,7 +324,7 @@ describe ChunkyPNG::Canvas::Operations do
323
324
  end
324
325
  end
325
326
 
326
- describe '#rotate_180!' do
327
+ describe "#rotate_180!" do
327
328
  it "should rotate the pixels 180 degrees" do
328
329
  subject.rotate_180!
329
330
  expect(subject).to eql ChunkyPNG::Canvas.new(2, 3, [6, 5, 4, 3, 2, 1])
@@ -336,7 +337,6 @@ describe ChunkyPNG::Canvas::Operations do
336
337
  end
337
338
 
338
339
  describe ChunkyPNG::Canvas::Operations do
339
-
340
340
  subject { ChunkyPNG::Canvas.new(4, 4).rect(1, 1, 2, 2, 255, 255) }
341
341
 
342
342
  describe "#trim" do
@@ -368,19 +368,19 @@ describe ChunkyPNG::Canvas::Operations do
368
368
  end
369
369
 
370
370
  it "should change the image dimensions" do
371
- expect { subject.trim! }.to change { subject.dimension }.
372
- from(ChunkyPNG::Dimension('4x4')).to(ChunkyPNG::Dimension('2x2'))
371
+ expect { subject.trim! }.to change { subject.dimension }
372
+ .from(ChunkyPNG::Dimension("4x4"))
373
+ .to(ChunkyPNG::Dimension("2x2"))
373
374
  end
374
375
  end
375
376
  end
376
377
 
377
378
  describe ChunkyPNG::Canvas::Operations do
378
-
379
379
  subject { ChunkyPNG::Canvas.new(4, 4) }
380
380
 
381
381
  describe "#border" do
382
382
  it "should add the border" do
383
- expect(subject.border(2)).to eql reference_canvas('operations_border')
383
+ expect(subject.border(2)).to eql reference_canvas("operations_border")
384
384
  end
385
385
 
386
386
  it "should not return itself" do
@@ -395,7 +395,7 @@ describe ChunkyPNG::Canvas::Operations do
395
395
  describe "#border!" do
396
396
  it "should add the border" do
397
397
  subject.border!(2)
398
- expect(subject).to eql reference_canvas('operations_border')
398
+ expect(subject).to eql reference_canvas("operations_border")
399
399
  end
400
400
 
401
401
  it "should return itself" do
@@ -408,8 +408,9 @@ describe ChunkyPNG::Canvas::Operations do
408
408
  end
409
409
 
410
410
  it "should change the image dimensions" do
411
- expect { subject.border!(1) }.to change { subject.dimension }.
412
- from(ChunkyPNG::Dimension('4x4')).to(ChunkyPNG::Dimension('6x6'))
411
+ expect { subject.border!(1) }.to change { subject.dimension }
412
+ .from(ChunkyPNG::Dimension("4x4"))
413
+ .to(ChunkyPNG::Dimension("6x6"))
413
414
  end
414
415
  end
415
416
  end
@@ -1,97 +1,96 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe ChunkyPNG::Canvas::PNGDecoding do
4
4
  include ChunkyPNG::Canvas::PNGDecoding
5
5
 
6
- describe '#decode_png_scanline' do
7
-
6
+ describe "#decode_png_scanline" do
8
7
  it "should decode a line without filtering as is" do
9
- stream = [ChunkyPNG::FILTER_NONE, 255, 255, 255, 255, 255, 255, 255, 255, 255].pack('C*')
8
+ stream = [ChunkyPNG::FILTER_NONE, 255, 255, 255, 255, 255, 255, 255, 255, 255].pack("C*")
10
9
  decode_png_str_scanline(stream, 0, nil, 9, 3)
11
- expect(stream.unpack('@1C*')).to eql [255, 255, 255, 255, 255, 255, 255, 255, 255]
10
+ expect(stream.unpack("@1C*")).to eql [255, 255, 255, 255, 255, 255, 255, 255, 255]
12
11
  end
13
12
 
14
13
  it "should decode a line with sub filtering correctly" do
15
14
  # all white pixels
16
- stream = [ChunkyPNG::FILTER_SUB, 255, 255, 255, 0, 0, 0, 0, 0, 0].pack('C*')
15
+ stream = [ChunkyPNG::FILTER_SUB, 255, 255, 255, 0, 0, 0, 0, 0, 0].pack("C*")
17
16
  decode_png_str_scanline(stream, 0, nil, 9, 3)
18
- expect(stream.unpack('@1C*')).to eql [255, 255, 255, 255, 255, 255, 255, 255, 255]
17
+ expect(stream.unpack("@1C*")).to eql [255, 255, 255, 255, 255, 255, 255, 255, 255]
19
18
 
20
19
  # all black pixels
21
- stream = [ChunkyPNG::FILTER_SUB, 0, 0, 0, 0, 0, 0, 0, 0, 0].pack('C*')
20
+ stream = [ChunkyPNG::FILTER_SUB, 0, 0, 0, 0, 0, 0, 0, 0, 0].pack("C*")
22
21
  decode_png_str_scanline(stream, 0, nil, 9, 3)
23
- expect(stream.unpack('@1C*')).to eql [0, 0, 0, 0, 0, 0, 0, 0, 0]
22
+ expect(stream.unpack("@1C*")).to eql [0, 0, 0, 0, 0, 0, 0, 0, 0]
24
23
 
25
24
  # various colors
26
- stream = [ChunkyPNG::FILTER_SUB, 255, 0, 45, 0, 255, 0, 112, 200, 178].pack('C*')
25
+ stream = [ChunkyPNG::FILTER_SUB, 255, 0, 45, 0, 255, 0, 112, 200, 178].pack("C*")
27
26
  decode_png_str_scanline(stream, 0, nil, 9, 3)
28
- expect(stream.unpack('@1C*')).to eql [255, 0, 45, 255, 255, 45, 111, 199, 223]
27
+ expect(stream.unpack("@1C*")).to eql [255, 0, 45, 255, 255, 45, 111, 199, 223]
29
28
  end
30
29
 
31
30
  it "should decode a line with up filtering correctly" do
32
31
  # previous line has various pixels
33
32
  previous = [ChunkyPNG::FILTER_UP, 255, 255, 255, 127, 127, 127, 0, 0, 0]
34
33
  current = [ChunkyPNG::FILTER_UP, 0, 127, 255, 0, 127, 255, 0, 127, 255]
35
- stream = (previous + current).pack('C*')
34
+ stream = (previous + current).pack("C*")
36
35
  decode_png_str_scanline(stream, 10, 0, 9, 3)
37
- expect(stream.unpack('@11C9')).to eql [255, 126, 254, 127, 254, 126, 0, 127, 255]
36
+ expect(stream.unpack("@11C9")).to eql [255, 126, 254, 127, 254, 126, 0, 127, 255]
38
37
  end
39
38
 
40
39
  it "should decode a line with average filtering correctly" do
41
- previous = [ChunkyPNG::FILTER_AVERAGE, 10, 20, 30, 40, 50, 60, 70, 80, 80, 100, 110, 120]
42
- current = [ChunkyPNG::FILTER_AVERAGE, 0, 0, 10, 23, 15, 13, 23, 63, 38, 60, 253, 53]
43
- stream = (previous + current).pack('C*')
40
+ previous = [ChunkyPNG::FILTER_AVERAGE, 10, 20, 30, 40, 50, 60, 70, 80, 80, 100, 110, 120] # rubocop:disable Layout/ExtraSpacing
41
+ current = [ChunkyPNG::FILTER_AVERAGE, 0, 0, 10, 23, 15, 13, 23, 63, 38, 60, 253, 53] # rubocop:disable Layout/ExtraSpacing
42
+ stream = (previous + current).pack("C*")
44
43
  decode_png_str_scanline(stream, 13, 0, 12, 3)
45
- expect(stream.unpack('@14C12')).to eql [5, 10, 25, 45, 45, 55, 80, 125, 105, 150, 114, 165]
44
+ expect(stream.unpack("@14C12")).to eql [5, 10, 25, 45, 45, 55, 80, 125, 105, 150, 114, 165]
46
45
  end
47
46
 
48
47
  it "should decode a line with paeth filtering correctly" do
49
- previous = [ChunkyPNG::FILTER_PAETH, 10, 20, 30, 40, 50, 60, 70, 80, 80, 100, 110, 120]
50
- current = [ChunkyPNG::FILTER_PAETH, 0, 0, 10, 20, 10, 0, 0, 40, 10, 20, 190, 0]
51
- stream = (previous + current).pack('C*')
48
+ previous = [ChunkyPNG::FILTER_PAETH, 10, 20, 30, 40, 50, 60, 70, 80, 80, 100, 110, 120] # rubocop:disable Layout/ExtraSpacing
49
+ current = [ChunkyPNG::FILTER_PAETH, 0, 0, 10, 20, 10, 0, 0, 40, 10, 20, 190, 0] # rubocop:disable Layout/ExtraSpacing
50
+ stream = (previous + current).pack("C*")
52
51
  decode_png_str_scanline(stream, 13, 0, 12, 3)
53
- expect(stream.unpack('@14C12')).to eql [10, 20, 40, 60, 60, 60, 70, 120, 90, 120, 54, 120]
52
+ expect(stream.unpack("@14C12")).to eql [10, 20, 40, 60, 60, 60, 70, 120, 90, 120, 54, 120]
54
53
  end
55
54
  end
56
55
 
57
- describe '#decode_png_extract_4bit_value' do
56
+ describe "#decode_png_extract_4bit_value" do
58
57
  it "should extract the high bits successfully" do
59
- expect(decode_png_extract_4bit_value('10010110'.to_i(2), 0)).to eql '1001'.to_i(2)
58
+ expect(decode_png_extract_4bit_value("10010110".to_i(2), 0)).to eql "1001".to_i(2)
60
59
  end
61
60
 
62
61
  it "should extract the low bits successfully" do
63
- expect(decode_png_extract_4bit_value('10010110'.to_i(2), 17)).to eql '0110'.to_i(2)
62
+ expect(decode_png_extract_4bit_value("10010110".to_i(2), 17)).to eql "0110".to_i(2)
64
63
  end
65
64
  end
66
65
 
67
- describe '#decode_png_extract_2bit_value' do
66
+ describe "#decode_png_extract_2bit_value" do
68
67
  it "should extract the first 2 bits successfully" do
69
- expect(decode_png_extract_2bit_value('10010110'.to_i(2), 0)).to eql '10'.to_i(2)
68
+ expect(decode_png_extract_2bit_value("10010110".to_i(2), 0)).to eql "10".to_i(2)
70
69
  end
71
70
 
72
71
  it "should extract the second 2 bits successfully" do
73
- expect(decode_png_extract_2bit_value('10010110'.to_i(2), 5)).to eql '01'.to_i(2)
72
+ expect(decode_png_extract_2bit_value("10010110".to_i(2), 5)).to eql "01".to_i(2)
74
73
  end
75
74
 
76
75
  it "should extract the third 2 bits successfully" do
77
- expect(decode_png_extract_2bit_value('10010110'.to_i(2), 2)).to eql '01'.to_i(2)
76
+ expect(decode_png_extract_2bit_value("10010110".to_i(2), 2)).to eql "01".to_i(2)
78
77
  end
79
78
 
80
79
  it "should extract the low two bits successfully" do
81
- expect(decode_png_extract_2bit_value('10010110'.to_i(2), 7)).to eql '10'.to_i(2)
80
+ expect(decode_png_extract_2bit_value("10010110".to_i(2), 7)).to eql "10".to_i(2)
82
81
  end
83
82
  end
84
83
 
85
- describe '#decode_png_extract_1bit_value' do
84
+ describe "#decode_png_extract_1bit_value" do
86
85
  it "should extract all separate bits correctly" do
87
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 0)).to eql 1
88
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 1)).to eql 0
89
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 2)).to eql 0
90
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 3)).to eql 1
91
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 4)).to eql 0
92
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 5)).to eql 1
93
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 6)).to eql 1
94
- expect(decode_png_extract_1bit_value('10010110'.to_i(2), 7)).to eql 0
86
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 0)).to eql 1
87
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 1)).to eql 0
88
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 2)).to eql 0
89
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 3)).to eql 1
90
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 4)).to eql 0
91
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 5)).to eql 1
92
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 6)).to eql 1
93
+ expect(decode_png_extract_1bit_value("10010110".to_i(2), 7)).to eql 0
95
94
  end
96
95
  end
97
96
  end