png 1.1.0 → 1.2.0
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.
- data.tar.gz.sig +2 -0
- data/History.txt +59 -17
- data/Manifest.txt +5 -0
- data/Rakefile +11 -10
- data/example/lines.rb +4 -12
- data/lib/png.rb +260 -190
- data/lib/png/default_font.png +0 -0
- data/lib/png/font.rb +73 -0
- data/lib/png/pie.rb +1 -1
- data/lib/png/reader.rb +142 -0
- data/test/test_png.rb +179 -69
- data/test/test_png_font.rb +84 -0
- data/test/test_png_reader.rb +94 -0
- metadata +88 -52
- metadata.gz.sig +0 -0
@@ -0,0 +1,84 @@
|
|
1
|
+
dir = File.expand_path "~/.ruby_inline"
|
2
|
+
if test ?d, dir then
|
3
|
+
require 'fileutils'
|
4
|
+
puts "nuking #{dir}"
|
5
|
+
# force removal, Windoze is bitching at me, something to hunt later...
|
6
|
+
FileUtils.rm_r dir, :force => true
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'minitest/autorun'
|
11
|
+
require 'png/font'
|
12
|
+
|
13
|
+
class TestPngFont < MiniTest::Unit::TestCase
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@font = PNG::Font.default
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_height
|
20
|
+
assert_equal 6, @font.height
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_width
|
24
|
+
assert_equal 6, @font.width
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_coordinates
|
28
|
+
assert_equal [ 0, 0, 5, 5], @font.coordinates('(')
|
29
|
+
assert_equal [ 0, 6, 5, 11], @font.coordinates('0')
|
30
|
+
assert_equal [ 0, 12, 5, 17], @font.coordinates('a')
|
31
|
+
assert_equal [ 0, 18, 5, 23], @font.coordinates('A')
|
32
|
+
|
33
|
+
assert_equal [42, 12, 47, 17], @font.coordinates('h')
|
34
|
+
assert_equal [42, 18, 47, 23], @font.coordinates('H')
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_index
|
38
|
+
expected = "
|
39
|
+
0000....0000
|
40
|
+
00..0000..00
|
41
|
+
00..0000..00
|
42
|
+
00........00
|
43
|
+
00..0000..00
|
44
|
+
000000000000
|
45
|
+
".strip + "\n"
|
46
|
+
|
47
|
+
assert_equal expected, @font['A'].to_s
|
48
|
+
|
49
|
+
expected = "
|
50
|
+
00000000..00
|
51
|
+
00000000..00
|
52
|
+
00000000..00
|
53
|
+
00000000..00
|
54
|
+
00000000..00
|
55
|
+
000000000000
|
56
|
+
".strip + "\n"
|
57
|
+
|
58
|
+
assert_equal expected, @font['l'].to_s
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_index_identity
|
62
|
+
assert_same @font['A'], @font['A']
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_annotate
|
66
|
+
canvas = PNG::Canvas.new 30, 6, PNG::Color::White
|
67
|
+
canvas.annotate "hello", 0, 0
|
68
|
+
|
69
|
+
expected = "
|
70
|
+
00..0000000000000000000000000000..0000000000..00000000000000
|
71
|
+
00......000000......000000000000..0000000000..000000....0000
|
72
|
+
00..0000..00..0000....0000000000..0000000000..0000..0000..00
|
73
|
+
00..0000..00..00..00000000000000..0000000000..0000..0000..00
|
74
|
+
00..0000..0000......000000000000..0000000000..000000....0000
|
75
|
+
000000000000000000000000000000000000000000000000000000000000
|
76
|
+
".strip + "\n"
|
77
|
+
|
78
|
+
assert_equal expected, canvas.to_s
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_identity
|
82
|
+
assert_same PNG::Font.default, PNG::Font.default
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
dir = File.expand_path "~/.ruby_inline"
|
2
|
+
if test ?d, dir then
|
3
|
+
require 'fileutils'
|
4
|
+
puts "nuking #{dir}"
|
5
|
+
# force removal, Windoze is bitching at me, something to hunt later...
|
6
|
+
FileUtils.rm_r dir, :force => true
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'minitest/autorun'
|
11
|
+
require 'png/reader'
|
12
|
+
|
13
|
+
class TestPngReader < MiniTest::Unit::TestCase
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@canvas = PNG::Canvas.new 5, 10, PNG::Color::White
|
17
|
+
@png = PNG.new @canvas
|
18
|
+
|
19
|
+
@IHDR_length = "\000\000\000\r"
|
20
|
+
@IHDR_crc = "\2152\317\275"
|
21
|
+
@IHDR_crc_value = @IHDR_crc.unpack('N').first
|
22
|
+
@IHDR_data = "\000\000\000\n\000\000\000\n\b\006\000\000\000"
|
23
|
+
@IHDR_chunk = "#{@IHDR_length}IHDR#{@IHDR_data}#{@IHDR_crc}"
|
24
|
+
|
25
|
+
@blob = <<-EOF.unpack('m*').first
|
26
|
+
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAAD0lEQVR4nGP4
|
27
|
+
jwUwDGVBALuJxzlQugpEAAAAAElFTkSuQmCC
|
28
|
+
EOF
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_class_check_crc
|
32
|
+
assert PNG.check_crc('IHDR', @IHDR_data, @IHDR_crc_value)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_class_check_crc_exception
|
36
|
+
begin
|
37
|
+
PNG.check_crc('IHDR', @IHDR_data, @IHDR_crc_value + 1)
|
38
|
+
rescue ArgumentError => e
|
39
|
+
assert_equal "Invalid CRC encountered in IHDR chunk", e.message
|
40
|
+
else
|
41
|
+
flunk "exception wasn't raised"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_class_read_chunk
|
46
|
+
data = PNG.read_chunk 'IHDR', @IHDR_chunk
|
47
|
+
|
48
|
+
assert_equal @IHDR_data, data
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_class_read_IDAT
|
52
|
+
canvas = PNG::Canvas.new 5, 10, PNG::Color::White
|
53
|
+
|
54
|
+
data = ([ 0, [255] * (4*5) ] * 10)
|
55
|
+
data = data.flatten.map { |n| n.chr }.join
|
56
|
+
data = Zlib::Deflate.deflate(data)
|
57
|
+
|
58
|
+
PNG.read_IDAT data, 8, PNG::RGBA, canvas
|
59
|
+
|
60
|
+
assert_equal @blob, PNG.new(canvas).to_blob
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_class_read_IHDR
|
64
|
+
bit_depth, color_type, width, height = PNG.read_IHDR @IHDR_data
|
65
|
+
assert_equal 10, width
|
66
|
+
assert_equal 10, height
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_class_load_metadata
|
70
|
+
png, canvas = util_png
|
71
|
+
|
72
|
+
width, height, bit_depth = PNG.load(png.to_blob, :metadata)
|
73
|
+
|
74
|
+
assert_equal 2, width
|
75
|
+
assert_equal 2, height
|
76
|
+
assert_equal 8, bit_depth
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_class_load
|
80
|
+
png, canvas = util_png
|
81
|
+
|
82
|
+
new_png = PNG.load(png.to_blob)
|
83
|
+
|
84
|
+
assert_equal canvas.data, new_png.data
|
85
|
+
end
|
86
|
+
|
87
|
+
def util_png
|
88
|
+
canvas = PNG::Canvas.new 2, 2
|
89
|
+
canvas[0, 0] = PNG::Color::Black
|
90
|
+
canvas[1, 1] = PNG::Color::Black
|
91
|
+
png = PNG.new canvas
|
92
|
+
return png, canvas
|
93
|
+
end
|
94
|
+
end
|
metadata
CHANGED
@@ -1,34 +1,63 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0.9
|
3
|
-
specification_version: 1
|
4
2
|
name: png
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2007-03-26 00:00:00 -07:00
|
8
|
-
summary: An almost-pure-ruby PNG library
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: support@zenspider.com
|
12
|
-
homepage: http://www.zenspider.com/ZSS/Products/png/
|
13
|
-
rubyforge_project: seattlerb
|
14
|
-
description: "PNG is an almost-pure-ruby PNG library. It lets you write a PNG without any C libraries. == FEATURES * Very simple interface. * Outputs simple PNG files with ease. * Basic PNG reader as well (someday it might do compositing and the like!). * Almost pure ruby, does require a compiler. == SYNOPSYS require 'png' canvas = PNG::Canvas.new 200, 200 # Set a point to a color canvas[100, 100] = PNG::Color::Black # draw an anti-aliased line canvas.line 50, 50, 100, 50, PNG::Color::Blue png = PNG.new canvas png.save 'blah.png'"
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 1.2.0
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Ryan Davis
|
31
8
|
- Eric Hodel
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain:
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
|
15
|
+
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
16
|
+
GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
|
17
|
+
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
18
|
+
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
19
|
+
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
20
|
+
taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
|
21
|
+
oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
|
22
|
+
GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
|
23
|
+
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
24
|
+
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
25
|
+
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
|
26
|
+
AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
|
27
|
+
vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
|
28
|
+
w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
|
29
|
+
l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
|
30
|
+
n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
|
31
|
+
FBHgymkyj/AOSqKRIpXPhjC6
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
|
34
|
+
date: 2009-06-23 00:00:00 -07:00
|
35
|
+
default_executable:
|
36
|
+
dependencies:
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: hoe
|
39
|
+
type: :development
|
40
|
+
version_requirement:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 2.3.0
|
46
|
+
version:
|
47
|
+
description: |-
|
48
|
+
PNG is an almost-pure-ruby PNG library. It lets you write a PNG
|
49
|
+
without any C libraries.
|
50
|
+
email:
|
51
|
+
- ryand-ruby@zenspider.com
|
52
|
+
- drbrain@segment7.net
|
53
|
+
executables: []
|
54
|
+
|
55
|
+
extensions: []
|
56
|
+
|
57
|
+
extra_rdoc_files:
|
58
|
+
- History.txt
|
59
|
+
- Manifest.txt
|
60
|
+
- README.txt
|
32
61
|
files:
|
33
62
|
- History.txt
|
34
63
|
- Manifest.txt
|
@@ -38,36 +67,43 @@ files:
|
|
38
67
|
- example/profile.rb
|
39
68
|
- example/profile_lines.rb
|
40
69
|
- lib/png.rb
|
70
|
+
- lib/png/default_font.png
|
71
|
+
- lib/png/font.rb
|
41
72
|
- lib/png/pie.rb
|
73
|
+
- lib/png/reader.rb
|
42
74
|
- test/test_png.rb
|
43
|
-
|
44
|
-
- test/
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
executables: []
|
50
|
-
|
51
|
-
extensions: []
|
75
|
+
- test/test_png_font.rb
|
76
|
+
- test/test_png_reader.rb
|
77
|
+
has_rdoc: true
|
78
|
+
homepage: http://seattlerb.rubyforge.org/
|
79
|
+
licenses: []
|
52
80
|
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options:
|
83
|
+
- --main
|
84
|
+
- README.txt
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ">="
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: "0"
|
92
|
+
version:
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: "0"
|
98
|
+
version:
|
53
99
|
requirements: []
|
54
100
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
version:
|
65
|
-
- !ruby/object:Gem::Dependency
|
66
|
-
name: hoe
|
67
|
-
version_requirement:
|
68
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
69
|
-
requirements:
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 1.2.0
|
73
|
-
version:
|
101
|
+
rubyforge_project: seattlerb
|
102
|
+
rubygems_version: 1.3.4
|
103
|
+
signing_key:
|
104
|
+
specification_version: 3
|
105
|
+
summary: PNG is an almost-pure-ruby PNG library
|
106
|
+
test_files:
|
107
|
+
- test/test_png.rb
|
108
|
+
- test/test_png_font.rb
|
109
|
+
- test/test_png_reader.rb
|
metadata.gz.sig
ADDED
Binary file
|