meme_captain 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog ADDED
@@ -0,0 +1,6 @@
1
+ 0.0.8
2
+ 2011-11-23
3
+
4
+ Start change log.
5
+
6
+ Expose internal parameters of meme method as optional arguments.
@@ -5,7 +5,19 @@ module MemeCaptain
5
5
  module_function
6
6
 
7
7
  # Create a meme image.
8
+ #
8
9
  # Input can be an IO object or a blob of data.
10
+ #
11
+ # Options:
12
+ # max_lines - maximum number of text lines per caption
13
+ # min_pointsize - minimum point size
14
+ # super_sample - work this many times larger before shrinking
15
+ # text_height_pct - float percentage of image height for each caption
16
+ # text_width_pct - float percentage of image width for each caption
17
+ #
18
+ # Any other options will be set on the Draw objects for the text and
19
+ # can be used to control text fill, stroke, etc. See RMagick annotate
20
+ # attributes.
9
21
  def meme(input, top_text, bottom_text, options={})
10
22
  img = Magick::ImageList.new
11
23
  if input.respond_to?(:read)
@@ -14,23 +26,39 @@ module MemeCaptain
14
26
  img.from_blob(input)
15
27
  end
16
28
 
17
- max_lines = 16
18
- super_sample = 2.0
29
+ options = {
30
+ :max_lines => 16,
31
+ :min_pointsize => 12,
32
+ :super_sample => 2.0,
33
+ :text_height_pct => 0.25,
34
+ :text_width_pct => 0.9,
19
35
 
20
- min_pointsize = 12 * super_sample
21
- text_width = img.page.width * 0.9 * super_sample
22
- text_height = img.page.height / 4.0 * super_sample
36
+ # Draw options
37
+ :fill => 'white',
38
+ :font => 'Impact',
39
+ :stroke => 'black',
40
+ :stroke_width => 8,
41
+ }.merge(options)
42
+
43
+ max_lines = options.delete(:max_lines)
44
+ super_sample = options.delete(:super_sample)
45
+ min_pointsize = options.delete(:min_pointsize) * super_sample
46
+
47
+ text_width = img.page.width * options.delete(:text_width_pct) * super_sample
48
+ text_height = img.page.height * options.delete(:text_height_pct) *
49
+ super_sample
23
50
 
24
51
  text_layer = Magick::Image.new(
25
52
  img.page.width * super_sample, img.page.height * super_sample) {
26
53
  self.background_color = 'none'
27
- self.density = 144
54
+ self.density = 72.0 * super_sample
28
55
  }
29
56
 
30
- draw = Magick::Draw.new.extend(Draw)
57
+ draw = Magick::Draw.new {
58
+ options.each { |k,v| self.send("#{k}=", v) }
59
+ }
31
60
 
32
- draw.fill = 'white'
33
- draw.font = 'Impact'
61
+ draw.extend(Draw)
34
62
 
35
63
  [
36
64
  [Caption.new(top_text), Magick::NorthGravity],
@@ -52,15 +80,14 @@ module MemeCaptain
52
80
  draw.gravity = gravity
53
81
  draw.pointsize = choice.pointsize
54
82
 
55
- draw.stroke = 'black'
56
- draw.stroke_width = 8
83
+ draw.stroke = options[:stroke]
57
84
  draw.annotate text_layer, 0, 0, 0, 0, choice.text
58
85
 
59
86
  draw.stroke = 'none'
60
87
  draw.annotate text_layer, 0, 0, 0, 0, choice.text
61
88
  end
62
89
 
63
- text_layer.resize!(1 / super_sample)
90
+ text_layer.resize!(1.0 / super_sample)
64
91
 
65
92
  img.each do |frame|
66
93
  frame.composite!(text_layer, -frame.page.x, -frame.page.y,
@@ -1,3 +1,3 @@
1
1
  module MemeCaptain
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meme_captain
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 7
10
- version: 0.0.7
9
+ - 8
10
+ version: 0.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matthew M. Boedicker
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-08 00:00:00 -05:00
18
+ date: 2011-11-23 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -114,6 +114,7 @@ extra_rdoc_files: []
114
114
  files:
115
115
  - .gitignore
116
116
  - COPYING
117
+ - ChangeLog
117
118
  - README.md
118
119
  - config.ru
119
120
  - img_cache/source/.gitignore