barby 0.4.0 → 0.4.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.
@@ -0,0 +1,102 @@
1
+ require 'barby/outputter'
2
+ require 'chunky_png'
3
+
4
+ module Barby
5
+
6
+ #Renders the barcode to a PNG image using the "png" gem (gem install png)
7
+ #
8
+ #Registers the to_png, to_datastream and to_canvas methods
9
+ class ChunkyPngOutputter < Outputter
10
+
11
+ register :to_png, :to_image, :to_datastream
12
+
13
+ attr_accessor :xdim, :ydim, :width, :height, :margin
14
+
15
+
16
+ #Creates a PNG::Canvas object and renders the barcode on it
17
+ def to_image(opts={})
18
+ with_options opts do
19
+ canvas = ChunkyPNG::Image.new(full_width, full_height, ChunkyPNG::Color::WHITE)
20
+
21
+ if barcode.two_dimensional?
22
+ x, y = margin, margin
23
+ booleans.reverse_each do |line|
24
+ line.each do |bar|
25
+ if bar
26
+ x.upto(x+(xdim-1)) do |xx|
27
+ y.upto y+(ydim-1) do |yy|
28
+ canvas[xx,yy] = ChunkyPNG::Color::BLACK
29
+ end
30
+ end
31
+ end
32
+ x += xdim
33
+ end
34
+ y += ydim
35
+ x = margin
36
+ end
37
+ else
38
+ x, y = margin, margin
39
+ booleans.each do |bar|
40
+ if bar
41
+ x.upto(x+(xdim-1)) do |xx|
42
+ y.upto y+(height-1) do |yy|
43
+ canvas[xx,yy] = ChunkyPNG::Color::BLACK
44
+ end
45
+ end
46
+ end
47
+ x += xdim
48
+ end
49
+ end
50
+
51
+ canvas
52
+ end
53
+ end
54
+
55
+
56
+ def to_datastream(*a)
57
+ to_image.to_datastream
58
+ end
59
+
60
+
61
+ #Renders the barcode to a PNG image
62
+ def to_png(*a)
63
+ to_datastream.to_s
64
+ end
65
+
66
+
67
+ def width
68
+ length * xdim
69
+ end
70
+
71
+ def height
72
+ barcode.two_dimensional? ? (ydim * encoding.length) : (@height || 100)
73
+ end
74
+
75
+ def full_width
76
+ width + (margin * 2)
77
+ end
78
+
79
+ def full_height
80
+ height + (margin * 2)
81
+ end
82
+
83
+ def xdim
84
+ @xdim || 1
85
+ end
86
+
87
+ def ydim
88
+ @ydim || xdim
89
+ end
90
+
91
+ def margin
92
+ @margin || 10
93
+ end
94
+
95
+ def length
96
+ barcode.two_dimensional? ? encoding.first.length : encoding.length
97
+ end
98
+
99
+
100
+ end
101
+
102
+ end
@@ -2,7 +2,7 @@ module Barby #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 4
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 0
10
- version: 0.4.0
9
+ - 1
10
+ version: 0.4.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tore Darell
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-18 00:00:00 +02:00
18
+ date: 2010-10-04 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -44,6 +44,7 @@ files:
44
44
  - lib/barby/barcode.rb
45
45
  - lib/barby/outputter/ascii_outputter.rb
46
46
  - lib/barby/outputter/cairo_outputter.rb
47
+ - lib/barby/outputter/chunky_png_outputter.rb
47
48
  - lib/barby/outputter/pdfwriter_outputter.rb
48
49
  - lib/barby/outputter/png_outputter.rb
49
50
  - lib/barby/outputter/prawn_outputter.rb