https://zingl.github.io/bresenham.c by Zingl Alois rather than
RosettaCode one, better at small scales plus simplifies
licence/attribution issues;
fix licence/attribution issues for `plot_hexline()` also which
is actually based on `plotLine()` in zingl code (ticket #357,
props stefan6419846)
debian/copyright: update with above
BSD-3-clause of the contributions of Andrews & Arnold Ltd. -
many thanks to the Rev Adrian Kennard; corrected "reedsol"
copyright; removed Stefan Schmidt copyright as only difference
from originals is whitespace/formatting
(ticket #357, props stefan6419846)
non-digit in numeral (both caused misencodation);
replace `gm_macro_matrix[]` array with calculation (marginally
slower but saves ~1.4k);
replace `gm_shift_set[]` use with simple compares (performance);
change GM_CHINESE/etc defines to numbers so can index into new
`gm_shift_set[]` array (simplifies mode switching code);
GM_NUMBER -> GM_NUMERAL, modules -> macromodules_per_dim, various
other renamings to hopefully more explanatory names;
various other changes (mostly performance)
test suite: make use of new zxing-cpp diagnostics2 branch Grid
Matrix decoder
manual: slight clarification of `--gs1nocheck`
BWIPP: latest
new routines `mirror_start()`, `mirror_outfile()` & limit
substitutions on Unix to backslash (Windows remains the same);
restrict "borderwidth", "textgap", "vwhitesp", "whitesp" < 100
CODEONE: fix `ceilf()` -> `C1_MULT_CEIL()` in FAST_MODE encodation
(improves/changes some encodation)
composite: preserve `gs1_verify()` warning using `warn_level` hack;
fix wrong name `zint_dbar_omnstk_set_height()` ->
`zint_dbar_stk_set_height()`;
use new `zint_micropdf_variant()` & `zint_micropdf_expand()`
routines (see below)
MICROPDF417: move variant determination into new shareable routine
`zint_micropdf_variant()` & expansion into `zint_micropdf_expand()`
qzint: add helper methods `setbordertypevalue()`,
`encodedinputmode()`, `encodedoutputoptions()`,
`ecivaluetoeciindex()` and `eciindextoecivalue()`
dbar: for performance pre-calculate `combins()` as array
coverage: add `malloc()`-type failure testing to AZTEC,
CONTENT_SEGS, MEMORY_FILE, raster, Reed-Solomon & vector;
numerous changes to remove unused code and test more branches
common: add `isxdigit()`
general: various code fiddlings
manual: add char names to sequence and batch format char tables;
mention long options can be shortened (& use "--compliantheight"
-> "--compliant");
expand mirror explanation & document substitutions in footnote;
workaround xecjk putting space after double quote when quoting
cjk chars & rejig input mode examples;
workaround html alignment bug in table gs1-enabled symbologies by
adding extra rh dashes to header cols;
add "figure nn: " to txt image tags via sed:
various other small fixes and rephrasings
txt output to semi-restore previous behaviour;
adjust GS1-Enabled table & command line so not > 80 chars;
Fedora now requires tcolorbox install
BWIPP: update to latest
with option "--vers=1" (API `option_2 = 1`);
define minimum height based on AIM USS Telepen
TELEPEN_NUM: support switching to Full ASCII mode with DLE;
max digits 136 -> 138
TELEPEN: support switching to Compressed Numeric Mode with DLE
if AIM-defined Start/Stop enabled
CLI: make args for "--dmb256", "--dmc40", "--scalexdimdp" and
"--scmvv" optional
library: new escape sequences `\L`, `\F`, `\N`, & refactor parsing
to use `escs` table
ZBarcode_Scale_From_XdimDp: allow TXT filetype (so "--dump" test
works)
output: Telepen default quiet zone confirmed as 10X
aztec/dmatrix: fix source line too long
man page: embolden options and emphasize args;
add barcode names to standards; various other fixes
improve P/S vs P/L choice when have ECI;
add ZINT_DEBUG_TEST dump
AUSPOST: allow variable length data input
DATAMATRIX: do `EXTRA_ESCAPE_MODE` processing up front & check have
non-zero length afterwards;
disallow `READER_INIT` and `EXTRA_ESCAPE_MODE`;
general: add new `z_zero_fill()` func & use;
add new `z_extra_escape_position_fnc1()` helper;
in `z_ct_set_seg_extra_escapes_eci` check position FNC1 whether
or not have ECI
library: escape_char_process: note escaped backslash followed by
caret by passes `EXTRA_ESCAPE_MODE` check
test suite: BWIPP: update to latest; support AUSPOST variants;
process `EXTRA_ESCAPE_MODE` escaping up front
CODE128: properly fix not switching before FNC1 in 2nd position
after alpha (commit [7b0767])
PLANET/KIX: adapt POSTNET to cater for both
general: use static strings to save a few bytes (start/stop in
particular); various other code fiddles
postal: move tables into funcs
CODE128: error on unrecognized extra escape sequences instead of
just passing them thru;
fix possible shifting before manual FNC1 in 2nd position
after single alpha (otherwise won't be recognized as AIM)
fix not removing manual FNC1 in 1st/2nd position from content
segs (as implied by symbology identifier)
CLI: warn if both "--dmre" and "--square" given (as "--square"
overwrites "--dmre")
common: new routines `z_isalpha()`, `z_extra_escapes()` and
`z_ct_set_seg_extra_escapes_eci()`
library: new helper `supports_extra_escape_mode()`;
fix some error_number dups
BWIPP: update to latest, and allow for removal of DBAR_LTD_CC RHS
quiet zones & extra row when have add-on in EAN/UPC composites
test suite: fix BWIPP escaping
manual/man/tcl: update for DATAMATRIX manual FNC1 support
Windows: resource scripts: make more consistent (libzint, CLI, GUI)
win32/README: update with MSVC 2026
`options_3`, allowing forcing of Base 256 or C40 mode a la BWIPP
for initial no. of characters specified in `option_1`, with 0
meaning all (CLI "--dmb256=" and "--dmc40=", GUI also (apart
from MAILMARK_2D, which may be added later);
export masks `DM_B256_C40_START_MASK` & `DM_SQUARE_DMRE_MASK` in
"zint.h"
ZBarcode_Encode_File: report filename (possibly truncated) in error
message on failed open
GUI: uniquify some accelerators and add some child widget getter
helpers to "mainwindow.cpp"
backend/DEVELOPER -> backend/README, with some expansion
debian/copyright: a few more fixes
BWIPP/pandoc: update to latest
tests/fuzz: adjust for new DATAMATRIX options
allow for heights smaller than `textoffset` when have add-on
(buffer overflow for raster, outside vector height for vector)
raster: EAN/UPC: make sure don't overwrite add-on stuff when
line-copying guard descenders by limiting copy width
ZBarcode_Encode_Segs: allow for multiple (stacked) rows when
setting absolute minimum height;
state stacked symbols max in error message
DBAR_EXP: check length on encoding method 6 before trying to parse
3-digit currency string with `z_to_int()`
CLI: stop looping over data args when have error;
suppress taint warning by using fixed `malloc()` size for
`arg_opts` instead of `argc`
general: use `vsnprintf()` instead of `vsprintf()` if not C89
ULTRACODE: don't call `ult_generate_codewords()` if `length` 0
from fragment processing (avoids `assert()`)
clang-tidy -> 23 & suppress some warnings
test suite: fuzz: leave Z_FUZZ_DEBUG to compiler, fix comment
general: some minor code-formatting on touched files
README.deb -> README.debian (avoid confusion with actual ".deb")
BWIPP: update to latest
backend/tests/fuzz: update "fuzz.h" to take `option_3` min/max;
update `INPUT_MODE_MASK` & `OUTPUT_OPTIONS_MASK`;
set `height`, `border_width` & `output_options` from input
(removing `Z_FUZZ_SET_OUTPUT_OPTIONS` conditional) and call
`ZBarcode_Encode_and_Print()` instead of `ZBarcode_Encode()`;
support standalone builds of "fuzz_data" & "fuzz_gs1" with
`Z_FUZZ_MAIN_READ_ARGV_1` macro;
update "fuzz_gs1" & "fuzz_gs1.dict" to better test caret/raw
modes;
gen_corpora: add `output_options`, `height` & `border_width` &
find (3rd) from fuzz_data of BIND_TOP | BIND_BOX bug
template, props Dmitry Smirnov (ticket #147, props John Crisp);
TODO: enable building with the GS1 Syntax Engine;
this involved auditing copyrights which prompted the next item
re "tif.c" and will prompt the next next item "pdf417.c"
tif.c: replaced LZW compression with tree-based one due to
"tif_lzw.h"'s original BSD-TAHOE license which has the equivalent
of the "advertising clause", new implementation (which is much
faster anyway) props Harald Kuhr and Bob Montgomery
pdf417.c: TODO: Replace all code adapted from "pdf417.frm" as it
was released under GPL v2.0 or later
pdf417.h: replace unnecessary "pdf417.frm" references with ISO/IEC
standard as 1st step re above, some expanded comments
general: Codablock-F -> Codablock F (i.e. lose hyphen)
cmake: frontend/frontend_qt: go back to only setting RPATH on macOS
as not Debian compatible and it seems it's not a good idea on
Linux anyway; TODO: check BSD + other Unixes
CLI/GUI: make "--verbose" option official and document
tools/gen_eci_sb_h.php/gen_eci_mb_h.php: add SPDX Unicode-3.0;
update haible.de/bruno tarball info - "GB18030.TXT" no longer in
"jdk-1.4.2/" so mention "libiconv-1.11/" version instead (same)
general: add various SPDXs and normalize some Copyrights
reedsol.c: malloced `logt`/`alog` tables int -> short (slight
performance improvement)
aztec.c: add copyrights, some code fiddling
BWIPP: update to latest
(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)