dynamic-sprites 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/dynamic-sprites +2 -0
- data/lib/dynamic-sprites.rb +2 -1
- data/lib/dynamic-sprites/generator.rb +28 -42
- data/lib/dynamic-sprites/runner.rb +2 -2
- metadata +12 -9
- checksums.yaml +0 -7
data/bin/dynamic-sprites
CHANGED
@@ -31,11 +31,13 @@ end
|
|
31
31
|
layout_help = "specify layout orientation ( horizontal, vertical, packed )"
|
32
32
|
selector_help = "specify custom selector to use ( default: 'img.sprite' )"
|
33
33
|
output_help = "specify output location for generated image ( default: <sources folder>.png )"
|
34
|
+
geometry_help = "specify geometry of single sprite image element (e.g.: 160x65)"
|
34
35
|
|
35
36
|
op.on("--layout [ORIENTATION]", layout_help) {|value| options[:layout] = value }
|
36
37
|
op.on("--selector [SELECTOR]", selector_help) {|value| options[:selector] = value }
|
37
38
|
op.on("--output [PATH]", output_help) {|value| options[:output] = value }
|
38
39
|
op.on("--layout [ORIENTATION]", layout_help) {|value| options[:layout] = value }
|
40
|
+
op.on("--geometry [GEOMETRY]", geometry_help) {|value| options[:geometry] = value }
|
39
41
|
|
40
42
|
begin
|
41
43
|
op.parse!(ARGV)
|
data/lib/dynamic-sprites.rb
CHANGED
@@ -2,11 +2,12 @@ module DynamicSprites
|
|
2
2
|
|
3
3
|
#----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
VERSION = "0.0.
|
5
|
+
VERSION = "0.0.5"
|
6
6
|
SUMMARY = "Responsive sprites - SASS mixin and sprite generator"
|
7
7
|
DESCRIPTION = "Generates sass mixin and combines directory of images into one sprite"
|
8
8
|
|
9
9
|
require 'find'
|
10
|
+
require 'pathname'
|
10
11
|
require 'RMagick'
|
11
12
|
|
12
13
|
require_relative 'dynamic-sprites/runner' # Controller of this module
|
@@ -13,74 +13,60 @@ module DynamicSprites
|
|
13
13
|
# path - Pathname of directory containing source images.
|
14
14
|
# layout - sprite layout name as a String
|
15
15
|
#
|
16
|
-
def initialize(filename, path, layout)
|
16
|
+
def initialize(filename, path, layout, geometry)
|
17
17
|
@filename = filename
|
18
18
|
@layout = layout
|
19
19
|
@files = Dir.glob(File.join(path, '*')).sort.select { |e| VALID_EXTENSIONS.include?(File.extname(e)) }
|
20
|
-
@images =
|
21
|
-
@
|
20
|
+
@images = Magick::ImageList.new(*@files)
|
21
|
+
@geometry = Magick::Geometry.from_s(geometry) rescue default_geometry
|
22
22
|
end
|
23
23
|
|
24
24
|
# Main method for sprites generation
|
25
25
|
#
|
26
26
|
def run!
|
27
|
-
@canvas.opacity = Magick::MaxRGB
|
28
|
-
|
29
|
-
|
30
|
-
@images.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
offset_y += image[:height]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
@canvas.write(@filename)
|
27
|
+
# @canvas.opacity = Magick::MaxRGB
|
28
|
+
geometry = @geometry
|
29
|
+
tile = grid
|
30
|
+
@images.montage do |c|
|
31
|
+
c.geometry = geometry if geometry
|
32
|
+
c.background_color = 'transparent'
|
33
|
+
c.tile = tile
|
34
|
+
end.write(@filename)
|
39
35
|
end
|
40
36
|
|
41
37
|
# Returns a call to sass mixin function with default attributes
|
42
38
|
#
|
43
39
|
def mixin_call
|
44
|
-
call = "dynamic-sprite"
|
40
|
+
call = "img.sprite\n @include dynamic-sprite"
|
45
41
|
call << "-horizontal" if @layout == "horizontal"
|
46
42
|
arguments = [
|
47
|
-
@filename,
|
48
|
-
|
49
|
-
"#{100 / (@
|
43
|
+
@filename.inspect,
|
44
|
+
classess,
|
45
|
+
"#{100.0 / (@images.length - 1)}%",
|
50
46
|
"100%",
|
51
|
-
"#{100 * @
|
47
|
+
"#{100.0 * @geometry.height / @geometry.width}%"
|
52
48
|
]
|
53
49
|
call << "(#{arguments.join(', ')})"
|
54
50
|
end
|
55
51
|
|
56
52
|
private
|
57
53
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
{
|
64
|
-
:image => image,
|
65
|
-
:width => image.columns,
|
66
|
-
:height => image.rows
|
67
|
-
}
|
54
|
+
def grid
|
55
|
+
if @layout == 'horizontal'
|
56
|
+
Magick::Geometry.new(@images.length, 1)
|
57
|
+
else
|
58
|
+
Magick::Geometry.new(1, @images.length)
|
68
59
|
end
|
69
60
|
end
|
70
61
|
|
71
|
-
#
|
62
|
+
# Changes array of files into String containing classes derived from file names.
|
72
63
|
#
|
73
|
-
def
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
else
|
80
|
-
height = images_height.reduce(:+)
|
81
|
-
width = images_width.max
|
82
|
-
end
|
83
|
-
Magick::Image.new(width, height)
|
64
|
+
def classess
|
65
|
+
'(' + @files.map{ |f| File.basename(f).split('.').first.inspect }.join(', ') + ')'
|
66
|
+
end
|
67
|
+
|
68
|
+
def default_geometry
|
69
|
+
Magick::Geometry.new(@images.first.columns, @images.first.rows)
|
84
70
|
end
|
85
71
|
end
|
86
72
|
end
|
@@ -38,7 +38,7 @@ module DynamicSprites
|
|
38
38
|
# Generates sprite using provided options.
|
39
39
|
#
|
40
40
|
def generate_sprite!
|
41
|
-
generator = Generator.new(options[:output], path, options[:layout])
|
41
|
+
generator = Generator.new(options[:output], path, options[:layout], options[:geometry])
|
42
42
|
generator.run!
|
43
43
|
interface.generate_sprite_summary(@options[:output], generator.mixin_call)
|
44
44
|
end
|
@@ -62,7 +62,7 @@ module DynamicSprites
|
|
62
62
|
style_directories = []
|
63
63
|
Find.find(Dir.pwd) do |path|
|
64
64
|
next unless FileTest.directory?(path)
|
65
|
-
if File.basename(path).match
|
65
|
+
if File.basename(path).match(/sass|style/)
|
66
66
|
style_directories << Pathname.new(path)
|
67
67
|
elsif File.basename(path)[0] == ?.
|
68
68
|
Find.prune
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamic-sprites
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Maciej Walusiak
|
@@ -13,15 +14,17 @@ dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rmagick
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
description: Generates sass mixin and combines directory of images into one sprite
|
@@ -40,26 +43,26 @@ files:
|
|
40
43
|
homepage: https://github.com/Rabsztok/dynamic-sprites
|
41
44
|
licenses:
|
42
45
|
- GPL
|
43
|
-
metadata: {}
|
44
46
|
post_install_message:
|
45
47
|
rdoc_options: []
|
46
48
|
require_paths:
|
47
49
|
- lib
|
48
50
|
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
49
52
|
requirements:
|
50
|
-
- - '>='
|
53
|
+
- - ! '>='
|
51
54
|
- !ruby/object:Gem::Version
|
52
55
|
version: '0'
|
53
56
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
54
58
|
requirements:
|
55
|
-
- - '>='
|
59
|
+
- - ! '>='
|
56
60
|
- !ruby/object:Gem::Version
|
57
61
|
version: '0'
|
58
62
|
requirements: []
|
59
63
|
rubyforge_project:
|
60
|
-
rubygems_version:
|
64
|
+
rubygems_version: 1.8.23
|
61
65
|
signing_key:
|
62
|
-
specification_version:
|
66
|
+
specification_version: 3
|
63
67
|
summary: Responsive sprites - SASS mixin and sprite generator
|
64
68
|
test_files: []
|
65
|
-
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 553c885d412eb736a3beed0a9b847ac2a0145c64
|
4
|
-
data.tar.gz: 24c0b52c1ab69571dcbeb6f9ae5ef1f1822354b8
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 3f7b1e70cb89157cf48491b0f8cfd9ce9cd51fc592c1fda6f994d9d5c6865025d993d53018c1797550714f369315c7036ef6fdc2918bb008e4b88112e9def44d
|
7
|
-
data.tar.gz: 6e80466b1aff7ac1d661ba987e9c3fea3397b0592020d044edd67735e6ebbb944995f59da473d54a2ec0dd5307d3ae3159cee321d45ce111016278d6a9a77558
|