png 1.2.0 → 1.2.1
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 +7 -0
- checksums.yaml.gz.sig +4 -0
- data.tar.gz.sig +4 -2
- data/.gemtest +0 -0
- data/History.txt +14 -1
- data/README.txt +1 -1
- data/Rakefile +4 -11
- data/example/lines.rb +4 -4
- data/example/profile.rb +1 -1
- data/example/profile_lines.rb +1 -1
- data/lib/png.rb +54 -54
- data/lib/png/font.rb +7 -7
- data/lib/png/pie.rb +12 -11
- data/lib/png/reader.rb +13 -13
- data/test/test_png.rb +95 -107
- data/test/test_png_font.rb +15 -15
- data/test/test_png_reader.rb +19 -21
- metadata +92 -57
- metadata.gz.sig +0 -0
data/lib/png/pie.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# encoding: BINARY
|
2
2
|
|
3
|
-
require
|
3
|
+
require "png"
|
4
4
|
|
5
5
|
class PNG
|
6
6
|
FULL = 360.0
|
7
7
|
HALF = FULL / 2
|
8
8
|
|
9
|
-
def self.angle
|
9
|
+
def self.angle x, y
|
10
10
|
return 0 if x == 0 and y == 0
|
11
11
|
rad_to_deg = 180.0 / Math::PI
|
12
12
|
(Math.atan2(-y, x) * rad_to_deg + 90) % 360
|
@@ -20,25 +20,26 @@ class PNG
|
|
20
20
|
# system 'open pie.png'
|
21
21
|
|
22
22
|
def self.pie_chart(diameter, pct_green,
|
23
|
-
|
24
|
-
|
23
|
+
good_color = PNG::Color::Green,
|
24
|
+
bad_color = PNG::Color::Red)
|
25
|
+
diameter += 1 if diameter.even?
|
25
26
|
radius = (diameter / 2.0).to_i
|
26
27
|
pct_in_deg = FULL * pct_green
|
27
|
-
rad_to_deg = HALF / Math::PI
|
28
28
|
|
29
29
|
canvas = PNG::Canvas.new(diameter, diameter)
|
30
30
|
|
31
31
|
(-radius..radius).each do |x|
|
32
32
|
(-radius..radius).each do |y|
|
33
33
|
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
34
|
|
38
|
-
|
35
|
+
next if magnitude > radius
|
39
36
|
|
40
|
-
|
41
|
-
|
37
|
+
angle = PNG.angle(x, y)
|
38
|
+
color = ((angle <= pct_in_deg) ? good_color : bad_color)
|
39
|
+
|
40
|
+
rx, ry = x+radius, y+radius
|
41
|
+
|
42
|
+
canvas[rx, ry] = color
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
data/lib/png/reader.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# encoding: BINARY
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "png"
|
4
|
+
require "enumerator"
|
5
5
|
|
6
6
|
class PNG
|
7
7
|
def self.load_file path, metadata_only = false
|
8
|
-
file = File.open(path,
|
8
|
+
file = File.open(path, "rb") { |f| f.read }
|
9
9
|
self.load file, metadata_only
|
10
10
|
end
|
11
11
|
|
12
12
|
def self.load png, metadata_only = false
|
13
13
|
png = png.dup
|
14
14
|
signature = png.slice! 0, 8
|
15
|
-
raise ArgumentError,
|
15
|
+
raise ArgumentError, "Invalid PNG signature" unless signature == SIGNATURE
|
16
16
|
|
17
|
-
ihdr = read_chunk
|
17
|
+
ihdr = read_chunk "IHDR", png
|
18
18
|
|
19
19
|
bit_depth, color_type, width, height = read_IHDR ihdr, metadata_only
|
20
20
|
|
@@ -22,17 +22,17 @@ class PNG
|
|
22
22
|
|
23
23
|
canvas = PNG::Canvas.new width, height
|
24
24
|
|
25
|
-
type = png.slice(4, 4).unpack(
|
26
|
-
read_chunk type, png if type ==
|
25
|
+
type = png.slice(4, 4).unpack("a4").first
|
26
|
+
read_chunk type, png if type == "iCCP" # Ignore color profile
|
27
27
|
|
28
|
-
read_IDAT read_chunk(
|
29
|
-
read_chunk
|
28
|
+
read_IDAT read_chunk("IDAT", png), bit_depth, color_type, canvas
|
29
|
+
read_chunk "IEND", png
|
30
30
|
|
31
31
|
canvas
|
32
32
|
end
|
33
33
|
|
34
34
|
def self.read_chunk expected_type, png
|
35
|
-
size, type = png.slice!(0, 8).unpack
|
35
|
+
size, type = png.slice!(0, 8).unpack "Na4"
|
36
36
|
data, crc = png.slice!(0, size + 4).unpack "a#{size}N"
|
37
37
|
|
38
38
|
check_crc type, data, crc
|
@@ -40,7 +40,7 @@ class PNG
|
|
40
40
|
raise ArgumentError, "Expected #{expected_type} chunk, not #{type}" unless
|
41
41
|
type == expected_type
|
42
42
|
|
43
|
-
|
43
|
+
data
|
44
44
|
end
|
45
45
|
|
46
46
|
def self.check_crc type, data, crc
|
@@ -49,7 +49,7 @@ class PNG
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def self.read_IHDR data, metadata_only = false
|
52
|
-
width, height, bit_depth, color_type, *rest = data.unpack
|
52
|
+
width, height, bit_depth, color_type, *rest = data.unpack "N2C5"
|
53
53
|
|
54
54
|
unless metadata_only then
|
55
55
|
raise ArgumentError, "Wrong bit depth: #{bit_depth}" unless
|
@@ -64,7 +64,7 @@ class PNG
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def self.read_IDAT data, bit_depth, color_type, canvas
|
67
|
-
data = Zlib::Inflate.inflate(data).unpack
|
67
|
+
data = Zlib::Inflate.inflate(data).unpack "C*"
|
68
68
|
|
69
69
|
pixel_size = color_type == RGBA ? 4 : 3
|
70
70
|
|
data/test/test_png.rb
CHANGED
@@ -1,30 +1,32 @@
|
|
1
|
+
# encoding: ascii-8bit
|
2
|
+
|
1
3
|
dir = File.expand_path "~/.ruby_inline"
|
2
|
-
if
|
3
|
-
require
|
4
|
+
if File.directory? dir then
|
5
|
+
require "fileutils"
|
4
6
|
puts "nuking #{dir}"
|
5
7
|
# force removal, Windoze is bitching at me, something to hunt later...
|
6
8
|
FileUtils.rm_r dir, :force => true
|
7
9
|
end
|
8
10
|
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
11
|
+
require "minitest/autorun"
|
12
|
+
require "rubygems"
|
13
|
+
require "png"
|
14
|
+
require "png/reader"
|
15
|
+
require "png/pie"
|
14
16
|
|
15
|
-
class TestPng <
|
17
|
+
class TestPng < Minitest::Test
|
16
18
|
def setup
|
17
19
|
@canvas = PNG::Canvas.new 5, 10, PNG::Color::White
|
18
20
|
@png = PNG.new @canvas
|
19
21
|
|
20
|
-
@blob = <<-EOF.unpack(
|
22
|
+
@blob = <<-EOF.unpack("m*").first
|
21
23
|
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAAD0lEQVR4nGP4
|
22
24
|
jwUwDGVBALuJxzlQugpEAAAAAElFTkSuQmCC
|
23
25
|
EOF
|
24
26
|
end
|
25
27
|
|
26
28
|
def test_class_chunk
|
27
|
-
chunk = PNG.chunk
|
29
|
+
chunk = PNG.chunk "IHDR", [10, 10, 8, 6, 0, 0, 0].pack("N2C5")
|
28
30
|
|
29
31
|
header_crc = "\2152\317\275"
|
30
32
|
header_data = "\000\000\000\n\000\000\000\n\b\006\000\000\000"
|
@@ -35,8 +37,8 @@ jwUwDGVBALuJxzlQugpEAAAAAElFTkSuQmCC
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def test_class_chunk_empty
|
38
|
-
chunk = PNG.chunk
|
39
|
-
expected = "#{0.chr * 4}IHDR#{["IHDR".png_crc].pack
|
40
|
+
chunk = PNG.chunk "IHDR"
|
41
|
+
expected = "#{0.chr * 4}IHDR#{["IHDR".png_crc].pack "N"}"
|
40
42
|
assert_equal expected, chunk
|
41
43
|
end
|
42
44
|
|
@@ -47,7 +49,7 @@ jwUwDGVBALuJxzlQugpEAAAAAElFTkSuQmCC
|
|
47
49
|
def test_save
|
48
50
|
path = "blah.png"
|
49
51
|
@png.save(path)
|
50
|
-
file = File.open(path,
|
52
|
+
file = File.open(path, "rb") { |f| f.read }
|
51
53
|
assert_equal @blob, file
|
52
54
|
ensure
|
53
55
|
assert_equal 1, File.unlink(path)
|
@@ -55,7 +57,7 @@ jwUwDGVBALuJxzlQugpEAAAAAElFTkSuQmCC
|
|
55
57
|
|
56
58
|
end
|
57
59
|
|
58
|
-
class TestCanvas <
|
60
|
+
class TestCanvas < Minitest::Test
|
59
61
|
|
60
62
|
def setup
|
61
63
|
@canvas = PNG::Canvas.new 5, 10, PNG::Color::White
|
@@ -70,9 +72,9 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
70
72
|
xxxxxxxx
|
71
73
|
xx..xxxx
|
72
74
|
..xxxxxx
|
73
|
-
".gsub(/ /,
|
75
|
+
".gsub(/ /, "")
|
74
76
|
|
75
|
-
assert_equal expected, canvas1.to_s.gsub(/ /,
|
77
|
+
assert_equal expected, canvas1.to_s.gsub(/ /, "x")
|
76
78
|
end
|
77
79
|
|
78
80
|
def test_composite_underlay
|
@@ -84,9 +86,9 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
84
86
|
xxxx..xx
|
85
87
|
xx00xxxx
|
86
88
|
..xxxxxx
|
87
|
-
".gsub(/ /,
|
89
|
+
".gsub(/ /, "")
|
88
90
|
|
89
|
-
assert_equal expected, canvas1.to_s.gsub(/ /,
|
91
|
+
assert_equal expected, canvas1.to_s.gsub(/ /, "x")
|
90
92
|
end
|
91
93
|
|
92
94
|
def test_composite_overlay
|
@@ -98,9 +100,9 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
98
100
|
xxxx..xx
|
99
101
|
xx..xxxx
|
100
102
|
..xxxxxx
|
101
|
-
".gsub(/ /,
|
103
|
+
".gsub(/ /, "")
|
102
104
|
|
103
|
-
assert_equal expected, canvas1.to_s.gsub(/ /,
|
105
|
+
assert_equal expected, canvas1.to_s.gsub(/ /, "x")
|
104
106
|
end
|
105
107
|
|
106
108
|
def test_composite_blend
|
@@ -112,9 +114,9 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
112
114
|
xxxx..xx
|
113
115
|
xx,,xxxx
|
114
116
|
..xxxxxx
|
115
|
-
".gsub(/ /,
|
117
|
+
".gsub(/ /, "")
|
116
118
|
|
117
|
-
assert_equal expected, canvas1.to_s.gsub(/ /,
|
119
|
+
assert_equal expected, canvas1.to_s.gsub(/ /, "x")
|
118
120
|
end
|
119
121
|
|
120
122
|
def test_composite_bad_style
|
@@ -132,17 +134,17 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
132
134
|
xxxx..xx
|
133
135
|
xx00xxxx
|
134
136
|
..xxxxxx
|
135
|
-
".gsub(/ /,
|
137
|
+
".gsub(/ /, "")
|
136
138
|
|
137
|
-
assert_equal expected, canvas1.to_s.gsub(/ /,
|
139
|
+
assert_equal expected, canvas1.to_s.gsub(/ /, "x")
|
138
140
|
|
139
141
|
canvas2 = canvas1.extract(1, 1, 2, 2)
|
140
142
|
|
141
143
|
expected = " xx..
|
142
144
|
00xx
|
143
|
-
".gsub(/ /,
|
145
|
+
".gsub(/ /, "")
|
144
146
|
|
145
|
-
assert_equal expected, canvas2.to_s.gsub(/ /,
|
147
|
+
assert_equal expected, canvas2.to_s.gsub(/ /, "x")
|
146
148
|
end
|
147
149
|
|
148
150
|
def test_index
|
@@ -152,10 +154,10 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
152
154
|
|
153
155
|
def test_index_tall
|
154
156
|
@canvas = PNG::Canvas.new 2, 4, PNG::Color::White
|
155
|
-
@canvas[
|
156
|
-
@canvas[
|
157
|
-
@canvas[
|
158
|
-
@canvas[
|
157
|
+
@canvas[0, 0] = PNG::Color::Black
|
158
|
+
@canvas[0, 3] = PNG::Color::Background
|
159
|
+
@canvas[1, 0] = PNG::Color::Yellow
|
160
|
+
@canvas[1, 3] = PNG::Color::Blue
|
159
161
|
|
160
162
|
expected = " ,,\n0000\n0000\n..++\n"
|
161
163
|
|
@@ -164,10 +166,10 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
164
166
|
|
165
167
|
def test_index_wide
|
166
168
|
@canvas = PNG::Canvas.new 4, 2, PNG::Color::White
|
167
|
-
@canvas[
|
168
|
-
@canvas[
|
169
|
-
@canvas[
|
170
|
-
@canvas[
|
169
|
+
@canvas[0, 0] = PNG::Color::Black
|
170
|
+
@canvas[3, 0] = PNG::Color::Background
|
171
|
+
@canvas[0, 1] = PNG::Color::Yellow
|
172
|
+
@canvas[3, 1] = PNG::Color::Blue
|
171
173
|
|
172
174
|
expected = "++0000,,\n..0000 \n"
|
173
175
|
|
@@ -175,23 +177,19 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
175
177
|
end
|
176
178
|
|
177
179
|
def test_index_bad_x
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
flunk "didn't raise"
|
184
|
-
end
|
180
|
+
@canvas[6, 1] # TODO: convert these to assert_raises
|
181
|
+
rescue => e
|
182
|
+
assert_equal "bad x value 6 >= 5", e.message
|
183
|
+
else
|
184
|
+
flunk "didn't raise"
|
185
185
|
end
|
186
186
|
|
187
187
|
def test_index_bad_y
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
flunk "didn't raise"
|
194
|
-
end
|
188
|
+
@canvas[1, 11]
|
189
|
+
rescue => e
|
190
|
+
assert_equal "bad y value 11 >= 10", e.message
|
191
|
+
else
|
192
|
+
flunk "didn't raise"
|
195
193
|
end
|
196
194
|
|
197
195
|
def test_index_equals
|
@@ -215,28 +213,24 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
215
213
|
end
|
216
214
|
|
217
215
|
def test_index_equals_bad_x
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
flunk "didn't raise"
|
224
|
-
end
|
216
|
+
@canvas[6, 1] = PNG::Color::Red
|
217
|
+
rescue => e
|
218
|
+
assert_equal "bad x value 6 >= 5", e.message
|
219
|
+
else
|
220
|
+
flunk "didn't raise"
|
225
221
|
end
|
226
222
|
|
227
223
|
def test_index_equals_bad_y
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
flunk "didn't raise"
|
234
|
-
end
|
224
|
+
@canvas[1, 11] = PNG::Color::Red
|
225
|
+
rescue => e
|
226
|
+
assert_equal "bad y value 11 >= 10", e.message
|
227
|
+
else
|
228
|
+
flunk "didn't raise"
|
235
229
|
end
|
236
230
|
|
237
|
-
#
|
238
|
-
#
|
239
|
-
#
|
231
|
+
# def test_point
|
232
|
+
# raise NotImplementedError, 'Need to write test_point'
|
233
|
+
# end
|
240
234
|
|
241
235
|
def test_inspect
|
242
236
|
assert_equal "#<PNG::Canvas 5x10>", @canvas.inspect
|
@@ -320,29 +314,28 @@ class TestCanvas < MiniTest::Unit::TestCase
|
|
320
314
|
xxxx..xx
|
321
315
|
xx00xxxx
|
322
316
|
..xxxxxx
|
323
|
-
".gsub(/ /,
|
324
|
-
|
325
|
-
assert_equal expected, canvas1.to_s.gsub(/ /, 'x')
|
317
|
+
".gsub(/ /, "")
|
326
318
|
|
319
|
+
assert_equal expected, canvas1.to_s.gsub(/ /, "x")
|
327
320
|
|
328
321
|
canvas2 = PNG::Canvas.new 2, 2
|
329
322
|
canvas2[0, 0] = PNG::Color::Black
|
330
323
|
|
331
|
-
expected = " xxxx
|
324
|
+
expected = " xxxx
|
332
325
|
..xx
|
333
|
-
".gsub(/ /,
|
326
|
+
".gsub(/ /, "")
|
334
327
|
|
335
|
-
assert_equal expected, canvas2.to_s.gsub(/ /,
|
328
|
+
assert_equal expected, canvas2.to_s.gsub(/ /, "x")
|
336
329
|
|
337
330
|
return canvas1, canvas2
|
338
331
|
end
|
339
332
|
|
340
|
-
def util_ascii_art
|
333
|
+
def util_ascii_art width, height
|
341
334
|
(("0" * width * 2) + "\n") * height
|
342
335
|
end
|
343
336
|
end
|
344
337
|
|
345
|
-
class TestPng::TestColor <
|
338
|
+
class TestPng::TestColor < Minitest::Test
|
346
339
|
def setup
|
347
340
|
@color = PNG::Color.new 0x01, 0x02, 0x03, 0x04
|
348
341
|
end
|
@@ -380,11 +373,6 @@ class TestPng::TestColor < MiniTest::Unit::TestCase
|
|
380
373
|
end
|
381
374
|
|
382
375
|
def test_blend
|
383
|
-
# c1 = @color
|
384
|
-
# c2 = PNG::Color.new 0xFF, 0xFE, 0xFD, 0xFC
|
385
|
-
|
386
|
-
# assert_equal PNG::Color.new(0xFB, 0xFA, 0xF9, 0xF8), c1.blend(c2)
|
387
|
-
|
388
376
|
c1 = PNG::Color::White
|
389
377
|
c2 = PNG::Color::Black
|
390
378
|
|
@@ -420,50 +408,50 @@ class TestPng::TestColor < MiniTest::Unit::TestCase
|
|
420
408
|
end
|
421
409
|
|
422
410
|
def test_to_ascii
|
423
|
-
assert_equal
|
424
|
-
assert_equal
|
425
|
-
assert_equal
|
426
|
-
assert_equal
|
427
|
-
assert_equal
|
411
|
+
assert_equal "00", PNG::Color::White.to_ascii, "white"
|
412
|
+
assert_equal "++", PNG::Color::Yellow.to_ascii, "yellow"
|
413
|
+
assert_equal ",,", PNG::Color::Red.to_ascii, "red"
|
414
|
+
assert_equal "..", PNG::Color::Black.to_ascii, "black"
|
415
|
+
assert_equal " ", PNG::Color::Background.to_ascii, "background"
|
428
416
|
end
|
429
417
|
|
430
418
|
def test_to_ascii_alpha
|
431
|
-
assert_equal
|
432
|
-
assert_equal
|
433
|
-
assert_equal
|
434
|
-
assert_equal
|
435
|
-
assert_equal
|
436
|
-
assert_equal
|
437
|
-
assert_equal
|
438
|
-
assert_equal
|
439
|
-
assert_equal
|
419
|
+
assert_equal "00", PNG::Color.new(255, 255, 255, 255).to_ascii
|
420
|
+
assert_equal "00", PNG::Color.new(255, 255, 255, 192).to_ascii
|
421
|
+
assert_equal "++", PNG::Color.new(255, 255, 255, 191).to_ascii
|
422
|
+
assert_equal ",,", PNG::Color.new(255, 255, 255, 127).to_ascii
|
423
|
+
assert_equal ",,", PNG::Color.new(255, 255, 255, 126).to_ascii
|
424
|
+
assert_equal ",,", PNG::Color.new(255, 255, 255, 64).to_ascii
|
425
|
+
assert_equal "..", PNG::Color.new(255, 255, 255, 63).to_ascii
|
426
|
+
assert_equal "..", PNG::Color.new(255, 255, 255, 1).to_ascii
|
427
|
+
assert_equal " ", PNG::Color.new(255, 255, 255, 0).to_ascii
|
440
428
|
end
|
441
429
|
|
442
430
|
def test_to_s_name
|
443
|
-
assert_equal
|
431
|
+
assert_equal "Red", PNG::Color::Red.to_s
|
444
432
|
end
|
445
433
|
|
446
434
|
def test_to_s
|
447
|
-
obj = PNG::Color.new(255,255,255, 0)
|
448
|
-
assert_equal
|
435
|
+
obj = PNG::Color.new(255, 255, 255, 0)
|
436
|
+
assert_equal "#<PNG::Color:0xXXXXXX>", obj.to_s.sub(/0x[0-9a-f]+/, "0xXXXXXX")
|
449
437
|
end
|
450
438
|
|
451
439
|
def test_equals2
|
452
|
-
assert_equal PNG::Color.new(255,255,255, 0), PNG::Color.new(255,255,255, 0)
|
440
|
+
assert_equal PNG::Color.new(255, 255, 255, 0), PNG::Color.new(255, 255, 255, 0)
|
453
441
|
end
|
454
442
|
|
455
443
|
def test_hash
|
456
|
-
a = PNG::Color.new(255,255,255, 0)
|
457
|
-
b = PNG::Color.new(255,255,255, 0)
|
444
|
+
a = PNG::Color.new(255, 255, 255, 0)
|
445
|
+
b = PNG::Color.new(255, 255, 255, 0)
|
458
446
|
assert_equal a.hash, b.hash
|
459
447
|
end
|
460
448
|
|
461
|
-
#
|
462
|
-
#
|
463
|
-
#
|
449
|
+
# def test_values
|
450
|
+
# raise NotImplementedError, 'Need to write test_values'
|
451
|
+
# end
|
464
452
|
end
|
465
453
|
|
466
|
-
class TestPng::TestPie <
|
454
|
+
class TestPng::TestPie < Minitest::Test
|
467
455
|
def test_pie_chart_odd
|
468
456
|
expected =
|
469
457
|
[" .. ",
|
@@ -477,9 +465,9 @@ class TestPng::TestPie < MiniTest::Unit::TestCase
|
|
477
465
|
" ,,,,,,,,,,,,,,,,,, ",
|
478
466
|
" ,,,,,,,,,,,,,, ",
|
479
467
|
" ,, ",
|
480
|
-
|
468
|
+
nil].join("\n")
|
481
469
|
|
482
|
-
actual = PNG
|
470
|
+
actual = PNG.pie_chart(11, 0.25, PNG::Color::Black, PNG::Color::Green)
|
483
471
|
assert_equal expected, actual.to_s
|
484
472
|
end
|
485
473
|
|
@@ -496,13 +484,13 @@ class TestPng::TestPie < MiniTest::Unit::TestCase
|
|
496
484
|
" ,,,,,,,,,,,,,,,,,, ",
|
497
485
|
" ,,,,,,,,,,,,,, ",
|
498
486
|
" ,, ",
|
499
|
-
|
487
|
+
nil].join("\n")
|
500
488
|
|
501
|
-
actual = PNG
|
489
|
+
actual = PNG.pie_chart(10, 0.25, PNG::Color::Black, PNG::Color::Green)
|
502
490
|
assert_equal expected, actual.to_s
|
503
491
|
end
|
504
492
|
|
505
|
-
def util_angle
|
493
|
+
def util_angle expect, x, y
|
506
494
|
actual = PNG.angle(x, y)
|
507
495
|
case expect
|
508
496
|
when Integer then
|