`EANUPC_GUARD_WHITESPACE`, CLI `--guardwhitespace`) (ticket #287)
EAN-2/EAN-5: HRT now at top instead of at bottom for standalones,
following BWIPP
CLI: batch mode: don't close input if stdin
EAN/UPC: fix excess 1X to right of add-ons
Composites: fix excess whitespace; fix quiet zone calcs to allow
for linear shifting
CLI: use own (Wine) version of `CommandLineToArgvW()` to avoid
loading "shell32.dll"
Move "font.h" -> "raster_font.h"
EPS/SVG: use new `out_putsf()` func to output floats, avoiding
trailing zeroes & locale dependency
EPS: simplify "TR" formula
SVG: change font from "Helvetica, sans serif" to "OCR-B, monospace";
use single "<path>" instead of multiple "<rect>"s to draw boxes
(reduces file size)
Add `EMBED_VECTOR_FONT` to `output_options` (CLI `--embedfont`) to
enable embedding of font in vector output - currently only for
SVG output of EAN/UPC
GUI: use "OCR-B" font for EAN/UPC and "Arimo" for all others (was
"Helvetica" for both); paint background of screen preview light
grey so as contrasts with whitespace and quiet zones
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 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)
CLI: add some more barcode synonyms for DBAR
common: various fiddlings
CMake: don't include png.c unless ZINT_USE_PNG (avoids clang
warning)
replace double-slash comments with old-skool slash asterisk ones;
define uint16_t etc for Windows ourselves and remove ms_stdint.h &
stdint_msvc.h as no longer used;
(backend (excepting test suite) now C89 compatible)
LICENSE: move from backend to root and move COPYING to frontend, with
copies in frontend_qt & backend_qt, so in where it applies;
add LICENSE section from manual to root README
- make Sequence Format textbox bigger (on own line)
- suppress question mark in Windows dialogs
AUSPOST: more standard error messages
backend: add & use z_isdigit/upper/lower() macros
docs: 20-bit Unicode -> 21-bit Unicode
QRCODE: use stricter interpretation of ZINT_FULL_MULTIBYTE, excluding
certain trailing bytes
libzint: fix some confusing error messages introduced by segment stuff
general: new escape chars \U, \d and \o
backend_qt: fudge rendering of border rectangles due to scaling/translation
rounding errors TODO: better fudge
GUI: foreground/background colours -> text boxes and icon buttons, add swap
button, independently movable picker (NULL parent), preview colour changes,
preview Data Window changes, add clear data (del) buttons, add zap button
and Factory Reset menu option, various other fixes
libzint: remove STATIC_UNLESS_ZINT_TEST, use wrappers
CMake: add find package QtSvg, remove QtXml
manual: split symbology and general specs and sort, move DAFT to 4-state,
UPC/EAN -> EAN/UPC, DataBar -> GS1 DataBar always, expand MAILMARK info,
various other fiddlings
man page: options or -> |, expand MSI Plessey check digit options
README.linux: add packages info
license: add SPDX-License-Identifier to touched files
- 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
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.