png 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ed4cb5ea785c269b2b1528b2630d99b24a3bc99a06c4a50961dc3c681959a169
4
+ data.tar.gz: f0a06a6423b7159878cbf5ed844e3600e32fec055e9fa46ace12e7d2329a474d
5
+ SHA512:
6
+ metadata.gz: f281dfb508c5c4ccc5bd82b69e69266b8931e198fa0a8deef3b47d3d13e22ca75b66b9df0d4d37ab44b9581fe3db8b9ef74a00f75a274afa6c1da9a0e8e49f0e
7
+ data.tar.gz: 6b9c5ad8ba80a4c8ed527b56c271de1529b541c9b0f4dac533dc1568a2cf9263f3800ff51336de65e6d3aa94f2c7f7747dacbfd852108495716e69858efa95e9
checksums.yaml.gz.sig ADDED
Binary file
data/History.txt CHANGED
@@ -1,3 +1,29 @@
1
+ === 1.3.0 / 2024-08-27
2
+
3
+ Daaaamn... another 9 years! Means it is really stable, right?
4
+
5
+ * 4 minor enhancements:
6
+
7
+ * Removed a bunch of ancient cruft: getbyte, old 1.8 compile hacks, etc.
8
+ * Removed a bunch of forced deletions of ~/.ruby_inline in test. Cargo culting?
9
+ * Removed binary encoding on all source files and called #b for the few needed binary strings.
10
+ * Removed clean as a dependency for test, speeding up tests 3x.
11
+
12
+ * 1 bug fix:
13
+
14
+ * Fix errors created when string literals are frozen.
15
+
16
+ === 1.2.1 / 2015-04-13
17
+
18
+ WOW! SIX YEARS!!
19
+
20
+ * 4 bug fixes:
21
+
22
+ * 1.9: quelled warnings
23
+ * 2.0: Added ascii-8bit encoding to test file to bypass new utf-8 default
24
+ * Rakefile cleanup. Use isolate. Nuke pathing.
25
+ * Removed dead rubyforge setting in Rakefile
26
+
1
27
  === 1.2.0 / 2009-06-23
2
28
 
3
29
  * 26 minor enhancements:
@@ -56,5 +82,7 @@
56
82
 
57
83
  === 1.0.0 / 2006-09-31
58
84
 
59
- * Birthday!
85
+ * 1 major enhancement:
86
+
87
+ * Birthday!
60
88
 
data/README.txt CHANGED
@@ -1,6 +1,8 @@
1
1
  = PNG
2
2
 
3
- * http://seattlerb.rubyforge.org/
3
+ home :: https://github.com/seattlerb/png
4
+ bugs :: https://github.com/seattlerb/png/issues
5
+ doco :: http://docs.seattlerb.org/png
4
6
 
5
7
  == DESCRIPTION
6
8
 
@@ -14,20 +16,20 @@ without any C libraries.
14
16
  * Basic PNG reader as well (someday it might do compositing and the like!).
15
17
  * Almost pure ruby, does require a compiler.
16
18
 
17
- == SYNOPSYS
19
+ == SYNOPSIS
20
+
21
+ require "png"
18
22
 
19
- require 'png'
20
-
21
23
  canvas = PNG::Canvas.new 200, 200
22
-
24
+
23
25
  # Set a point to a color
24
26
  canvas[100, 100] = PNG::Color::Black
25
-
27
+
26
28
  # draw an anti-aliased line
27
29
  canvas.line 50, 50, 100, 50, PNG::Color::Blue
28
-
30
+
29
31
  png = PNG.new canvas
30
- png.save 'blah.png'
32
+ png.save "blah.png"
31
33
 
32
34
  == REQUIREMENTS
33
35
 
@@ -37,13 +39,13 @@ without any C libraries.
37
39
 
38
40
  == INSTALL
39
41
 
40
- + sudo gem install -y png
42
+ + sudo gem install png
41
43
 
42
44
  == LICENSE
43
45
 
44
46
  (The MIT License)
45
47
 
46
- Copyright (c) 2006-2007 Ryan Davis, Eric Hodel, Zen Spider Software
48
+ Copyright (c) Ryan Davis, Eric Hodel, Zen Spider Software
47
49
 
48
50
  Permission is hereby granted, free of charge, to any person obtaining
49
51
  a copy of this software and associated documentation files (the
data/Rakefile CHANGED
@@ -1,18 +1,15 @@
1
- $: << "../../RubyInline/dev/lib"
2
- $: << "../../hoe/dev/lib"
1
+ require "hoe"
3
2
 
4
- require 'hoe'
5
-
6
- Hoe.add_include_dirs "../../hoe/dev/lib" # HACK remove
7
- Hoe.add_include_dirs "../../RubyInline/dev/lib", "lib"
8
3
  Hoe.plugin :seattlerb
9
4
  Hoe.plugin :inline
5
+ Hoe.plugin :isolate
10
6
 
11
- Hoe.spec 'png' do
12
- developer 'Ryan Davis', 'ryand-ruby@zenspider.com'
13
- developer 'Eric Hodel', 'drbrain@segment7.net'
7
+ Hoe.spec "png" do
8
+ developer "Ryan Davis", "ryand-ruby@zenspider.com"
14
9
 
15
- self.rubyforge_name = 'seattlerb'
10
+ license "MIT"
16
11
  end
17
12
 
13
+ task(:test).prerequisites.delete "clean" # TODO: consider removing from hoe?
14
+
18
15
  # vim: syntax=Ruby
data/example/lines.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/local/bin/ruby -w
2
2
 
3
- require 'png'
4
- require 'png/font'
3
+ require "png"
4
+ require "png/font"
5
5
 
6
6
  canvas = PNG::Canvas.new 201, 201, PNG::Color::White
7
7
 
@@ -13,8 +13,8 @@ canvas.line 100, 50, 200, 75, PNG::Color::Green
13
13
  canvas.line 0, 200, 200, 0, PNG::Color::Black
14
14
  canvas.line 0, 200, 150, 0, PNG::Color::Red
15
15
 
16
- canvas.annotate 'Hello World', 10, 10
16
+ canvas.annotate "Hello World", 10, 10
17
17
 
18
18
  png = PNG.new canvas
19
- png.save 'blah.png'
19
+ png.save "blah.png"
20
20
  `open blah.png`
data/example/profile.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'png'
1
+ require "png"
2
2
 
3
3
  class PNGProfile
4
4
 
@@ -1,4 +1,4 @@
1
- require 'png'
1
+ require "png"
2
2
 
3
3
  class PNGProfileLine
4
4
 
data/lib/png/font.rb CHANGED
@@ -1,14 +1,12 @@
1
- # encoding: BINARY
2
-
3
- require 'png/reader'
1
+ require "png/reader"
4
2
 
5
3
  ##
6
4
  # Implements a simple bitmap font by extracting letters from a PNG.
7
5
 
8
6
  class PNG::Font
9
- LETTERS = (('A'..'Z').to_a +
10
- ('a'..'z').to_a +
11
- ('0'..'9').to_a + [" "] * 16 +
7
+ LETTERS = (("A".."Z").to_a +
8
+ ("a".."z").to_a +
9
+ ("0".."9").to_a + [" "] * 16 +
12
10
  '({[<!@#$%^&*?_+-=;,"/~>]})'.split(//))
13
11
 
14
12
  attr_reader :height, :width, :canvas
@@ -17,7 +15,7 @@ class PNG::Font
17
15
  @@default ||= new(File.join(File.dirname(__FILE__), "default_font.png"))
18
16
  end
19
17
 
20
- def initialize(png_file)
18
+ def initialize png_file
21
19
  @canvas = PNG.load_file png_file
22
20
  @height, @width = canvas.height / 4, canvas.width / 26
23
21
  @cache = {}
@@ -50,8 +48,8 @@ class PNG::Canvas
50
48
  #
51
49
  # require 'png/font'
52
50
 
53
- def annotate(string, x, y,
54
- font = PNG::Font.default, align = :left, style = :overwrite)
51
+ def annotate string, x, y,
52
+ font = PNG::Font.default, align = :left, style = :overwrite
55
53
  case align
56
54
  when :left then
57
55
  # do nothing
data/lib/png/pie.rb CHANGED
@@ -1,12 +1,10 @@
1
- # encoding: BINARY
2
-
3
- require 'png'
1
+ require "png"
4
2
 
5
3
  class PNG
6
4
  FULL = 360.0
7
5
  HALF = FULL / 2
8
6
 
9
- def self.angle(x, y)
7
+ def self.angle x, y
10
8
  return 0 if x == 0 and y == 0
11
9
  rad_to_deg = 180.0 / Math::PI
12
10
  (Math.atan2(-y, x) * rad_to_deg + 90) % 360
@@ -20,25 +18,26 @@ class PNG
20
18
  # system 'open pie.png'
21
19
 
22
20
  def self.pie_chart(diameter, pct_green,
23
- good_color=PNG::Color::Green, bad_color=PNG::Color::Red)
24
- diameter += 1 if diameter % 2 == 0
21
+ good_color = PNG::Color::Green,
22
+ bad_color = PNG::Color::Red)
23
+ diameter += 1 if diameter.even?
25
24
  radius = (diameter / 2.0).to_i
26
25
  pct_in_deg = FULL * pct_green
27
- rad_to_deg = HALF / Math::PI
28
26
 
29
27
  canvas = PNG::Canvas.new(diameter, diameter)
30
28
 
31
29
  (-radius..radius).each do |x|
32
30
  (-radius..radius).each do |y|
33
31
  magnitude = Math.sqrt(x*x + y*y)
34
- if magnitude <= radius then
35
- angle = PNG.angle(x, y)
36
- color = ((angle <= pct_in_deg) ? good_color : bad_color)
37
32
 
38
- rx, ry = x+radius, y+radius
33
+ next if magnitude > radius
34
+
35
+ angle = PNG.angle(x, y)
36
+ color = ((angle <= pct_in_deg) ? good_color : bad_color)
37
+
38
+ rx, ry = x+radius, y+radius
39
39
 
40
- canvas[ rx, ry ] = color
41
- end
40
+ canvas[rx, ry] = color
42
41
  end
43
42
  end
44
43
 
data/lib/png/reader.rb CHANGED
@@ -1,20 +1,18 @@
1
- # encoding: BINARY
2
-
3
- require 'png'
4
- require 'enumerator'
1
+ require "png"
2
+ require "enumerator"
5
3
 
6
4
  class PNG
7
5
  def self.load_file path, metadata_only = false
8
- file = File.open(path, 'rb') { |f| f.read }
6
+ file = File.open(path, "rb") { |f| f.read }
9
7
  self.load file, metadata_only
10
8
  end
11
9
 
12
10
  def self.load png, metadata_only = false
13
11
  png = png.dup
14
12
  signature = png.slice! 0, 8
15
- raise ArgumentError, 'Invalid PNG signature' unless signature == SIGNATURE
13
+ raise ArgumentError, "Invalid PNG signature" unless signature == SIGNATURE
16
14
 
17
- ihdr = read_chunk 'IHDR', png
15
+ ihdr = read_chunk "IHDR", png
18
16
 
19
17
  bit_depth, color_type, width, height = read_IHDR ihdr, metadata_only
20
18
 
@@ -22,17 +20,17 @@ class PNG
22
20
 
23
21
  canvas = PNG::Canvas.new width, height
24
22
 
25
- type = png.slice(4, 4).unpack('a4').first
26
- read_chunk type, png if type == 'iCCP' # Ignore color profile
23
+ type = png.slice(4, 4).unpack("a4").first
24
+ read_chunk type, png if type == "iCCP" # Ignore color profile
27
25
 
28
- read_IDAT read_chunk('IDAT', png), bit_depth, color_type, canvas
29
- read_chunk 'IEND', png
26
+ read_IDAT read_chunk("IDAT", png), bit_depth, color_type, canvas
27
+ read_chunk "IEND", png
30
28
 
31
29
  canvas
32
30
  end
33
31
 
34
32
  def self.read_chunk expected_type, png
35
- size, type = png.slice!(0, 8).unpack 'Na4'
33
+ size, type = png.slice!(0, 8).unpack "Na4"
36
34
  data, crc = png.slice!(0, size + 4).unpack "a#{size}N"
37
35
 
38
36
  check_crc type, data, crc
@@ -40,7 +38,7 @@ class PNG
40
38
  raise ArgumentError, "Expected #{expected_type} chunk, not #{type}" unless
41
39
  type == expected_type
42
40
 
43
- return data
41
+ data
44
42
  end
45
43
 
46
44
  def self.check_crc type, data, crc
@@ -49,7 +47,7 @@ class PNG
49
47
  end
50
48
 
51
49
  def self.read_IHDR data, metadata_only = false
52
- width, height, bit_depth, color_type, *rest = data.unpack 'N2C5'
50
+ width, height, bit_depth, color_type, *rest = data.unpack "N2C5"
53
51
 
54
52
  unless metadata_only then
55
53
  raise ArgumentError, "Wrong bit depth: #{bit_depth}" unless
@@ -64,7 +62,7 @@ class PNG
64
62
  end
65
63
 
66
64
  def self.read_IDAT data, bit_depth, color_type, canvas
67
- data = Zlib::Inflate.inflate(data).unpack 'C*'
65
+ data = Zlib::Inflate.inflate(data).unpack "C*"
68
66
 
69
67
  pixel_size = color_type == RGBA ? 4 : 3
70
68
 
data/lib/png.rb CHANGED
@@ -1,14 +1,5 @@
1
- # encoding: BINARY
2
-
3
- require 'rubygems'
4
- require 'zlib'
5
- require 'inline'
6
-
7
- unless "".respond_to? :getbyte then
8
- class String
9
- alias :getbyte :[]
10
- end
11
- end
1
+ require "zlib"
2
+ require "inline"
12
3
 
13
4
  class String # :nodoc: # ZenTest SKIP
14
5
  inline do |builder|
@@ -16,6 +7,10 @@ class String # :nodoc: # ZenTest SKIP
16
7
  unsigned long png_crc() {
17
8
  static unsigned long crc[256];
18
9
  static char crc_table_computed = 0;
10
+ unsigned long c = 0xffffffff;
11
+ size_t len = RSTRING_LEN(self);
12
+ char * s = StringValuePtr(self);
13
+ unsigned i;
19
14
 
20
15
  if (! crc_table_computed) {
21
16
  unsigned long c;
@@ -31,11 +26,6 @@ class String # :nodoc: # ZenTest SKIP
31
26
  crc_table_computed = 1;
32
27
  }
33
28
 
34
- unsigned long c = 0xffffffff;
35
- unsigned len = RSTRING_LEN(self);
36
- char * s = StringValuePtr(self);
37
- unsigned i;
38
-
39
29
  for (i = 0; i < len; i++) {
40
30
  c = crc[(c ^ s[i]) & 0xff] ^ (c >> 8);
41
31
  }
@@ -45,7 +35,7 @@ class String # :nodoc: # ZenTest SKIP
45
35
  EOM
46
36
  end
47
37
  rescue CompilationError => e
48
- warn "COMPLIATION ERROR: #{e}"
38
+ warn "COMPILATION ERROR: #{e}"
49
39
 
50
40
  unless defined? @@crc then
51
41
  @@crc = Array.new(256)
@@ -61,12 +51,12 @@ rescue CompilationError => e
61
51
  ##
62
52
  # Calculates a CRC using the algorithm in the PNG specification.
63
53
 
64
- def png_crc()
54
+ def png_crc
65
55
  c = 0xffffffff
66
56
  each_byte do |b|
67
57
  c = @@crc[(c^b) & 0xff] ^ (c >> 8)
68
58
  end
69
- return c ^ 0xffffffff
59
+ c ^ 0xffffffff
70
60
  end
71
61
  end
72
62
 
@@ -99,7 +89,7 @@ end
99
89
  # bottom left.
100
90
 
101
91
  class PNG
102
- VERSION = '1.2.0'
92
+ VERSION = "1.3.0"
103
93
  SIGNATURE = [137, 80, 78, 71, 13, 10, 26, 10].pack("C*")
104
94
 
105
95
  # Color Types:
@@ -118,21 +108,15 @@ class PNG
118
108
 
119
109
  begin
120
110
  inline do |builder|
121
- if RUBY_VERSION < "1.8.6" then
122
- builder.prefix <<-EOM
123
- #define RARRAY_PTR(s) (RARRAY(s)->ptr)
124
- #define RARRAY_LEN(s) (RARRAY(s)->len)
125
- EOM
126
- end
127
-
128
111
  builder.c <<-EOM
129
112
  VALUE png_join() {
130
- int i, j;
131
- VALUE data = rb_iv_get(self, "@data");
132
- unsigned int data_len = RARRAY_LEN(data);
133
- unsigned int row_len = RARRAY_LEN(RARRAY_PTR(data)[0]);
134
- unsigned long size = data_len * (1 + (row_len * 4));
135
- char * result = malloc(size);
113
+ size_t i, j;
114
+ VALUE data = rb_iv_get(self, "@data");
115
+ size_t data_len = RARRAY_LEN(data);
116
+ size_t row_len = RARRAY_LEN(RARRAY_PTR(data)[0]);
117
+ size_t size = data_len * (1 + (row_len * 4));
118
+ char * result = malloc(size);
119
+
136
120
  unsigned long idx = 0;
137
121
  for (i = 0; i < data_len; i++) {
138
122
  VALUE row = RARRAY_PTR(data)[i];
@@ -153,21 +137,21 @@ class PNG
153
137
  end
154
138
  rescue CompilationError
155
139
  def png_join
156
- @data.map { |row| "\0" + row.map { |p| p.values }.join }.join
140
+ @data.map { |row| "\0".b + row.map(&:values).join }.join
157
141
  end
158
142
  end
159
143
 
160
144
  ##
161
145
  # Creates a PNG chunk of type +type+ that contains +data+.
162
146
 
163
- def self.chunk(type, data="")
147
+ def self.chunk type, data = ""
164
148
  [data.size, type, data, (type + data).png_crc].pack("Na*a*N")
165
149
  end
166
150
 
167
151
  ##
168
152
  # Creates a new PNG object using +canvas+
169
153
 
170
- def initialize(canvas)
154
+ def initialize canvas
171
155
  @height = canvas.height
172
156
  @width = canvas.width
173
157
  @bits = 8
@@ -177,8 +161,8 @@ class PNG
177
161
  ##
178
162
  # Writes the PNG to +path+.
179
163
 
180
- def save(path)
181
- File.open path, 'wb' do |f|
164
+ def save path
165
+ File.open path, "wb" do |f|
182
166
  f.write to_blob
183
167
  end
184
168
  end
@@ -192,9 +176,9 @@ class PNG
192
176
  header = [@width, @height, @bits, RGBA, NONE, NONE, NONE]
193
177
 
194
178
  blob << SIGNATURE
195
- blob << PNG.chunk('IHDR', header.pack("N2C5"))
196
- blob << PNG.chunk('IDAT', Zlib::Deflate.deflate(self.png_join))
197
- blob << PNG.chunk('IEND', '')
179
+ blob << PNG.chunk("IHDR", header.pack("N2C5"))
180
+ blob << PNG.chunk("IDAT", Zlib::Deflate.deflate(self.png_join))
181
+ blob << PNG.chunk("IEND", "")
198
182
  blob.join
199
183
  end
200
184
 
@@ -204,7 +188,7 @@ class PNG
204
188
 
205
189
  class Color
206
190
 
207
- MAX=255
191
+ MAX = 0xFF
208
192
 
209
193
  attr_reader :values
210
194
 
@@ -214,7 +198,7 @@ class PNG
214
198
 
215
199
  def self.from str, name = nil
216
200
  str = "%08x" % str if Integer === str
217
- colors = str.scan(/[\da-f][\da-f]/i).map { |n| n.hex }
201
+ colors = str.scan(/\h\h/i).map(&:hex)
218
202
  colors << name
219
203
  self.new(*colors)
220
204
  end
@@ -223,7 +207,7 @@ class PNG
223
207
  # Creates a new color with values +red+, +green+, +blue+, and +alpha+.
224
208
 
225
209
  def initialize red, green, blue, alpha = MAX, name = nil
226
- @values = "%c%c%c%c" % [red, green, blue, alpha]
210
+ @values = "%c%c%c%c" % [red, green, blue, alpha].map(&:chr)
227
211
  @name = name
228
212
  end
229
213
 
@@ -255,8 +239,8 @@ class PNG
255
239
  # "Bitwise or" as applied to colors. Background color is
256
240
  # considered false.
257
241
 
258
- def | o
259
- self == Background ? o : self
242
+ def | other
243
+ self == Background ? other : self
260
244
  end
261
245
 
262
246
  def hash # :nodoc:
@@ -294,15 +278,17 @@ class PNG
294
278
  # Blends +color+ into this color returning a new blended color.
295
279
 
296
280
  def blend color
297
- return Color.new(((r + color.r) / 2), ((g + color.g) / 2),
298
- ((b + color.b) / 2), ((a + color.a) / 2))
281
+ Color.new(((r + color.r) / 2),
282
+ ((g + color.g) / 2),
283
+ ((b + color.b) / 2),
284
+ ((a + color.a) / 2))
299
285
  end
300
286
 
301
287
  ##
302
288
  # Returns a new color with an alpha value adjusted by +i+.
303
289
 
304
290
  def intensity i
305
- return Color.new(r,g,b,(a*i) >> 8)
291
+ Color.new(r, g, b, (a*i) >> 8)
306
292
  end
307
293
 
308
294
  def inspect # :nodoc:
@@ -318,11 +304,11 @@ class PNG
318
304
  # art!
319
305
 
320
306
  def to_ascii
321
- return ' ' if a == 0x00
307
+ return " " if a == 0x00
322
308
 
323
309
  brightness = (((r + g + b) / 3) * a) / 0xFF
324
310
 
325
- %w(.. ,, ++ 00)[brightness / 64]
311
+ %w[.. ,, ++ 00][brightness / 64]
326
312
  end
327
313
 
328
314
  def to_s # :nodoc:
@@ -341,26 +327,26 @@ class PNG
341
327
  unless s == 0.0 then
342
328
  h += 255 if h < 0
343
329
  h = h / 255.0 * 6.0
344
- s = s / 255.0
345
- v = v / 255.0
330
+ s /= 255.0
331
+ v /= 255.0
346
332
  i = h.floor
347
333
  f = h - i
348
334
  p = v * (1 - (s))
349
335
  q = v * (1 - (s * (f)))
350
336
  w = v * (1 - (s * (1-f)))
351
337
  r, g, b = case i
352
- when 0,6 then
353
- [ v, w, p ]
338
+ when 0, 6 then
339
+ [v, w, p]
354
340
  when 1 then
355
- [ q, v, p ]
341
+ [q, v, p]
356
342
  when 2 then
357
- [ p, v, w ]
343
+ [p, v, w]
358
344
  when 3 then
359
- [ p, q, v ]
345
+ [p, q, v]
360
346
  when 4 then
361
- [ w, p, v ]
347
+ [w, p, v]
362
348
  when 5 then
363
- [ v, p, q ]
349
+ [v, p, q]
364
350
  else
365
351
  raise [h, s, v, i, f, p, q, w].inspect
366
352
  end
@@ -420,7 +406,7 @@ class PNG
420
406
  def initialize width, height, background = Color::Background
421
407
  @width = width
422
408
  @height = height
423
- @data = Array.new(@height) { |x| Array.new(@width, background) }
409
+ @data = Array.new(@height) { Array.new(@width, background) }
424
410
  end
425
411
 
426
412
  ##
@@ -489,14 +475,14 @@ class PNG
489
475
  end
490
476
 
491
477
  def inspect # :nodoc:
492
- '#<%s %dx%d>' % [self.class, @width, @height]
478
+ "#<%s %dx%d>" % [self.class, @width, @height]
493
479
  end
494
480
 
495
481
  ##
496
482
  # Blends +color+ onto the color at point (+x+, +y+).
497
483
 
498
- def point(x, y, color)
499
- self[x,y] = self[x,y].blend(color)
484
+ def point x, y, color
485
+ self[x, y] = self[x, y].blend(color)
500
486
  end
501
487
 
502
488
  ##
@@ -504,7 +490,7 @@ class PNG
504
490
  #
505
491
  # http://en.wikipedia.org/wiki/Xiaolin_Wu's_line_algorithm
506
492
 
507
- def line(x0, y0, x1, y1, color)
493
+ def line x0, y0, x1, y1, color
508
494
  y0, y1, x0, x1 = y1, y0, x1, x0 if y0 > y1
509
495
  dx = x1 - x0
510
496
  sx = dx < 0 ? -1 : 1
@@ -513,7 +499,7 @@ class PNG
513
499
 
514
500
  # 'easy' cases
515
501
  if dy == 0 then
516
- Range.new(*[x0,x1].sort).each do |x|
502
+ Range.new(*[x0, x1].sort).each do |x|
517
503
  point(x, y0, color)
518
504
  end
519
505
  return
@@ -539,12 +525,12 @@ class PNG
539
525
  e_acc = 0
540
526
  if dy > dx then # vertical displacement
541
527
  e = (dx << 16) / dy
542
- (y0...y1-1).each do |i|
528
+ (y0...y1-1).each do
543
529
  e_acc_temp, e_acc = e_acc, (e_acc + e) & 0xFFFF
544
- x0 = x0 + sx if (e_acc <= e_acc_temp)
530
+ x0 += sx if (e_acc <= e_acc_temp)
545
531
  w = 0xFF-(e_acc >> 8)
546
532
  point(x0, y0, color.intensity(w))
547
- y0 = y0 + 1
533
+ y0 += 1
548
534
  point(x0 + sx, y0, color.intensity(0xFF-w))
549
535
  end
550
536
  point(x1, y1, color)
@@ -553,7 +539,7 @@ class PNG
553
539
 
554
540
  # horizontal displacement
555
541
  e = (dy << 16) / dx
556
- (dx - 1).downto(0) do |i|
542
+ (dx - 1).downto(0) do
557
543
  e_acc_temp, e_acc = e_acc, (e_acc + e) & 0xFFFF
558
544
  y0 += 1 if (e_acc <= e_acc_temp)
559
545
  w = 0xFF-(e_acc >> 8)
@@ -580,7 +566,7 @@ class PNG
580
566
  image << "\n"
581
567
  end
582
568
 
583
- return image.join
569
+ image.join
584
570
  end
585
571
  end # Canvas
586
572
  end