motion-splash_generator 0.0.1
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 +7 -0
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +77 -0
- data/Rakefile +2 -0
- data/lib/motion/splash_generator.rb +16 -0
- data/lib/motion/splash_generator/image.rb +76 -0
- data/lib/motion/splash_generator/size.rb +33 -0
- data/lib/motion/splash_generator/splashes.yaml +71 -0
- data/lib/motion/splash_generator/version.rb +5 -0
- data/lib/tasks/splashes.rake +46 -0
- data/motion-splash_generator.gemspec +27 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8877ef4a19fb6bf5c2658fffc055a682dd76f142
|
4
|
+
data.tar.gz: b10af83a5a4dda66f10791a91dfa0e109ad28e88
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 545fd26422c61b08e5f4dda30edc139371aa6b11598c791af76ca24a39d6377ad5f4a02bee68b3e5e25f405a0bcdd6ef900558f4e42665bb01d4c1ae6d9b392e
|
7
|
+
data.tar.gz: ee282e41602f838b38ece553938272d8dc4ecaa88a55d75503f9436a540085990fda3c76dcf7ac7e8afb81e9286130fbd07ac7dfac4f971803d1d4fec0742df9
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Bodacious
|
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,77 @@
|
|
1
|
+
# Motion::SplashGenerator
|
2
|
+
|
3
|
+
Are you tired of spending hours creating all of the different splash image versions you need for your app?
|
4
|
+
|
5
|
+
motion-splash_generator effortlessly generates all of the iOS icon versions you'll ever need.
|
6
|
+
|
7
|
+
Need icons? We gots them here: https://github.com/KatanaCode/motion-icon_generator
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
You'll need to install imagemagick first:
|
12
|
+
|
13
|
+
``` bash
|
14
|
+
brew install imagemagick
|
15
|
+
```
|
16
|
+
|
17
|
+
Then add this line to your application's Gemfile:
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
gem 'motion-splash_generator'
|
21
|
+
```
|
22
|
+
|
23
|
+
And then execute:
|
24
|
+
|
25
|
+
$ bundle
|
26
|
+
|
27
|
+
Or install it yourself as:
|
28
|
+
|
29
|
+
$ gem install motion-splash_generator
|
30
|
+
|
31
|
+
and add it to your `Rakefile`:
|
32
|
+
|
33
|
+
require 'motion/splash_generator'
|
34
|
+
|
35
|
+
## Usage
|
36
|
+
|
37
|
+
Usage is super-easy:
|
38
|
+
|
39
|
+
1. Create a template icon image and save it as resources/splash-template.png. This should be about 2048x2048 pixels.
|
40
|
+
2. run this rake task to create your icons `rake splashes:generate`. After a few glorious seconds you should see a new directory filled with icons called simply "splashes/"
|
41
|
+
|
42
|
+
|
43
|
+
## Configuration
|
44
|
+
|
45
|
+
You can also set the following environment variables to change the default behaviour:
|
46
|
+
|
47
|
+
### Template image name/path
|
48
|
+
|
49
|
+
rake splashes:generate TEMPLATE="~/Desktop/my_template.png"
|
50
|
+
|
51
|
+
### Target directory name
|
52
|
+
|
53
|
+
rake splashes:generate TARGET="resources" # we do this, but it's well bad!
|
54
|
+
|
55
|
+
### Device types supported
|
56
|
+
|
57
|
+
rake splashes:generate DEVICES="iphone"
|
58
|
+
rake splashes:generate DEVICES="ipad"
|
59
|
+
rake splashes:generate DEVICES="universal" # creates all splash sizes
|
60
|
+
|
61
|
+
### Adding extra splash sizes types.
|
62
|
+
|
63
|
+
Icons are defined in [splashes.yaml](lib/motion/splash_generator/splashes.yaml). If you'd like to add your own custom splash sizes on a per-app basis, create a file named `config/splashes.yaml` in your app and stick some YAML in there.
|
64
|
+
|
65
|
+
If you see an icon type that we're missing, please create a pull request or an issue.
|
66
|
+
|
67
|
+
## Contributing
|
68
|
+
|
69
|
+
1. Fork it ( https://github.com/KatanaCode/motion-splash_generator/fork )
|
70
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
71
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
72
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
73
|
+
5. Create a new Pull Request
|
74
|
+
|
75
|
+
|
76
|
+
By [Katana Code: web developers, mobile app developers, nice guys](katanacode.com/tools?utm_source=GitHub&utm_medium=README&utm_campaign=motion-splash_generator
|
77
|
+
)
|
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require "motion/splash_generator/version"
|
4
|
+
|
5
|
+
|
6
|
+
module Motion
|
7
|
+
module SplashGenerator
|
8
|
+
def self.root
|
9
|
+
@root ||= File.join(File.dirname(__FILE__), '..', '..')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
$LOAD_PATH.unshift(Motion::SplashGenerator.root)
|
15
|
+
|
16
|
+
load "lib/tasks/splashes.rake"
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Motion
|
2
|
+
module SplashGenerator
|
3
|
+
class Image
|
4
|
+
|
5
|
+
include Magick
|
6
|
+
|
7
|
+
attr_reader :size
|
8
|
+
|
9
|
+
|
10
|
+
def initialize(size)
|
11
|
+
@size = size
|
12
|
+
end
|
13
|
+
|
14
|
+
def report
|
15
|
+
if File.exist?(filename)
|
16
|
+
puts("Created #{filename.ljust(50)}\t(#{size.actual_width}x#{size.actual_height} for #{size.idiom})")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def write!
|
21
|
+
create_target_directory
|
22
|
+
if requested_splash_for_size_idiom?(size)
|
23
|
+
begin
|
24
|
+
scaled_image.write(filename)
|
25
|
+
rescue
|
26
|
+
warn("Couldn't write #{filename}")
|
27
|
+
end
|
28
|
+
else
|
29
|
+
puts "Skipping #{size.idiom}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
|
37
|
+
def scaled_image
|
38
|
+
template_image.resize_to_fill(size.actual_width, size.actual_height)
|
39
|
+
end
|
40
|
+
|
41
|
+
def filename
|
42
|
+
"#{target}/#{size.name}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def requested_splash_for_size_idiom?(size)
|
46
|
+
device == 'universal' || size.idiom.start_with?(device)
|
47
|
+
end
|
48
|
+
|
49
|
+
def template_image
|
50
|
+
if File.exist?(img_name)
|
51
|
+
ImageList.new(img_name)
|
52
|
+
else
|
53
|
+
raise LoadError, "Can't find resources/splash-template.png. Did you even RTFM?"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_target_directory
|
58
|
+
FileUtils.mkdir(target) unless Dir.exist?(target)
|
59
|
+
end
|
60
|
+
|
61
|
+
def img_name
|
62
|
+
ENV['TEMPLATE'] || "resources/splash-templ.png"
|
63
|
+
end
|
64
|
+
|
65
|
+
def device
|
66
|
+
ENV['DEVICES'] || 'iphone'
|
67
|
+
end
|
68
|
+
|
69
|
+
def target
|
70
|
+
ENV['TARGET'] || 'splashes'
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Motion
|
2
|
+
|
3
|
+
module SplashGenerator
|
4
|
+
|
5
|
+
class Size
|
6
|
+
|
7
|
+
attr_reader :name
|
8
|
+
attr_reader :orientation
|
9
|
+
attr_reader :width
|
10
|
+
attr_reader :height
|
11
|
+
attr_reader :idiom
|
12
|
+
attr_accessor :scale
|
13
|
+
attr_reader :orientation
|
14
|
+
|
15
|
+
def initialize(attributes)
|
16
|
+
for key, value in attributes
|
17
|
+
instance_variable_set("@#{key}", value)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def actual_width
|
22
|
+
scale * width
|
23
|
+
end
|
24
|
+
|
25
|
+
def actual_height
|
26
|
+
scale * height
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
- # iPhone:
|
2
|
+
idiom: 'iphone < 4 portrait'
|
3
|
+
name: 'Default.png'
|
4
|
+
width: 320
|
5
|
+
height: 480
|
6
|
+
scale: 1
|
7
|
+
orientation: portrait
|
8
|
+
|
9
|
+
- # iPhone-Retina:
|
10
|
+
idiom: 'iphone 4 portrait'
|
11
|
+
name: 'Default@2x~iphone.png'
|
12
|
+
width: 320
|
13
|
+
height: 480
|
14
|
+
scale: 2
|
15
|
+
orientation: portrait
|
16
|
+
|
17
|
+
- # iPhone5:
|
18
|
+
idiom: 'iphone 5 portrait'
|
19
|
+
name: 'Default-568h@2x~iphone.png'
|
20
|
+
width: 320
|
21
|
+
height: 568
|
22
|
+
scale: 2
|
23
|
+
orientation: portrait
|
24
|
+
|
25
|
+
- # iPhone6:
|
26
|
+
idiom: 'iphone 6 portrait'
|
27
|
+
name: 'Default-667h@2x~iphone.png'
|
28
|
+
width: 375
|
29
|
+
height: 667
|
30
|
+
scale: 2
|
31
|
+
orientation: portrait
|
32
|
+
|
33
|
+
- # iPhone6Plus:
|
34
|
+
idiom: 'iphone 6 plus portrait'
|
35
|
+
name: 'Default-736h@3x~iphone.png'
|
36
|
+
width: 414
|
37
|
+
height: 736
|
38
|
+
scale: 3
|
39
|
+
orientation: portrait
|
40
|
+
|
41
|
+
- # iPad-portrait:
|
42
|
+
idiom: 'ipad 1/2 portrait'
|
43
|
+
name: 'Default-Portrait~ipad.png'
|
44
|
+
width: 768
|
45
|
+
height: 1024
|
46
|
+
scale: 1
|
47
|
+
orientation: portrait
|
48
|
+
|
49
|
+
- # iPad-landscape:
|
50
|
+
idiom: 'ipad 1/2 landscape'
|
51
|
+
name: 'Default-Landscape~ipad.png'
|
52
|
+
orientation: 'landscape'
|
53
|
+
width: 1024
|
54
|
+
height: 768
|
55
|
+
scale: 1
|
56
|
+
|
57
|
+
- # iPad3-portrait:
|
58
|
+
idiom: 'ipad 3/4/Air portrait'
|
59
|
+
name: 'Default-Portrait@2x~ipad.png'
|
60
|
+
width: 768
|
61
|
+
height: 1024
|
62
|
+
orientation: portrait
|
63
|
+
scale: 2
|
64
|
+
|
65
|
+
- # iPad3-landscape:
|
66
|
+
idiom: 'ipad 3/4/Air landscape'
|
67
|
+
name: 'Default-Landscape@2x~ipad.png'
|
68
|
+
orientation: 'landscape'
|
69
|
+
width: 1024
|
70
|
+
height: 768
|
71
|
+
scale: 2
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
require 'lib/motion/splash_generator/size'
|
3
|
+
require 'lib/motion/splash_generator/image'
|
4
|
+
|
5
|
+
namespace :splashes do
|
6
|
+
|
7
|
+
desc "Creates splash images for all devices"
|
8
|
+
|
9
|
+
task :generate do
|
10
|
+
splash_image_sizes.each do |size|
|
11
|
+
Motion::SplashGenerator::Image.new(size).tap do |splash_image|
|
12
|
+
splash_image.write!
|
13
|
+
splash_image.report
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
|
22
|
+
def splash_image_sizes
|
23
|
+
@splash_image_sizes ||= default_splash_image_sizes + local_splash_image_sizes
|
24
|
+
end
|
25
|
+
|
26
|
+
def default_splash_image_sizes
|
27
|
+
filename = File.join(Motion::SplashGenerator.root,
|
28
|
+
"lib/motion/splash_generator/splashes.yaml").to_s
|
29
|
+
splash_image_sizes_from_file(filename)
|
30
|
+
end
|
31
|
+
|
32
|
+
def local_splash_image_sizes
|
33
|
+
splash_image_sizes_from_file("config/splashes.yaml")
|
34
|
+
end
|
35
|
+
|
36
|
+
def splash_image_sizes_from_file(filename)
|
37
|
+
begin
|
38
|
+
YAML.load(File.read(filename)).map do |attributes|
|
39
|
+
Motion::SplashGenerator::Size.new(attributes)
|
40
|
+
end.flatten
|
41
|
+
rescue Errno::ENOENT
|
42
|
+
[]
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'motion/splash_generator/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "motion-splash_generator"
|
8
|
+
spec.version = Motion::SplashGenerator::VERSION
|
9
|
+
spec.authors = ["Bodacious"]
|
10
|
+
spec.email = ["gavin@katanacode.com"]
|
11
|
+
spec.summary = %q{Automatically generates all of the iOS splash images you'll never need}
|
12
|
+
spec.description = <<-DESC
|
13
|
+
Simple gem that adds a rake task to create all of the versions of iOS splash images you'll need to launch. Simply create a template splash file and let the app do the rest.
|
14
|
+
DESC
|
15
|
+
|
16
|
+
spec.homepage = ""
|
17
|
+
spec.license = "MIT"
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0")
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_dependency 'rmagick', '~> 2.15.0'
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
26
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: motion-splash_generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bodacious
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rmagick
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.15.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.15.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.7'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.7'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
description: |2
|
56
|
+
Simple gem that adds a rake task to create all of the versions of iOS splash images you'll need to launch. Simply create a template splash file and let the app do the rest.
|
57
|
+
email:
|
58
|
+
- gavin@katanacode.com
|
59
|
+
executables: []
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- Gemfile
|
65
|
+
- LICENSE.txt
|
66
|
+
- README.md
|
67
|
+
- Rakefile
|
68
|
+
- lib/motion/splash_generator.rb
|
69
|
+
- lib/motion/splash_generator/image.rb
|
70
|
+
- lib/motion/splash_generator/size.rb
|
71
|
+
- lib/motion/splash_generator/splashes.yaml
|
72
|
+
- lib/motion/splash_generator/version.rb
|
73
|
+
- lib/tasks/splashes.rake
|
74
|
+
- motion-splash_generator.gemspec
|
75
|
+
homepage: ''
|
76
|
+
licenses:
|
77
|
+
- MIT
|
78
|
+
metadata: {}
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 2.4.5
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Automatically generates all of the iOS splash images you'll never need
|
99
|
+
test_files: []
|