ruby-zint 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.standard.yml +2 -0
- data/Gemfile +2 -0
- data/README.md +29 -7
- data/Rakefile +12 -0
- data/ext/ruby-zint/extconf.rb +86 -0
- data/lib/zint/barcode.rb +392 -46
- data/lib/zint/dependencies.rb +8 -0
- data/lib/zint/native.rb +87 -0
- data/lib/zint/structs/symbol.rb +7 -2
- data/lib/zint/structs/vector.rb +47 -5
- data/lib/zint/structs/vector_circle.rb +31 -0
- data/lib/zint/structs/vector_hexagon.rb +31 -0
- data/lib/zint/structs/vector_rect.rb +37 -0
- data/lib/zint/structs/vector_string.rb +43 -8
- data/lib/zint/version.rb +1 -1
- data/lib/zint/zint_recipe.rb +27 -0
- data/lib/zint.rb +7 -82
- data/ports/archives/zint-2.10.0-src.tar.gz +0 -0
- metadata +27 -7
- data/Gemfile.lock +0 -79
- data/lib/zint/structs/circle.rb +0 -11
- data/lib/zint/structs/hexagon.rb +0 -11
- data/lib/zint/structs/rect.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccdb5e197e8d714e8f2d336b7448a1e104a69a5969b2d811ee6b0ef8998e6cac
|
4
|
+
data.tar.gz: 547681f881a38f9168ac6330f07f300f578e2655eb3241633992e619394239e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 772885463ca263b7a44405a78851961817a04d97b7e2fe2bb7691a5f5b06c0a7c2055bcf5f9dcfc07e1c2b5d235dbf75dcd8a161d5b0d2d2f04629fb4fb603b4
|
7
|
+
data.tar.gz: 565dcf8defee2948e4a4335e9681111056b7ee81a5dd03134f77cb030425131829964f7e2847813ee8866e61de3210e1796f855ae9c09ad601b623a8609dd9e4
|
data/.standard.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,19 +8,41 @@ See the [documentation](https://rubydoc.info/github/api-walker/ruby-zint) for a
|
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
11
|
-
|
11
|
+
By default ruby-zint first tries to use libzint installed on the system.
|
12
|
+
If libzint can't be found or if it isn't a supported version, then the zint version, bundled into the gem, is compiled and used.
|
13
|
+
Both install methods can be enforced by using `--enable-system-libzint` or `--disable-system-libzint` options, see below.
|
14
|
+
|
15
|
+
### With libzint source code (recommended)
|
16
|
+
First install CMake with your package manager (e. g. `apt install cmake`).
|
17
|
+
|
18
|
+
Afterwards install the gem and force builtin libzint:
|
19
|
+
|
20
|
+
```
|
21
|
+
$ gem install ruby-zint -- --disable-system-libzint
|
22
|
+
```
|
23
|
+
|
24
|
+
### With system libraries
|
25
|
+
|
26
|
+
Install the libzint binary with your package manager (e. g. `apt install zint` or perhaps `brew install zint`).
|
12
27
|
|
13
28
|
Other platforms require building [from source](https://www.zint.org.uk/manual/chapter/2).
|
14
29
|
|
15
30
|
**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
31
|
|
17
|
-
Then install this gem
|
32
|
+
Then install this gem and enforce system libzint:
|
18
33
|
|
19
34
|
```
|
20
|
-
$ gem install ruby-zint
|
35
|
+
$ gem install ruby-zint -- --enable-system-libzint
|
21
36
|
```
|
22
37
|
|
23
|
-
|
38
|
+
### Gemfile
|
39
|
+
|
40
|
+
Include `gem "ruby-zint"` in your Gemfile.
|
41
|
+
Optionally set the install option by running bundler like so:
|
42
|
+
|
43
|
+
```
|
44
|
+
bundle config build.ruby-zint --enable-system-libzint
|
45
|
+
```
|
24
46
|
|
25
47
|
## Usage
|
26
48
|
|
@@ -41,12 +63,12 @@ png = ChunkyPNG::Image.new(bitmap.width, bitmap.height, ChunkyPNG::Color::TRANSP
|
|
41
63
|
white = ChunkyPNG::Color("white")
|
42
64
|
black = ChunkyPNG::Color("black")
|
43
65
|
|
44
|
-
bitmap = barcode.
|
66
|
+
bitmap = barcode.to_bitmap
|
45
67
|
bitmap.pixels.each do |pixel|
|
46
|
-
png.compose_pixel(pixel.x, pixel.y, (pixel.colour == "
|
68
|
+
png.compose_pixel(pixel.x, pixel.y, (pixel.colour == "1") ? black : white)
|
47
69
|
end
|
48
70
|
|
49
|
-
png.save(
|
71
|
+
png.save("out.png")
|
50
72
|
|
51
73
|
# Use vector export
|
52
74
|
vector_struct = barcode.to_vector
|
data/Rakefile
CHANGED
@@ -1,8 +1,20 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
2
|
require "rspec/core/rake_task"
|
3
|
+
require_relative "lib/zint/zint_recipe"
|
4
|
+
|
5
|
+
CLOBBER.include "pkg"
|
6
|
+
CLEAN.include "ports"
|
7
|
+
CLEAN.include "tmp"
|
8
|
+
CLEAN.include "ext/ruby-zint/tmp"
|
3
9
|
|
4
10
|
RSpec::Core::RakeTask.new(:spec)
|
5
11
|
|
6
12
|
require "standard/rake"
|
7
13
|
|
8
14
|
task default: %i[spec standard]
|
15
|
+
|
16
|
+
task gem: :build
|
17
|
+
task :compile do
|
18
|
+
sh "ruby -C ext/ruby-zint extconf.rb --disable-system-libzint"
|
19
|
+
sh "make -C ext/ruby-zint install RUBYARCHDIR=../../lib"
|
20
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# #!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require "ffi"
|
5
|
+
require "fileutils"
|
6
|
+
|
7
|
+
if RUBY_PLATFORM.match?(/java/)
|
8
|
+
# JRuby's C extension support is disabled by default, so we can not use it
|
9
|
+
|
10
|
+
# Implement very simple verions of mkmf-helpers used below
|
11
|
+
def enable_config(name, default = nil)
|
12
|
+
if ARGV.include?("--enable-#{name}")
|
13
|
+
true
|
14
|
+
elsif ARGV.include?("--disable-#{name}")
|
15
|
+
false
|
16
|
+
else
|
17
|
+
default
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def arg_config(name)
|
22
|
+
ARGV.include?(name)
|
23
|
+
end
|
24
|
+
else
|
25
|
+
require "mkmf"
|
26
|
+
end
|
27
|
+
|
28
|
+
if RUBY_PLATFORM.match?(/darwin/)
|
29
|
+
ENV["SDKROOT"] ||= `xcrun --sdk macosx --show-sdk-path`.chomp
|
30
|
+
end
|
31
|
+
|
32
|
+
def do_help
|
33
|
+
print <<~HELP
|
34
|
+
usage: ruby #{$0} [options]
|
35
|
+
--enable-system-libzint / --disable-system-libzint
|
36
|
+
Force use of system or builtin libzint library.
|
37
|
+
Default is to prefer system libraries and fallback to builtin.
|
38
|
+
HELP
|
39
|
+
exit! 0
|
40
|
+
end
|
41
|
+
|
42
|
+
do_help if arg_config("--help")
|
43
|
+
|
44
|
+
def libzint_usable?
|
45
|
+
m = Module.new do
|
46
|
+
extend FFI::Library
|
47
|
+
|
48
|
+
ffi_lib(%w[libzint.so.2.10 libzint zint])
|
49
|
+
attach_function(:ZBarcode_Version, [], :int32)
|
50
|
+
end
|
51
|
+
|
52
|
+
(21000...21100) === m.ZBarcode_Version
|
53
|
+
rescue LoadError
|
54
|
+
false
|
55
|
+
end
|
56
|
+
|
57
|
+
def build_bundled_libzint
|
58
|
+
puts "Build"
|
59
|
+
require_relative "../../lib/zint/zint_recipe"
|
60
|
+
|
61
|
+
recipe = Zint::ZintRecipe.new
|
62
|
+
recipe.cook_and_activate
|
63
|
+
recipe.path
|
64
|
+
end
|
65
|
+
|
66
|
+
unless enable_config("system-libzint", libzint_usable?)
|
67
|
+
# Unable to load libzint library on this system,
|
68
|
+
# so we build our bundled version:
|
69
|
+
libzint_path = build_bundled_libzint
|
70
|
+
end
|
71
|
+
|
72
|
+
# Create a Makefile which copies the libzint library files to the gem's lib dir.
|
73
|
+
File.open("Makefile", "wb") do |mf|
|
74
|
+
mf.puts <<~EOT
|
75
|
+
RUBYARCHDIR = #{RbConfig::MAKEFILE_CONFIG["sitearchdir"].dump}
|
76
|
+
all:
|
77
|
+
clean:
|
78
|
+
install:
|
79
|
+
EOT
|
80
|
+
|
81
|
+
if libzint_path
|
82
|
+
mf.puts <<-EOT
|
83
|
+
cp -r #{libzint_path.dump}/*/libzint* $(RUBYARCHDIR)
|
84
|
+
EOT
|
85
|
+
end
|
86
|
+
end
|
data/lib/zint/barcode.rb
CHANGED
@@ -5,14 +5,12 @@ module Zint
|
|
5
5
|
# barcode = Zint::Barcode.new(value: "Test", type: Zint::BARCODE_QRCODE, options: {option_1: 1})
|
6
6
|
# barcode.to_file(path: "qr.png")
|
7
7
|
class Barcode
|
8
|
+
include Native
|
9
|
+
|
8
10
|
# @return [String, NilClass] Content of the barcode
|
9
11
|
attr_accessor :value
|
10
12
|
# @return [String, NilClass] Path to input file with content of the barcode
|
11
13
|
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
14
|
|
17
15
|
# @param value [String, NilClass] Content of the barcode
|
18
16
|
# @param input_file [String, NilClass] Path to input file with content of the barcode
|
@@ -27,22 +25,10 @@ module Zint
|
|
27
25
|
@zint_symbol[key] = value
|
28
26
|
end
|
29
27
|
|
30
|
-
@type = type
|
31
28
|
@value = value
|
32
29
|
@input_file = input_file
|
33
30
|
end
|
34
31
|
|
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
32
|
# Exports barcode to file
|
47
33
|
#
|
48
34
|
# @param path [String] Path to export file
|
@@ -51,9 +37,9 @@ module Zint
|
|
51
37
|
@zint_symbol[:outfile] = path
|
52
38
|
|
53
39
|
if input_file
|
54
|
-
call_function(:ZBarcode_Encode_File_and_Print, zint_symbol, input_file, rotate_angle)
|
40
|
+
call_function(:ZBarcode_Encode_File_and_Print, @zint_symbol, input_file, rotate_angle)
|
55
41
|
else
|
56
|
-
call_function(:ZBarcode_Encode_and_Print, zint_symbol, value, 0, rotate_angle)
|
42
|
+
call_function(:ZBarcode_Encode_and_Print, @zint_symbol, value, 0, rotate_angle)
|
57
43
|
end
|
58
44
|
end
|
59
45
|
|
@@ -79,37 +65,34 @@ module Zint
|
|
79
65
|
# Exports barcode to buffer
|
80
66
|
#
|
81
67
|
# @param rotate_angle [Integer] Rotate angle in degrees (0, 90, 180, 270)
|
82
|
-
# @
|
83
|
-
|
84
|
-
def to_buffer(rotate_angle: 0, raw_bitmap: false)
|
68
|
+
# @return [String] Exported barcode buffer
|
69
|
+
def to_buffer(rotate_angle: 0)
|
85
70
|
@zint_symbol[:output_options] = Zint::OUT_BUFFER_INTERMEDIATE
|
86
71
|
|
87
72
|
if input_file
|
88
|
-
call_function(:ZBarcode_Encode_File_and_Buffer, zint_symbol, input_file, rotate_angle)
|
73
|
+
call_function(:ZBarcode_Encode_File_and_Buffer, @zint_symbol, input_file, rotate_angle)
|
89
74
|
else
|
90
|
-
call_function(:ZBarcode_Encode_and_Buffer, zint_symbol, value, 0, rotate_angle)
|
75
|
+
call_function(:ZBarcode_Encode_and_Buffer, @zint_symbol, value, 0, rotate_angle)
|
91
76
|
end
|
92
77
|
|
93
|
-
|
78
|
+
@zint_symbol[:bitmap].read_bytes((@zint_symbol[:bitmap_width] * @zint_symbol[:bitmap_height]))
|
79
|
+
end
|
94
80
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
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
|
81
|
+
# Exports barcode to buffer
|
82
|
+
#
|
83
|
+
# @param rotate_angle [Integer] Rotate angle in degrees (0, 90, 180, 270)
|
84
|
+
# @return [Zint::Bitmap] Exported bitmap
|
85
|
+
def to_bitmap(rotate_angle: 0)
|
86
|
+
zint_bitmap = to_buffer(rotate_angle: rotate_angle)
|
110
87
|
|
111
|
-
|
88
|
+
pixels = []
|
89
|
+
@zint_symbol[:bitmap_height].times do |row|
|
90
|
+
@zint_symbol[:bitmap_width].times do |column|
|
91
|
+
pixels << BitmapPixel.new(column, row, zint_bitmap[pixels.size])
|
92
|
+
end
|
112
93
|
end
|
94
|
+
|
95
|
+
Bitmap.new(@zint_symbol[:bitmap_width], @zint_symbol[:bitmap_height], pixels)
|
113
96
|
end
|
114
97
|
|
115
98
|
# Exports barcode as Zint vector
|
@@ -118,28 +101,391 @@ module Zint
|
|
118
101
|
# @return [Zint::Structs::Vector] Vector data of barcode
|
119
102
|
def to_vector(rotate_angle: 0)
|
120
103
|
if input_file
|
121
|
-
call_function(:ZBarcode_Encode_File_and_Buffer_Vector, zint_symbol, input_file, rotate_angle)
|
104
|
+
call_function(:ZBarcode_Encode_File_and_Buffer_Vector, @zint_symbol, input_file, rotate_angle)
|
122
105
|
else
|
123
|
-
call_function(:ZBarcode_Encode_and_Buffer_Vector, zint_symbol, value, 0, rotate_angle)
|
106
|
+
call_function(:ZBarcode_Encode_and_Buffer_Vector, @zint_symbol, value, 0, rotate_angle)
|
124
107
|
end
|
125
108
|
|
126
|
-
|
109
|
+
v = @zint_symbol[:vector]
|
110
|
+
# Avoid garbage collection of Symbol before Vector, since the Vector is also freed by ZBarcode_Delete()
|
111
|
+
v.instance_variable_set(:@symbol, @zint_symbol)
|
112
|
+
v
|
113
|
+
end
|
114
|
+
|
115
|
+
# Free barcode and all memory associated with it.
|
116
|
+
def free
|
117
|
+
@zint_symbol.pointer.free
|
118
|
+
end
|
119
|
+
|
120
|
+
# Attributes
|
121
|
+
|
122
|
+
# Gets type of barcode
|
123
|
+
def symbology
|
124
|
+
@zint_symbol[:symbology]
|
125
|
+
end
|
126
|
+
|
127
|
+
# Sets type of barcode
|
128
|
+
#
|
129
|
+
# @param type [Integer] Type of barcode
|
130
|
+
def symbology=(type)
|
131
|
+
reset_symbol
|
132
|
+
|
133
|
+
@zint_symbol[:symbology] = type
|
134
|
+
end
|
135
|
+
|
136
|
+
# Gets height of barcode
|
137
|
+
def height
|
138
|
+
@zint_symbol[:height]
|
139
|
+
end
|
140
|
+
|
141
|
+
# Sets height of barcode
|
142
|
+
#
|
143
|
+
# @param height [Float] Height of barcode
|
144
|
+
def height=(height)
|
145
|
+
reset_symbol
|
146
|
+
|
147
|
+
@zint_symbol[:height] = height
|
148
|
+
end
|
149
|
+
|
150
|
+
# Gets scale of barcode
|
151
|
+
def scale
|
152
|
+
@zint_symbol[:scale]
|
153
|
+
end
|
154
|
+
|
155
|
+
# Sets scale of barcode
|
156
|
+
#
|
157
|
+
# @param scale [Float] Scale of barcode
|
158
|
+
def scale=(scale)
|
159
|
+
reset_symbol
|
160
|
+
|
161
|
+
@zint_symbol[:scale] = scale
|
162
|
+
end
|
163
|
+
|
164
|
+
# Gets whitespace width of barcode
|
165
|
+
def whitespace_width
|
166
|
+
@zint_symbol[:whitespace_width]
|
167
|
+
end
|
168
|
+
|
169
|
+
# Sets whitespace width of barcode
|
170
|
+
#
|
171
|
+
# @param whitespace width [Integer] Whitespace width of barcode
|
172
|
+
def whitespace_width=(whitespace_width)
|
173
|
+
reset_symbol
|
174
|
+
|
175
|
+
@zint_symbol[:whitespace_width] = whitespace_width
|
176
|
+
end
|
177
|
+
|
178
|
+
# Gets whitespace height of barcode
|
179
|
+
def whitespace_height
|
180
|
+
@zint_symbol[:whitespace_height]
|
181
|
+
end
|
182
|
+
|
183
|
+
# Sets whitespace height of barcode
|
184
|
+
#
|
185
|
+
# @param whitespace height [Integer] Whitespace height of barcode
|
186
|
+
def whitespace_height=(whitespace_height)
|
187
|
+
reset_symbol
|
188
|
+
|
189
|
+
@zint_symbol[:whitespace_height] = whitespace_height
|
190
|
+
end
|
191
|
+
|
192
|
+
# Gets border width of barcode
|
193
|
+
def border_width
|
194
|
+
@zint_symbol[:border_width]
|
195
|
+
end
|
196
|
+
|
197
|
+
# Sets border width of barcode
|
198
|
+
#
|
199
|
+
# @param border width [Integer] Border width of barcode
|
200
|
+
def border_width=(border_width)
|
201
|
+
reset_symbol
|
202
|
+
|
203
|
+
@zint_symbol[:border_width] = border_width
|
204
|
+
end
|
205
|
+
|
206
|
+
# Gets output options of barcode
|
207
|
+
def output_options
|
208
|
+
@zint_symbol[:output_options]
|
209
|
+
end
|
210
|
+
|
211
|
+
# Sets output options of barcode
|
212
|
+
#
|
213
|
+
# @param output options [Integer] Output options of barcode
|
214
|
+
def output_options=(output_options)
|
215
|
+
reset_symbol
|
216
|
+
|
217
|
+
@zint_symbol[:output_options] = output_options
|
218
|
+
end
|
219
|
+
|
220
|
+
# Gets foreground colour of barcode
|
221
|
+
def fgcolour
|
222
|
+
@zint_symbol[:fgcolour]
|
223
|
+
end
|
224
|
+
|
225
|
+
# Sets foreground colour of barcode
|
226
|
+
#
|
227
|
+
# @param fgcolour [String] Foreground colour of barcode
|
228
|
+
def fgcolour=(fgcolour)
|
229
|
+
reset_symbol
|
230
|
+
|
231
|
+
@zint_symbol[:fgcolour] = fgcolour
|
232
|
+
end
|
233
|
+
|
234
|
+
# Gets background colour of barcode
|
235
|
+
def bgcolour
|
236
|
+
@zint_symbol[:bgcolour]
|
237
|
+
end
|
238
|
+
|
239
|
+
# Sets background colour of barcode
|
240
|
+
#
|
241
|
+
# @param bgcolour [String] Background color of barcode
|
242
|
+
def bgcolour=(bgcolour)
|
243
|
+
reset_symbol
|
244
|
+
|
245
|
+
@zint_symbol[:bgcolour] = bgcolour
|
246
|
+
end
|
247
|
+
|
248
|
+
# Gets outfile of barcode
|
249
|
+
def outfile
|
250
|
+
@zint_symbol[:outfile]
|
251
|
+
end
|
252
|
+
|
253
|
+
# Gets option 1 of barcode
|
254
|
+
def option_1
|
255
|
+
@zint_symbol[:option_1]
|
256
|
+
end
|
257
|
+
|
258
|
+
# Sets option 1 of barcode
|
259
|
+
#
|
260
|
+
# @param option_1 [Integer] Option 1 of barcode
|
261
|
+
def option_1=(option_1)
|
262
|
+
reset_symbol
|
263
|
+
|
264
|
+
@zint_symbol[:option_1] = option_1
|
265
|
+
end
|
266
|
+
|
267
|
+
# Gets option 2 of barcode
|
268
|
+
def option_2
|
269
|
+
@zint_symbol[:option_2]
|
270
|
+
end
|
271
|
+
|
272
|
+
# Sets option 2 of barcode
|
273
|
+
#
|
274
|
+
# @param option 2 [Integer] Option 2 of barcode
|
275
|
+
def option_2=(option_2)
|
276
|
+
reset_symbol
|
277
|
+
|
278
|
+
@zint_symbol[:option_2] = option_2
|
279
|
+
end
|
280
|
+
|
281
|
+
# Gets option 3 of barcode
|
282
|
+
def option_3
|
283
|
+
@zint_symbol[:option_3]
|
284
|
+
end
|
285
|
+
|
286
|
+
# Sets option 3 of barcode
|
287
|
+
#
|
288
|
+
# @param option 3 [Integer] Option 3 of barcode
|
289
|
+
def option_3=(option_3)
|
290
|
+
reset_symbol
|
291
|
+
|
292
|
+
@zint_symbol[:option_3] = option_3
|
293
|
+
end
|
294
|
+
|
295
|
+
# Gets show_hrt of barcode
|
296
|
+
def show_hrt
|
297
|
+
@zint_symbol[:show_hrt]
|
298
|
+
end
|
299
|
+
|
300
|
+
# Sets show_hrt of barcode
|
301
|
+
# Set to 0 to hide text.
|
302
|
+
#
|
303
|
+
# @param show_hrt [Integer] show_hrt of barcode
|
304
|
+
def show_hrt=(show_hrt)
|
305
|
+
reset_symbol
|
306
|
+
|
307
|
+
@zint_symbol[:show_hrt] = show_hrt
|
308
|
+
end
|
309
|
+
|
310
|
+
# Gets font size of barcode
|
311
|
+
def fontsize
|
312
|
+
@zint_symbol[:fontsize]
|
313
|
+
end
|
314
|
+
|
315
|
+
# Sets font size of barcode
|
316
|
+
#
|
317
|
+
# @param font size [Integer] Font size of barcode
|
318
|
+
def fontsize=(fontsize)
|
319
|
+
reset_symbol
|
320
|
+
|
321
|
+
@zint_symbol[:fontsize] = fontsize
|
322
|
+
end
|
323
|
+
|
324
|
+
# Gets input mode of barcode
|
325
|
+
def input_mode
|
326
|
+
@zint_symbol[:input_mode]
|
327
|
+
end
|
328
|
+
|
329
|
+
# Sets input mode of barcode
|
330
|
+
#
|
331
|
+
# @param input_mode [Integer] Input mode of barcode
|
332
|
+
def input_mode=(input_mode)
|
333
|
+
reset_symbol
|
334
|
+
|
335
|
+
@zint_symbol[:input_mode] = input_mode
|
336
|
+
end
|
337
|
+
|
338
|
+
# Gets ECI of barcode
|
339
|
+
def eci
|
340
|
+
@zint_symbol[:eci]
|
341
|
+
end
|
342
|
+
|
343
|
+
# Sets ECI of barcode
|
344
|
+
#
|
345
|
+
# @param eci [Integer] ECI of barcode
|
346
|
+
def eci=(eci)
|
347
|
+
reset_symbol
|
348
|
+
|
349
|
+
@zint_symbol[:eci] = eci
|
350
|
+
end
|
351
|
+
|
352
|
+
# Gets text of barcode
|
353
|
+
def text
|
354
|
+
@zint_symbol[:text]
|
355
|
+
end
|
356
|
+
|
357
|
+
# Sets text of barcode
|
358
|
+
#
|
359
|
+
# @param text [String] Text of barcode
|
360
|
+
def text=(text)
|
361
|
+
reset_symbol
|
362
|
+
|
363
|
+
@zint_symbol[:text] = text
|
364
|
+
end
|
365
|
+
|
366
|
+
# Gets rows of barcode
|
367
|
+
def rows
|
368
|
+
@zint_symbol[:rows]
|
369
|
+
end
|
370
|
+
|
371
|
+
# Gets width of barcode
|
372
|
+
def width
|
373
|
+
@zint_symbol[:width]
|
374
|
+
end
|
375
|
+
|
376
|
+
# Gets primary message data for more complex symbols, with a terminating NUL, of barcode
|
377
|
+
def primary
|
378
|
+
@zint_symbol[:primary]
|
379
|
+
end
|
380
|
+
|
381
|
+
# Sets primary message of barcode
|
382
|
+
#
|
383
|
+
# @param primary [String] Primary of barcode
|
384
|
+
def primary=(primary)
|
385
|
+
reset_symbol
|
386
|
+
|
387
|
+
@zint_symbol[:primary] = primary
|
388
|
+
end
|
389
|
+
|
390
|
+
# Gets encoded_data of barcode
|
391
|
+
def encoded_data
|
392
|
+
@zint_symbol[:encoded_data]
|
393
|
+
end
|
394
|
+
|
395
|
+
# Sets encoded_data of barcode
|
396
|
+
#
|
397
|
+
# @param encoded_data [String] Encoded data of barcode
|
398
|
+
def encoded_data=(encoded_data)
|
399
|
+
reset_symbol
|
400
|
+
|
401
|
+
@zint_symbol[:encoded_data] = encoded_data
|
402
|
+
end
|
403
|
+
|
404
|
+
# Gets row height of barcode
|
405
|
+
def row_height
|
406
|
+
@zint_symbol[:row_height]
|
407
|
+
end
|
408
|
+
|
409
|
+
# Gets error text of barcode
|
410
|
+
def errtxt
|
411
|
+
@zint_symbol[:errtxt]
|
412
|
+
end
|
413
|
+
|
414
|
+
# Gets bitmap width of barcode
|
415
|
+
def bitmap_width
|
416
|
+
@zint_symbol[:bitmap_width]
|
417
|
+
end
|
418
|
+
|
419
|
+
# Gets bitmap height of barcode
|
420
|
+
def bitmap_height
|
421
|
+
@zint_symbol[:bitmap_height]
|
422
|
+
end
|
423
|
+
|
424
|
+
# Gets bitmap byte length of barcode
|
425
|
+
def bitmap_byte_length
|
426
|
+
@zint_symbol[:bitmap_byte_length]
|
427
|
+
end
|
428
|
+
|
429
|
+
# Gets dot size of barcode
|
430
|
+
def dot_size
|
431
|
+
@zint_symbol[:dot_size]
|
432
|
+
end
|
433
|
+
|
434
|
+
# Sets dot size of barcode
|
435
|
+
#
|
436
|
+
# @param dot size [Float] Dot size of barcode
|
437
|
+
def dot_size=(dot_size)
|
438
|
+
reset_symbol
|
439
|
+
|
440
|
+
@zint_symbol[:dot_size] = dot_size
|
441
|
+
end
|
442
|
+
|
443
|
+
# Gets debug level of barcode
|
444
|
+
def debug
|
445
|
+
@zint_symbol[:debug]
|
446
|
+
end
|
447
|
+
|
448
|
+
# Sets debug level of barcode
|
449
|
+
#
|
450
|
+
# @param debug [Integer] Debug level of barcode
|
451
|
+
def debug=(debug)
|
452
|
+
reset_symbol
|
453
|
+
|
454
|
+
@zint_symbol[:debug] = debug
|
455
|
+
end
|
456
|
+
|
457
|
+
# Gets warn level of barcode
|
458
|
+
def warn_level
|
459
|
+
@zint_symbol[:warn_level]
|
460
|
+
end
|
461
|
+
|
462
|
+
# Sets warn level of barcode
|
463
|
+
#
|
464
|
+
# @param warn_level [Integer] Warn level of barcode
|
465
|
+
def warn_level=(warn_level)
|
466
|
+
reset_symbol
|
467
|
+
|
468
|
+
@zint_symbol[:warn_level] = warn_level
|
127
469
|
end
|
128
470
|
|
129
471
|
private
|
130
472
|
|
473
|
+
def reset_symbol
|
474
|
+
call_function(:ZBarcode_Clear, @zint_symbol)
|
475
|
+
end
|
476
|
+
|
131
477
|
def call_function(function_name, *args)
|
132
|
-
error_code =
|
478
|
+
error_code = Native.send(function_name.to_sym, *args)
|
133
479
|
|
134
480
|
if Zint::ERRORS[error_code]
|
135
|
-
|
481
|
+
Native.raise_error(error_code, @zint_symbol[:errtxt])
|
136
482
|
end
|
137
483
|
|
138
484
|
error_code
|
139
485
|
end
|
140
486
|
|
141
487
|
def create_symbol(type)
|
142
|
-
symbol =
|
488
|
+
symbol = Native.ZBarcode_Create
|
143
489
|
symbol[:symbology] = type
|
144
490
|
|
145
491
|
symbol
|
@@ -0,0 +1,8 @@
|
|
1
|
+
module Zint
|
2
|
+
ZINT_VERSION = ENV["ZINT_VERSION"] || "2.10.0"
|
3
|
+
# ZINT_SOURCE_URI = "file://#{File.join(File.expand_path("../../../", __FILE__))}/ports/archives/zint-#{ZINT_VERSION}-src.tar.gz"
|
4
|
+
ZINT_SOURCE_URI = "https://downloads.sourceforge.net/zint/zint-#{ZINT_VERSION}-src.tar.gz"
|
5
|
+
ZINT_SOURCE_SHA1 = "e4a8a5ccbc9e1901e4b592ccc80e17184f2ff5e8"
|
6
|
+
|
7
|
+
MINI_PORTILE_VERSION = "~> 2.1"
|
8
|
+
end
|