chunky_png 1.3.9 → 1.3.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.standard.yml +16 -0
- data/.travis.yml +8 -6
- data/.yardopts +1 -1
- data/CHANGELOG.rdoc +9 -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 +19 -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 +22 -24
- 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 +55 -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 +38 -7
- 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,16 +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
|
+
- "2.3"
|
10
|
+
- "2.4"
|
11
|
+
- "2.5"
|
12
|
+
- "2.6"
|
9
13
|
- ruby-head
|
10
|
-
- rbx-19mode
|
11
14
|
- jruby-19mode
|
12
15
|
|
13
16
|
matrix:
|
14
17
|
allow_failures:
|
15
|
-
- rvm: rbx-19mode
|
16
18
|
- rvm: ruby-head
|
data/.yardopts
CHANGED
data/CHANGELOG.rdoc
CHANGED
@@ -7,7 +7,15 @@ 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
|
15
|
+
|
16
|
+
=== 1.3.10 - 2018-01-23
|
17
|
+
|
18
|
+
- Fixed a regression in Datastream#metadata, which was not able to deal with iTXt chunks.
|
11
19
|
|
12
20
|
=== 1.3.9 - 2018-01-23
|
13
21
|
|
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,16 +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 =
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
s.
|
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"
|
36
|
+
s.metadata = {
|
37
|
+
"source_code_uri" => "https://github.com/wvanbergen/chunky_png",
|
38
|
+
"wiki_uri" => "https://github.com/wvanbergen/chunky_png/wiki",
|
39
|
+
}
|
40
|
+
|
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
|
+
|
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"]
|
44
48
|
|
45
49
|
s.files = `git ls-files`.split($/)
|
46
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"
|