mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
GUI: settings: fix embed_vector_font default 1 -> 0
manual: expand size/alpha details in Section "5.4 Buffering Symbols in Memory (raster)" (cf ticket #291); add BSD info (TODO: NetBSD); variable -> member (struct zint_symbol) frontend: fix missing static on `validate_structapp()` test suite: update to latest BWIPP (PDF417 needed adjusting) Changelog: trim some more uninteresting changes
This commit is contained in:
parent
bbad6d3d83
commit
d05373e7fc
12
ChangeLog
12
ChangeLog
@ -15,7 +15,7 @@ Version 2.12.0.9 (dev) not released yet
|
|||||||
- Text height (font size) for SMALL_TEXT vector output reduced
|
- Text height (font size) for SMALL_TEXT vector output reduced
|
||||||
- For Windows, filenames are now assumed to be UTF-8 encoded. Affects `outfile`
|
- For Windows, filenames are now assumed to be UTF-8 encoded. Affects `outfile`
|
||||||
in `zint_symbol` and all API filename arguments
|
in `zint_symbol` and all API filename arguments
|
||||||
- Never used `fontsize` field removed from `zint_symbol`
|
- Never-used `fontsize` field removed from `zint_symbol`
|
||||||
- Buffer length of field `text` (HRT) in `zint_symbol` extended 128 -> 160
|
- Buffer length of field `text` (HRT) in `zint_symbol` extended 128 -> 160
|
||||||
(client buffers may need checking/extending)
|
(client buffers may need checking/extending)
|
||||||
- Font of text of SVG vector output now "OCRB, monospace" (EAN/UPC) or
|
- Font of text of SVG vector output now "OCRB, monospace" (EAN/UPC) or
|
||||||
@ -51,7 +51,6 @@ Changes
|
|||||||
`EANUPC_GUARD_WHITESPACE`, CLI `--guardwhitespace`) (ticket #287)
|
`EANUPC_GUARD_WHITESPACE`, CLI `--guardwhitespace`) (ticket #287)
|
||||||
- EAN-2/EAN-5: HRT now at top instead of at bottom for standalones, following
|
- EAN-2/EAN-5: HRT now at top instead of at bottom for standalones, following
|
||||||
BWIPP
|
BWIPP
|
||||||
- Move "font.h" -> "raster_font.h"
|
|
||||||
- EPS/SVG: use new `out_putsf()` func to output floats, avoiding trailing zeroes
|
- EPS/SVG: use new `out_putsf()` func to output floats, avoiding trailing zeroes
|
||||||
& locale dependency
|
& locale dependency
|
||||||
- EPS: simplify "TR" formula
|
- EPS: simplify "TR" formula
|
||||||
@ -64,19 +63,16 @@ Changes
|
|||||||
- GUI: use "OCRB" font for EAN/UPC and "Arimo" for all others (was "Helvetica"
|
- GUI: use "OCRB" font for EAN/UPC and "Arimo" for all others (was "Helvetica"
|
||||||
for both); add preview background colour option (default light grey) so as
|
for both); add preview background colour option (default light grey) so as
|
||||||
whitespace will show up in contrast (access via preview context menu)
|
whitespace will show up in contrast (access via preview context menu)
|
||||||
- EMF: prefix funcs with `emf_`; simplify string `halign` handling
|
|
||||||
- large: rename `large_int` -> `large_uint`
|
|
||||||
- CODE128/common: move `c128_hrt_cpy_iso8859_1()` to `hrt_cpy_iso8859_1()` and
|
- CODE128/common: move `c128_hrt_cpy_iso8859_1()` to `hrt_cpy_iso8859_1()` and
|
||||||
add `ZINT_WARN_HRT_TRUNCATED` warning (for future use)
|
add `ZINT_WARN_HRT_TRUNCATED` warning (for future use)
|
||||||
- Various symbologies: replace `printf()` with `fputs()` (symbol->debug)
|
|
||||||
- QRCODE: better assert(), removing a NOLINT (2 left)
|
- QRCODE: better assert(), removing a NOLINT (2 left)
|
||||||
- CLI: add some more barcode synonyms for DBAR
|
- CLI: add some more barcode synonyms for DBAR
|
||||||
- common: various fiddlings
|
|
||||||
- CMake: don't include png.c unless ZINT_USE_PNG (avoids clang warning)
|
- CMake: don't include png.c unless ZINT_USE_PNG (avoids clang warning)
|
||||||
- vector: reduce SMALL_TEXT font height 6 -> 5 to be more like raster;
|
- vector: reduce SMALL_TEXT font height 6 -> 5 to be more like raster;
|
||||||
reduce antialiasing allowance for `textoffset`;
|
reduce antialiasing allowance for `textoffset`;
|
||||||
adjust text to baseline using values for Arimo rather than percentage
|
adjust text to baseline using values for Arimo rather than percentage
|
||||||
- raster/vector: rename `text_height` -> `font_height`
|
- manual: expand size/alpha details in Section "5.4 Buffering Symbols in Memory
|
||||||
|
(raster)" (cf ticket #291); add BSD info
|
||||||
|
|
||||||
Bugs
|
Bugs
|
||||||
----
|
----
|
||||||
@ -86,7 +82,7 @@ Bugs
|
|||||||
LD_LIBRARY_PATH and PATH (ticket #279, props Alexey Dokuchaev)
|
LD_LIBRARY_PATH and PATH (ticket #279, props Alexey Dokuchaev)
|
||||||
- GUI: fg/bgcolor text edit: fix right-click context menu not working properly
|
- GUI: fg/bgcolor text edit: fix right-click context menu not working properly
|
||||||
by checking for it on FocusOut
|
by checking for it on FocusOut
|
||||||
- GUI: fix fg/gbcolor icon background not being reset on zap
|
- GUI: fix fg/bgcolor icon background not being reset on zap
|
||||||
- EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC
|
- EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC
|
||||||
- EMF/EPS/SVG: fix addon bars placement/length when text hidden
|
- EMF/EPS/SVG: fix addon bars placement/length when text hidden
|
||||||
- For Windows, assume `outfile` & API filename args are in UTF-8,
|
- For Windows, assume `outfile` & API filename args are in UTF-8,
|
||||||
|
71
README.bsd
Normal file
71
README.bsd
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
% Tested on FreeBSD 13.2-RELEASE (with X11 + GNOME installed) and OpenBSD 7.3 (with X11)
|
||||||
|
|
||||||
|
1. Prerequisites for building zint
|
||||||
|
==================================
|
||||||
|
|
||||||
|
Prerequisites are git, cmake, make, gcc (or clang) and, for PNG support, libpng, e.g. FreeBSD
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg install git cmake gmake gcc graphics/png
|
||||||
|
exit
|
||||||
|
|
||||||
|
or OpenBSD (make and clang should already be installed):
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg_add git cmake png
|
||||||
|
exit
|
||||||
|
|
||||||
|
Then clone the latest source
|
||||||
|
|
||||||
|
git clone https://git.code.sf.net/p/zint/code zint
|
||||||
|
cd zint
|
||||||
|
|
||||||
|
|
||||||
|
2. Prerequisites for building zint-qt
|
||||||
|
=====================================
|
||||||
|
|
||||||
|
On FreeBSD:
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg install qt5-core qt5-uitools qt5-buildtools qt5-qmake qt5-svg
|
||||||
|
exit
|
||||||
|
|
||||||
|
On OpenBSD:
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg_add qtbase qttools qtsvg
|
||||||
|
exit
|
||||||
|
|
||||||
|
|
||||||
|
3. Build
|
||||||
|
========
|
||||||
|
|
||||||
|
The rest is standard CMake (allowing for absence of sudo)
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
su
|
||||||
|
make install
|
||||||
|
exit
|
||||||
|
|
||||||
|
except that on OpenBSD you need to use
|
||||||
|
|
||||||
|
cmake -DCMAKE_PREFIX_PATH=/usr/local/lib/qt5/cmake ..
|
||||||
|
|
||||||
|
instead.
|
||||||
|
|
||||||
|
|
||||||
|
3. CMake options
|
||||||
|
================
|
||||||
|
|
||||||
|
See "README.linux". Note for running the test suite on FreeBSD, if using the default csh, to set LD_LIBRARY_PATH use:
|
||||||
|
|
||||||
|
setenv LD_LIBRARY_PATH ${PWD}/backend
|
||||||
|
|
||||||
|
Also, for Qt5 test on FreeBSD, need:
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg install qt5-testlib
|
||||||
|
exit
|
@ -43,7 +43,7 @@
|
|||||||
# elif defined(__GNUC__)
|
# elif defined(__GNUC__)
|
||||||
# pragma GCC diagnostic ignored "-Wformat" /* Unfortunately doesn't seem to be way to only avoid non-ISO warnings */
|
# pragma GCC diagnostic ignored "-Wformat" /* Unfortunately doesn't seem to be way to only avoid non-ISO warnings */
|
||||||
# endif
|
# endif
|
||||||
#elif defined(_MSC_VER) || defined(__APPLE__) || __WORDSIZE == 32
|
#elif defined(_MSC_VER) || defined(__APPLE__) || defined(__OpenBSD__) || __WORDSIZE == 32
|
||||||
# define LX_FMT "ll"
|
# define LX_FMT "ll"
|
||||||
#else
|
#else
|
||||||
# define LX_FMT "l"
|
# define LX_FMT "l"
|
||||||
|
@ -2778,7 +2778,8 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int
|
|||||||
}
|
}
|
||||||
} else if (symbology == BARCODE_PDF417 || symbology == BARCODE_PDF417COMP || symbology == BARCODE_HIBC_PDF
|
} else if (symbology == BARCODE_PDF417 || symbology == BARCODE_PDF417COMP || symbology == BARCODE_HIBC_PDF
|
||||||
|| symbology == BARCODE_MICROPDF417 || symbology == BARCODE_HIBC_MICPDF) {
|
|| symbology == BARCODE_MICROPDF417 || symbology == BARCODE_HIBC_MICPDF) {
|
||||||
for (r = 0; r < symbol->rows; r++) bwipp_row_height[r] = 1; /* Change from 3 */
|
const int row_height = symbology == BARCODE_MICROPDF417 || symbology == BARCODE_HIBC_MICPDF ? 2 : 3;
|
||||||
|
for (r = 0; r < symbol->rows; r++) bwipp_row_height[r] = row_height;
|
||||||
if (option_1 >= 0) {
|
if (option_1 >= 0) {
|
||||||
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%seclevel=%d",
|
sprintf(bwipp_opts_buf + strlen(bwipp_opts_buf), "%seclevel=%d",
|
||||||
strlen(bwipp_opts_buf) ? " " : "", option_1);
|
strlen(bwipp_opts_buf) ? " " : "", option_1);
|
||||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 324 KiB After Width: | Height: | Size: 332 KiB |
102
docs/manual.pmd
102
docs/manual.pmd
@ -169,7 +169,28 @@ the `"frontend"` sub-directory. To run the test type
|
|||||||
This should create numerous files in the sub-directory `"frontend/test_sh_out"`
|
This should create numerous files in the sub-directory `"frontend/test_sh_out"`
|
||||||
showing the many modes of operation which are available from Zint.
|
showing the many modes of operation which are available from Zint.
|
||||||
|
|
||||||
## 2.2 Microsoft Windows
|
## 2.2 BSD
|
||||||
|
|
||||||
|
The latest Zint CLI, `libzint` and GUI can be installed from the `zint` package on
|
||||||
|
FreeBSD:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su
|
||||||
|
pkg install zint
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
and on OpenBSD (where the GUI is in a separate `zint-gui` package):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
su
|
||||||
|
pkg_add zint zint-gui
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
To build from source see `"README.bsd"` in the project root directory.
|
||||||
|
|
||||||
|
## 2.3 Microsoft Windows
|
||||||
|
|
||||||
For Microsoft Windows, Zint is distributed as a binary executable. Simply
|
For Microsoft Windows, Zint is distributed as a binary executable. Simply
|
||||||
download the ZIP file, then right-click on the ZIP file and `"Extract All"`. A
|
download the ZIP file, then right-click on the ZIP file and `"Extract All"`. A
|
||||||
@ -186,7 +207,7 @@ application digitally signed by Microsoft.
|
|||||||
|
|
||||||
To build Zint on Windows from source, see `"win32/README"`.
|
To build Zint on Windows from source, see `"win32/README"`.
|
||||||
|
|
||||||
## 2.3 Apple macOS
|
## 2.4 Apple macOS
|
||||||
|
|
||||||
The latest Zint CLI and `libzint` can be installed using Homebrew.[^1] To
|
The latest Zint CLI and `libzint` can be installed using Homebrew.[^1] To
|
||||||
install Homebrew input the following line into the macOS terminal
|
install Homebrew input the following line into the macOS terminal
|
||||||
@ -208,7 +229,7 @@ root directory.
|
|||||||
|
|
||||||
[^1]: See the Homebrew website [https://brew.sh](https://brew.sh).
|
[^1]: See the Homebrew website [https://brew.sh](https://brew.sh).
|
||||||
|
|
||||||
## 2.4 Zint Tcl Backend
|
## 2.5 Zint Tcl Backend
|
||||||
|
|
||||||
The Tcl backend in the `"backend_tcl"` sub-directory may be built using the
|
The Tcl backend in the `"backend_tcl"` sub-directory may be built using the
|
||||||
provided TEA (Tcl Extension Architecture) build on Linux, Windows, macOS and
|
provided TEA (Tcl Extension Architecture) build on Linux, Windows, macOS and
|
||||||
@ -230,7 +251,7 @@ or on Windows
|
|||||||
qtZint.exe
|
qtZint.exe
|
||||||
```
|
```
|
||||||
|
|
||||||
See the note in section [2.2 Microsoft Windows] about Microsoft Defender
|
See the note in section [2.3 Microsoft Windows] about Microsoft Defender
|
||||||
SmartScreen.
|
SmartScreen.
|
||||||
|
|
||||||
Below is a brief guide to Zint Barcode Studio.
|
Below is a brief guide to Zint Barcode Studio.
|
||||||
@ -302,9 +323,9 @@ For a number of symbologies extra options are available to fine-tune the format,
|
|||||||
appearance and content of the symbol generated. These are given in a second tab.
|
appearance and content of the symbol generated. These are given in a second tab.
|
||||||
|
|
||||||
Here the method is shown for adjusting the size or error correction level of an
|
Here the method is shown for adjusting the size or error correction level of an
|
||||||
Aztec Code symbol (see [6.6.8 Aztec Code (ISO 24778)]), selecting how its data is
|
Aztec Code symbol (see [6.6.8 Aztec Code (ISO 24778)]), selecting how its data
|
||||||
to be treated (see [4.10 Input Modes]), and setting it as part of a Structured
|
is to be treated (see [4.10 Input Modes]), and setting it as part of a
|
||||||
Append sequence of symbols (see [4.16 Structured Append]).
|
Structured Append sequence of symbols (see [4.16 Structured Append]).
|
||||||
|
|
||||||
## 3.5 Appearance Tab
|
## 3.5 Appearance Tab
|
||||||
|
|
||||||
@ -1628,7 +1649,7 @@ int main(int argc, char **argv)
|
|||||||
```
|
```
|
||||||
|
|
||||||
Note that when using the API, the input data is assumed to be 8-bit binary
|
Note that when using the API, the input data is assumed to be 8-bit binary
|
||||||
unless the `input_mode` variable in the `zint_symbol` structure is set - see
|
unless the `input_mode` member of the `zint_symbol` structure is set - see
|
||||||
[5.10 Setting the Input Mode] for details.
|
[5.10 Setting the Input Mode] for details.
|
||||||
|
|
||||||
## 5.3 Encoding and Printing Functions in Depth
|
## 5.3 Encoding and Printing Functions in Depth
|
||||||
@ -1668,7 +1689,7 @@ are assumed to be UTF-8 encoded.
|
|||||||
|
|
||||||
If printing more than one barcode, the `zint_symbol` structure may be re-used by
|
If printing more than one barcode, the `zint_symbol` structure may be re-used by
|
||||||
calling the `ZBarcode_Clear()` function after each barcode to free any output
|
calling the `ZBarcode_Clear()` function after each barcode to free any output
|
||||||
buffers allocated. The `zint_symbol` input variables must be reset.
|
buffers allocated. The `zint_symbol` input members must be reset.
|
||||||
|
|
||||||
## 5.4 Buffering Symbols in Memory (raster)
|
## 5.4 Buffering Symbols in Memory (raster)
|
||||||
|
|
||||||
@ -1686,26 +1707,43 @@ int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol,
|
|||||||
const char *filename, int rotate_angle);
|
const char *filename, int rotate_angle);
|
||||||
```
|
```
|
||||||
|
|
||||||
The arguments here are the same as above. The difference is that instead of
|
The arguments here are the same as above, and rotation and colour options can be
|
||||||
saving the image to a file it is placed in an unsigned character array. The
|
used with the buffer functions in the same way as when saving to a file. The
|
||||||
`bitmap` pointer is set to the first memory location in the array and the values
|
difference is that instead of saving the image to a file it is placed in a byte
|
||||||
`barcode_width` and `barcode_height` indicate the size of the resulting image
|
(`unsigned char`) array pointed to by the `bitmap` member, with `bitmap_width`
|
||||||
in pixels. Rotation and colour options can be used with the buffer functions in
|
set to the number of columns and `bitmap_height` set to the number of rows.
|
||||||
the same way as when saving to a file. The pixel data can be extracted from the
|
(Note that the `bitmap_byte_length` member is not relevant here, being set only
|
||||||
array by the method shown in the example below where `render_pixel()` is assumed
|
on outputting to a Windows BMP file.)
|
||||||
to be a function for drawing a pixel on the screen implemented by the external
|
|
||||||
application:
|
The RGB channels are split into 3 consecutive red, green, blue bytes per pixel,
|
||||||
|
and there are `bitmap_width` pixels per row and `bitmap_height` rows, so the
|
||||||
|
total size of the `bitmap` array is `3 * bitmap_width * bitmap_height`.
|
||||||
|
|
||||||
|
If the background or foreground are RGBA then the byte array `alphamap` will
|
||||||
|
also be set, with a single alpha value for each pixel. Its total size will be
|
||||||
|
`bitmap_width * bitmap_height`.
|
||||||
|
|
||||||
|
The pixel data can be extracted from the array (or arrays) by the method shown
|
||||||
|
in the example below, where `render_rgb()` and `render_rgba()` are assumed to be
|
||||||
|
functions for drawing an RGB and RGBA pixel on the screen implemented by the
|
||||||
|
client application:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
int row, col, i = 0;
|
int row, col, i = 0, j = 0;
|
||||||
int red, blue, green;
|
int red, blue, green, alpha;
|
||||||
|
|
||||||
for (row = 0; row < my_symbol->bitmap_height; row++) {
|
for (row = 0; row < my_symbol->bitmap_height; row++) {
|
||||||
for (col = 0; col < my_symbol->bitmap_width; col++) {
|
for (col = 0; col < my_symbol->bitmap_width; col++) {
|
||||||
red = (int) my_symbol->bitmap[i];
|
red = (int) my_symbol->bitmap[i];
|
||||||
green = (int) my_symbol->bitmap[i + 1];
|
green = (int) my_symbol->bitmap[i + 1];
|
||||||
blue = (int) my_symbol->bitmap[i + 2];
|
blue = (int) my_symbol->bitmap[i + 2];
|
||||||
render_pixel(row, col, red, green, blue);
|
if (my_symbol->alphamap) {
|
||||||
|
alpha = (int) my_symbol->alphamap[j];
|
||||||
|
render_rgba(row, col, red, green, blue, alpha);
|
||||||
|
j++;
|
||||||
|
} else {
|
||||||
|
render_rgb(row, col, red, green, blue);
|
||||||
|
}
|
||||||
i += 3;
|
i += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1716,8 +1754,8 @@ intermediate form using the output option `OUT_BUFFER_INTERMEDIATE`. Here each
|
|||||||
byte is an ASCII value: `'1'` for foreground colour and `'0'` for background
|
byte is an ASCII value: `'1'` for foreground colour and `'0'` for background
|
||||||
colour, except for Ultracode, which also uses colour codes: `'W'` for white,
|
colour, except for Ultracode, which also uses colour codes: `'W'` for white,
|
||||||
`'C'` for cyan, `'B'` for blue, `'M'` for magenta, `'R'` for red, `'Y'` for
|
`'C'` for cyan, `'B'` for blue, `'M'` for magenta, `'R'` for red, `'Y'` for
|
||||||
yellow, `'G'` for green, and `'K'` for black. The loop for accessing the data is
|
yellow, `'G'` for green, and `'K'` for black. Alpha values are not reported
|
||||||
then:
|
(`alphamap` will always be `NULL`). The loop for accessing the data is then:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
int row, col, i = 0;
|
int row, col, i = 0;
|
||||||
@ -1789,10 +1827,10 @@ symbols and we don't mind that they only save to `"out.png"`. As with the CLI
|
|||||||
program, of course, these options can be altered. The way this is done is by
|
program, of course, these options can be altered. The way this is done is by
|
||||||
altering the contents of the `zint_symbol` structure between the creation and
|
altering the contents of the `zint_symbol` structure between the creation and
|
||||||
encoding stages. The `zint_symbol` structure consists of the following
|
encoding stages. The `zint_symbol` structure consists of the following
|
||||||
variables:
|
members:
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
Variable Name Type Meaning Default Value
|
Member Name Type Meaning Default Value
|
||||||
-------------------- ---------- --------------------------- -----------------
|
-------------------- ---------- --------------------------- -----------------
|
||||||
`symbology` integer Symbol to use (see [5.8 `BARCODE_CODE128`
|
`symbology` integer Symbol to use (see [5.8 `BARCODE_CODE128`
|
||||||
Specifying a Symbology]).
|
Specifying a Symbology]).
|
||||||
@ -1978,7 +2016,7 @@ background alpha to `"00"` where the values for R, G and B will be ignored:
|
|||||||
## 5.7 Handling Errors
|
## 5.7 Handling Errors
|
||||||
|
|
||||||
If errors occur during encoding a non-zero integer value is passed back to the
|
If errors occur during encoding a non-zero integer value is passed back to the
|
||||||
calling application. In addition the `errtxt` variable is set to a message
|
calling application. In addition the `errtxt` member is set to a message
|
||||||
detailing the nature of the error. The errors generated by Zint are:
|
detailing the nature of the error. The errors generated by Zint are:
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@ -2098,9 +2136,9 @@ symbol->symbology = 50;
|
|||||||
|
|
||||||
## 5.9 Adjusting Output Options
|
## 5.9 Adjusting Output Options
|
||||||
|
|
||||||
The `output_options` variable can be used to adjust various aspects of the
|
The `output_options` member can be used to adjust various aspects of the output
|
||||||
output file. To select more than one option from the table below simply `OR`
|
file. To select more than one option from the table below simply `OR` them
|
||||||
them together when adjusting this value:
|
together when adjusting this value:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
my_symbol->output_options |= BARCODE_BIND | READER_INIT;
|
my_symbol->output_options |= BARCODE_BIND | READER_INIT;
|
||||||
@ -2191,7 +2229,7 @@ Value Effect
|
|||||||
characters, extended ASCII characters) are still checked
|
characters, extended ASCII characters) are still checked
|
||||||
for.
|
for.
|
||||||
|
|
||||||
`HEIGHTPERROW_MODE` Interpret the `height` variable as per-row rather than as
|
`HEIGHTPERROW_MODE` Interpret the `height` member as per-row rather than as
|
||||||
overall height.
|
overall height.
|
||||||
|
|
||||||
`FAST_MODE` Use faster if less optimal encodation or other shortcuts if
|
`FAST_MODE` Use faster if less optimal encodation or other shortcuts if
|
||||||
@ -2241,8 +2279,8 @@ as is the validity of GS1 data specified without AIs (e.g. linear data for GS1
|
|||||||
DataBar Omnidirectional/Limited/etc.).
|
DataBar Omnidirectional/Limited/etc.).
|
||||||
|
|
||||||
For `HEIGHTPERROW_MODE`, see `--heightperrow` in section [4.4 Adjusting Height].
|
For `HEIGHTPERROW_MODE`, see `--heightperrow` in section [4.4 Adjusting Height].
|
||||||
The `height` variable should be set to the desired per-row value on input (it
|
The `height` member should be set to the desired per-row value on input (it will
|
||||||
will be set to the overall height on output).
|
be set to the overall height on output).
|
||||||
|
|
||||||
`FAST_MODE` causes a less optimal encodation scheme to be used for Data Matrix,
|
`FAST_MODE` causes a less optimal encodation scheme to be used for Data Matrix,
|
||||||
MicroPDF417 and PDF417. For QR Code and UPNQR, it affects Zint's automatic mask
|
MicroPDF417 and PDF417. For QR Code and UPNQR, it affects Zint's automatic mask
|
||||||
|
@ -13,9 +13,10 @@ July 2023
|
|||||||
- 1.1 Glossary
|
- 1.1 Glossary
|
||||||
- 2. Installing Zint
|
- 2. Installing Zint
|
||||||
- 2.1 Linux
|
- 2.1 Linux
|
||||||
- 2.2 Microsoft Windows
|
- 2.2 BSD
|
||||||
- 2.3 Apple macOS
|
- 2.3 Microsoft Windows
|
||||||
- 2.4 Zint Tcl Backend
|
- 2.4 Apple macOS
|
||||||
|
- 2.5 Zint Tcl Backend
|
||||||
- 3. Using Zint Barcode Studio
|
- 3. Using Zint Barcode Studio
|
||||||
- 3.1 Main Window and Data Tab
|
- 3.1 Main Window and Data Tab
|
||||||
- 3.2 GS1 Composite Groupbox
|
- 3.2 GS1 Composite Groupbox
|
||||||
@ -348,7 +349,24 @@ the "frontend" sub-directory. To run the test type
|
|||||||
This should create numerous files in the sub-directory "frontend/test_sh_out"
|
This should create numerous files in the sub-directory "frontend/test_sh_out"
|
||||||
showing the many modes of operation which are available from Zint.
|
showing the many modes of operation which are available from Zint.
|
||||||
|
|
||||||
2.2 Microsoft Windows
|
2.2 BSD
|
||||||
|
|
||||||
|
The latest Zint CLI, libzint and GUI can be installed from the zint package on
|
||||||
|
FreeBSD:
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg install zint
|
||||||
|
exit
|
||||||
|
|
||||||
|
and on OpenBSD (where the GUI is in a separate zint-gui package):
|
||||||
|
|
||||||
|
su
|
||||||
|
pkg_add zint zint-gui
|
||||||
|
exit
|
||||||
|
|
||||||
|
To build from source see "README.bsd" in the project root directory.
|
||||||
|
|
||||||
|
2.3 Microsoft Windows
|
||||||
|
|
||||||
For Microsoft Windows, Zint is distributed as a binary executable. Simply
|
For Microsoft Windows, Zint is distributed as a binary executable. Simply
|
||||||
download the ZIP file, then right-click on the ZIP file and "Extract All". A new
|
download the ZIP file, then right-click on the ZIP file and "Extract All". A new
|
||||||
@ -365,7 +383,7 @@ digitally signed by Microsoft.
|
|||||||
|
|
||||||
To build Zint on Windows from source, see "win32/README".
|
To build Zint on Windows from source, see "win32/README".
|
||||||
|
|
||||||
2.3 Apple macOS
|
2.4 Apple macOS
|
||||||
|
|
||||||
The latest Zint CLI and libzint can be installed using Homebrew.[1] To install
|
The latest Zint CLI and libzint can be installed using Homebrew.[1] To install
|
||||||
Homebrew input the following line into the macOS terminal
|
Homebrew input the following line into the macOS terminal
|
||||||
@ -381,7 +399,7 @@ library
|
|||||||
To build from source (and install the GUI) see "README.macos" in the project
|
To build from source (and install the GUI) see "README.macos" in the project
|
||||||
root directory.
|
root directory.
|
||||||
|
|
||||||
2.4 Zint Tcl Backend
|
2.5 Zint Tcl Backend
|
||||||
|
|
||||||
The Tcl backend in the "backend_tcl" sub-directory may be built using the
|
The Tcl backend in the "backend_tcl" sub-directory may be built using the
|
||||||
provided TEA (Tcl Extension Architecture) build on Linux, Windows, macOS and
|
provided TEA (Tcl Extension Architecture) build on Linux, Windows, macOS and
|
||||||
@ -398,7 +416,7 @@ or on Windows
|
|||||||
|
|
||||||
qtZint.exe
|
qtZint.exe
|
||||||
|
|
||||||
See the note in section 2.2 Microsoft Windows about Microsoft Defender
|
See the note in section 2.3 Microsoft Windows about Microsoft Defender
|
||||||
SmartScreen.
|
SmartScreen.
|
||||||
|
|
||||||
Below is a brief guide to Zint Barcode Studio.
|
Below is a brief guide to Zint Barcode Studio.
|
||||||
@ -1667,7 +1685,7 @@ function as shown in the next example:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Note that when using the API, the input data is assumed to be 8-bit binary
|
Note that when using the API, the input data is assumed to be 8-bit binary
|
||||||
unless the input_mode variable in the zint_symbol structure is set - see 5.10
|
unless the input_mode member of the zint_symbol structure is set - see 5.10
|
||||||
Setting the Input Mode for details.
|
Setting the Input Mode for details.
|
||||||
|
|
||||||
5.3 Encoding and Printing Functions in Depth
|
5.3 Encoding and Printing Functions in Depth
|
||||||
@ -1705,7 +1723,7 @@ be UTF-8 encoded.
|
|||||||
|
|
||||||
If printing more than one barcode, the zint_symbol structure may be re-used by
|
If printing more than one barcode, the zint_symbol structure may be re-used by
|
||||||
calling the ZBarcode_Clear() function after each barcode to free any output
|
calling the ZBarcode_Clear() function after each barcode to free any output
|
||||||
buffers allocated. The zint_symbol input variables must be reset.
|
buffers allocated. The zint_symbol input members must be reset.
|
||||||
|
|
||||||
5.4 Buffering Symbols in Memory (raster)
|
5.4 Buffering Symbols in Memory (raster)
|
||||||
|
|
||||||
@ -1721,25 +1739,42 @@ allow you to do this:
|
|||||||
int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol,
|
int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol,
|
||||||
const char *filename, int rotate_angle);
|
const char *filename, int rotate_angle);
|
||||||
|
|
||||||
The arguments here are the same as above. The difference is that instead of
|
The arguments here are the same as above, and rotation and colour options can be
|
||||||
saving the image to a file it is placed in an unsigned character array. The
|
used with the buffer functions in the same way as when saving to a file. The
|
||||||
bitmap pointer is set to the first memory location in the array and the values
|
difference is that instead of saving the image to a file it is placed in a byte
|
||||||
barcode_width and barcode_height indicate the size of the resulting image in
|
(unsigned char) array pointed to by the bitmap member, with bitmap_width set to
|
||||||
pixels. Rotation and colour options can be used with the buffer functions in the
|
the number of columns and bitmap_height set to the number of rows. (Note that
|
||||||
same way as when saving to a file. The pixel data can be extracted from the
|
the bitmap_byte_length member is not relevant here, being set only on outputting
|
||||||
array by the method shown in the example below where render_pixel() is assumed
|
to a Windows BMP file.)
|
||||||
to be a function for drawing a pixel on the screen implemented by the external
|
|
||||||
application:
|
|
||||||
|
|
||||||
int row, col, i = 0;
|
The RGB channels are split into 3 consecutive red, green, blue bytes per pixel,
|
||||||
int red, blue, green;
|
and there are bitmap_width pixels per row and bitmap_height rows, so the total
|
||||||
|
size of the bitmap array is 3 * bitmap_width * bitmap_height.
|
||||||
|
|
||||||
|
If the background or foreground are RGBA then the byte array alphamap will also
|
||||||
|
be set, with a single alpha value for each pixel. Its total size will be
|
||||||
|
bitmap_width * bitmap_height.
|
||||||
|
|
||||||
|
The pixel data can be extracted from the array (or arrays) by the method shown
|
||||||
|
in the example below, where render_rgb() and render_rgba() are assumed to be
|
||||||
|
functions for drawing an RGB and RGBA pixel on the screen implemented by the
|
||||||
|
client application:
|
||||||
|
|
||||||
|
int row, col, i = 0, j = 0;
|
||||||
|
int red, blue, green, alpha;
|
||||||
|
|
||||||
for (row = 0; row < my_symbol->bitmap_height; row++) {
|
for (row = 0; row < my_symbol->bitmap_height; row++) {
|
||||||
for (col = 0; col < my_symbol->bitmap_width; col++) {
|
for (col = 0; col < my_symbol->bitmap_width; col++) {
|
||||||
red = (int) my_symbol->bitmap[i];
|
red = (int) my_symbol->bitmap[i];
|
||||||
green = (int) my_symbol->bitmap[i + 1];
|
green = (int) my_symbol->bitmap[i + 1];
|
||||||
blue = (int) my_symbol->bitmap[i + 2];
|
blue = (int) my_symbol->bitmap[i + 2];
|
||||||
render_pixel(row, col, red, green, blue);
|
if (my_symbol->alphamap) {
|
||||||
|
alpha = (int) my_symbol->alphamap[j];
|
||||||
|
render_rgba(row, col, red, green, blue, alpha);
|
||||||
|
j++;
|
||||||
|
} else {
|
||||||
|
render_rgb(row, col, red, green, blue);
|
||||||
|
}
|
||||||
i += 3;
|
i += 3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1749,7 +1784,8 @@ intermediate form using the output option OUT_BUFFER_INTERMEDIATE. Here each
|
|||||||
byte is an ASCII value: '1' for foreground colour and '0' for background colour,
|
byte is an ASCII value: '1' for foreground colour and '0' for background colour,
|
||||||
except for Ultracode, which also uses colour codes: 'W' for white, 'C' for cyan,
|
except for Ultracode, which also uses colour codes: 'W' for white, 'C' for cyan,
|
||||||
'B' for blue, 'M' for magenta, 'R' for red, 'Y' for yellow, 'G' for green, and
|
'B' for blue, 'M' for magenta, 'R' for red, 'Y' for yellow, 'G' for green, and
|
||||||
'K' for black. The loop for accessing the data is then:
|
'K' for black. Alpha values are not reported (alphamap will always be NULL). The
|
||||||
|
loop for accessing the data is then:
|
||||||
|
|
||||||
int row, col, i = 0;
|
int row, col, i = 0;
|
||||||
|
|
||||||
@ -1814,10 +1850,10 @@ So far our application is not very useful unless we plan to only make Code 128
|
|||||||
symbols and we don’t mind that they only save to "out.png". As with the CLI
|
symbols and we don’t mind that they only save to "out.png". As with the CLI
|
||||||
program, of course, these options can be altered. The way this is done is by
|
program, of course, these options can be altered. The way this is done is by
|
||||||
altering the contents of the zint_symbol structure between the creation and
|
altering the contents of the zint_symbol structure between the creation and
|
||||||
encoding stages. The zint_symbol structure consists of the following variables:
|
encoding stages. The zint_symbol structure consists of the following members:
|
||||||
|
|
||||||
---------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------
|
||||||
Variable Name Type Meaning Default Value
|
Member Name Type Meaning Default Value
|
||||||
--------------------- ------------ ---------------------------- -----------------
|
--------------------- ------------ ---------------------------- -----------------
|
||||||
symbology integer Symbol to use (see 5.8 BARCODE_CODE128
|
symbology integer Symbol to use (see 5.8 BARCODE_CODE128
|
||||||
Specifying a Symbology).
|
Specifying a Symbology).
|
||||||
@ -1988,8 +2024,8 @@ background alpha to "00" where the values for R, G and B will be ignored:
|
|||||||
5.7 Handling Errors
|
5.7 Handling Errors
|
||||||
|
|
||||||
If errors occur during encoding a non-zero integer value is passed back to the
|
If errors occur during encoding a non-zero integer value is passed back to the
|
||||||
calling application. In addition the errtxt variable is set to a message
|
calling application. In addition the errtxt member is set to a message detailing
|
||||||
detailing the nature of the error. The errors generated by Zint are:
|
the nature of the error. The errors generated by Zint are:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Return Value Meaning
|
Return Value Meaning
|
||||||
@ -2103,7 +2139,7 @@ means the same as
|
|||||||
|
|
||||||
5.9 Adjusting Output Options
|
5.9 Adjusting Output Options
|
||||||
|
|
||||||
The output_options variable can be used to adjust various aspects of the output
|
The output_options member can be used to adjust various aspects of the output
|
||||||
file. To select more than one option from the table below simply OR them
|
file. To select more than one option from the table below simply OR them
|
||||||
together when adjusting this value:
|
together when adjusting this value:
|
||||||
|
|
||||||
@ -2185,7 +2221,7 @@ property. Valid values are shown in the table below.
|
|||||||
(e.g. control characters, extended ASCII characters) are
|
(e.g. control characters, extended ASCII characters) are
|
||||||
still checked for.
|
still checked for.
|
||||||
|
|
||||||
HEIGHTPERROW_MODE Interpret the height variable as per-row rather than as
|
HEIGHTPERROW_MODE Interpret the height member as per-row rather than as
|
||||||
overall height.
|
overall height.
|
||||||
|
|
||||||
FAST_MODE Use faster if less optimal encodation or other shortcuts if
|
FAST_MODE Use faster if less optimal encodation or other shortcuts if
|
||||||
@ -2228,7 +2264,7 @@ as is the validity of GS1 data specified without AIs (e.g. linear data for GS1
|
|||||||
DataBar Omnidirectional/Limited/etc.).
|
DataBar Omnidirectional/Limited/etc.).
|
||||||
|
|
||||||
For HEIGHTPERROW_MODE, see --heightperrow in section 4.4 Adjusting Height. The
|
For HEIGHTPERROW_MODE, see --heightperrow in section 4.4 Adjusting Height. The
|
||||||
height variable should be set to the desired per-row value on input (it will be
|
height member should be set to the desired per-row value on input (it will be
|
||||||
set to the overall height on output).
|
set to the overall height on output).
|
||||||
|
|
||||||
FAST_MODE causes a less optimal encodation scheme to be used for Data Matrix,
|
FAST_MODE causes a less optimal encodation scheme to be used for Data Matrix,
|
||||||
|
@ -777,7 +777,7 @@ static int validate_scalexdimdp(const char *optarg, float *p_x_dim_mm, float *p_
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Parse and validate Structured Append argument "index,count[,ID]" to "--structapp" */
|
/* Parse and validate Structured Append argument "index,count[,ID]" to "--structapp" */
|
||||||
int validate_structapp(const char *optarg, struct zint_structapp *structapp) {
|
static int validate_structapp(const char *optarg, struct zint_structapp *structapp) {
|
||||||
char index[10] = {0}, count[10] = {0};
|
char index[10] = {0}, count[10] = {0};
|
||||||
const char *comma = strchr(optarg, ',');
|
const char *comma = strchr(optarg, ',');
|
||||||
const char *comma2;
|
const char *comma2;
|
||||||
@ -1083,7 +1083,8 @@ static int batch_process(struct zint_symbol *symbol, const char *filename, const
|
|||||||
|
|
||||||
if (file != stdin) {
|
if (file != stdin) {
|
||||||
if (fclose(file) != 0) {
|
if (fclose(file) != 0) {
|
||||||
fprintf(stderr, "Warning 196: Failure on closing input file '%s' (%d: %s)\n", filename, errno, strerror(errno));
|
fprintf(stderr, "Warning 196: Failure on closing input file '%s' (%d: %s)\n", filename, errno,
|
||||||
|
strerror(errno));
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
warn_number = ZINT_WARN_INVALID_OPTION; /* TODO: maybe new warning e.g. ZINT_WARN_INVALID_INPUT? */
|
warn_number = ZINT_WARN_INVALID_OPTION; /* TODO: maybe new warning e.g. ZINT_WARN_INVALID_INPUT? */
|
||||||
}
|
}
|
||||||
|
@ -4514,7 +4514,7 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology)
|
|||||||
QSL("studio/bc/%1/appearance/font_setting").arg(name), 0).toInt());
|
QSL("studio/bc/%1/appearance/font_setting").arg(name), 0).toInt());
|
||||||
spnTextGap->setValue(settings.value(QSL("studio/bc/%1/appearance/text_gap").arg(name), 0.0).toFloat());
|
spnTextGap->setValue(settings.value(QSL("studio/bc/%1/appearance/text_gap").arg(name), 0.0).toFloat());
|
||||||
chkEmbedVectorFont->setChecked(settings.value(
|
chkEmbedVectorFont->setChecked(settings.value(
|
||||||
QSL("studio/bc/%1/appearance/chk_embed_vector_font").arg(name), 1).toInt() ? true : false);
|
QSL("studio/bc/%1/appearance/chk_embed_vector_font").arg(name), 0).toInt() ? true : false);
|
||||||
chkHRTShow->setChecked(settings.value(
|
chkHRTShow->setChecked(settings.value(
|
||||||
QSL("studio/bc/%1/appearance/chk_hrt_show").arg(name), 1).toInt() ? true : false);
|
QSL("studio/bc/%1/appearance/chk_hrt_show").arg(name), 1).toInt() ? true : false);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user