(ticket #347), props Frank Yellin and Rustam Abdullaev;
also improve performance of `FAST_MODE`
DATAMATRIX: assert max size on `edges` will fit in unsigned short;
use MASK for DMRE/SQUARE `option_3` setting
PDF417: assert max size on `edges` will fit in unsigned short
GUI: fix setting AZTEC size and ECC combos if not previously set
manual: fix not mentioning AZTEC re `FAST_MODE`;
gs1 mode footnote: mention 3940's length; pandoc -> 3.9
test suite: DOTCODE: account for new BWIPP input length guard
"Unbracketed AI" (caret) options for specifying GS1 input
(ticket #350, props Mario Verbruggen)
DBAR_EXP_CC/DBAR_EXPSTK_CC: fix separator over finder patterns
when linear part is greater than 4 codeblocks
general: left-over raw_text -> content_segs in comments;
update & expand some GS1 General Specs refs;
some minor code fiddling
test suite: suppress some additional ZINT_SANITIZEM false positives
(& add new ZINT_TESTUTIL_SANITIZEM_INIT helpers)
available via "--fast" (input_mode |= FAST_MODE) (ticket #347);
add new option "--azfull" (option_3 = ZINT_AZTEC_FULL) to only
consider Full symbols (not Compact ones) on automatic sizing
GUI: adjust Aztec tab to show feedback by selecting combos and
shorten message to just actual ECC;
grpCodabar min width
library: debug source input dump 200 -> 2000
common: some code fiddling (c -> ch, flg -> flag)
backend_tcl: add "-azfull" option & make capitalization of
help more consistent
general: remove some trailing whitespace
manual: make Aztec ECCs more precise, i.e. ">=" rather than ">"
(similarly in GUI)
CLI: code fiddling c -> opt
just 2 digits
cmake: set `rpath` of CLI frontend on macOS install (ticket #346,
props Hagen Röwer)
cmake: make uninstall: update to use `-E rm` if available, warn
rather than fatal error if fail to remove, note if leaving
"/zint" directory unremoved (i.e. "lib/cmake/zint")
library: de-duplicate errtxt no.
test suite: update BWIPP to latest
test suite: test_bwipp: enable & fix dotcode random test
test suite: fuzz: gen_corpora fuzz_data 1st -> 2nd
switching mode or any FNC1 after manual C mode selected and no
other non-C data - found by fuzz test "fuzz_data" - 2nd ever
trophy!
qr.h: fix typo (props https://github.com/crate-ci/typos)
(was dividing instead of multiplying doh);
make "--scalexdimdp" units check error messages better;
add more "--test" tests & have `validate_units()` etc take
`errbuf` arg to make them more test-friendly
GUI: `copy_to_clipboard()` unshadow `data` -> `fdata`
test suite: make `utf8_to_wide()` same as "backend/output.c" & fix
return vals;
add `QZint::save_to_memfile()` test
`BARCODE_MEMORY_FILE` and use in GUI for pasting to clipboard
instead of creating temporary file
CLI: allow fully case-insensitive "tiff" as filetype (saved as
".tif"), processing up to 4-letter extensions and hopefully
making filetype handling more expected;
simplify `validate_float()` (unneeded 2nd fractional max test);
add some more internal "--test" tests
BWIPP: update to latest (change from ctx to global VM) - zint tests
work as-is, no change
`BARCODE_CONTENT_SEGS`, `z_rt_XXX()` -> `z_ct_XXX()`;
move `encoded_data`/`row_height` to end of `zint_symbol`
(see ZXing-C++ issue #883)
manual: update re `content_segs`; `my_symbol` -> `symbol`;
improve MicroPDF417 description
GUI: fix chkGS1Strict enabling on startup regression from previous
commit; update CLI equivalence with --gs1strict & adjust for
implied --gs1; add tests
CMake: allow lpng/zlib and gs1encoders to take paths (for Windows)
win32/README: simplify locating lpng/zlib/gs1encoders for cmake
using above; add note on 64-bit build
manual/man page: adjust for various above changes
`DATA_MODE`); allows ZXing-C++ to be built in writer-only mode
without needing "libzueci"
library: in GS1 mode check that ECI if any is ASCII compatible
general: some code fiddling, `mode` -> `modes`
those in "backend/common.h", which are prefixed by `z_` - makes
symbol clashes more unlikely when zint is statically linked
(ticket #337, props Ulrich Becker)
DOTCODE: fix padding allowance (10 -> 52 - probable max 35) to
cover cases with large no. of columns requested and little data,
to prevent `codeword_array` buffer overflow
AZTEC/CODEONE: some code fiddling
general_field: prefix defines with `GF_`, shorten static funcs
prefix `general_field_` -> `gf_`
in `ESCAPE_MODE`
composite: empty primary now returns `ZINT_ERROR_INVALID_DATA`
rather than `ZINT_ERROR_INVALID_OPTION`;
check that primary NUL-terminated
library: check that `outfile` NUL-terminated
gs1: preface all routines and linters with "gs1_"
general: some code fiddling
`BARCODE_EAN_5ADDON`, `BARCODE_EAN13`, `BARCODE_EAN8_CC` and
`BARCODE_EAN13_CC` as replacements for `BARCODE_EANX`,
`BARCODE_EANX_CHK` and `BARCODE_EANX_CC` and use in CLI/GUI
(`BARCODE_EANX` etc. marked as legacy)
- For EAN/UPC accept space as alternative add-on separator to '+',
and accept GTIN-13 format with & without 2-digit or 5-digit
add-on (no separator)
- Buffer length of member `errtxt` in `zint_symbol` extended 100
-> 160 (will be sufficient for eventual translation and
gs1-syntax-dictionary errors hopefully)
- UPC-E: warn if first digit of 7 (or 8 if check digit given) not
'0' or '1'
- manual: update for new EAN symbologies and mention EANX now
legacy but still supported
and place any add-on data directly after (no separator)
EAN-8 + add-on: warn as non-compliant (see ZXing-C++ issue #883,
https://github.com/zxing-cpp/zxing-cpp/issues/883)
test suite: BWIPP: use new EAN-8 + add-on option "permitaddon";
fix dumps of RAW_TEXT `memcmp()`s fails; various re-formatting
bwipp_dump.ps: update to latest BWIPP
followed by digit (ignore 2nd byte of FNC4 when categorizing
Code C characters)
- New `ZBarcode_Cap()` flag `ZINT_CAP_BINDABLE`, differentiated
from `ZINT_CAP_STACKABLE`, and new Qt Backend method
`isBindable()`
- CLI: fix `separator` check to use new `ZINT_CAP_BINDABLE` instead
of `ZINT_CAP_STACKABLE`
- ZBarcode_Cap: add missing symbologies to `ZINT_CAP_BINDABLE` (was
`ZINT_CAP_STACKABLE`)
- DOTCODE: pad rows if given number of columns instead of failing
if rows below min (5)
- DBAR/composites: ensure stacked symbologies and composites are
not stacked (set `symbol->rows` to 0)
- test suite: move `test_perf` routines into single test
"test_perf";
new "test_random" (based on "test_bwipp") to test various
symbologies with random binary - discovered CODABLOCKF bug;
expand "test_bwipp"
manual: Feeback: mention AZTEC -1 meaning min & MICROPDF417:
doc new `ZINT_CAP_BINDABLE`
general: various code fiddlings and re-formattings
fields `raw_segs` and `raw_seg_count` instead of `text`, and to
do so for all symbologies, using new common funcs `rt_cpy()` etc.
MICROPDF417: return ECC percentage in top byte of `option_1`
DBAR_EXP_STK: return `option_2`/`option_3` feedback
CLI: change warning text "ignoring" -> "**IGNORED**"
GUI: show feedback for DBAR_EXP_STK, MICROPDF417, UPNQR
ctest: fix recent inability to run tests via "ctest" on Windows
(MSVC) by using cmake 3.22 feature `ENVIRONMENT_MODIFICATION`
manual: document feedback and RAW_TEXT in new "Feedback" section;
rephrase some symbology descriptions
test suite: new general-use arg "-a"; add `func_name` to context;
new "test_bwipp" test for testing BWIPP against ZXing-C++
("Feedback options"), and for composites use in GUI to give
feedback on CC type automatically selected
- composite: warn if CC type upped from requested
- set_height: give up on giving minimal height in warning for now
as too messy to calc and just report too small
DOTCODE/GRIDMATRIX/HANXIN/MICROPDF417/MICROQR/PDF417/QRCODE/
RMQR/ULTRA: set `option_1/2/3` to values used in encodation
("Feedback options"), and add new access methods
`encodedOption1()` etc. to Qt Backend, and use in GUI to provide
better feedback on "Automatic" selections
- AZTEC: give more precise warnings in low ECC situations, and
indicate via `option_1` by setting to -1 (min 3 words), 0
(<5% + 3 words) (`ecc_ratio`)
- set_height: fix non-compliance false positives by using epsilon
in checks (prompted by CODABLOCKF non-compliant warning for
zint-generated compliant height - floating point `rows` mult !=
`zero_count` div; one test regression for CODE93);
better warning messages on non-compliant heights (min/max)
- manual/man page: fix DATAMATRIX Sizes tables "28 12x26" ->
"27 12x26"
- GUI: AZTEC/CODEONE: add Zint versions to comboboxes
- DOTCODE: improve error messages re size too small/large
- ULTRA: better ZINT_TEST codeword dump (ZINT_DEBUG_TEST)
- general: various tabs -> spaces; prettify main .rc files;
trailing spaces; small amount of code fiddling (CODE16K)
`ZINT_WARN_HRT_RAW_TEXT` if set when outputting HRT (ZXing-C++
issue 883, props Axel Waggershauser)
README: Pharmacode -> One-Track, Pharmacode 2-trace -> Two-Track
`BARCODE_PLAIN_HRT` option for `output_options` - for use
primarily by ZXing-C++ but may be generally useful;
centralize setting of HRT using new common `hrt_cpy_nochk()` etc.
routines to ensure `text_length` always set
PLESSEY: add show default check characters option
CODE32: ignore `option_2` (check digit options)
PZN: ignore `option_2` (check digit options) except when indicates
PZN7 only
DPD: exclude DEL from ident tag also
out_maybe_mkdir: fix `utf8_to_wide()` return (Windows only)
general: replace use of `strcpy()` etc. (except for test suite)
with `memcpy()`, `hrt_()` etc. in lib & `cpy_str()` etc. in CLI
& `cpy_bytearray_left()` in backend_qt
clang-tidy: update README reflecting above
backend_tcl: use sizeof(primary) to check length; tabs -> spaces
general: various code fiddling
docs: pandoc 3.6.2 -> 3.6.3
processing on last segment
DXFILMEDGE: error message XXX-XX -> NNN-NN, fix comments
README.bsd: update to latest Free/Open/Net, "Run" section
test suite: CODABLOCKF: extra tests from Okapi
test suite: support DATAMATRIX ^PROG, ZXing++ AZRUNE
manual/man page: CODEONE: fix WxH -> HxW and Version C width
manual: backtick literals
change # 147 -> 127 to use up barcode # holes;
use "common.h" funcs `str_to_uppercase()` -> `to_upper()`,
`count_char_occurrences()` -> `chr_cnt()`;
prefix defines with `DX_` and funcs with `dx_`;
`ZINT_DEBUG_PRINT` -> `symbol->debug & ZINT_DEBUG_PRINT`;
bools to ints; use `posn()` to check for slash (returns length);
restrict line lengths to 118; suppress some clang-tidy warnings;
normalize some error messages;
check for single "A" if any (`sscanf()`);
use compliant height default; some whitespace formatting;
Tcl: add DXFILMEDGE support
docs: document DXFILMEDGE; update to latest pandoc
test suite: ZXingCPP: DXFILMEDGE support
around 20% slower than current but much better;
numerous other fiddlings
reedsol: reverse result in `rs_*encode*()` routines & adjust
clients appropriately (may replace later with something faster)
test suite: cater for MAXICODE SCM better; add assert & dataset
totals
BWIPP: update to latest
gen_gs1_lint.php: restrict line length to 118 for func calls
BWIPP minimal encoding by Bue Jensen (BWIPP PR #278);
new extra escape `\^@` to turn off manual switching
zint.h: increase `symbol->text` size 200 -> 256 (means that for
the moment can no longer generate ZINT_WARN_HRT_TRUNCATED)
GS1_128/GS1_128_CC: warn if READER_INIT option used
CODE16K: move `c16k_set_a/b/c()` routines from "code128.c" and
rename `c16k_` (also `C128_` defines to `C16K_`)
common: make `itoc()` simple macro which adds '0' (>= 10 now ':',
';' etc) and adjust `expand()` accordingly for slight speed-up
general: EXTRA_ESCAPE_MODE now implies ESCAPE_MODE
tests: update BWIPP to latest and enable CODE128AB ("suppressc");
new test args '-n' (exclude func) and '-m' (match func)