spritey 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.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/spritey +36 -0
  3. data/lib/spritey.rb +81 -0
  4. metadata +47 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8103d7b2d6c8dc5f905a0a65369befeac96063e2
4
+ data.tar.gz: d53fd375fc00efedb28371adb3bb57c4da9d68a9
5
+ SHA512:
6
+ metadata.gz: b0b9be7db13ee128de8edf971a97a31c53e7d1b1eee61d81fae6c68a23891784624050d3fab55da38214d38be2329e95e1a398b978add65f3352a63da532705a
7
+ data.tar.gz: b3395fca07e707d112f3f18240e504aeb4c327dd158a120f98147e25d8c1b7a2c48be0f52e45ac745e12a963e531445bb33cbc0a3306a0db96459a1573fd4b09
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spritey'
4
+ require 'optparse'
5
+
6
+ @concat = Spritey::Spritey.new
7
+ options = {}
8
+
9
+ OptionParser.new do |opts|
10
+ opts.banner = "Usage: example.rb [options]"
11
+
12
+ opts.on("-o", "--output FILENAME", "specify the output file") do |v|
13
+ options[:output] = v
14
+ end
15
+ opts.on("-i", "--input FILENAMES,", "specify the input file/s separated by comma") do |v|
16
+ options[:input] = v.split(",")
17
+ end
18
+
19
+ end.parse!
20
+
21
+
22
+
23
+ options[:input].each do |arg|
24
+ begin
25
+ @concat.add_image(arg)
26
+ rescue Magick::ImageMagickError
27
+ puts "failed to load image #{arg}"
28
+ end
29
+
30
+ end
31
+
32
+
33
+
34
+
35
+
36
+ @concat.save_css options[:output]
@@ -0,0 +1,81 @@
1
+ require 'rmagick'
2
+ require 'pathname'
3
+
4
+ module Spritey
5
+ class Spritey
6
+ attr_accessor :images,:max_height
7
+
8
+ def initialize
9
+ @images = []
10
+ @max_height = 0
11
+ end
12
+
13
+ def add_image(filename)
14
+ image = load_image(filename)
15
+ @max_height = image.rows unless image.rows < @max_height
16
+ @images.push image
17
+ end
18
+
19
+
20
+
21
+ def save_css(filename)
22
+ concatenate(filename + ".png")
23
+ css_file = File.open(filename +".css", "w")
24
+ css_file.write generate_sprites_css(filename)
25
+ css_file.close
26
+ end
27
+
28
+ def load_image(filename)
29
+ Magick::Image::read(filename)[0]
30
+ end
31
+
32
+ def concatenate(dest_image_filename)
33
+ raise RuntimeError unless @images.any?
34
+
35
+ new_image = Magick::Image.new(total_width,@max_height){
36
+ self.format = 'png'
37
+ self.background_color = 'none'
38
+ }
39
+
40
+ last_width = 0
41
+
42
+ @images.each do |img|
43
+ img.alpha Magick::BackgroundAlphaChannel
44
+ new_image.composite!(img,last_width, 0, Magick::OverCompositeOp )
45
+ last_width += img.columns
46
+ end
47
+ puts "Total image size #{total_width},#{@max_height}"
48
+ new_image.write(dest_image_filename)
49
+ end
50
+
51
+ def generate_sprites_css(filename)
52
+ last_width = 0
53
+ dest_css = ""
54
+ @images.each do |img|
55
+ image_name = Pathname.new(img.filename).basename.to_s.split(".")
56
+ dest_css += "##{image_name[0]} {"
57
+ dest_css += "display:block;"
58
+ dest_css += "width:#{img.columns}px;"
59
+ dest_css += "height:#{img.rows}px;"
60
+ dest_css += "background-image:url(#{filename}.png);"
61
+ dest_css += "background-repeat:no-repeat;"
62
+ dest_css += "background-position: -#{last_width}px 0px ;"
63
+ dest_css += "}\n"
64
+ last_width += img.columns
65
+ end
66
+ dest_css
67
+ end
68
+
69
+ def total_width
70
+ width = 0
71
+ @images.each do |image|
72
+ width += image.columns
73
+ end
74
+ width
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+
81
+
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spritey
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Juan GiménezSilva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Tired of writing CSS sprites by hand? well this simple gem will make
14
+ it easy
15
+ email: juanfgs@gmail.com
16
+ executables:
17
+ - spritey
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/spritey
22
+ - lib/spritey.rb
23
+ homepage: http://juanfgs.eosweb.info
24
+ licenses:
25
+ - GPL 3.0
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.4.5
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: A simple sprite generator
47
+ test_files: []