ruby-zint 1.0.0

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 (129) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.standard.yml +3 -0
  4. data/Gemfile +16 -0
  5. data/Gemfile.lock +79 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +80 -0
  8. data/Rakefile +8 -0
  9. data/lib/ruby-zint.rb +1 -0
  10. data/lib/zint/aus_post.rb +7 -0
  11. data/lib/zint/aus_redirect.rb +7 -0
  12. data/lib/zint/aus_reply.rb +7 -0
  13. data/lib/zint/aus_route.rb +7 -0
  14. data/lib/zint/azrune.rb +7 -0
  15. data/lib/zint/aztec.rb +7 -0
  16. data/lib/zint/barcode.rb +148 -0
  17. data/lib/zint/bind.rb +7 -0
  18. data/lib/zint/bitmap.rb +4 -0
  19. data/lib/zint/bitmap_pixel.rb +4 -0
  20. data/lib/zint/box.rb +7 -0
  21. data/lib/zint/c25iata.rb +7 -0
  22. data/lib/zint/c25ind.rb +7 -0
  23. data/lib/zint/c25inter.rb +7 -0
  24. data/lib/zint/c25logic.rb +7 -0
  25. data/lib/zint/c25matrix.rb +7 -0
  26. data/lib/zint/c25standard.rb +7 -0
  27. data/lib/zint/channel.rb +7 -0
  28. data/lib/zint/codabar.rb +7 -0
  29. data/lib/zint/codablock_f.rb +7 -0
  30. data/lib/zint/code11.rb +7 -0
  31. data/lib/zint/code128.rb +7 -0
  32. data/lib/zint/code128b.rb +7 -0
  33. data/lib/zint/code16k.rb +7 -0
  34. data/lib/zint/code32.rb +7 -0
  35. data/lib/zint/code39.rb +7 -0
  36. data/lib/zint/code49.rb +7 -0
  37. data/lib/zint/code93.rb +7 -0
  38. data/lib/zint/code_one.rb +7 -0
  39. data/lib/zint/constants/capability_flags.rb +18 -0
  40. data/lib/zint/constants/debug_flags.rb +9 -0
  41. data/lib/zint/constants/errors.rb +19 -0
  42. data/lib/zint/constants/input_data_types.rb +14 -0
  43. data/lib/zint/constants/output_options.rb +18 -0
  44. data/lib/zint/constants/specific_options.rb +12 -0
  45. data/lib/zint/constants/symbologies.rb +130 -0
  46. data/lib/zint/constants/warn_levels.rb +9 -0
  47. data/lib/zint/constants/warnings.rb +12 -0
  48. data/lib/zint/daft.rb +7 -0
  49. data/lib/zint/data_matrix.rb +18 -0
  50. data/lib/zint/dbarexp.rb +7 -0
  51. data/lib/zint/dbarexpstk.rb +7 -0
  52. data/lib/zint/dbarltd.rb +7 -0
  53. data/lib/zint/dbaromn.rb +7 -0
  54. data/lib/zint/dbaromnstk.rb +7 -0
  55. data/lib/zint/dbarstk.rb +7 -0
  56. data/lib/zint/dot_code.rb +7 -0
  57. data/lib/zint/dotty_mode.rb +7 -0
  58. data/lib/zint/dpd.rb +7 -0
  59. data/lib/zint/dpident.rb +7 -0
  60. data/lib/zint/dpleit.rb +7 -0
  61. data/lib/zint/ean128.rb +7 -0
  62. data/lib/zint/ean14.rb +7 -0
  63. data/lib/zint/eanx.rb +7 -0
  64. data/lib/zint/eanxchk.rb +7 -0
  65. data/lib/zint/excode39.rb +7 -0
  66. data/lib/zint/fim.rb +7 -0
  67. data/lib/zint/flat.rb +7 -0
  68. data/lib/zint/grid_matrix.rb +7 -0
  69. data/lib/zint/gs1_128.rb +9 -0
  70. data/lib/zint/hanxin.rb +7 -0
  71. data/lib/zint/hibc128.rb +7 -0
  72. data/lib/zint/hibc39.rb +7 -0
  73. data/lib/zint/hibcaztec.rb +7 -0
  74. data/lib/zint/hibcblockf.rb +7 -0
  75. data/lib/zint/hibcdm.rb +7 -0
  76. data/lib/zint/hibcmicpdf.rb +7 -0
  77. data/lib/zint/hibcpdf.rb +7 -0
  78. data/lib/zint/hibcqr.rb +7 -0
  79. data/lib/zint/isbnx.rb +7 -0
  80. data/lib/zint/itf14.rb +7 -0
  81. data/lib/zint/japan_post.rb +7 -0
  82. data/lib/zint/kix.rb +7 -0
  83. data/lib/zint/korea_post.rb +7 -0
  84. data/lib/zint/logmars.rb +7 -0
  85. data/lib/zint/mailmark.rb +7 -0
  86. data/lib/zint/maxi_code.rb +7 -0
  87. data/lib/zint/micro_pdf417.rb +7 -0
  88. data/lib/zint/micro_qr.rb +7 -0
  89. data/lib/zint/msiplessey.rb +7 -0
  90. data/lib/zint/noascii.rb +7 -0
  91. data/lib/zint/nve18.rb +7 -0
  92. data/lib/zint/one_code.rb +7 -0
  93. data/lib/zint/pdf417.rb +7 -0
  94. data/lib/zint/pdf417comp.rb +7 -0
  95. data/lib/zint/pdf417trunc.rb +7 -0
  96. data/lib/zint/pharma.rb +7 -0
  97. data/lib/zint/pharmatwo.rb +7 -0
  98. data/lib/zint/planet.rb +7 -0
  99. data/lib/zint/plessey.rb +7 -0
  100. data/lib/zint/postnet.rb +7 -0
  101. data/lib/zint/pzn.rb +7 -0
  102. data/lib/zint/qr.rb +17 -0
  103. data/lib/zint/rmqr.rb +7 -0
  104. data/lib/zint/rss14.rb +7 -0
  105. data/lib/zint/rss14stack.rb +7 -0
  106. data/lib/zint/rss14stackomni.rb +7 -0
  107. data/lib/zint/rssexp.rb +7 -0
  108. data/lib/zint/rssexpstack.rb +7 -0
  109. data/lib/zint/rssltd.rb +7 -0
  110. data/lib/zint/stdout.rb +7 -0
  111. data/lib/zint/structs/circle.rb +11 -0
  112. data/lib/zint/structs/hexagon.rb +11 -0
  113. data/lib/zint/structs/rect.rb +12 -0
  114. data/lib/zint/structs/symbol.rb +41 -0
  115. data/lib/zint/structs/vector.rb +12 -0
  116. data/lib/zint/structs/vector_string.rb +15 -0
  117. data/lib/zint/telepen.rb +7 -0
  118. data/lib/zint/telepennum.rb +7 -0
  119. data/lib/zint/ultra.rb +7 -0
  120. data/lib/zint/upc_a.rb +7 -0
  121. data/lib/zint/upc_a_chk.rb +7 -0
  122. data/lib/zint/upc_e.rb +7 -0
  123. data/lib/zint/upc_e_chk.rb +7 -0
  124. data/lib/zint/upnqr.rb +7 -0
  125. data/lib/zint/uspsimail.rb +7 -0
  126. data/lib/zint/version.rb +3 -0
  127. data/lib/zint/vin.rb +7 -0
  128. data/lib/zint.rb +236 -0
  129. metadata +186 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7f734d5ae4c7959fb5753621a438396bccf285508bb17d80a847e80722f30378
4
+ data.tar.gz: 2207324efb9029cd4f6423b4b1aa04d8d8f9339e3fcca5464d048162c72f631d
5
+ SHA512:
6
+ metadata.gz: 58b054d6ca8c39d9421a9dfdc49517402659b0935455fc61d0d3b7a65791980ef93b8ce10c36a820940d1a54240589dd928c6cb6ef618e7d87dddd655ae450b0
7
+ data.tar.gz: 9b7184006218407385bd2f84c1eb465ab3aa1742b08a98eae58dde5a6653e839d80835f8d234f2d6f768908b10926de94f215a32d6446c0c1de2e202f9a85a7b
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.standard.yml ADDED
@@ -0,0 +1,3 @@
1
+ parallel: true
2
+ format: progress
3
+ ruby_version: 2.6
data/Gemfile ADDED
@@ -0,0 +1,16 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in ruby-zint.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 13.0"
7
+
8
+ gem "rspec", "~> 3.0"
9
+
10
+ gem "simplecov", require: false
11
+
12
+ gem "chunky_png"
13
+
14
+ gem "byebug"
15
+
16
+ gem "standard", "~> 1.3"
data/Gemfile.lock ADDED
@@ -0,0 +1,79 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby-zint (1.0.0)
5
+ ffi (~> 1.15)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ast (2.4.2)
11
+ byebug (11.1.3)
12
+ chunky_png (1.4.0)
13
+ diff-lcs (1.5.0)
14
+ docile (1.4.0)
15
+ ffi (1.15.5)
16
+ json (2.6.3)
17
+ language_server-protocol (3.17.0.3)
18
+ parallel (1.22.1)
19
+ parser (3.2.1.1)
20
+ ast (~> 2.4.1)
21
+ rainbow (3.1.1)
22
+ rake (13.0.6)
23
+ regexp_parser (2.7.0)
24
+ rexml (3.2.5)
25
+ rspec (3.12.0)
26
+ rspec-core (~> 3.12.0)
27
+ rspec-expectations (~> 3.12.0)
28
+ rspec-mocks (~> 3.12.0)
29
+ rspec-core (3.12.1)
30
+ rspec-support (~> 3.12.0)
31
+ rspec-expectations (3.12.2)
32
+ diff-lcs (>= 1.2.0, < 2.0)
33
+ rspec-support (~> 3.12.0)
34
+ rspec-mocks (3.12.5)
35
+ diff-lcs (>= 1.2.0, < 2.0)
36
+ rspec-support (~> 3.12.0)
37
+ rspec-support (3.12.0)
38
+ rubocop (1.48.1)
39
+ json (~> 2.3)
40
+ parallel (~> 1.10)
41
+ parser (>= 3.2.0.0)
42
+ rainbow (>= 2.2.2, < 4.0)
43
+ regexp_parser (>= 1.8, < 3.0)
44
+ rexml (>= 3.2.5, < 4.0)
45
+ rubocop-ast (>= 1.26.0, < 2.0)
46
+ ruby-progressbar (~> 1.7)
47
+ unicode-display_width (>= 2.4.0, < 3.0)
48
+ rubocop-ast (1.28.0)
49
+ parser (>= 3.2.1.0)
50
+ rubocop-performance (1.16.0)
51
+ rubocop (>= 1.7.0, < 2.0)
52
+ rubocop-ast (>= 0.4.0)
53
+ ruby-progressbar (1.13.0)
54
+ simplecov (0.21.2)
55
+ docile (~> 1.1)
56
+ simplecov-html (~> 0.11)
57
+ simplecov_json_formatter (~> 0.1)
58
+ simplecov-html (0.12.3)
59
+ simplecov_json_formatter (0.1.4)
60
+ standard (1.25.3)
61
+ language_server-protocol (~> 3.17.0.2)
62
+ rubocop (~> 1.48.1)
63
+ rubocop-performance (~> 1.16.0)
64
+ unicode-display_width (2.4.2)
65
+
66
+ PLATFORMS
67
+ x86_64-linux
68
+
69
+ DEPENDENCIES
70
+ byebug
71
+ chunky_png
72
+ rake (~> 13.0)
73
+ rspec (~> 3.0)
74
+ ruby-zint!
75
+ simplecov
76
+ standard (~> 1.3)
77
+
78
+ BUNDLED WITH
79
+ 2.4.8
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023 Elias Fröhner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # ruby-zint
2
+
3
+ [![CI](https://github.com/api-walker/ruby-zint/actions/workflows/main.yml/badge.svg)](https://github.com/api-walker/ruby-zint/actions/workflows/main.yml)
4
+
5
+ This gem is a Ruby FFI binding for the [libzint](http://www.zint.org.uk) barcode generation library.
6
+
7
+ See the [documentation](https://rubydoc.info/github/api-walker/ruby-zint) for a full API description.
8
+
9
+ ## Installation
10
+
11
+ Install the libzint binary with your package manager (eg. `apt install zint` or perhaps `brew install zint`).
12
+
13
+ Other platforms require building [from source](https://www.zint.org.uk/manual/chapter/2).
14
+
15
+ **NOTE:** It is assumed that you are using libzint with the version [2.10](https://sourceforge.net/projects/zint/files/zint/2.10.0/).
16
+
17
+ Then install this gem with:
18
+
19
+ ```
20
+ $ gem install ruby-zint
21
+ ```
22
+
23
+ Or include `gem "ruby-zint"` in your Gemfile.
24
+
25
+ ## Usage
26
+
27
+ ```ruby
28
+ require "zint"
29
+
30
+ barcode = Zint::Barcode.new(value: "Test", type: Zint::BARCODE_CODE128)
31
+
32
+ # Export to file
33
+ barcode.to_file(path: "out.png")
34
+
35
+ # Export file to memory
36
+ barcode.to_memory_file(extension: ".png")
37
+
38
+ # Write from Bitmap to own canvas
39
+ require "chunky_png"
40
+ png = ChunkyPNG::Image.new(bitmap.width, bitmap.height, ChunkyPNG::Color::TRANSPARENT)
41
+ white = ChunkyPNG::Color("white")
42
+ black = ChunkyPNG::Color("black")
43
+
44
+ bitmap = barcode.to_buffer
45
+ bitmap.pixels.each do |pixel|
46
+ png.compose_pixel(pixel.x, pixel.y, (pixel.colour == "K") ? black : white)
47
+ end
48
+
49
+ png.save(buffer_outfile)
50
+
51
+ # Use vector export
52
+ vector_struct = barcode.to_vector
53
+ # See manual: https://zint.org.uk/manual/chapter/5#buffering-symbols-in-memory-vector
54
+
55
+ # Use file as input
56
+ barcode = Zint::Barcode.new(input_file: "/tmp/test.txt")
57
+ barcode.to_file(path: "out.png")
58
+
59
+ # Use of comfort classes
60
+
61
+ # EAN
62
+ ean_barcode = Zint::Eanx.new(value: "012345678912")
63
+ ean_barcode.to_file(path: "ean.png")
64
+
65
+ # Code128
66
+ code_128_barcode = Zint::Code128.new(value: "012345678912")
67
+ code_128_barcode.to_file(path: "code_128.png")
68
+
69
+ ```
70
+
71
+ ## Contributing
72
+
73
+ Bug reports and pull requests are welcome on GitHub at https://github.com/api-walker/ruby-zint.
74
+
75
+ ## License
76
+
77
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
78
+
79
+ ## Credits
80
+ The project is based on the work and ideas of Angel Pizarro's [zint](https://github.com/delagoya/zint).
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ require "standard/rake"
7
+
8
+ task default: %i[spec standard]
data/lib/ruby-zint.rb ADDED
@@ -0,0 +1 @@
1
+ require "zint"
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class AusPost < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_AUSPOST, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class AusRedirect < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_AUSREDIRECT, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class AusReply < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_AUSREPLY, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class AusRoute < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_AUSROUTE, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Azrune < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_AZRUNE, options: options)
5
+ end
6
+ end
7
+ end
data/lib/zint/aztec.rb ADDED
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Aztec < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_AZTEC, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,148 @@
1
+ module Zint
2
+ # Base class to represent the barcode
3
+ #
4
+ # @example Create new barcode
5
+ # barcode = Zint::Barcode.new(value: "Test", type: Zint::BARCODE_QRCODE, options: {option_1: 1})
6
+ # barcode.to_file(path: "qr.png")
7
+ class Barcode
8
+ # @return [String, NilClass] Content of the barcode
9
+ attr_accessor :value
10
+ # @return [String, NilClass] Path to input file with content of the barcode
11
+ attr_accessor :input_file
12
+ # @return [Integer] Type of barcode
13
+ attr_reader :type
14
+ # @return [Zint::Structs::Symbol] The underlying FFI struct of the Zint C struct
15
+ attr_reader :zint_symbol
16
+
17
+ # @param value [String, NilClass] Content of the barcode
18
+ # @param input_file [String, NilClass] Path to input file with content of the barcode
19
+ # @param type [Integer] Type of barcode
20
+ # @param options [Hash] Specific options for Zint symbol
21
+ def initialize(value: nil, input_file: nil, type: Zint::BARCODE_CODE128, options: {})
22
+ raise ArgumentError, "value or input_file must be given!" if value&.empty? && input_file&.empty?
23
+ raise ArgumentError, "input_file not found!" if input_file && !File.exist?(input_file)
24
+
25
+ @zint_symbol = create_symbol(type)
26
+ options.each do |key, value|
27
+ @zint_symbol[key] = value
28
+ end
29
+
30
+ @type = type
31
+ @value = value
32
+ @input_file = input_file
33
+ end
34
+
35
+ # Sets type of barcode
36
+ #
37
+ # @param type [Integer] Type of barcode
38
+ def type=(type)
39
+ @type = type
40
+
41
+ call_function(:ZBarcode_Clear, zint_symbol)
42
+
43
+ @zint_symbol[:symbology] = type
44
+ end
45
+
46
+ # Exports barcode to file
47
+ #
48
+ # @param path [String] Path to export file
49
+ # @param rotate_angle [Integer] Rotate angle in degrees (0, 90, 180, 270)
50
+ def to_file(path:, rotate_angle: 0)
51
+ @zint_symbol[:outfile] = path
52
+
53
+ if input_file
54
+ call_function(:ZBarcode_Encode_File_and_Print, zint_symbol, input_file, rotate_angle)
55
+ else
56
+ call_function(:ZBarcode_Encode_and_Print, zint_symbol, value, 0, rotate_angle)
57
+ end
58
+ end
59
+
60
+ # Exports barcode to memory file
61
+ #
62
+ # @param extension [String] Extension exported memory file
63
+ # @param rotate_angle [Integer] Rotate angle in degrees (0, 90, 180, 270)
64
+ # @return [String] Exported memory file
65
+ def to_memory_file(extension: ".png", rotate_angle: 0)
66
+ require "tempfile"
67
+ file = Tempfile.new(["zint", extension])
68
+
69
+ to_file(path: file.path, rotate_angle: rotate_angle)
70
+
71
+ file.rewind
72
+ buffer = file.read
73
+ file.close
74
+ file.unlink
75
+
76
+ buffer
77
+ end
78
+
79
+ # Exports barcode to buffer
80
+ #
81
+ # @param rotate_angle [Integer] Rotate angle in degrees (0, 90, 180, 270)
82
+ # @param raw_bitmap [Boolean] Export raw zint bitmap
83
+ # @return [Zint::Bitmap, String] Exported memory file
84
+ def to_buffer(rotate_angle: 0, raw_bitmap: false)
85
+ @zint_symbol[:output_options] = Zint::OUT_BUFFER_INTERMEDIATE
86
+
87
+ if input_file
88
+ call_function(:ZBarcode_Encode_File_and_Buffer, zint_symbol, input_file, rotate_angle)
89
+ else
90
+ call_function(:ZBarcode_Encode_and_Buffer, zint_symbol, value, 0, rotate_angle)
91
+ end
92
+
93
+ zint_bitmap = zint_symbol[:bitmap].read_string((zint_symbol[:bitmap_width] * zint_symbol[:bitmap_height]))
94
+
95
+ if raw_bitmap
96
+ zint_bitmap
97
+ else
98
+ pixels = []
99
+ zint_symbol[:bitmap_height].times do |row|
100
+ zint_symbol[:bitmap_width].times do |column|
101
+ pixel = zint_bitmap.slice!(0, 1)
102
+ colour = if %w[0 1].include?(pixel)
103
+ (pixel == "1") ? "K" : "W"
104
+ else
105
+ pixel
106
+ end
107
+ pixels << BitmapPixel.new(column, row, colour)
108
+ end
109
+ end
110
+
111
+ Bitmap.new(zint_symbol[:bitmap_width], zint_symbol[:bitmap_height], pixels)
112
+ end
113
+ end
114
+
115
+ # Exports barcode as Zint vector
116
+ #
117
+ # @param rotate_angle [Integer] Rotate angle in degrees (0, 90, 180, 270)
118
+ # @return [Zint::Structs::Vector] Vector data of barcode
119
+ def to_vector(rotate_angle: 0)
120
+ if input_file
121
+ call_function(:ZBarcode_Encode_File_and_Buffer_Vector, zint_symbol, input_file, rotate_angle)
122
+ else
123
+ call_function(:ZBarcode_Encode_and_Buffer_Vector, zint_symbol, value, 0, rotate_angle)
124
+ end
125
+
126
+ Structs::Vector.new(zint_symbol[:vector])
127
+ end
128
+
129
+ private
130
+
131
+ def call_function(function_name, *args)
132
+ error_code = Zint.send(function_name.to_s, *args)
133
+
134
+ if Zint::ERRORS[error_code]
135
+ Zint.raise_error(error_code, zint_symbol[:errtxt])
136
+ end
137
+
138
+ error_code
139
+ end
140
+
141
+ def create_symbol(type)
142
+ symbol = Structs::Symbol.new(Zint.ZBarcode_Create)
143
+ symbol[:symbology] = type
144
+
145
+ symbol
146
+ end
147
+ end
148
+ end
data/lib/zint/bind.rb ADDED
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Bind < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_BIND, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ module Zint
2
+ # A class to represents a pixel from the bitmap
3
+ Bitmap = Struct.new(:width, :height, :pixels)
4
+ end
@@ -0,0 +1,4 @@
1
+ module Zint
2
+ # A class to represents a pixel from the bitmap
3
+ BitmapPixel = Struct.new(:x, :y, :colour)
4
+ end
data/lib/zint/box.rb ADDED
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Box < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_BOX, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class C25iata < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_C25IATA, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class C25ind < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_C25IND, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class C25inter < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_C25INTER, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class C25logic < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_C25LOGIC, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class C25matrix < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_C25MATRIX, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class C25standard < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_C25STANDARD, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Channel < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CHANNEL, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Codabar < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODABAR, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class CodablockF < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODABLOCKF, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code11 < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE11, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code128 < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE128, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code128b < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE128B, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code16k < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE16K, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code32 < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE32, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code39 < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE39, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code49 < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE49, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class Code93 < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODE93, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Zint
2
+ class CodeOne < Barcode
3
+ def initialize(value: nil, input_file: nil, options: {})
4
+ super(value: value, input_file: input_file, type: Zint::BARCODE_CODEONE, options: options)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ module Zint
2
+ module Constants
3
+ # Capability flags (ZBarcode_Cap() `cap_flag`)
4
+ module CapabilityFlags
5
+ ZINT_CAP_HRT = 0x0001 # Prints Human Readable Text?
6
+ ZINT_CAP_STACKABLE = 0x0002 # Is stackable?
7
+ ZINT_CAP_EXTENDABLE = 0x0004 # Is extendable with add-on data? (Is UPC/EAN?)
8
+ ZINT_CAP_COMPOSITE = 0x0008 # Can have composite data?
9
+ ZINT_CAP_ECI = 0x0010 # Supports Extended Channel Interpretations?
10
+ ZINT_CAP_GS1 = 0x0020 # Supports GS1 data?
11
+ ZINT_CAP_DOTTY = 0x0040 # Can be output as dots?
12
+ ZINT_CAP_FIXED_RATIO = 0x0100 # Has fixed width-to-height (aspect) ratio?
13
+ ZINT_CAP_READER_INIT = 0x0200 # Supports Reader Initialisation?
14
+ ZINT_CAP_FULL_MULTIBYTE = 0x0400 # Supports full-multibyte option?
15
+ ZINT_CAP_MASK = 0x0800 # Is mask selectable?
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module Zint
2
+ module Constants
3
+ # Debug flags (debug)
4
+ module DebugFlags
5
+ ZINT_DEBUG_PRINT = 1 # Print debug info (if any) to stdout
6
+ ZINT_DEBUG_TEST = 2 # For internal test use only
7
+ end
8
+ end
9
+ end