chunky_png 1.3.11 → 1.3.12
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 +5 -5
- data/.standard.yml +16 -0
- data/.travis.yml +5 -5
- data/.yardopts +1 -1
- data/CHANGELOG.rdoc +5 -1
- data/CONTRIBUTING.rdoc +17 -8
- data/Gemfile +3 -3
- data/LICENSE +1 -1
- data/README.md +6 -1
- data/Rakefile +3 -3
- data/benchmarks/decoding_benchmark.rb +17 -17
- data/benchmarks/encoding_benchmark.rb +22 -19
- data/benchmarks/filesize_benchmark.rb +6 -6
- data/bin/rake +29 -0
- data/bin/standardrb +29 -0
- data/chunky_png.gemspec +15 -15
- data/lib/chunky_png.rb +16 -25
- data/lib/chunky_png/canvas.rb +28 -27
- data/lib/chunky_png/canvas/adam7_interlacing.rb +14 -10
- data/lib/chunky_png/canvas/data_url_exporting.rb +1 -3
- data/lib/chunky_png/canvas/data_url_importing.rb +1 -3
- data/lib/chunky_png/canvas/drawing.rb +28 -43
- data/lib/chunky_png/canvas/masking.rb +12 -14
- data/lib/chunky_png/canvas/operations.rb +26 -24
- data/lib/chunky_png/canvas/png_decoding.rb +36 -32
- data/lib/chunky_png/canvas/png_encoding.rb +106 -100
- data/lib/chunky_png/canvas/resampling.rb +26 -33
- data/lib/chunky_png/canvas/stream_exporting.rb +6 -8
- data/lib/chunky_png/canvas/stream_importing.rb +6 -8
- data/lib/chunky_png/chunk.rb +69 -60
- data/lib/chunky_png/color.rb +211 -206
- data/lib/chunky_png/datastream.rb +20 -22
- data/lib/chunky_png/dimension.rb +16 -11
- data/lib/chunky_png/image.rb +9 -11
- data/lib/chunky_png/palette.rb +4 -9
- data/lib/chunky_png/point.rb +25 -26
- data/lib/chunky_png/rmagick.rb +8 -10
- data/lib/chunky_png/vector.rb +26 -29
- data/lib/chunky_png/version.rb +1 -1
- data/spec/chunky_png/canvas/adam7_interlacing_spec.rb +20 -21
- data/spec/chunky_png/canvas/data_url_exporting_spec.rb +8 -5
- data/spec/chunky_png/canvas/data_url_importing_spec.rb +5 -6
- data/spec/chunky_png/canvas/drawing_spec.rb +46 -38
- data/spec/chunky_png/canvas/masking_spec.rb +15 -16
- data/spec/chunky_png/canvas/operations_spec.rb +68 -67
- data/spec/chunky_png/canvas/png_decoding_spec.rb +37 -38
- data/spec/chunky_png/canvas/png_encoding_spec.rb +59 -50
- data/spec/chunky_png/canvas/resampling_spec.rb +19 -21
- data/spec/chunky_png/canvas/stream_exporting_spec.rb +47 -27
- data/spec/chunky_png/canvas/stream_importing_spec.rb +10 -11
- data/spec/chunky_png/canvas_spec.rb +57 -52
- data/spec/chunky_png/color_spec.rb +115 -114
- data/spec/chunky_png/datastream_spec.rb +49 -51
- data/spec/chunky_png/dimension_spec.rb +10 -10
- data/spec/chunky_png/image_spec.rb +11 -14
- data/spec/chunky_png/point_spec.rb +21 -23
- data/spec/chunky_png/rmagick_spec.rb +7 -8
- data/spec/chunky_png/vector_spec.rb +21 -17
- data/spec/chunky_png_spec.rb +2 -2
- data/spec/png_suite_spec.rb +35 -40
- data/spec/spec_helper.rb +6 -10
- data/tasks/benchmarks.rake +7 -8
- metadata +34 -5
- data/lib/chunky_png/compatibility.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e3886829e15fc95fe5233136b1f7ecd373b6996aa7d272ea23a7118b2f686da9
|
4
|
+
data.tar.gz: f43c2996448bce3e0dd614b19e228ead043be3f1fbc60ca128d7a242f4f74692
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 610eacb3d1e369c824bd4b7e9305358790be1837281be84f44ff12e4020bced6fd9ef44b10391578eb74b50a0e28b24595ac0aa64b82433477a05b43a37bd491
|
7
|
+
data.tar.gz: e4857a8bb6217e5416b93bcd125dd7e99a90f0bb2714628016d6e44af9b34a03230913e30955a4f72ff2005fb9b9e6f50d1087d6cb89d9370cc735288d98193b
|
data/.standard.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# ChunkyPNG uses and enforces standard.rb as code style (see https://github.com/testdouble/standard).
|
2
|
+
# For backwards compatilibity and idiosyncratic preferences of the main author,
|
3
|
+
# there are some minor differences listed in here.
|
4
|
+
|
5
|
+
ruby_version: 2.2
|
6
|
+
|
7
|
+
ignore:
|
8
|
+
- lib/chunky_png/**/*.rb:
|
9
|
+
# We allow `for` loops in the codebase, especially in hot paths,
|
10
|
+
# because they perform better than `each` blocks.
|
11
|
+
- "Style/For"
|
12
|
+
|
13
|
+
- spec/chunky_png/**/*.rb:
|
14
|
+
# In RSpec, having to follow this rule will cause expectations to
|
15
|
+
# be less readable, specifically blocks for the `change` matcher.
|
16
|
+
- "Lint/AmbiguousBlockAssociation"
|
data/.travis.yml
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
language: ruby
|
2
|
-
|
3
|
-
|
2
|
+
|
3
|
+
script:
|
4
|
+
- bin/rake
|
5
|
+
- bin/standardrb
|
4
6
|
|
5
7
|
rvm:
|
6
|
-
- "2.0"
|
7
|
-
- "2.1"
|
8
8
|
- "2.2"
|
9
9
|
- "2.3"
|
10
10
|
- "2.4"
|
11
11
|
- "2.5"
|
12
|
+
- "2.6"
|
12
13
|
- ruby-head
|
13
14
|
- jruby-19mode
|
14
15
|
|
15
16
|
matrix:
|
16
17
|
allow_failures:
|
17
18
|
- rvm: ruby-head
|
18
|
-
- rvm: "2.5" # Broken on Travis on 2018-01-23
|
data/.yardopts
CHANGED
data/CHANGELOG.rdoc
CHANGED
@@ -7,7 +7,11 @@ The file documents the changes to this library over the different versions.
|
|
7
7
|
|
8
8
|
=== Unreleased changes
|
9
9
|
|
10
|
-
|
10
|
+
- Implemented <tt>ChunkyPNG::Dimension#hash</tt> to fix some specs after a behavior change in RSpec.
|
11
|
+
|
12
|
+
=== 1.3.11 - 2018-11-21
|
13
|
+
|
14
|
+
- Updated project metadata as published on Rubygems.org
|
11
15
|
|
12
16
|
=== 1.3.10 - 2018-01-23
|
13
17
|
|
data/CONTRIBUTING.rdoc
CHANGED
@@ -1,21 +1,30 @@
|
|
1
1
|
= Contributing to ChunkyPNG
|
2
2
|
|
3
|
-
I will gladly accept any contributions from anybody to improve this library. However,
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
I will gladly accept any contributions from anybody to improve this library. However, this is a
|
4
|
+
personal open source project, without an active community around it. As a result I am the only
|
5
|
+
maintainer, and I’d like to keep the scope and complexity of this project small.
|
6
|
+
This way, with the limited amount of time I dedicate to this project, this library remains a
|
7
|
+
solid piece of software that many people rely on in their workflow.
|
7
8
|
|
8
9
|
|
9
10
|
== Project scope
|
10
11
|
|
11
12
|
The scope of this library is defined as:
|
12
13
|
|
13
|
-
1. Reading and writing any PNG image that conforms to the spec, with proper handling of
|
14
|
+
1. Reading and writing any PNG image that conforms to the spec, with proper error handling of
|
15
|
+
images that do not conform to the spec.
|
14
16
|
2. Basic canvas drawing and compositing operations to create new or edit existing images.
|
17
|
+
However, I will generally be hesitant to add new drawing and compositing methods, because
|
18
|
+
the list could be endless to support every niche use case.
|
15
19
|
3. Remain compatible with Ruby versions that are widely used.
|
16
20
|
|
17
|
-
I
|
18
|
-
|
21
|
+
I generally consider this gem to be feature complete based on this scope. I will close issues
|
22
|
+
and pull requests that go beyond this scope. If you want to work on something, but are not sure
|
23
|
+
if it will be accepted, feel free to reach out to me by opening an issue before committing your time.
|
24
|
+
|
25
|
+
For functionality that goes beyond the scope, I would suggest making it available as a separate
|
26
|
+
“plugin” gem (e.g. chunky_png-<my-feature>). If anything in the gem needs to be refactored
|
27
|
+
to support this kind of extensibility, I am happy to accept PRs for that.
|
19
28
|
|
20
29
|
|
21
30
|
== Reporting bugs
|
@@ -38,7 +47,7 @@ Title and description:
|
|
38
47
|
Code:
|
39
48
|
|
40
49
|
- Don't break backwards compatibility.
|
41
|
-
- Follow code conventions. They are
|
50
|
+
- Follow code conventions. They are enforced through Rubocop.
|
42
51
|
- Add Yardoc comments as documentation.
|
43
52
|
|
44
53
|
Specs:
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -80,7 +80,12 @@ background processing library.
|
|
80
80
|
|
81
81
|
The library is written by Willem van Bergen for Floorplanner.com, and released
|
82
82
|
under the MIT license (see LICENSE). Please contact me for questions or
|
83
|
-
remarks.
|
83
|
+
remarks.
|
84
|
+
|
85
|
+
I generally consider this library to be feature complete. I will gladly accept
|
86
|
+
patches to fix bugs and improve performance, but I will generally be hesitant
|
87
|
+
to accept new features or API endpoints. Before contributing, please read
|
88
|
+
[CONTRIBUTING.rdoc](CONTRIBUTING.rdoc) that explains this in more detail.
|
84
89
|
|
85
90
|
Please check out CHANGELOG.rdoc to see what changed in all versions.
|
86
91
|
|
data/Rakefile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rspec/core/rake_task"
|
3
3
|
|
4
|
-
Dir[
|
4
|
+
Dir["tasks/*.rake"].each { |file| load(file) }
|
5
5
|
|
6
6
|
RSpec::Core::RakeTask.new(:spec) do |task|
|
7
7
|
task.pattern = "./spec/**/*_spec.rb"
|
8
|
-
task.rspec_opts = [
|
8
|
+
task.rspec_opts = ["--color"]
|
9
9
|
end
|
10
10
|
|
11
|
-
task :
|
11
|
+
task default: [:spec]
|
@@ -1,26 +1,26 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/setup"
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "benchmark"
|
5
|
+
require "chunky_png"
|
6
6
|
|
7
7
|
def image_file(name)
|
8
|
-
File.join(File.dirname(__FILE__),
|
8
|
+
File.join(File.dirname(__FILE__), "..", "spec", "resources", name)
|
9
9
|
end
|
10
10
|
|
11
11
|
def image_data(name)
|
12
12
|
data = nil
|
13
|
-
File.open(image_file(name),
|
13
|
+
File.open(image_file(name), "rb") { |f| data = f.read }
|
14
14
|
data
|
15
15
|
end
|
16
16
|
|
17
|
-
no_filtering_stream = image_data(
|
18
|
-
up_filtering_stream = image_data(
|
19
|
-
paeth_filtering_stream = image_data(
|
20
|
-
rgba_pixelstream = image_data(
|
21
|
-
rgb_pixelstream = image_data(
|
17
|
+
no_filtering_stream = image_data("pixelstream_fast_rgba.png")
|
18
|
+
up_filtering_stream = image_data("pixelstream_reference.png")
|
19
|
+
paeth_filtering_stream = image_data("pixelstream_best_compression.png")
|
20
|
+
rgba_pixelstream = image_data("pixelstream.rgba")
|
21
|
+
rgb_pixelstream = image_data("pixelstream.rgb")
|
22
22
|
|
23
|
-
n = (ENV[
|
23
|
+
n = (ENV["N"] || "5").to_i
|
24
24
|
|
25
25
|
puts "---------------------------------------------"
|
26
26
|
puts "ChunkyPNG (#{ChunkyPNG::VERSION}) decoding benchmark (n=#{n})"
|
@@ -28,9 +28,9 @@ puts "---------------------------------------------"
|
|
28
28
|
puts
|
29
29
|
|
30
30
|
Benchmark.bmbm do |x|
|
31
|
-
x.report(
|
32
|
-
x.report(
|
33
|
-
x.report(
|
34
|
-
x.report(
|
35
|
-
x.report(
|
31
|
+
x.report("PNG - no filtering") { n.times { ChunkyPNG::Image.from_blob(no_filtering_stream) } }
|
32
|
+
x.report("PNG - UP filtering") { n.times { ChunkyPNG::Image.from_blob(up_filtering_stream) } }
|
33
|
+
x.report("PNG - PAETH filtering") { n.times { ChunkyPNG::Image.from_blob(paeth_filtering_stream) } }
|
34
|
+
x.report("From RGBA pixelstream") { n.times { ChunkyPNG::Image.from_rgba_stream(240, 180, rgba_pixelstream) } }
|
35
|
+
x.report("From RGB pixelstream") { n.times { ChunkyPNG::Image.from_rgb_stream(240, 180, rgb_pixelstream) } }
|
36
36
|
end
|
@@ -1,17 +1,20 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/setup"
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "benchmark"
|
5
|
+
require "chunky_png"
|
6
6
|
|
7
7
|
image = ChunkyPNG::Image.new(240, 180, ChunkyPNG::Color::TRANSPARENT)
|
8
8
|
|
9
9
|
# set some random pixels
|
10
|
+
|
11
|
+
# rubocop:disable Layout/ExtraSpacing, Layout/SpaceInsideParens
|
10
12
|
image[10, 20] = ChunkyPNG::Color.rgba(255, 0, 0, 255)
|
11
13
|
image[50, 87] = ChunkyPNG::Color.rgba( 0, 255, 0, 255)
|
12
14
|
image[33, 99] = ChunkyPNG::Color.rgba( 0, 0, 255, 255)
|
15
|
+
# rubocop:enable Layout/ExtraSpacing, Layout/SpaceInsideParens
|
13
16
|
|
14
|
-
n = (ENV[
|
17
|
+
n = (ENV["N"] || "5").to_i
|
15
18
|
|
16
19
|
puts "---------------------------------------------"
|
17
20
|
puts "ChunkyPNG (#{ChunkyPNG::VERSION}) encoding benchmark (n=#{n})"
|
@@ -19,22 +22,22 @@ puts "---------------------------------------------"
|
|
19
22
|
puts
|
20
23
|
|
21
24
|
Benchmark.bmbm do |x|
|
22
|
-
x.report(
|
25
|
+
x.report("Autodetect (indexed)") { n.times { image.to_blob } }
|
23
26
|
|
24
27
|
# Presets
|
25
|
-
x.report(
|
26
|
-
x.report(
|
27
|
-
x.report(
|
28
|
-
x.report(
|
29
|
-
x.report(
|
30
|
-
|
28
|
+
x.report(":no_compression") { n.times { image.to_blob(:no_compression) } }
|
29
|
+
x.report(":fast_rgba") { n.times { image.to_blob(:fast_rgba) } }
|
30
|
+
x.report(":fast_rgb") { n.times { image.to_blob(:fast_rgb) } }
|
31
|
+
x.report(":good_compression") { n.times { image.to_blob(:good_compression) } }
|
32
|
+
x.report(":best_compression") { n.times { image.to_blob(:best_compression) } }
|
33
|
+
|
31
34
|
# Some options
|
32
|
-
x.report(
|
33
|
-
x.report(
|
34
|
-
x.report(
|
35
|
-
x.report(
|
36
|
-
|
35
|
+
x.report(":rgb") { n.times { image.to_blob(color_mode: ChunkyPNG::COLOR_TRUECOLOR) } }
|
36
|
+
x.report(":rgba") { n.times { image.to_blob(color_mode: ChunkyPNG::COLOR_TRUECOLOR_ALPHA) } }
|
37
|
+
x.report(":indexed") { n.times { image.to_blob(color_mode: ChunkyPNG::COLOR_INDEXED) } }
|
38
|
+
x.report(":interlaced") { n.times { image.to_blob(interlaced: true) } }
|
39
|
+
|
37
40
|
# Exports
|
38
|
-
x.report(
|
39
|
-
x.report(
|
41
|
+
x.report("to RGBA pixelstream") { n.times { image.to_rgba_stream } }
|
42
|
+
x.report("to RGB pixelstream") { n.times { image.to_rgb_stream } }
|
40
43
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/setup"
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "benchmark"
|
5
|
+
require "chunky_png"
|
6
6
|
|
7
|
-
files = [
|
7
|
+
files = ["pixelstream_reference.png", "operations.png", "clock.png"]
|
8
8
|
|
9
9
|
def encode_png(image, constraints = {})
|
10
10
|
filesize = nil
|
@@ -13,7 +13,7 @@ def encode_png(image, constraints = {})
|
|
13
13
|
end
|
14
14
|
|
15
15
|
files.each do |file|
|
16
|
-
filename = File.join(File.dirname(__FILE__),
|
16
|
+
filename = File.join(File.dirname(__FILE__), "..", "spec", "resources", file)
|
17
17
|
image = ChunkyPNG::Canvas.from_file(filename)
|
18
18
|
|
19
19
|
puts "#{file}: #{image.width}x#{image.height} - #{image.palette.size} colors"
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/standardrb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'standardrb' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("standard", "standardrb")
|
data/chunky_png.gemspec
CHANGED
@@ -1,11 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
4
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require
|
3
|
+
require "chunky_png/version"
|
6
4
|
|
7
5
|
Gem::Specification.new do |s|
|
8
|
-
s.name =
|
6
|
+
s.name = "chunky_png"
|
9
7
|
|
10
8
|
# Do not change the version and date fields by hand. This will be done
|
11
9
|
# automatically by the gem release script.
|
@@ -31,20 +29,22 @@ Gem::Specification.new do |s|
|
|
31
29
|
provides a massive speed boost to encoding and decoding.
|
32
30
|
EOT
|
33
31
|
|
34
|
-
s.authors = [
|
35
|
-
s.email = [
|
36
|
-
s.homepage =
|
37
|
-
s.license =
|
32
|
+
s.authors = ["Willem van Bergen"]
|
33
|
+
s.email = ["willem@railsdoctors.com"]
|
34
|
+
s.homepage = "https://github.com/wvanbergen/chunky_png/wiki"
|
35
|
+
s.license = "MIT"
|
38
36
|
s.metadata = {
|
39
|
-
"source_code_uri"
|
40
|
-
"wiki_uri"
|
37
|
+
"source_code_uri" => "https://github.com/wvanbergen/chunky_png",
|
38
|
+
"wiki_uri" => "https://github.com/wvanbergen/chunky_png/wiki",
|
41
39
|
}
|
42
40
|
|
43
|
-
s.add_development_dependency(
|
44
|
-
s.add_development_dependency(
|
41
|
+
s.add_development_dependency("rake")
|
42
|
+
s.add_development_dependency("standard")
|
43
|
+
s.add_development_dependency("yard", "~> 0.9")
|
44
|
+
s.add_development_dependency("rspec", "~> 3")
|
45
45
|
|
46
|
-
s.rdoc_options <<
|
47
|
-
s.extra_rdoc_files = [
|
46
|
+
s.rdoc_options << "--title" << s.name << "--main" << "README.rdoc" << "--line-numbers" << "--inline-source"
|
47
|
+
s.extra_rdoc_files = ["README.md", "BENCHMARKING.rdoc", "CONTRIBUTING.rdoc", "CHANGELOG.rdoc"]
|
48
48
|
|
49
49
|
s.files = `git ls-files`.split($/)
|
50
50
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
data/lib/chunky_png.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# Basic requirements from standard library
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require 'enumerator'
|
2
|
+
require "set"
|
3
|
+
require "zlib"
|
4
|
+
require "stringio"
|
6
5
|
|
7
6
|
# ChunkyPNG - the pure ruby library to access PNG files.
|
8
7
|
#
|
@@ -22,7 +21,6 @@ require 'enumerator'
|
|
22
21
|
#
|
23
22
|
# @author Willem van Bergen
|
24
23
|
module ChunkyPNG
|
25
|
-
|
26
24
|
###################################################
|
27
25
|
# PNG international standard defined constants
|
28
26
|
###################################################
|
@@ -131,7 +129,7 @@ module ChunkyPNG
|
|
131
129
|
class ExpectationFailed < ChunkyPNG::Exception
|
132
130
|
end
|
133
131
|
|
134
|
-
# Exception that
|
132
|
+
# Exception that when provided coordinates are out of bounds for the canvas
|
135
133
|
class OutOfBounds < ChunkyPNG::ExpectationFailed
|
136
134
|
end
|
137
135
|
|
@@ -140,40 +138,33 @@ module ChunkyPNG
|
|
140
138
|
class UnitsUnknown < ChunkyPNG::Exception
|
141
139
|
end
|
142
140
|
|
143
|
-
def self.force_binary(str)
|
144
|
-
str.respond_to?(:force_encoding) ? str.force_encoding('BINARY') : str
|
145
|
-
end
|
146
|
-
|
147
141
|
# Empty byte array. This basically is an empty string, but with the encoding
|
148
142
|
# set correctly to ASCII-8BIT (binary) in Ruby 1.9.
|
149
143
|
# @return [String] An empty string, with encoding set to binary in Ruby 1.9
|
150
144
|
# @private
|
151
|
-
EMPTY_BYTEARRAY =
|
145
|
+
EMPTY_BYTEARRAY = "".force_encoding(Encoding::BINARY).freeze
|
152
146
|
|
153
147
|
# Null-byte, with the encoding set correctly to ASCII-8BIT (binary) in Ruby 1.9.
|
154
148
|
# @return [String] A binary string, consisting of one NULL-byte.
|
155
149
|
# @private
|
156
|
-
EXTRA_BYTE =
|
150
|
+
EXTRA_BYTE = "\0".force_encoding(Encoding::BINARY).freeze
|
157
151
|
end
|
158
152
|
|
159
|
-
require
|
160
|
-
|
161
|
-
# Ruby 1.8 / 1.9 compatibility
|
162
|
-
require 'chunky_png/compatibility'
|
153
|
+
require "chunky_png/version"
|
163
154
|
|
164
155
|
# PNG file structure
|
165
|
-
require
|
166
|
-
require
|
156
|
+
require "chunky_png/datastream"
|
157
|
+
require "chunky_png/chunk"
|
167
158
|
|
168
159
|
# Colors
|
169
|
-
require
|
170
|
-
require
|
160
|
+
require "chunky_png/palette"
|
161
|
+
require "chunky_png/color"
|
171
162
|
|
172
163
|
# Geometry
|
173
|
-
require
|
174
|
-
require
|
175
|
-
require
|
164
|
+
require "chunky_png/point"
|
165
|
+
require "chunky_png/vector"
|
166
|
+
require "chunky_png/dimension"
|
176
167
|
|
177
168
|
# Canvas / Image classes
|
178
|
-
require
|
179
|
-
require
|
169
|
+
require "chunky_png/canvas"
|
170
|
+
require "chunky_png/image"
|