barby 0.4.2 → 0.4.3

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,51 @@
1
+ * 0.4.3
2
+
3
+ * 2- and 5-digit UPC supplements
4
+ * Use ChunkyPNG for PngOutputter
5
+
6
+ * 0.4.2
7
+
8
+ * ChunkyPngOutputter now renders 2D barcodes not upside down [Thanks Scient]
9
+
10
+ * 0.4.1
11
+
12
+ * ChunkyPngOutputter - ChunkyPNG is a pure-Ruby PNG library
13
+
14
+ * 0.4.0
15
+
16
+ * Can you tell I'm just making up version numbers as I go along?
17
+ * DataMatrix (not required automatically, requires the 'semacode' gem)
18
+ * Refactored PrawnOutputter a little. No more stupid options hashes + unbleed attribute
19
+
20
+ * 0.3.2
21
+
22
+ * Fix bug where Code128 extras choke on newlines [Wayne Conrad]
23
+ * Don't allow Code128 with empty data strings [Wayne Conrad]
24
+ * Allow custom :size for QrCodes
25
+
26
+ * 0.3.1
27
+
28
+ * Add support for PDF417, using Pdf417lib (JRuby only) [Aslak Hellesøy]
29
+
30
+ * 0.3.0
31
+
32
+ * Make compatible with Ruby 1.9 [Chris Mowforth]
33
+ * Add SvgOutputter for outputting SVGs without dependencies [Peter H. Li]
34
+
35
+ * 0.2.1
36
+
37
+ * Allow QR Codes with sizes up to 40
38
+
39
+ * 0.2.0
40
+
41
+ * Added support for 2D barcodes
42
+ * Updated all outputters to support 2D barcodes
43
+ * Added support for QR Code
44
+
45
+ * 0.1.2
46
+
47
+ * Added CairoOutputter [Kouhei Sutou]
48
+
49
+ * 0.1.1
50
+
51
+ * Added PngOutputter that uses "png" gem
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2008 Tore Darell
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
data/bin/barby CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ #encoding: UTF-8
2
3
  require 'optparse'
3
4
  require 'rubygems'
4
5
 
@@ -6,8 +7,8 @@ require 'rubygems'
6
7
  require 'barby'
7
8
 
8
9
  options = {
9
- :outputter => 'Png',
10
- :outputter_method => 'to_png',
10
+ :outputter => 'Ascii',
11
+ :outputter_method => 'to_ascii',
11
12
  :barcode => 'Code128B'
12
13
  }
13
14
 
@@ -20,8 +21,8 @@ ARGV.options do |o|
20
21
  o.separator ''
21
22
 
22
23
  o.on('-b', '--barcode=ClassName', String, 'Barcode type (Code128B)'){|v| options[:barcode] = v }
23
- o.on('-o', '--outputter=ClassName', String, 'Outputter (Png)'){|v| options[:outputter] = v }
24
- o.on('-m', '--method=method_name', String, 'Outputter method (to_png)'){|v| options[:outputter_method] = v }
24
+ o.on('-o', '--outputter=ClassName', String, 'Outputter (Ascii)'){|v| options[:outputter] = v }
25
+ o.on('-m', '--method=method_name', String, 'Outputter method (to_ascii)'){|v| options[:outputter_method] = v }
25
26
 
26
27
  o.on_tail("-h", "--help", "Show this help message.") { puts o; exit }
27
28
 
@@ -34,7 +35,7 @@ end
34
35
  require "barby/outputter/#{options[:outputter].gsub(/[A-Z]/){|c| '_'+c.downcase }[1..-1]}_outputter"
35
36
 
36
37
  barcode_class = Barby.const_get(options[:barcode])
37
- barcode = barcode_class.new($*.empty? ? STDIN.read.chomp : $*)
38
+ barcode = barcode_class.new($*.empty? ? STDIN.read.chomp : $*[0])
38
39
  outputter_class = Barby.const_get("#{options[:outputter]}Outputter")
39
40
  outputter = outputter_class.new(barcode)
40
41
 
@@ -8,6 +8,7 @@ require 'barby/barcode/code_39'
8
8
  require 'barby/barcode/code_93'
9
9
  require 'barby/barcode/ean_13'
10
10
  require 'barby/barcode/ean_8'
11
+ require 'barby/barcode/upc_supplemental'
11
12
  require 'barby/barcode/bookland'
12
13
  require 'barby/barcode/qr_code'
13
14
  require 'barby/barcode/code_25'
@@ -88,7 +88,8 @@ module Barby
88
88
 
89
89
  attr_accessor :data, :spacing, :narrow_width, :wide_width, :extended, :include_checksum
90
90
 
91
-
91
+ # Do not surround "data" with the mandatory "*" as is this is done automically for you.
92
+ # So instead of passing "*123456*" as "data", just pass "123456".
92
93
  def initialize(data, extended=false)
93
94
  self.data = data
94
95
  self.extended = extended
@@ -175,4 +175,12 @@ module Barby
175
175
 
176
176
  end
177
177
 
178
+ class UPCA < EAN13
179
+
180
+ def data
181
+ '0' + super
182
+ end
183
+
184
+ end
185
+
178
186
  end
@@ -0,0 +1,140 @@
1
+ require 'barby/barcode'
2
+ require 'barby/barcode/ean_13'
3
+
4
+ module Barby
5
+
6
+
7
+ class UPCSupplemental < Barby::Barcode1D
8
+
9
+ attr_accessor :data
10
+
11
+ FORMAT = /^\d\d\d\d\d$|^\d\d$/
12
+
13
+ START = '1011'
14
+ SEPARATOR = '01'
15
+
16
+ ODD = :odd
17
+ EVEN = :even
18
+
19
+ PARITY_MAPS = {
20
+ 2 => {
21
+ 0 => [ODD, ODD],
22
+ 1 => [ODD, EVEN],
23
+ 2 => [EVEN, ODD],
24
+ 3 => [EVEN, EVEN]
25
+ },
26
+ 5 => {
27
+ 0 => [EVEN, EVEN, ODD, ODD, ODD],
28
+ 1 => [EVEN, ODD, EVEN, ODD, ODD],
29
+ 2 => [EVEN, ODD, ODD, EVEN, ODD],
30
+ 3 => [EVEN, ODD, ODD, ODD, EVEN],
31
+ 4 => [ODD, EVEN, EVEN, ODD, ODD],
32
+ 5 => [ODD, ODD, EVEN, EVEN, ODD],
33
+ 6 => [ODD, ODD, ODD, EVEN, EVEN],
34
+ 7 => [ODD, EVEN, ODD, EVEN, ODD],
35
+ 8 => [ODD, EVEN, ODD, ODD, EVEN],
36
+ 9 => [ODD, ODD, EVEN, ODD, EVEN]
37
+ }
38
+ }
39
+
40
+ ENCODINGS = {
41
+ ODD => EAN13::LEFT_ENCODINGS_ODD,
42
+ EVEN => EAN13::LEFT_ENCODINGS_EVEN
43
+ }
44
+
45
+
46
+ def initialize(data)
47
+ self.data = data
48
+ end
49
+
50
+
51
+ def size
52
+ data.size
53
+ end
54
+
55
+ def two_digit?
56
+ size == 2
57
+ end
58
+
59
+ def five_digit?
60
+ size == 5
61
+ end
62
+
63
+
64
+ def characters
65
+ data.split(//)
66
+ end
67
+
68
+ def digits
69
+ characters.map{|c| c.to_i }
70
+ end
71
+
72
+
73
+ #Odd and even methods are only useful for 5 digits
74
+ def odd_digits
75
+ alternater = false
76
+ digits.reverse.select{ alternater = !alternater }
77
+ end
78
+
79
+ def even_digits
80
+ alternater = true
81
+ digits.reverse.select{ alternater = !alternater }
82
+ end
83
+
84
+ def odd_sum
85
+ odd_digits.inject(0){|s,d| s + d * 3 }
86
+ end
87
+
88
+ def even_sum
89
+ even_digits.inject(0){|s,d| s + d * 9 }
90
+ end
91
+
92
+
93
+ #Checksum is different for 2 and 5 digits
94
+ #2-digits don't really have a checksum, just a remainder to look up the parity
95
+ def checksum
96
+ if two_digit?
97
+ data.to_i % 4
98
+ elsif five_digit?
99
+ (odd_sum + even_sum) % 10
100
+ end
101
+ end
102
+
103
+
104
+ #Parity maps are different for 2 and 5 digits
105
+ def parity_map
106
+ PARITY_MAPS[size][checksum]
107
+ end
108
+
109
+
110
+ def encoded_characters
111
+ parity_map.zip(digits).map do |parity, digit|
112
+ ENCODINGS[parity][digit]
113
+ end
114
+ end
115
+
116
+
117
+ def encoding
118
+ START + encoded_characters.join(SEPARATOR)
119
+ end
120
+
121
+
122
+ def valid?
123
+ data =~ FORMAT
124
+ end
125
+
126
+
127
+ def to_s
128
+ data
129
+ end
130
+
131
+
132
+ NO_PRICE = new('90000') #The book doesn't have a suggested retail price
133
+ COMPLIMENTARY = new('99991') #The book is complimentary (~free)
134
+ USED = new('99990') #The book is marked as used
135
+
136
+
137
+ end
138
+
139
+
140
+ end
@@ -6,7 +6,7 @@ module Barby
6
6
  #the barcode directly to the terminal for testing.
7
7
  #
8
8
  #Registers to_ascii
9
- class ASCIIOutputter < Outputter
9
+ class AsciiOutputter < Outputter
10
10
 
11
11
  register :to_ascii
12
12
 
@@ -1,31 +1,31 @@
1
1
  require 'barby/outputter'
2
- require 'png'
2
+ require 'chunky_png'
3
3
 
4
4
  module Barby
5
5
 
6
- #Renders the barcode to a PNG image using the "png" gem (gem install png)
6
+ #Renders the barcode to a PNG image using chunky_png (gem install chunky_png)
7
7
  #
8
- #Registers the to_png and to_canvas methods
8
+ #Registers the to_png, to_datastream and to_canvas methods
9
9
  class PngOutputter < Outputter
10
10
 
11
- register :to_png, :to_canvas
11
+ register :to_png, :to_image, :to_datastream
12
12
 
13
13
  attr_accessor :xdim, :ydim, :width, :height, :margin
14
14
 
15
15
 
16
16
  #Creates a PNG::Canvas object and renders the barcode on it
17
- def to_canvas(opts={})
17
+ def to_image(opts={})
18
18
  with_options opts do
19
- canvas = PNG::Canvas.new(full_width, full_height, PNG::Color::White)
19
+ canvas = ChunkyPNG::Image.new(full_width, full_height, ChunkyPNG::Color::WHITE)
20
20
 
21
21
  if barcode.two_dimensional?
22
22
  x, y = margin, margin
23
- booleans.reverse_each do |line|
23
+ booleans.each do |line|
24
24
  line.each do |bar|
25
25
  if bar
26
26
  x.upto(x+(xdim-1)) do |xx|
27
27
  y.upto y+(ydim-1) do |yy|
28
- canvas[xx,yy] = PNG::Color::Black
28
+ canvas[xx,yy] = ChunkyPNG::Color::BLACK
29
29
  end
30
30
  end
31
31
  end
@@ -40,7 +40,7 @@ module Barby
40
40
  if bar
41
41
  x.upto(x+(xdim-1)) do |xx|
42
42
  y.upto y+(height-1) do |yy|
43
- canvas[xx,yy] = PNG::Color::Black
43
+ canvas[xx,yy] = ChunkyPNG::Color::BLACK
44
44
  end
45
45
  end
46
46
  end
@@ -53,9 +53,19 @@ module Barby
53
53
  end
54
54
 
55
55
 
56
+ #Create a ChunkyPNG::Datastream containing the barcode image
57
+ #
58
+ # :constraints - Value is passed on to ChunkyPNG::Image#to_datastream
59
+ # E.g. to_datastream(:constraints => {:color_mode => ChunkyPNG::COLOR_GRAYSCALE})
60
+ def to_datastream(*a)
61
+ constraints = a.first && a.first[:constraints] ? [a.first[:constraints]] : []
62
+ to_image(*a).to_datastream(*constraints)
63
+ end
64
+
65
+
56
66
  #Renders the barcode to a PNG image
57
67
  def to_png(*a)
58
- PNG.new(to_canvas(*a)).to_blob
68
+ to_datastream(*a).to_s
59
69
  end
60
70
 
61
71
 
@@ -2,7 +2,7 @@ module Barby #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 4
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,3 +1,8 @@
1
+ *0.3.3* (Feb 1st, 2011)
2
+
3
+ * check to see if the level is valid
4
+ * fix for 'rszf' bug by [Rob la Lau https://github.com/ohreally]
5
+
1
6
  *0.3.2* (Mar 15th, 2009)
2
7
 
3
8
  * Ruby 1.9 fixes by [Tore Darell http://tore.darell.no] [Chris Mowforth http://blog.99th.st]
@@ -2,8 +2,6 @@
2
2
 
3
3
  rQRCode is a library for encoding QR Codes in Ruby. It has a simple interface with all the standard qrcode options. It was adapted from the Javascript library by Kazuhiko Arase.
4
4
 
5
- RubyForge Project Page http://rubyforge.org/projects/rqrcode/
6
-
7
5
  == An Overview
8
6
 
9
7
  Let's clear up some rQRCode stuff.
@@ -6,17 +6,15 @@ require 'rake/rdoctask'
6
6
  require 'rake/testtask'
7
7
 
8
8
  NAME = "rqrcode"
9
- VERS = "0.3.2"
9
+ VERS = "0.3.3"
10
10
  CLEAN.include ['pkg', 'rdoc']
11
11
 
12
- Gem::manage_gems
13
-
14
12
  spec = Gem::Specification.new do |s|
15
13
  s.name = NAME
16
- s.version = VERS
14
+ s.version = VERS
17
15
  s.author = "Duncan Robertson"
18
- s.email = "duncan@whomwah.com"
19
- s.homepage = "http://rqrcode.rubyforge.org"
16
+ s.email = "duncan@whomwah.com"
17
+ s.homepage = "http://whomwah.github.com/rqrcode/"
20
18
  s.platform = Gem::Platform::RUBY
21
19
  s.summary = "A library to encode QR Codes"
22
20
  s.rubyforge_project = NAME
@@ -69,18 +69,21 @@ module RQRCode #:nodoc:
69
69
  # qr = RQRCode::QRCode.new('hello world', :size => 1, :level => :m )
70
70
  #
71
71
 
72
- def initialize( *args )
72
+ def initialize( *args )
73
73
  raise QRCodeArgumentError unless args.first.kind_of?( String )
74
74
 
75
75
  @data = args.shift
76
76
  options = args.extract_options!
77
77
  level = options[:level] || :h
78
+
79
+ raise QRCodeArgumentError unless %w(l m q h).include?(level.to_s)
80
+
78
81
  @error_correct_level = QRERRORCORRECTLEVEL[ level.to_sym ]
79
82
  @type_number = options[:size] || 4
80
83
  @module_count = @type_number * 4 + 17
81
- @modules = nil
82
- @data_cache = nil
84
+ @modules = Array.new( @module_count )
83
85
  @data_list = QR8bitByte.new( @data )
86
+ @data_cache = nil
84
87
 
85
88
  self.make
86
89
  end
@@ -149,7 +152,6 @@ module RQRCode #:nodoc:
149
152
 
150
153
 
151
154
  def make_impl( test, mask_pattern ) #:nodoc:
152
- @modules = Array.new( @module_count )
153
155
 
154
156
  ( 0...@module_count ).each do |row|
155
157
  @modules[row] = Array.new( @module_count )
@@ -292,7 +294,7 @@ module RQRCode #:nodoc:
292
294
 
293
295
  if @modules[row][ col - c ].nil?
294
296
  dark = false
295
- if byte_index < data.size
297
+ if byte_index < data.size && !data[byte_index].nil?
296
298
  dark = (( (data[byte_index]).rszf( bit_index ) & 1) == 1 )
297
299
  end
298
300
  mask = QRUtil.get_mask( mask_pattern, row, col - c )
@@ -72,7 +72,27 @@ class QRCodeTest < Test::Unit::TestCase
72
72
  def test_to_s
73
73
  qr = RQRCode::QRCode.new( 'duncan', :size => 1 )
74
74
  assert_equal qr.to_s[0..21], "xxxxxxx xx x xxxxxxx\n"
75
- assert_equal qr.to_s( :true => 'q', :false => 'n' )[0..21], "qqqqqqqnqqnqnnqqqqqqq\n"
75
+ assert_equal qr.to_s( :true => 'q', :false => 'n' )[0..21],
76
+ "qqqqqqqnqqnqnnqqqqqqq\n"
76
77
  assert_equal qr.to_s( :true => '@' )[0..21], "@@@@@@@ @@ @ @@@@@@@\n"
77
78
  end
79
+
80
+ def test_rszf_error_not_thrown
81
+ assert RQRCode::QRCode.new('2 1058 657682')
82
+ assert RQRCode::QRCode.new("40952", :size => 1, :level => :h)
83
+ assert RQRCode::QRCode.new("40932", :size => 1, :level => :h)
84
+ end
85
+
86
+ def test_levels
87
+ assert RQRCode::QRCode.new("duncan", :level => :l)
88
+ assert RQRCode::QRCode.new("duncan", :level => :m)
89
+ assert RQRCode::QRCode.new("duncan", :level => :q)
90
+ assert RQRCode::QRCode.new("duncan", :level => :h)
91
+ assert_raise(RQRCode::QRCodeArgumentError) {
92
+ %w(a b c d e f g i j k n o p r s t u v w x y z).each do |ltr|
93
+ RQRCode::QRCode.new( "duncan", :level => ltr.to_sym )
94
+ end
95
+ }
96
+ end
97
+
78
98
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: barby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 4
9
- - 2
10
- version: 0.4.2
8
+ - 3
9
+ version: 0.4.3
11
10
  platform: ruby
12
11
  authors:
13
12
  - Tore Darell
@@ -15,19 +14,22 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-10-08 00:00:00 +02:00
17
+ date: 2011-05-10 00:00:00 +02:00
19
18
  default_executable:
20
19
  dependencies: []
21
20
 
22
21
  description: Barby creates barcodes.
23
22
  email: toredarell@gmail.com
24
- executables: []
25
-
23
+ executables:
24
+ - barby
26
25
  extensions: []
27
26
 
28
27
  extra_rdoc_files:
29
28
  - README
30
29
  files:
30
+ - CHANGELOG
31
+ - README
32
+ - LICENSE
31
33
  - lib/barby/barcode/bookland.rb
32
34
  - lib/barby/barcode/code_128.rb
33
35
  - lib/barby/barcode/code_25.rb
@@ -41,10 +43,10 @@ files:
41
43
  - lib/barby/barcode/gs1_128.rb
42
44
  - lib/barby/barcode/pdf_417.rb
43
45
  - lib/barby/barcode/qr_code.rb
46
+ - lib/barby/barcode/upc_supplemental.rb
44
47
  - lib/barby/barcode.rb
45
48
  - lib/barby/outputter/ascii_outputter.rb
46
49
  - lib/barby/outputter/cairo_outputter.rb
47
- - lib/barby/outputter/chunky_png_outputter.rb
48
50
  - lib/barby/outputter/pdfwriter_outputter.rb
49
51
  - lib/barby/outputter/png_outputter.rb
50
52
  - lib/barby/outputter/prawn_outputter.rb
@@ -54,7 +56,6 @@ files:
54
56
  - lib/barby/vendor.rb
55
57
  - lib/barby/version.rb
56
58
  - lib/barby.rb
57
- - bin/barby
58
59
  - vendor/Pdf417lib-java-0.91/lib/Pdf417lib.jar
59
60
  - vendor/Pdf417lib-java-0.91/lib/Pdf417lib.java
60
61
  - vendor/rqrcode/CHANGELOG
@@ -77,7 +78,7 @@ files:
77
78
  - vendor/rqrcode/README
78
79
  - vendor/rqrcode/test/runtest.rb
79
80
  - vendor/rqrcode/test/test_data.rb
80
- - README
81
+ - bin/barby
81
82
  has_rdoc: true
82
83
  homepage: http://toretore.github.com/barby
83
84
  licenses: []
@@ -92,7 +93,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
93
  requirements:
93
94
  - - ">="
94
95
  - !ruby/object:Gem::Version
95
- hash: 3
96
96
  segments:
97
97
  - 0
98
98
  version: "0"
@@ -101,7 +101,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- hash: 3
105
104
  segments:
106
105
  - 0
107
106
  version: "0"
@@ -1,107 +0,0 @@
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.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
- #Create a ChunkyPNG::Datastream containing the barcode image
57
- #
58
- # :constraints - Value is passed on to ChunkyPNG::Image#to_datastream
59
- # E.g. to_datastream(:constraints => {:color_mode => ChunkyPNG::COLOR_GRAYSCALE})
60
- def to_datastream(*a)
61
- constraints = a.first && a.first[:constraints] ? [a.first[:constraints]] : []
62
- to_image(*a).to_datastream(*constraints)
63
- end
64
-
65
-
66
- #Renders the barcode to a PNG image
67
- def to_png(*a)
68
- to_datastream(*a).to_s
69
- end
70
-
71
-
72
- def width
73
- length * xdim
74
- end
75
-
76
- def height
77
- barcode.two_dimensional? ? (ydim * encoding.length) : (@height || 100)
78
- end
79
-
80
- def full_width
81
- width + (margin * 2)
82
- end
83
-
84
- def full_height
85
- height + (margin * 2)
86
- end
87
-
88
- def xdim
89
- @xdim || 1
90
- end
91
-
92
- def ydim
93
- @ydim || xdim
94
- end
95
-
96
- def margin
97
- @margin || 10
98
- end
99
-
100
- def length
101
- barcode.two_dimensional? ? encoding.first.length : encoding.length
102
- end
103
-
104
-
105
- end
106
-
107
- end