flurin-buttonize 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +5 -8
- data/buttonize.gemspec +73 -0
- data/examples/default/fonts/Vera-Bold-Italic.ttf +0 -0
- data/examples/default/fonts/Vera-Bold.ttf +0 -0
- data/examples/default/fonts/Vera-Italic.ttf +0 -0
- data/examples/default/fonts/Vera.ttf +0 -0
- data/examples/default/styles.rb +44 -4
- data/lib/buttonize/button.rb +27 -11
- metadata +11 -5
data/README
CHANGED
@@ -2,13 +2,12 @@ Buttonize, your favourite button generator.
|
|
2
2
|
===========================================
|
3
3
|
|
4
4
|
Buttonize is a little tool to generate sets of buttons by creating simple image templates (a left side, a repeatable middle
|
5
|
-
and a right side). You can use buttonize
|
6
|
-
for more information (examples/buttons.rb is a buttonset file and examples/default/styles.rb is a styleset file)
|
5
|
+
and a right side). You can use buttonize to create sets of buttons and sets of button styles. See the examples directory
|
6
|
+
for more information (examples/buttons.rb is a buttonset file and examples/default/styles.rb is a styleset file).
|
7
7
|
|
8
8
|
|
9
9
|
Installing
|
10
10
|
============
|
11
|
-
|
12
11
|
Buttonize has the following dependencies:
|
13
12
|
|
14
13
|
* Ruby 1.8.x (not tested in 1.9.x)
|
@@ -23,17 +22,15 @@ sudo gem install flurin-buttonize --source=http://gems.github.com
|
|
23
22
|
|
24
23
|
Quickstart
|
25
24
|
==========
|
25
|
+
For the impatient who just want to generate a blue button (and have all required stuff installed)
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
Run:
|
27
|
+
Run:
|
30
28
|
buttonize button --style=big_blue "My first button"
|
31
29
|
|
32
|
-
|
30
|
+
Open:
|
33
31
|
my_first_button.gif
|
34
32
|
|
35
33
|
|
36
34
|
Copyright & license
|
37
35
|
===================
|
38
|
-
|
39
36
|
Copyright (c) 2009 Flurin Egger, DigitPaint, MIT Style License. (see MIT-LICENSE)
|
data/buttonize.gemspec
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "buttonize"
|
3
|
+
s.version = "0.1.1"
|
4
|
+
s.date = "2009-01-25"
|
5
|
+
|
6
|
+
s.authors = ["Flurin Egger"]
|
7
|
+
s.email = "f.p.egger@gmail.com"
|
8
|
+
s.summary = "A button generation tool for web applications."
|
9
|
+
s.homepage = "http://github.com/flurin/buttonize"
|
10
|
+
|
11
|
+
s.files = %w( bin/buttonize
|
12
|
+
buttonize.gemspec
|
13
|
+
examples/buttons.rb
|
14
|
+
examples/default/big_blue_left.gif
|
15
|
+
examples/default/big_blue_middle.gif
|
16
|
+
examples/default/big_blue_right.gif
|
17
|
+
examples/default/big_green_left.gif
|
18
|
+
examples/default/big_green_middle.gif
|
19
|
+
examples/default/big_green_right.gif
|
20
|
+
examples/default/big_orange_left.gif
|
21
|
+
examples/default/big_orange_middle.gif
|
22
|
+
examples/default/big_orange_right.gif
|
23
|
+
examples/default/big_red_left.gif
|
24
|
+
examples/default/big_red_middle.gif
|
25
|
+
examples/default/big_red_right.gif
|
26
|
+
examples/default/fonts/Bitstream Vera License.txt
|
27
|
+
examples/default/fonts/Vera-Bold-Italic.ttf
|
28
|
+
examples/default/fonts/Vera-Bold.ttf
|
29
|
+
examples/default/fonts/Vera-Italic.ttf
|
30
|
+
examples/default/fonts/Vera.ttf
|
31
|
+
examples/default/small_blue_left.gif
|
32
|
+
examples/default/small_blue_middle.gif
|
33
|
+
examples/default/small_blue_right.gif
|
34
|
+
examples/default/small_green_left.gif
|
35
|
+
examples/default/small_green_middle.gif
|
36
|
+
examples/default/small_green_right.gif
|
37
|
+
examples/default/small_orange_left.gif
|
38
|
+
examples/default/small_orange_middle.gif
|
39
|
+
examples/default/small_orange_right.gif
|
40
|
+
examples/default/small_red_left.gif
|
41
|
+
examples/default/small_red_middle.gif
|
42
|
+
examples/default/small_red_right.gif
|
43
|
+
examples/default/styles.rb
|
44
|
+
examples/default/table_blue_left.gif
|
45
|
+
examples/default/table_blue_middle.gif
|
46
|
+
examples/default/table_blue_right.gif
|
47
|
+
examples/default/table_green_left.gif
|
48
|
+
examples/default/table_green_middle.gif
|
49
|
+
examples/default/table_green_right.gif
|
50
|
+
examples/default/table_orange_left.gif
|
51
|
+
examples/default/table_orange_middle.gif
|
52
|
+
examples/default/table_orange_right.gif
|
53
|
+
examples/default/table_red_left.gif
|
54
|
+
examples/default/table_red_middle.gif
|
55
|
+
examples/default/table_red_right.gif
|
56
|
+
lib/buttonize/button.rb
|
57
|
+
lib/buttonize/button_set.rb
|
58
|
+
lib/buttonize/cli.rb
|
59
|
+
lib/buttonize/style_set.rb
|
60
|
+
lib/buttonize.rb
|
61
|
+
MIT-LICENSE
|
62
|
+
README
|
63
|
+
)
|
64
|
+
|
65
|
+
s.bindir = "bin"
|
66
|
+
s.executables << "buttonize"
|
67
|
+
s.require_paths = ["lib"]
|
68
|
+
|
69
|
+
s.has_rdoc = false
|
70
|
+
|
71
|
+
s.add_dependency "rmagick", [">= 2.5.1"]
|
72
|
+
s.add_dependency "wycats-thor", ["~> 0.9.8"]
|
73
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/examples/default/styles.rb
CHANGED
@@ -1,18 +1,58 @@
|
|
1
1
|
Buttonize::StyleSet.define(:template_path => File.dirname(__FILE__)) do |set|
|
2
|
+
|
3
|
+
# Style definition with a block
|
2
4
|
set.style(:big_blue) do |s|
|
3
|
-
|
5
|
+
# The name of the template image files the images will be searched for
|
6
|
+
# in s.template_path and will be suffixed with "_left.gif", "_right.gif", "_middle.gif"
|
7
|
+
# (default = button)
|
4
8
|
s.template_base = "big_blue"
|
5
|
-
|
9
|
+
|
10
|
+
# Alternatively you can use template_images to specify the left/middle/right images
|
11
|
+
# with paths relative to the template_path.
|
12
|
+
# s.template_images = ["big_blue_left.gif","big_blue_middle.gif","big_blue_right.gif"]
|
13
|
+
|
14
|
+
# The font to use (can be all fonts RMagick can use), (default = Arial)
|
15
|
+
s.font = File.join(File.dirname(__FILE__),"fonts","Vera.ttf")
|
16
|
+
# Size of the font to use in pt (default = 9)
|
17
|
+
s.font_size = 10
|
18
|
+
# Antialias the font when rendering (default = true)
|
19
|
+
s.font_antialias = true
|
20
|
+
|
21
|
+
# The color of the textrendering, can be anything RMagick sees as
|
22
|
+
# a color. (default = #fff)
|
23
|
+
s.text_color = "#fff"
|
24
|
+
# The text alignment within the final button, can be any of
|
25
|
+
# :left, :right or :center (default = :center)
|
26
|
+
s.text_align = :center
|
27
|
+
# The x and y offset the text should be rendered with. This
|
28
|
+
# is in relation to the alignment set and can be used to finetune the optical
|
29
|
+
# text placement.
|
30
|
+
s.text_offset = {:x => 0, :y => 0}
|
31
|
+
|
32
|
+
|
33
|
+
# If width is set (not nil) Buttonize will try to create a button of
|
34
|
+
# the specified width, if the text will however not fit (including paddings)
|
35
|
+
# Buttonize falls back on rendering the text with the specified paddings (see below)
|
36
|
+
# (default = nil)
|
37
|
+
s.width = nil
|
38
|
+
# The padding to give the text to the left and right side of the button
|
39
|
+
# specified in an array of [left_padding,right_padding] in pixels. If width
|
40
|
+
# is set and the text width + padding fits into the width, these paddings
|
41
|
+
# will be ignored. (default = {:left => 10, :right => 10})
|
42
|
+
s.padding = {:left => 20, :right => 20}
|
43
|
+
|
6
44
|
end
|
7
45
|
|
8
46
|
set.style(:big_orange, :based_on => :big_blue, :template_base => "big_orange")
|
9
47
|
set.style(:big_red, :based_on => :big_blue, :template_base => "big_red")
|
10
48
|
set.style(:big_green, :based_on => :big_blue, :template_base => "big_green")
|
11
|
-
|
12
|
-
|
49
|
+
|
50
|
+
# Inline style definition with a Hash
|
51
|
+
set.style(:small_blue, :font => File.join(File.dirname(__FILE__),"fonts","Vera.ttf"), :font_size => 9, :template_base => "small_blue", :width => 65)
|
13
52
|
set.style(:small_orange, :based_on => :small_blue, :template_base => "small_orange")
|
14
53
|
set.style(:small_red, :based_on => :small_blue, :template_base => "small_red")
|
15
54
|
set.style(:small_green, :based_on => :small_blue, :template_base => "small_green")
|
55
|
+
|
16
56
|
end
|
17
57
|
|
18
58
|
# Styles = {
|
data/lib/buttonize/button.rb
CHANGED
@@ -4,15 +4,17 @@ class Buttonize::Button
|
|
4
4
|
|
5
5
|
def initialize(options)
|
6
6
|
@options = {
|
7
|
-
:font_size => 9,
|
8
|
-
:paddings => [10,10],
|
9
7
|
:width => nil,
|
10
8
|
:template_base => "button",
|
11
9
|
:template_path => File.dirname(__FILE__) + "/../../examples/default",
|
12
10
|
:font => "Arial",#File.dirname(__FILE__) + "/fonts/verdanab.ttf",
|
11
|
+
:font_size => 9,
|
12
|
+
:font_antialias => true,
|
13
|
+
:text_color => "#fff",
|
13
14
|
:text_offset => {:x => 0, :y => 0},
|
14
|
-
:
|
15
|
-
:
|
15
|
+
:text_align => :center,
|
16
|
+
:padding => {:left => 10, :right => 10},
|
17
|
+
:target_path => Dir.pwd
|
16
18
|
}.update(options)
|
17
19
|
@options[:template_images] ||= ["_left","_middle","_right"].map{|p| options[:template_base] + p + ".gif" }
|
18
20
|
|
@@ -27,22 +29,22 @@ class Buttonize::Button
|
|
27
29
|
def generate(text, filename = nil)
|
28
30
|
filename ||= self.text_to_filename(text)
|
29
31
|
filename = add_extension(filename,"gif")
|
30
|
-
|
32
|
+
padding = options[:padding]
|
31
33
|
|
32
34
|
# Load the images
|
33
35
|
left,mid,right = options[:template_images].map{|p| Image.read(File.join(options[:template_path],p)).first }
|
34
36
|
|
35
37
|
draw = Draw.new
|
36
38
|
draw.pointsize = options[:font_size]
|
37
|
-
draw.fill =
|
38
|
-
draw.gravity =
|
39
|
+
draw.fill = options[:text_color]
|
40
|
+
draw.gravity = self.gravity_from_alignment(options[:text_align])
|
39
41
|
draw.font = options[:font]
|
40
|
-
draw.font_weight = Magick::
|
41
|
-
draw.text_antialias = options[:
|
42
|
+
draw.font_weight = Magick::AnyWeight
|
43
|
+
draw.text_antialias = options[:font_antialias] || false
|
42
44
|
|
43
45
|
# Measure the text first
|
44
46
|
metrics = draw.get_type_metrics(text)
|
45
|
-
target_width = metrics.width +
|
47
|
+
target_width = metrics.width + padding[:left] + padding[:right]
|
46
48
|
|
47
49
|
target_width = options[:width] if options[:width] && options[:width] > target_width
|
48
50
|
|
@@ -68,7 +70,13 @@ class Buttonize::Button
|
|
68
70
|
|
69
71
|
# Place right
|
70
72
|
dst.composite!(right,pos,0,Magick::OverCompositeOp)
|
71
|
-
|
73
|
+
|
74
|
+
# Draw text
|
75
|
+
left = options[:text_offset][:x] || 0
|
76
|
+
left += padding[:left] unless options[:text_align] == :center
|
77
|
+
draw.annotate(dst,0,0,left,options[:text_offset][:y],text)
|
78
|
+
|
79
|
+
# Write file
|
72
80
|
dst.write(File.join(options[:target_path],filename))
|
73
81
|
dst.destroy!
|
74
82
|
|
@@ -87,4 +95,12 @@ class Buttonize::Button
|
|
87
95
|
end
|
88
96
|
end
|
89
97
|
|
98
|
+
def gravity_from_alignment(alignment)
|
99
|
+
case alignment
|
100
|
+
when :left then Magick::WestGravity
|
101
|
+
when :right then Magick::EastGravity
|
102
|
+
else Magick::CenterGravity
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
90
106
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flurin-buttonize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flurin Egger
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-25 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -17,7 +17,7 @@ dependencies:
|
|
17
17
|
version_requirement:
|
18
18
|
version_requirements: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 2.5.1
|
23
23
|
version:
|
@@ -40,8 +40,8 @@ extra_rdoc_files: []
|
|
40
40
|
|
41
41
|
files:
|
42
42
|
- bin/buttonize
|
43
|
+
- buttonize.gemspec
|
43
44
|
- examples/buttons.rb
|
44
|
-
- examples/default
|
45
45
|
- examples/default/big_blue_left.gif
|
46
46
|
- examples/default/big_blue_middle.gif
|
47
47
|
- examples/default/big_blue_right.gif
|
@@ -54,6 +54,13 @@ files:
|
|
54
54
|
- examples/default/big_red_left.gif
|
55
55
|
- examples/default/big_red_middle.gif
|
56
56
|
- examples/default/big_red_right.gif
|
57
|
+
- examples/default/fonts/Bitstream
|
58
|
+
- Vera
|
59
|
+
- License.txt
|
60
|
+
- examples/default/fonts/Vera-Bold-Italic.ttf
|
61
|
+
- examples/default/fonts/Vera-Bold.ttf
|
62
|
+
- examples/default/fonts/Vera-Italic.ttf
|
63
|
+
- examples/default/fonts/Vera.ttf
|
57
64
|
- examples/default/small_blue_left.gif
|
58
65
|
- examples/default/small_blue_middle.gif
|
59
66
|
- examples/default/small_blue_right.gif
|
@@ -79,7 +86,6 @@ files:
|
|
79
86
|
- examples/default/table_red_left.gif
|
80
87
|
- examples/default/table_red_middle.gif
|
81
88
|
- examples/default/table_red_right.gif
|
82
|
-
- lib/buttonize
|
83
89
|
- lib/buttonize/button.rb
|
84
90
|
- lib/buttonize/button_set.rb
|
85
91
|
- lib/buttonize/cli.rb
|