chunky_png 1.2.4 → 1.2.5
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/.travis.yml +1 -0
- data/chunky_png.gemspec +2 -2
- data/lib/chunky_png.rb +1 -1
- data/lib/chunky_png/canvas/data_url_importing.rb +6 -4
- data/lib/chunky_png/canvas/masking.rb +1 -1
- data/lib/chunky_png/color.rb +7 -2
- data/spec/chunky_png/color_spec.rb +12 -0
- metadata +50 -61
data/.travis.yml
CHANGED
data/chunky_png.gemspec
CHANGED
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
|
|
3
3
|
|
4
4
|
# Do not change the version and date fields by hand. This will be done
|
5
5
|
# automatically by the gem release script.
|
6
|
-
s.version = "1.2.
|
7
|
-
s.date = "2011-09-
|
6
|
+
s.version = "1.2.5"
|
7
|
+
s.date = "2011-09-23"
|
8
8
|
|
9
9
|
s.summary = "Pure ruby library for read/write, chunk-level access to PNG files"
|
10
10
|
s.description = <<-EOT
|
data/lib/chunky_png.rb
CHANGED
@@ -25,7 +25,7 @@ module ChunkyPNG
|
|
25
25
|
|
26
26
|
# The current version of ChunkyPNG. This value will be updated
|
27
27
|
# automatically by them <tt>gem:release</tt> rake task.
|
28
|
-
VERSION = "1.2.
|
28
|
+
VERSION = "1.2.5"
|
29
29
|
|
30
30
|
###################################################
|
31
31
|
# PNG international standard defined constants
|
@@ -1,12 +1,14 @@
|
|
1
1
|
module ChunkyPNG
|
2
2
|
class Canvas
|
3
3
|
|
4
|
-
# Methods to
|
4
|
+
# Methods to import a canvas from a PNG data URL.
|
5
5
|
module DataUrlImporting
|
6
6
|
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# @return [
|
7
|
+
# Imports a canvas from a PNG data URL.
|
8
|
+
# @param [String] string The data URL string to load from.
|
9
|
+
# @return [Canvas] The imported canvas.
|
10
|
+
# @raise ChunkyPNG::SignatureMismatch if the provides string is not a properly
|
11
|
+
# formatted PNG data URL (i.e. it should start with "data:image/png;base64,")
|
10
12
|
def from_data_url(string)
|
11
13
|
if string =~ %r[^data:image/png;base64,((?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=))$]
|
12
14
|
from_blob($1.unpack('m').first)
|
@@ -20,7 +20,7 @@ module ChunkyPNG
|
|
20
20
|
#
|
21
21
|
# @param [Integer] old_theme_color The original theme color in this image.
|
22
22
|
# @param [Integer] new_theme_color The color to replace the old theme color with.
|
23
|
-
# @param [Integer] The background color on which the theme colored pixels are placed.
|
23
|
+
# @param [Integer] bg_color The background color on which the theme colored pixels are placed.
|
24
24
|
# @param [Integer] tolerance The tolerance level to use when extracting the mask image. Five is
|
25
25
|
# the default; increase this if the masked image does not extract all the required pixels,
|
26
26
|
# decrease it if too many pixels get extracted.
|
data/lib/chunky_png/color.rb
CHANGED
@@ -422,8 +422,13 @@ module ChunkyPNG
|
|
422
422
|
# @param [Integer] bg The background color on which the color was composed.
|
423
423
|
# @return [Integer] The decomposed alpha value for the channel.
|
424
424
|
def decompose_alpha_component(channel, color, mask, bg)
|
425
|
-
|
426
|
-
|
425
|
+
cc, mc, bc = send(channel, color), send(channel, mask), send(channel, bg)
|
426
|
+
|
427
|
+
return 0x00 if bc == cc
|
428
|
+
return 0xff if bc == mc
|
429
|
+
return 0xff if cc == mc
|
430
|
+
|
431
|
+
(((bc - cc).to_f / (bc - mc).to_f) * MAX).round
|
427
432
|
end
|
428
433
|
|
429
434
|
# Decomposes the alpha channels for the r, g and b color channel.
|
@@ -219,6 +219,18 @@ describe ChunkyPNG::Color do
|
|
219
219
|
it "should decompose the alpha channel correctly" do
|
220
220
|
decompose_alpha(0x9fc2d6ff, @opaque, @white).should == 0x00000064
|
221
221
|
end
|
222
|
+
|
223
|
+
it "should return fully transparent if the background channel matches the resulting color" do
|
224
|
+
decompose_alpha(0xabcdefff, 0xff000000, 0xabcdefff).should == 0x00
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should return fully opaque if the background channel matches the mask color" do
|
228
|
+
decompose_alpha(0xff000000, 0xabcdefff, 0xabcdefff).should == 0xff
|
229
|
+
end
|
230
|
+
|
231
|
+
it "should return fully opaque if the resulting color matches the mask color" do
|
232
|
+
decompose_alpha(0xabcdefff, 0xabcdefff, 0xffffffff).should == 255
|
233
|
+
end
|
222
234
|
end
|
223
235
|
|
224
236
|
describe '#blend' do
|
metadata
CHANGED
@@ -1,63 +1,60 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: chunky_png
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.5
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 4
|
10
|
-
version: 1.2.4
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Willem van Bergen
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2011-09-14 00:00:00 -04:00
|
12
|
+
date: 2011-09-23 00:00:00.000000000 -04:00
|
19
13
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
22
16
|
name: rake
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: &2153017100 !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
33
23
|
type: :development
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: rspec
|
37
24
|
prerelease: false
|
38
|
-
|
25
|
+
version_requirements: *2153017100
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rspec
|
28
|
+
requirement: &2153016480 !ruby/object:Gem::Requirement
|
39
29
|
none: false
|
40
|
-
requirements:
|
30
|
+
requirements:
|
41
31
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
segments:
|
45
|
-
- 2
|
46
|
-
- 2
|
47
|
-
version: "2.2"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.2'
|
48
34
|
type: :development
|
49
|
-
|
50
|
-
|
51
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2153016480
|
37
|
+
description: ! " This pure Ruby library can read and write PNG images without depending
|
38
|
+
on an external \n image library, like RMagick. It tries to be memory efficient
|
39
|
+
and reasonably fast.\n \n It supports reading and writing all PNG variants
|
40
|
+
that are defined in the specification, \n with one limitation: only 8-bit color
|
41
|
+
depth is supported. It supports all transparency, \n interlacing and filtering
|
42
|
+
options the PNG specifications allows. It can also read and \n write textual
|
43
|
+
metadata from PNG files. Low-level read/write access to PNG chunks is\n also
|
44
|
+
possible.\n \n This library supports simple drawing on the image canvas and
|
45
|
+
simple operations like\n alpha composition and cropping. Finally, it can import
|
46
|
+
from and export to RMagick for \n interoperability.\n \n Also, have a look
|
47
|
+
at OilyPNG at http://github.com/wvanbergen/oily_png. OilyPNG is a \n drop in
|
48
|
+
mixin module that implements some of the ChunkyPNG algorithms in C, which \n provides
|
49
|
+
a massive speed boost to encoding and decoding.\n"
|
50
|
+
email:
|
52
51
|
- willem@railsdoctors.com
|
53
52
|
executables: []
|
54
|
-
|
55
53
|
extensions: []
|
56
|
-
|
57
|
-
extra_rdoc_files:
|
54
|
+
extra_rdoc_files:
|
58
55
|
- README.rdoc
|
59
56
|
- BENCHMARKS.rdoc
|
60
|
-
files:
|
57
|
+
files:
|
61
58
|
- .gitignore
|
62
59
|
- .infinity_test
|
63
60
|
- .travis.yml
|
@@ -378,43 +375,35 @@ files:
|
|
378
375
|
has_rdoc: true
|
379
376
|
homepage: http://wiki.github.com/wvanbergen/chunky_png
|
380
377
|
licenses: []
|
381
|
-
|
382
378
|
post_install_message:
|
383
|
-
rdoc_options:
|
379
|
+
rdoc_options:
|
384
380
|
- --title
|
385
381
|
- chunky_png
|
386
382
|
- --main
|
387
383
|
- README.rdoc
|
388
384
|
- --line-numbers
|
389
385
|
- --inline-source
|
390
|
-
require_paths:
|
386
|
+
require_paths:
|
391
387
|
- lib
|
392
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
388
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
393
389
|
none: false
|
394
|
-
requirements:
|
395
|
-
- -
|
396
|
-
- !ruby/object:Gem::Version
|
397
|
-
|
398
|
-
|
399
|
-
- 0
|
400
|
-
version: "0"
|
401
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
390
|
+
requirements:
|
391
|
+
- - ! '>='
|
392
|
+
- !ruby/object:Gem::Version
|
393
|
+
version: '0'
|
394
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
402
395
|
none: false
|
403
|
-
requirements:
|
404
|
-
- -
|
405
|
-
- !ruby/object:Gem::Version
|
406
|
-
|
407
|
-
segments:
|
408
|
-
- 0
|
409
|
-
version: "0"
|
396
|
+
requirements:
|
397
|
+
- - ! '>='
|
398
|
+
- !ruby/object:Gem::Version
|
399
|
+
version: '0'
|
410
400
|
requirements: []
|
411
|
-
|
412
401
|
rubyforge_project:
|
413
402
|
rubygems_version: 1.6.2
|
414
403
|
signing_key:
|
415
404
|
specification_version: 3
|
416
405
|
summary: Pure ruby library for read/write, chunk-level access to PNG files
|
417
|
-
test_files:
|
406
|
+
test_files:
|
418
407
|
- spec/chunky_png/canvas/adam7_interlacing_spec.rb
|
419
408
|
- spec/chunky_png/canvas/data_url_exporting_spec.rb
|
420
409
|
- spec/chunky_png/canvas/data_url_importing_spec.rb
|