Commit graph

395 commits

Author SHA1 Message Date
gitlost
578d3e4df9 iso4217: add 396 (XAD) ISO 4217 AMENDMENT NUMBER 179 2025-05-19 14:35:40 +01:00
gitlost
fcb3f9b422 GS1PARENS_MODE: allow parentheses in AI data if backslashed and
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
2025-04-24 18:40:50 +01:00
gitlost
51ebca182c Re commit [789e04] and [86363f] allow prefixes without check digit 2025-04-21 18:45:23 +01:00
gitlost
3592edd64e - Add new symbologies BARCODE_EAN8, BARCODE_EAN_2ADDON,
`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
2025-04-16 22:26:43 +01:00
gitlost
8758ebd420 test suite: testcommon.c: NOLINT clang-tidy-20.1.2 false positive 2025-04-13 17:45:19 +01:00
gitlost
0b7103e21e EAN-8: specify in check digit error
test suite: deal with ZXing-C++ changes re DBAR and EAN/UPC with
  add-ons
2025-04-13 17:25:13 +01:00
gitlost
26805338f8 RAW_TEXT: expand UPC-A, UPC-E to EAN-13, and EAN-8 if has add-on,
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
2025-04-11 13:02:59 +01:00
gitlost
182c84fa4d MAILMARK_2D: fix postcode validation: no limited alphanumerics,
spaced-out DPS "outward"-only allowed, all-blank DPS allowed
  (ticket #334, props Milton Neal)
2025-04-09 00:10:51 +01:00
gitlost
86363ff0f7 ITF-14/EAN-14/NVE-18: allow check digit to be given and then
verified;
  allow and ignore prefixes "01", "[01]" and "(01)" (or "00" etc
  if NVE-18) if check digit given, following commit [789e04]
  (ticket #333)
2025-04-07 17:25:44 +01:00
gitlost
d886ecf5c7 test suite: test_upcean: fix test_hrt not actually testing
`BARCODE_RAW_TEXT`
2025-04-07 13:32:56 +01:00
Axel Waggershauser
b423e260b9 dxfilmedge: make raw_segs consistent with zxing-cpp
Details see here:
https://github.com/zxing-cpp/zxing-cpp/issues/883#issuecomment-2776593838
2025-04-05 01:26:35 +01:00
gitlost
789e049945 DBAR_OMN/DBAR_LTD/DBAR_STK/DBAR_OMNSTK: prefix raw_segs with
implicit "01" prefix (see ZXing-C++ issue 883);
  allow and ignore prefixes "01", "[01]" and "(01)" if check digit
  given (ticket #333, props Axel Waggershauser);
CODE128/PDF417: suppress some clang-tidy-20.1 warnings
general: add `ZUCP()`, `ZCUCP()`, `ZCCP()` macro shorthands to
  cast away char pointer signedness
2025-04-05 00:19:13 +01:00
gitlost
a74871a7de - CODABLOCKF: fix misencodation of extended ASCII 0xB0-0xB9 when
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
2025-04-03 16:08:15 +01:00
gitlost
2370fbfbb7 test_common: rt_cpy etc.: zeroize symbol 2025-03-28 11:19:40 +00:00
gitlost
a6c225447e general: change BARCODE_RAW_TEXT to write to new zint_symbol
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++
2025-03-28 10:02:19 +00:00
gitlost
d1bf02e156 gs1: csumalpha: improve warning, report both checksum chars
(ticket #332, props Harald Oehlmann)
2025-03-18 18:47:04 +00:00
gitlost
de8a62ca2a UPU_S10: fix Service Indicator warning re "H" (ticket #331, props
Milton Neal), which is valid;
  quote invalid Service Indicator, Country Code in warnings
2025-03-18 03:03:27 +00:00
gitlost
e12c5ed3ba DBAR_STK/DBAR_OMNSTK/DBAR_EXPSTK (including composites): output HRT
if `BARCODE_RAW_TEXT`
manual: default to always making html
2025-03-10 01:22:52 +00:00
gitlost
64fd01c73f - composite/MAXICODE: set option_1/2 to values used in encodation
("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
2025-03-09 02:08:41 +00:00
gitlost
0d1f878661 - set_height: fix min warning message - need to multiply
`min_row_height` by `zero_count`; use new precision modifier
- errtxtf: add processing of precision modifier for "%f"/"%g"
- test_qzint: fix "BARCODE_QRCODE no text" `encodedOption1()`
  default 0 -> -1
2025-03-07 22:13:08 +00:00
gitlost
d222add96d - AZTEC/CHANNEL/CODABLOCKF/CODE16K/CODE49/CODEONE/DATAMATRIX/
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)
2025-03-07 16:51:36 +00:00
gitlost
d0465375bb Add convenience API funcs ZBarcode_UTF8_To_ECI() and
`ZBarcode_Dest_Len_ECI()`, primarily for ZXingC++ but also useful
  in general
2025-03-02 20:50:55 +00:00
gitlost
99f94b1027 AZTEC: fix GS1 mode with Structured Append (wasn't outputting
initial FNC1 (FLG(0))
2025-02-28 18:21:51 +00:00
gitlost
81308f4957 Reinstate BARCODE_RAW_TEXT (note forgot to remove mention of
`ZINT_WARN_HRT_RAW_TEXT` in man page zint.1.pmd last time)
2025-02-25 16:45:28 +00:00
gitlost
e4663e48cf Temporarily disable BARCODE_RAW_TEXT prior to 2.15.0 release, as
it's not stable yet. `text_length` is kept.
2025-02-24 14:11:03 +00:00
gitlost
174bbf06a8 CODE128: ***2.14.0 regression fix***
set C1 start latch lengths to max (was 0) to prevent C1 being
  selected initially - was causing StartC to be omitted, e.g.
  for "12é"
2025-02-23 15:53:47 +00:00
gitlost
bfcc398c35 general: improve some wrong length error messages 2025-02-22 16:17:37 +00:00
gitlost
c499620ff6 upcean: BARCODE_RAW_TEST: need "+" separator for add-ons, else can't
differentiate between EAN-13 and EAN-8 + EAN-5
cli: append "Ital. Pharma" to Code 32 description
dxfilmedge: code fiddle
2025-02-20 22:57:54 +00:00
gitlost
8e7931b147 Rename BARCODE_PLAIN_HRT -> BARCODE_RAW_TEXT and add warning
`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
2025-02-20 02:10:19 +00:00
gitlost
c7cf006e71 general: cmake: add ZINT_SANITIZEM (clang -fsanitize=memory) option
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
2025-02-19 01:15:58 +00:00
gitlost
fef8b083b4 Add text_length (length of text) to zint_symbol, and new
`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
2025-02-15 20:32:55 +00:00
gitlost
ddedd00d2d iso4217: remove 191 (HRK), 694 (SLL), 931 (CUC); add 926 (VED) 2025-02-07 19:12:32 +00:00
gitlost
18453bb5d2 run_zxingcpp_tests.sh: remove defunct best_supported_set (maxicode)
testcommon: comment BUILD_EXAMPLE_DECODER -> ZXING_EXAMPLE_DECODER
2025-02-05 09:16:07 +00:00
gitlost
8bd8802d44 iso4217: remove obsolete ZWL (932)
update_version.php: use `err_exit()`
2025-02-01 18:14:48 +00:00
gitlost
3f7cfd47c7 gs1: update to latest gs1-syntax-dictionary (new lint keyoff1());
in `key()` (& hence `keyoff1()`) check for GS1 Company Prefix
  length >= 4 (same as gs1-syntax-dictionary lints)
manual: update some standard years
2025-01-31 21:20:43 +00:00
gitlost
b377b14360 general: reenable -Wpedantic for gcc by using __extension__ (ZEXT)
to suppress warnings about `errtxtf` operand number "%<n>$" args;
  enable some further warnings
test suite: enable -Wpedantic and fix/suppress any warnings
2025-01-27 11:03:33 +00:00
gitlost
5c08226700 general: split up some source files to lessen ZXing-C++ bloat
when `ZXING_USE_BUNDLED_ZINT` set
2025-01-19 13:44:43 +00:00
gitlost
62c54adb56 DATAMATRIX: fix mis-encodation by only doing special end-of-data
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
2025-01-18 04:20:53 +00:00
gitlost
fef00f8b92 filemem: fix stdout input under MSYS2, mailing list, props Frank
59113804/
  also fix some warnings and suppress "-Wlong-long"
2025-01-15 23:47:40 +00:00
gitlost
c2d79836ba DXFILMEDGE: revert barcode # 127 -> 147 for TEC-IT compatibility 2024-12-23 22:05:33 +00:00
gitlost
fe3907c2cb DXFILMEDGE: various tweaks:
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
2024-12-23 20:52:08 +00:00
Antoine Merino
d13a3aaf1a
Add symbology: DX Film Edge barcode
DX Film Edge barcodes are used 35 mm and APS films
2024-12-19 18:57:18 +01:00
gitlost
041c74fe4d cmake: bump min version 3.5 -> 3.10 to avoid warning with cmake 31.1;
also add min version to all CMakeLists.txt
GUI: add missing accelerator to UPCA/UPCEAN.ui "Guard Whitespace";
  add default value to some "Default" buttons;
  reformat DAFT examples again; add \^@ to special escs hint
2024-11-25 19:13:25 +00:00
gitlost
e94727f07d MAXICODE: add minimal encoding by Bue Jensen (BWIPP PR #279),
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
2024-11-25 09:22:37 +00:00
gitlost
1ae7815d95 zint.h: add version string, mention "manual.html" and website
README: mention "manual.html"
tools/update_version.php: update for "zint.h" version, README year
test suite: fix some clang-tidy-20 warnings
2024-11-18 18:50:26 +00:00
gitlost
86b6a0553b CODE128: optimize for extended ASCII as well using techniques from
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)
2024-11-18 05:08:52 +00:00
gitlost
c9909d3d91 tests: BWIPP: update CODE128/MAXICODE to use "newencoder"
BWIPP: update to latest
AZTEC/CODE16K/DATAMATRIX: harmonize GS1 and READER_INIT error
  messages
2024-11-12 11:25:22 +00:00
gitlost
88155343bf MAXICODE: maintain current set between segments to prevent invalid
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
2024-11-08 16:54:38 +00:00
gitlost
705b7254f2 UPCA/UPCE: descend add-ons to same level as guards following
ISO/IEC 15420:2009 4.3.5 (and BWIPP) and adjust righthand outside
  digit to be 4X/2X instead of 5X/3X (ISO/IEC 15420:2009
  Annex A.2) away from main symbol so as not to touch add-on
  TODO: revisit when standard clarified
2024-11-05 22:50:03 +00:00
gitlost
71b2dc50b7 library: move check for valid UTF-8 after de-escaping
CODE128: fix bad index 0 -> i in `c128_glyph_count()`
2024-10-30 16:37:42 +00:00