android_drawable_resizer 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +27 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +31 -0
- data/Rakefile +2 -0
- data/android_drawable_resizer.gemspec +28 -0
- data/bin/adr +31 -0
- data/lib/android_drawable_resizer.rb +39 -0
- data/lib/android_drawable_resizer/best_density_finder.rb +22 -0
- data/lib/android_drawable_resizer/image_resizer.rb +24 -0
- data/lib/android_drawable_resizer/resources_lister.rb +22 -0
- data/lib/android_drawable_resizer/version.rb +3 -0
- data/spec/android_drawable_resizer/android_drawable_resizer_spec.rb +72 -0
- data/spec/android_drawable_resizer/best_density_finder_spec.rb +38 -0
- data/spec/android_drawable_resizer/image_resizer_spec.rb +34 -0
- data/spec/android_drawable_resizer/resources_lister_spec.rb +42 -0
- data/spec/assets/ic_clock.png +0 -0
- data/spec/assets/more/res/.keep +0 -0
- data/spec/assets/res/drawable-ldpi/.keep +0 -0
- data/spec/assets/res/drawable-xhdpi/.keep +0 -0
- data/spec/assets/res/drawable-xxhdpi/ic_hamburger.png +0 -0
- data/spec/assets/res_empty/.keep +0 -0
- data/spec/spec_helper.rb +11 -0
- metadata +155 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8f1292805353a6ad9551aedafca4d779a629dbda
|
4
|
+
data.tar.gz: 267a3dc41d2836836291d30fe8c01d9ea5f24d66
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3389ea728fe5d1811db1c06e3bd8291fc002d6dcc5cb53ad5019477abfe55847cac3c4d241d623059f19ea32e26a26f77d1e6c8d33bc4d3b368f123744111685
|
7
|
+
data.tar.gz: 8c16b0c5a0bdbc84daf421dba00a0491b5b1b4dbad81d5c18d50da5afea68bcc75cbb286957be2fe84b3824779046c059b2066d1d64db86ef8ec45cf9a39512b
|
data/.gitignore
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# From 'bundle gem' generator
|
2
|
+
*.gem
|
3
|
+
*.rbc
|
4
|
+
.bundle
|
5
|
+
.config
|
6
|
+
.yardoc
|
7
|
+
Gemfile.lock
|
8
|
+
InstalledFiles
|
9
|
+
_yardoc
|
10
|
+
coverage
|
11
|
+
doc/
|
12
|
+
lib/bundler/man
|
13
|
+
pkg
|
14
|
+
rdoc
|
15
|
+
spec/reports
|
16
|
+
test/tmp
|
17
|
+
test/version_tmp
|
18
|
+
tmp
|
19
|
+
*.bundle
|
20
|
+
*.so
|
21
|
+
*.o
|
22
|
+
*.a
|
23
|
+
mkmf.log
|
24
|
+
|
25
|
+
# Sublime Text
|
26
|
+
*.sublime-workspace
|
27
|
+
*.sublime-project
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Rubén Illodo Brea
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# Android Drawable Resizer
|
2
|
+
|
3
|
+
Android Drawable Resizer provides a command `adr` that automatically scales your
|
4
|
+
highest density Android drawable resources for all the lower densities.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Android Drawable Resizer depends on the
|
9
|
+
[RMagick](http://rubygems.org/gems/rmagick) gem, which needs
|
10
|
+
[ImageMagick](http://www.imagemagick.org/) to be installed.
|
11
|
+
|
12
|
+
So, after installing ImageMagick, just run
|
13
|
+
`gem install android_drawable_resizer`.
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
**Warning!** Please, try the script safely, after commiting your previous
|
18
|
+
changes. Both the script and I are newcomers, and I wouldn’t like to cause a
|
19
|
+
disaster on your project. Also, please note that **there is no support for
|
20
|
+
9-patches**, as they need a quite special treatment.
|
21
|
+
|
22
|
+
Run the `adr` command from the `res` folder on your Android project o pass the
|
23
|
+
route to it as a parameter (`adr ~/the/route/to/res`).
|
24
|
+
|
25
|
+
## Contributing
|
26
|
+
|
27
|
+
1. Fork it (https://github.com/rulych/android_drawable_resizer/fork).
|
28
|
+
2. Create your feature branch (`git checkout -b my-new-feature`).
|
29
|
+
3. Commit your changes (`git commit -am 'Add some feature'`).
|
30
|
+
4. Push to the branch (`git push origin my-new-feature`).
|
31
|
+
5. Create a new Pull Request.
|
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'android_drawable_resizer/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "android_drawable_resizer"
|
8
|
+
spec.version = AndroidDrawableResizer::VERSION
|
9
|
+
spec.authors = ["Rubén Illodo Brea"]
|
10
|
+
spec.email = ["rubenillodobrea@gmail.com"]
|
11
|
+
spec.summary = %q{Automatically scales your highest density Android drawable resources for all the lower densities.}
|
12
|
+
spec.description = %q{You can work with icons only in the highest density (xxxhpdi, for example) and let the ‘adr’ command take care of resizing them for all the densities from ldpi to xxhdpi.}
|
13
|
+
spec.homepage = "https://github.com/rulych/android_drawable_resizer"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = ["adr"]
|
18
|
+
spec.test_files = ["spec"]
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.3"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
24
|
+
|
25
|
+
spec.add_runtime_dependency "rmagick", "~> 2.13"
|
26
|
+
spec.add_runtime_dependency "fileutils", "~> 0.7"
|
27
|
+
spec.add_runtime_dependency "colorize", "~> 0.7"
|
28
|
+
end
|
data/bin/adr
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
|
5
|
+
require 'android_drawable_resizer'
|
6
|
+
include AndroidDrawableResizer
|
7
|
+
|
8
|
+
dir = execution_dir(ARGV[0]) do |dir|
|
9
|
+
best_density = BestDensityFinder.search_in('.')
|
10
|
+
best_density_dir = directory_for_density(best_density)
|
11
|
+
|
12
|
+
ResourcesLister.resources_in(best_density_dir) do |resource|
|
13
|
+
resizer = ImageResizer.new(resource, best_density)
|
14
|
+
DENSITIES.keys.reverse.each do |target_density|
|
15
|
+
next if target_density == best_density
|
16
|
+
|
17
|
+
resized_image = resizer.resize_to(target_density)
|
18
|
+
target_dir = "../#{directory_for_density(target_density)}"
|
19
|
+
|
20
|
+
Dir.mkdir(target_dir) unless Dir.exists?(target_dir)
|
21
|
+
Dir.chdir(target_dir) do
|
22
|
+
resized_image.write(resource)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if !dir
|
29
|
+
puts "#{'Invalid directory!'.red} adr must be run on the " +
|
30
|
+
"#{'/res'.green} directory of an Android project."
|
31
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'android_drawable_resizer/version'
|
2
|
+
|
3
|
+
require 'android_drawable_resizer/image_resizer'
|
4
|
+
require 'android_drawable_resizer/best_density_finder'
|
5
|
+
require 'android_drawable_resizer/resources_lister'
|
6
|
+
|
7
|
+
module AndroidDrawableResizer
|
8
|
+
|
9
|
+
DENSITIES = {
|
10
|
+
ldpi: 3,
|
11
|
+
mdpi: 4,
|
12
|
+
hdpi: 6,
|
13
|
+
xhdpi: 8,
|
14
|
+
xxhdpi: 12,
|
15
|
+
xxxhdpi: 16
|
16
|
+
}
|
17
|
+
|
18
|
+
def directory_for_density(density)
|
19
|
+
"drawable-#{density}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def execution_dir(candidate = nil)
|
23
|
+
current_dir = File.basename(Dir.getwd)
|
24
|
+
|
25
|
+
directory = '.'
|
26
|
+
if candidate
|
27
|
+
directory = candidate
|
28
|
+
current_dir = candidate
|
29
|
+
end
|
30
|
+
|
31
|
+
ok = Dir.exists?(directory)
|
32
|
+
ok &&= /^\/?res\/?$/.match File.basename(current_dir)
|
33
|
+
|
34
|
+
return nil unless ok
|
35
|
+
Dir.chdir(directory) { yield(directory) } if block_given?
|
36
|
+
directory
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'android_drawable_resizer'
|
2
|
+
|
3
|
+
module AndroidDrawableResizer
|
4
|
+
class BestDensityFinder
|
5
|
+
|
6
|
+
def self.search_in(directory)
|
7
|
+
Dir.chdir(directory) { search_in_current_dir }
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def self.search_in_current_dir
|
12
|
+
DENSITIES.keys.reverse.each do |density|
|
13
|
+
drawable_dir = directory_for_density(density)
|
14
|
+
|
15
|
+
return density if Dir.exists?(drawable_dir)
|
16
|
+
end
|
17
|
+
|
18
|
+
return nil
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'android_drawable_resizer'
|
2
|
+
require 'rmagick'
|
3
|
+
|
4
|
+
module AndroidDrawableResizer
|
5
|
+
class ImageResizer
|
6
|
+
attr_accessor :image, :original_density
|
7
|
+
|
8
|
+
def initialize(resource_path, original_density)
|
9
|
+
raise "Invalid resource path!" unless resource_path
|
10
|
+
@image = Magick::Image::read(resource_path).first
|
11
|
+
@original_density = original_density
|
12
|
+
end
|
13
|
+
|
14
|
+
def resize_to(target_density)
|
15
|
+
@image.scale(resize_factor(target_density))
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def resize_factor(target_density)
|
20
|
+
DENSITIES[target_density].to_f / DENSITIES[@original_density]
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'android_drawable_resizer'
|
2
|
+
|
3
|
+
module AndroidDrawableResizer
|
4
|
+
class ResourcesLister
|
5
|
+
|
6
|
+
def self.resources_in(dir)
|
7
|
+
resources = []
|
8
|
+
|
9
|
+
Dir.chdir(dir) do
|
10
|
+
entries = Dir.entries('.')
|
11
|
+
entries.each do |entry|
|
12
|
+
next unless /\.png$/.match(entry)
|
13
|
+
yield(entry) if block_given?
|
14
|
+
resources << entry
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
resources
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AndroidDrawableResizer do
|
4
|
+
|
5
|
+
describe 'directory_for_density' do
|
6
|
+
|
7
|
+
it 'returns proper directory name' do
|
8
|
+
result = directory_for_density(:xxhdpi)
|
9
|
+
expect(result).to eq('drawable-xxhdpi')
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'execution_dir' do
|
15
|
+
|
16
|
+
context 'when invalid directory passed' do
|
17
|
+
it 'returns nil' do
|
18
|
+
result = execution_dir('aaa')
|
19
|
+
expect(result).to eq(nil)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'when no directory is passed' do
|
24
|
+
context 'when execution directory is not /res' do
|
25
|
+
it 'returns nil' do
|
26
|
+
expect(execution_dir).to eq(nil)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when execution directory is /res' do
|
31
|
+
it 'returns \'.\' directory' do
|
32
|
+
Dir.chdir('spec/assets/res') do
|
33
|
+
expect(execution_dir).to eq('.')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when directory is passed' do
|
40
|
+
context 'when passed directory is not /res' do
|
41
|
+
it 'returns nil' do
|
42
|
+
expect(execution_dir('spec/assets/res_empty')).to eq(nil)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'when passed directory is not valid' do
|
47
|
+
it 'returns nil' do
|
48
|
+
expect(execution_dir('asdf')).to eq(nil)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context 'when passed directory is valid /res' do
|
53
|
+
let(:candidate_dir) { 'spec/assets/res' }
|
54
|
+
|
55
|
+
it 'returns the passed directory' do
|
56
|
+
result = execution_dir(candidate_dir)
|
57
|
+
expect(result).to eq(candidate_dir)
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'when block given' do
|
61
|
+
it 'executes block on correct execution dir' do
|
62
|
+
block_dir = false
|
63
|
+
execution_dir(candidate_dir) { block_dir = Dir.pwd }
|
64
|
+
expect(block_dir).to eq("#{Dir.pwd}/#{candidate_dir}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BestDensityFinder do
|
4
|
+
|
5
|
+
describe '.search_in' do
|
6
|
+
context 'when invalid directory passed'do
|
7
|
+
context 'when directory is nil' do
|
8
|
+
it 'raises error' do
|
9
|
+
expect{ BestDensityFinder.search_in(nil) }.to raise_error
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when directory is string' do
|
14
|
+
it 'raises error' do
|
15
|
+
expect{ BestDensityFinder.search_in('aaa') }.to raise_error
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when proper directory passed' do
|
21
|
+
context 'when no density-specific drawable directory exists' do
|
22
|
+
it 'returns nil' do
|
23
|
+
result = BestDensityFinder.search_in('spec/assets/res_empty')
|
24
|
+
expect(result).to eq(nil)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when density-specific drawable directory exists' do
|
29
|
+
it 'returns higher density' do
|
30
|
+
result = BestDensityFinder.search_in('spec/assets/res')
|
31
|
+
expect(result).to eq(:xxhdpi)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ImageResizer do
|
4
|
+
|
5
|
+
describe '.resize_to' do
|
6
|
+
|
7
|
+
context 'when invalid image passed' do
|
8
|
+
it 'raises an error' do
|
9
|
+
expect{ ImageResizer.new(nil, :xxxhdpi).resize_to(:xxhdpi) }.to raise_error
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when valid image passed' do
|
14
|
+
let(:resizer) { ImageResizer.new('spec/assets/ic_clock.png', :xxxhdpi) }
|
15
|
+
|
16
|
+
it 'returns a Magick::Image object' do
|
17
|
+
resized_img = resizer.resize_to(:xxhdpi)
|
18
|
+
expect(resized_img).to be_an_instance_of(Magick::Image)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'properly scales a given image' do
|
22
|
+
inital_size = resizer.image.rows
|
23
|
+
|
24
|
+
resized_img = resizer.resize_to(:xxhdpi)
|
25
|
+
resized_size = resized_img.rows
|
26
|
+
|
27
|
+
expected_size = inital_size * 0.75
|
28
|
+
expect(resized_size).to eq(expected_size)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ResourcesLister do
|
4
|
+
|
5
|
+
describe '.resources_in' do
|
6
|
+
|
7
|
+
context 'when invalid dir passed' do
|
8
|
+
it 'raises error' do
|
9
|
+
expect{ ResourcesLister.resources_in('asdas') }.to raise_error
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when valid dir passed' do
|
14
|
+
context 'when no valid resource inside dir' do
|
15
|
+
it 'returns empty array' do
|
16
|
+
dir = 'spec/assets/res/drawable-xhdpi'
|
17
|
+
result = ResourcesLister.resources_in(dir)
|
18
|
+
expect(result).to eq([])
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when valid resources inside dir' do
|
23
|
+
let(:dir) { 'spec/assets/res/drawable-xxhdpi' }
|
24
|
+
|
25
|
+
it 'returns array of resources’ names' do
|
26
|
+
result = ResourcesLister.resources_in(dir)
|
27
|
+
expect(result).to eq([ 'ic_hamburger.png' ])
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when block given' do
|
31
|
+
it 'executes block on correct execution dir' do
|
32
|
+
block_dir = false
|
33
|
+
ResourcesLister.resources_in(dir) { block_dir = Dir.pwd }
|
34
|
+
expect(block_dir).to eq("#{Dir.pwd}/#{dir}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
Binary file
|
File without changes
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: android_drawable_resizer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rubén Illodo Brea
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-06-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rmagick
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.13'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.13'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: fileutils
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.7'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: colorize
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.7'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.7'
|
97
|
+
description: You can work with icons only in the highest density (xxxhpdi, for example)
|
98
|
+
and let the ‘adr’ command take care of resizing them for all the densities from
|
99
|
+
ldpi to xxhdpi.
|
100
|
+
email:
|
101
|
+
- rubenillodobrea@gmail.com
|
102
|
+
executables:
|
103
|
+
- adr
|
104
|
+
extensions: []
|
105
|
+
extra_rdoc_files: []
|
106
|
+
files:
|
107
|
+
- ".gitignore"
|
108
|
+
- Gemfile
|
109
|
+
- LICENSE.txt
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
112
|
+
- android_drawable_resizer.gemspec
|
113
|
+
- bin/adr
|
114
|
+
- lib/android_drawable_resizer.rb
|
115
|
+
- lib/android_drawable_resizer/best_density_finder.rb
|
116
|
+
- lib/android_drawable_resizer/image_resizer.rb
|
117
|
+
- lib/android_drawable_resizer/resources_lister.rb
|
118
|
+
- lib/android_drawable_resizer/version.rb
|
119
|
+
- spec/android_drawable_resizer/android_drawable_resizer_spec.rb
|
120
|
+
- spec/android_drawable_resizer/best_density_finder_spec.rb
|
121
|
+
- spec/android_drawable_resizer/image_resizer_spec.rb
|
122
|
+
- spec/android_drawable_resizer/resources_lister_spec.rb
|
123
|
+
- spec/assets/ic_clock.png
|
124
|
+
- spec/assets/more/res/.keep
|
125
|
+
- spec/assets/res/drawable-ldpi/.keep
|
126
|
+
- spec/assets/res/drawable-xhdpi/.keep
|
127
|
+
- spec/assets/res/drawable-xxhdpi/ic_hamburger.png
|
128
|
+
- spec/assets/res_empty/.keep
|
129
|
+
- spec/spec_helper.rb
|
130
|
+
homepage: https://github.com/rulych/android_drawable_resizer
|
131
|
+
licenses:
|
132
|
+
- MIT
|
133
|
+
metadata: {}
|
134
|
+
post_install_message:
|
135
|
+
rdoc_options: []
|
136
|
+
require_paths:
|
137
|
+
- lib
|
138
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - ">="
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
requirements: []
|
149
|
+
rubyforge_project:
|
150
|
+
rubygems_version: 2.3.0
|
151
|
+
signing_key:
|
152
|
+
specification_version: 4
|
153
|
+
summary: Automatically scales your highest density Android drawable resources for
|
154
|
+
all the lower densities.
|
155
|
+
test_files: []
|