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)
add specify rows option (option_3) (#204);
warn if cols increased from specified (back-incompatible);
move table definitions from "pdf417.h" to new "pdf417_tabs.h" and
make INTERNAL_DATA and share with composite.c (saves ~10K);
prefix routines and tables with "pdf_";
some small performance improvements through if/elses, pdf_textprocess()
& pdf_numbprocess() loop simplifications
MICROQR: fix debug access crash on printing non-NUL-terminating binary
DATAMATRIX: fix missing ++ from "[tp]" at C40/TEXT EOD processing of GS1
(though probably never reached); use "[tp++]" throughout
Add const to static tables missing it and also to some variables
Change "debug" -> "debug_print" throughout
- use fixed-length string tables (mostly) instead of (char *) pointer ones
(saves ~40K)
- re-use C128Table for CODABLOCKF and CODE16K
(required removal of Stop character and extra CODE16K-only entry)
- use pointer to destination and copy (memcpy/strcpy(), bin_append_posn())
instead of concatenating (strcat()) (mostly)
- replace last remaining bin_append()s with bin_append_posn();
bin_append() removed
- add length arg to toupper() and expand() (avoids strlen())
- change is_sane() to use table-based flags (avoids an iteration)
- rename lookup() to is_sane_lookup() and change to check and return posns
and use in pointer to destination loops (avoids strcat()s)
- remove special case PHARMA in expand() (dealt with in pharma())
- make #define SILVER/CALCIUM/TECHNETIUM/KRSET etc static strings
- replace strchr() -> posn()
- CODE128: populate destination once in checksum loop; re-use and export
some more routines (c128_set_a/b/c(), c128_put_in_set()) for sharing;
prefix defines (SHIFTA -> C128_SHIFTA etc) and existing exported routines
- use factor XOR toggle trick in checksum calcs (avoids branch)
- raster.c: fill out single 1-pixel row and copy using new draw_bar_line(),
copy_bar_line() routines; similarly in buffer_plot compare previous line &
copy if same (same technique as used to improve non-half-integer scaling,
significant performance increase, (c) codemonkey82);
also done for PNG (BMP/GIF/PCX/TIFF not done)
- raster/vector/output.c: shorten "output_" prefix -> "out_";
sync vector to other raster changes to try to keep source files similar
- 2of5.c: prefix "c25_"
JAPANPOST: return error if input data truncated (backward incompatible)
DAFT: max chars 50 -> 100
common.c: istwodigit() -> is_twodigit()
common.c/emf.c/output.c: use some further stripf()s (MSVC6 float variations)
library.c: new check_output_args() helper
zint.h: add BARCODE_LAST marker and use in library.c
QRCODE: remove a NOLINT (requires clang-tidy-13), one remaining
CMake: separate no-optimize from ZINT_DEBUG into new ZINT_NOOPT option
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
static get_zint_version() method, use QStringLiteral (QSL shorthand),
use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
add saveAs shortcut, add main menu, context menus and actions, add help,
reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
lessen triggering of update_preview(), shorten names of getters/setters,
simplify/shorten some update_preview() logic in switch,
CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
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
Patch from Michael <virtual_worlds@gmx.de>
Full text: As usual I have modified only minor things to remove warnigs when compiled as C++ code, have added some const-specifiers where possible to help the compiler create more efficient code and added some static-specifiers to make functions invisible to other modules.