ico 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c064583f3bb03c8b2c7a4694c398cf335900de69
4
- data.tar.gz: 3650715d02a41fe6ffc78af9dca2d40fedff8160
3
+ metadata.gz: 5a012e50b4d328b067cd6bc6c8eb90e88cd1b5b6
4
+ data.tar.gz: 8a2da2df36d786586806871a0e205e0cacb1acdb
5
5
  SHA512:
6
- metadata.gz: db45233ea75ef0015f5e6adc091ed1747bdb1cfeb13fc947246772dae4e38e67354221f3cd70a858dd4c5efe7881f9ca620459e515538a19601105f162c27f36
7
- data.tar.gz: 0512d897448380af03c439e6ad59717478cf3a860acaf2ea478edd9ddb7aa9ba71a8ebceb4ba0b93c34842bc6ec170129bd2aaa03fd62f53aada4697c83678e1
6
+ metadata.gz: e6c9f22a4bfe78001d2c80c852943639d82b6e1c5062a585835293d1fdbe7a07c7e82e753799b7de92eaca3e51f46172432caf59bbfaacc113f36476c50677c7
7
+ data.tar.gz: 77512c9b61c7268f65cdd434bc0e3d8d4cd64636efc9225672a456df8f6173b0d206d61629d4f1f9843e9ba2a2c97af5939cbc46af5f068a81aef88be6faa41c
data/Manifest.txt CHANGED
@@ -7,6 +7,7 @@ LICENSE
7
7
  Manifest.txt
8
8
  README.md
9
9
  Rakefile
10
+ ico.gemspec
10
11
  lib/core_ext/array/extract_options.rb
11
12
  lib/ico.rb
12
13
  lib/ico/icon_dir.rb
data/ico.gemspec ADDED
@@ -0,0 +1,67 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: ico 0.1.1 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "ico"
6
+ s.version = "0.1.1"
7
+
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
10
+ s.authors = ["So Awesome Man"]
11
+ s.date = "2017-04-02"
12
+ s.description = "ICO file format in Ruby"
13
+ s.email = "support@bordee.com"
14
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.md", "History.txt"]
15
+ s.files = [".autotest", ".gitignore", ".hoeignore", "Gemfile", "History.txt", "LICENSE", "Manifest.txt", "README.md", "Rakefile", "ico.gemspec", "lib/core_ext/array/extract_options.rb", "lib/ico.rb", "lib/ico/icon_dir.rb", "lib/ico/icon_dir_entry.rb", "lib/ico/icon_image.rb", "lib/ico/utils.rb", "lib/ico/version.rb", "lib/tasks/ico.rake"]
16
+ s.homepage = "https://github.com/bordeeinc/ico"
17
+ s.licenses = ["MIT"]
18
+ s.rdoc_options = ["--title", "ico", "--markup", "markdown", "--quiet"]
19
+ s.required_ruby_version = Gem::Requirement.new(">= 1.9.2")
20
+ s.rubygems_version = "2.2.5"
21
+ s.summary = "ICO file format in Ruby"
22
+
23
+ if s.respond_to? :specification_version then
24
+ s.specification_version = 4
25
+
26
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
+ s.add_runtime_dependency(%q<chunky_png>, ["= 1.3.8"])
28
+ s.add_runtime_dependency(%q<bit-struct>, ["= 0.15.0"])
29
+ s.add_runtime_dependency(%q<bmp-ruby>, ["= 0.1.1"])
30
+ s.add_development_dependency(%q<minitest>, ["~> 5.10"])
31
+ s.add_development_dependency(%q<hoe-yard>, [">= 0.1.3"])
32
+ s.add_development_dependency(%q<hoe-ignore>, ["~> 1.0"])
33
+ s.add_development_dependency(%q<hoe-bundler>, ["~> 1.2"])
34
+ s.add_development_dependency(%q<hoe-gemspec>, ["~> 1.0"])
35
+ s.add_development_dependency(%q<hoe-git>, ["~> 1.6"])
36
+ s.add_development_dependency(%q<yard>, ["~> 0.8"])
37
+ s.add_development_dependency(%q<redcarpet>, ["~> 3.3"])
38
+ s.add_development_dependency(%q<hoe>, ["~> 3.16"])
39
+ else
40
+ s.add_dependency(%q<chunky_png>, ["= 1.3.8"])
41
+ s.add_dependency(%q<bit-struct>, ["= 0.15.0"])
42
+ s.add_dependency(%q<bmp-ruby>, ["= 0.1.1"])
43
+ s.add_dependency(%q<minitest>, ["~> 5.10"])
44
+ s.add_dependency(%q<hoe-yard>, [">= 0.1.3"])
45
+ s.add_dependency(%q<hoe-ignore>, ["~> 1.0"])
46
+ s.add_dependency(%q<hoe-bundler>, ["~> 1.2"])
47
+ s.add_dependency(%q<hoe-gemspec>, ["~> 1.0"])
48
+ s.add_dependency(%q<hoe-git>, ["~> 1.6"])
49
+ s.add_dependency(%q<yard>, ["~> 0.8"])
50
+ s.add_dependency(%q<redcarpet>, ["~> 3.3"])
51
+ s.add_dependency(%q<hoe>, ["~> 3.16"])
52
+ end
53
+ else
54
+ s.add_dependency(%q<chunky_png>, ["= 1.3.8"])
55
+ s.add_dependency(%q<bit-struct>, ["= 0.15.0"])
56
+ s.add_dependency(%q<bmp-ruby>, ["= 0.1.1"])
57
+ s.add_dependency(%q<minitest>, ["~> 5.10"])
58
+ s.add_dependency(%q<hoe-yard>, [">= 0.1.3"])
59
+ s.add_dependency(%q<hoe-ignore>, ["~> 1.0"])
60
+ s.add_dependency(%q<hoe-bundler>, ["~> 1.2"])
61
+ s.add_dependency(%q<hoe-gemspec>, ["~> 1.0"])
62
+ s.add_dependency(%q<hoe-git>, ["~> 1.6"])
63
+ s.add_dependency(%q<yard>, ["~> 0.8"])
64
+ s.add_dependency(%q<redcarpet>, ["~> 3.3"])
65
+ s.add_dependency(%q<hoe>, ["~> 3.16"])
66
+ end
67
+ end
data/lib/ico.rb CHANGED
@@ -32,23 +32,28 @@ module ICO
32
32
  # ensure .png extensions
33
33
  raise "more than PNG format files in #{filename_array.inspect}" if ICO::Utils.contains_other_than_ext?(fn_array, :png)
34
34
 
35
+ fn_array_length = fn_array.length
35
36
  icon_dir = ICO::IconDir.new
36
37
  icon_dir.image_count = fn_array.length
37
- offset = ICO::IconDir::LENGTH_IN_BYTES + (fn_array.length * ICO::IconDirEntry::LENGTH_IN_BYTES)
38
- entries = fn_array.inject({}) {|h,fn| h[fn] = ICO::IconDirEntry.new; h}
39
- images = fn_array.inject({}) {|h,fn| h[fn] = ICO::IconImage.new; h}
40
- images_hash = ICO::Utils.sizes_hash(fn_array, true, true)
38
+ offset = ICO::IconDir::LENGTH_IN_BYTES + (fn_array_length * ICO::IconDirEntry::LENGTH_IN_BYTES)
39
+ entries = Array.new(fn_array_length) {ICO::IconDirEntry.new}
40
+ images = Array.new(fn_array_length) {ICO::IconImage.new}
41
+ # reorder by image size
42
+ images_array = ICO::Utils.sizes_hash(fn_array, true, true).values
41
43
 
42
- images_hash.each do |size,fn|
44
+ images_array.each_with_index do |fn,i|
43
45
  img = ChunkyPNG::Image.from_file(fn)
46
+ #img_hash = BMP::Utils.parse_image(img, ICO::IconImage::HEADER_SIZE_IN_BYTES)
44
47
  img_hash = BMP::Utils.parse_image(img)
48
+ file_size = img_hash[:image_size] + ICO::IconImage::HEADER_SIZE_IN_BYTES
45
49
 
46
- entry = entries[fn]
47
- image = images[fn]
50
+ entry = entries[i]
51
+ image = images[i]
48
52
 
49
53
  entry.width = img_hash[:image_width]
50
54
  entry.height = img_hash[:image_height]
51
- entry.bytes_in_res = img_hash[:file_size]
55
+ #entry.bytes_in_res = img_hash[:file_size]
56
+ entry.bytes_in_res = file_size
52
57
  entry.image_offset = offset
53
58
 
54
59
  image.width = img_hash[:image_width]
@@ -56,14 +61,12 @@ module ICO
56
61
  image.size_image = img_hash[:image_size]
57
62
  image.data = img_hash[:pixel_array]
58
63
 
59
- offset += img_hash[:file_size]
64
+ #offset += img_hash[:file_size]
65
+ offset += file_size
60
66
  end
61
67
 
62
- # IconDirEntry section as binary data string
63
- icon_dir.data = images_hash.inject('') {|str,(k,v)| str += entries.fetch(v); str}
64
-
65
- # IconImage section as binary data string
66
- icon_dir.data += images_hash.inject('') {|str,(k,v)| str += images.fetch(v); str}
68
+ # IconDirEntry + IconImage section as binary data string
69
+ icon_dir.data = entries.join + images.join
67
70
 
68
71
  icon_dir
69
72
  end
data/lib/ico/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module ICO
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ico
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - So Awesome Man
@@ -196,6 +196,7 @@ files:
196
196
  - Manifest.txt
197
197
  - README.md
198
198
  - Rakefile
199
+ - ico.gemspec
199
200
  - lib/core_ext/array/extract_options.rb
200
201
  - lib/ico.rb
201
202
  - lib/ico/icon_dir.rb