png 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|