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
and suppress errors in lib and backend tests (pretty sure they're
nearly all false positives apart from maybe 2 non-initializations
in "gif.c" (`pOut` buffer) and "raster.c" (`rotated_pixbuf`)
github: install de_DE.UTF-8 locale in ubuntu-debug also
to suppress warnings about `errtxtf` operand number "%<n>$" args;
enable some further warnings
test suite: enable -Wpedantic and fix/suppress any warnings
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
encodation;
use code set E for padding as well, saves codeword, props Bue
Jensen (BWIPP PR #279);
add padding after all segments and limit loops to length to make
NS compression work better;
all the above temporary fixes until Bue Jensen's merge request
with the BWIPP PR #279 algorithm
GUI: expand linux "xcb" platform hack for >= Qt 5.1
encodation in certain cases (and no pessimizations found so far),
props lyngklip (BWIPP);
fix extended char latching when exactly 3 extended chars at end;
count code set C (not digits) in loop deciding when to
shift/latch to extended for better estimate
AZTEC: return warning if ECC < 5% (due to bit-stuffing when version
given); return error if > 22 layers (Zint 26) for Reader
Initialisation symbol requested for better error message
AZTEC/HANXIN/QRCODE: consolidate different ECC data size tables
into one indexed by ECC
DBAR_EXP: check for reduced length <= 77 up front for better error
message
HANXIN: use `malloc()` rather than `z_alloca()` for large binary
array
QRCODE: `ecc_level` now 0-based (not 1-based)
MICROQR: consolidate different version end routines into one
`microqr_end()` and use new `microqr_data` table to simplify code
MICROPDF417: use table for max codewords per column
library: centralize all error messages using new `errtxt()`,
`errtxtf()`, `errtxt_adj()` funcs that protect `symbol->errtxt`
from overflow, & try to make error messages more consistent
thru-out, adding more feedback info to many, & use positional
args "%n$" in prep for l10n (maybe);
`is_sane/is_sane_lookup()` -> `not_sane/not_sane_lookup()`,
returning 1-based position (zero on failure) instead of bool;
`long` ints -> plain `int` (except those dealing with `ftell()`,
`fread()` etc) as depend on int being 32-bits already
GUI: in "grpDATF.ui" use "PlainText" rather than "RichText" for
tracker ratio examples as height of text messing up sometimes
manual: clarify Codablock-F length maximum & add examples
docs: README: pandoc 3.5, Ubuntu 24.04
CMake: use "-Wpedantic" for Clang only as GNU complains about
`errtxtf()` positional args "%n$"
Adapted from OkapiBarcode, with stricter interpretation (only pad
if "+4" totally absent), props Daniel Gredler
gs1: update to latest gs1-syntax-dictionary (linter mm -> mi)
bwipp: update to latest
GRIDMATRIX, HANXIN, MAXICODE, MICROPDF417, PDF417, QRCODE, RMQR, ULTRA
RMQR: fix ECI encoding (wrong bit length for indicator)
MICROQR: check versions M1 and M2 for allowed characters so as to give
better error messages
DOTCODE: some small optimizations
common.c: add is_chr(), segs_length(), segs_cpy()
CODEONE/CODE128/DOTCODE/GRIDMATRIX/HANXIN/MAXICODE/QRCODE/ULTRA: add
namespace prefixes to static funcs/data
includes: use Z_ prefix, unuse double underscore prefixes (guard defines)
manual.txt: compress some tables using double/treble column sets
UTF-16LE, GBK, separate GB18030, UTF-32BE, UTF-32LE
add examples to tests for DATAMATRIX, HANXIN, QRCODE
HANXIN: Remove alternating filler in function information;
GB 18030 now ECI 32 (previously used ECI 29);
fix gate-posts on codeword limits
use new ZXing-C++ HanXin detector (diagnostics2 branch) for tests
check against ISO/IEC 20830:2021 (no substantive changes)
backend_tcl: update ECIs; NOTE: changed names "unicode" -> "utf-16be",
"euc-cn" -> "gb2312"
GRIDMATRIX/HANXIN/QRCODE/RMQR: warn if auto-conversion (i.e. no ECI given)
occurs to resp. specialized char sets (GB 2312/GB 18030/Shift JIS)
DMATAMATRIX: fix look ahead BASE256 use of dm_text_sp_cnt() on switching;
simplify dm_add_tail()
GUI: check suffixes on save so don't go into error state;
use native path for Save As clipboard message
CODE128: use gs1_check_digit() for NVE18 and EAN14
GRIDMATRIX, MAXICODE, MICROPDF417, PDF417, QRCODE, ULTRA
DOTCODE: use pre-calculated generator poly coeffs in Reed-Solomon for
performance improvement
PDF417/MICROPDF417: use common routine pdf417_initial()
GUI: code lines <= 118, shorthand widget_obj(),
shorten calling upcean_addon_gap(), upcean_guard_descent()
various backend: var name debug -> debug_print
RMQR: update to new draft ISO/IEC JTC1/SC31N000 (Draft 2019-6-24);
allow for righthand vertical timing pattern in populate_grid()
ULTRA: update max size and min cols based on BWIPP 2021-07-14 update
backend_tcl/zint_tcl.dsp: use /MD instead of /MT for tcl lib compat;
change include/lib path to more standard one
manual.txt: highlight that rMQR is still in development
GUI: use cross-platform smaller font func instead of explicit values for notes