From df64a0f2370778b92d7cbc8b9f9d5599e9d72d98 Mon Sep 17 00:00:00 2001 From: gitlost Date: Wed, 18 Mar 2026 15:08:32 +0000 Subject: [PATCH] debian: updated using https://salsa.debian.org/debian/zint as 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 --- ChangeLog | 18 +- README | 4 +- README.deb | 58 +++ README.linux | 3 +- backend/DEVELOPER | 10 +- backend/aztec.c | 34 +- backend/big5.h | 1 + backend/codablock.c | 6 +- backend/common.c | 1 + backend/composite.c | 3 +- backend/dmatrix.c | 4 +- backend/eci_sb.h | 3 +- backend/gb18030.h | 3 +- backend/gb2312.h | 1 + backend/gbk.h | 1 + backend/gridmtx.c | 3 +- backend/gs1.c | 2 +- backend/hanxin.c | 3 +- backend/ksx1001.h | 1 + backend/library.c | 2 +- backend/pcx.c | 3 +- backend/pdf417.c | 25 +- backend/pdf417_tabs.h | 37 +- backend/qr.c | 1 + backend/reedsol.c | 18 +- backend/reedsol.h | 6 +- backend/sjis.h | 1 + backend/tests/test_gb18030.c | 4 +- backend/tests/test_gs1.c | 2 +- backend/tests/test_gs1se.c | 2 +- backend/tests/test_pdf417.c | 68 ++-- backend/tests/test_perf.c | 236 ++++++++--- backend/tests/test_tif.c | 4 +- backend/tests/testcommon.c | 2 +- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 157128 -> 157340 bytes backend/tests/tools/gen_test_tab.php | 4 +- backend/tif.c | 161 +++++++- backend/tif_lzw.h | 382 ------------------ backend/tools/gen_eci_mb_h.php | 7 +- backend/tools/gen_eci_sb_h.php | 5 +- backend/zint.h | 4 +- debian/changelog | 34 +- debian/compat | 1 - debian/control | 135 +++++-- debian/copyright | 480 +++++++++++++++++++++-- debian/libzint-dev.install | 4 + debian/libzint2.16.install | 1 + debian/not-installed | 1 + debian/rules | 11 +- debian/zint-devel.install | 2 - debian/zint-qt-devel.install | 2 - debian/zint-qt.install | 4 +- debian/zint.install | 2 +- docs/Makefile | 19 +- docs/README | 5 +- docs/lua-crossrefs/lua-crossrefs.lua | 4 +- docs/manual.html | 52 ++- docs/manual.pmd | 39 +- docs/manual.txt | 53 ++- docs/zint-qt.1 | 50 +++ docs/zint-qt.1.pmd | 55 +++ docs/zint.1 | 9 +- docs/zint.1.pmd | 12 +- frontend/CMakeLists.txt | 6 +- frontend/main.c | 16 +- frontend/test.sh | 8 +- frontend_qt/CMakeLists.txt | 9 +- frontend_qt/mainwindow.cpp | 8 +- frontend_qt/res/LICENSE_feathericons | 2 + frontend_qt/res/LICENSE_lucide | 2 + 70 files changed, 1404 insertions(+), 755 deletions(-) create mode 100644 README.deb delete mode 100644 backend/tif_lzw.h delete mode 100644 debian/compat create mode 100644 debian/libzint-dev.install create mode 100644 debian/libzint2.16.install create mode 100644 debian/not-installed delete mode 100644 debian/zint-devel.install delete mode 100644 debian/zint-qt-devel.install create mode 100644 docs/zint-qt.1 create mode 100644 docs/zint-qt.1.pmd diff --git a/ChangeLog b/ChangeLog index e6042e3a..8d449a6c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -Version 2.16.0.9 (dev) not released yet (2026-03-11) +Version 2.16.0.9 (dev) not released yet (2026-03-18) ==================================================== **Incompatible changes** @@ -212,7 +212,7 @@ Changes outside digit to be 4X/2X instead of 5X/3X away from main symbol so as not to touch add-on TODO: revisit when standard clarified - manual: make explicit that AI "(00)" and "(01)" prefixes added by Zint are - HRT-only; clarify Codablock-F length maximum & add examples + HRT-only; clarify Codablock F length maximum & add examples - add DXFILMEDGE (MR #159, props Antoine Mérino) Bugs @@ -1062,7 +1062,7 @@ by brunt@SF Version 2.5 2016-11-13 ====================== Support for DotCode and Han Xin code. ECI code processing. Output to BMP, GIF -and PCX. Added bold and small text options. Reintroduction of Codablock-F. +and PCX. Added bold and small text options. Reintroduction of Codablock F. Many minor fixes and improvements. @@ -1096,7 +1096,7 @@ minor bugfixes for ISBN and Aztec Code, and added some small features like a Version 2.3.1 2010-04-07 ======================== -Removed Codablock-F. Redesigned scale function so that human readable +Removed Codablock F. Redesigned scale function so that human readable text and Maxicode symbols can be scaled consistently. Corrected encoding bugs with Code 128/Code 16k and Data Matrix ECC200 ECC 050. Added --notext option to CLI. @@ -1155,7 +1155,7 @@ Version 2.1.2 2009-03-01 ======================== Added SVG output option. Improved Japanese character support including Unicode > Shift-JIS capability. Bugfixes for Data Matrix ECC200 (missing -characters at end of string) and Codablock-F (K1/K2 check digit and row +characters at end of string) and Codablock F (K1/K2 check digit and row indicators above row 6). @@ -1168,9 +1168,9 @@ Version 2.1 2009-01-31 ====================== Reinstated Korea Post barcodes, harmonised bind and box options, moved Unicode handling into backend and added input_mode option, added size options -to Data Matrix ECC200, added NULL character handling for Codablock-F, Code 128, +to Data Matrix ECC200, added NULL character handling for Codablock F, Code 128, Code 16k, Extended Code 39, Code 93, Telepen, Maxicode, Data Matrix ECC200 ECC -200, PDF417 and MicroPDF417. Added GS1 support for Code 16k, Codablock-F and +200, PDF417 and MicroPDF417. Added GS1 support for Code 16k, Codablock F and Aztec Code. Added scale and direct to stdout options. Rebuilt Data Matrix ECC200 ECC 200 encoding algorithms to support NULL encoding and GS1 data encoding. @@ -1185,13 +1185,13 @@ information. Version 2.0 beta r2 2008-10-19 ============================== Many corrections and bugfixes. (Code 11, Code 128, EAN-128, -Aztec Code, Codablock-F, Code 16k, POSTNET, PLANET, NVE-18, PZN, Data Matrix +Aztec Code, Codablock F, Code 16k, POSTNET, PLANET, NVE-18, PZN, Data Matrix ECC200, Maxicode and QR Code) Version 2.0 beta 2008-09-29 =========================== -Added support for Aztec Code, Codablock-F, Code 32, EAN-14 and DAFT +Added support for Aztec Code, Codablock F, Code 32, EAN-14 and DAFT Code. Rearranged symbology numbers to match Tbarcode v8. Corrected a never ending loop bug in EAN-128. diff --git a/README b/README index 2e37a661..08184952 100644 --- a/README +++ b/README @@ -16,7 +16,7 @@ BC412 (SEMI T1-95) Han Xin (Chinese Sensible) Code Brazilian Postal Code (CEPNet) ISBN Channel Code ITF-14 Codabar Japanese Postal Barcode -Codablock-F (and HIBC) Korean Postal Barcode +Codablock F (and HIBC) Korean Postal Barcode Code 11 LOGMARS Code 128 (and GS1-128 and HIBC) MaxiCode Code 16K MicroPDF417 (and HIBC) @@ -63,7 +63,7 @@ Please see "ChangeLog" in the project root directory. LICENSE ------- -Zint, libzint and Zint Barcode Studio are Copyright © 2025 Robin Stuart. All +Zint, libzint and Zint Barcode Studio are Copyright © 2026 Robin Stuart. All historical versions are distributed under the GNU General Public License version 3 or later. Versions 2.5 and later are released under a dual license: the encoding library is released under the BSD (3 clause) license whereas the diff --git a/README.deb b/README.deb new file mode 100644 index 00000000..bf5c3016 --- /dev/null +++ b/README.deb @@ -0,0 +1,58 @@ +% README.deb 2026-03-18 +% Tested on Ubuntu 24.04 LTS +% vim: set ts=4 sw=4 et : + +The "debian" directory is included to enable creating a local Debian dpkg ".deb" file. + +(The official Debian package is at https://salsa.debian.org/debian/zint) + +Prerequisites are being on a Debian-based Linux system and the usual stuff for building zint (see "README.linux"). + +To create a local package, first clone the latest source: + + git clone https://git.code.sf.net/p/zint/code zint + +Then create an archive: + + cd zint + git archive -o /tmp/zint.tar.gz HEAD + cd .. + +Create a new directory (it doesn't matter where): + + mkdir zint-deb + +Then untar the source archive into a sub-directory of the new directory: + + cd zint-deb + mkdir zint-2.16.0.9-src + cd zint-2.16.0.9-src + tar xf /tmp/zint.tar.gz + cd .. + tar cvzf zint_2.16.0.9.orig.tar.gz zint-2.16.0.9-src + +Note the very specific naming of the tarball and the use of an underscore: "zint_.orig.tar.gz". + +Then run dpkg-buildpackage in the source sub-directory: + + cd zint-2.16.0.9-src + dpkg-buildpackage -us -uc + cd .. + +If this works, there should be four ".deb" files (amongst other stuff) in the zint-deb directory, namely: + +libzint2.16_2.16.0.9-1_.deb +libzint-dev_2.16.0.9-1_.deb +zint_2.16.0.9-1_.deb +zint-qt_2.16.0.9-1_.deb + +where "" is e.g. "amd64" on an Intel system. + +The ".deb" files can then be installed on "" systems, starting with the "libzint" ones first, e.g. + + sudo dpkg -i libzint2.16_2.16.0.9-1_amd64.deb + +You may be prompted by dpkg to add other packages first. + +Note that the GS1 Syntax Engine is not yet supported by the included "debian" directory (nor by the official +Debian package for that matter), which is an issue. diff --git a/README.linux b/README.linux index cac5f1d6..3cde2245 100644 --- a/README.linux +++ b/README.linux @@ -1,11 +1,12 @@ % README.linux 2026-01-01 % Tested on Ubuntu 20.04.4 LTS, Ubuntu 22.04 LTS, Ubuntu 24.04 LTS and % Fedora Linux 43 (Workstation Edition) +% vim: set ts=4 sw=4 et : 1. Prerequisites for building zint ================================== -Prerequisites are git, cmake, make, gcc and gcc-c++, e.g. Ubuntu/Debian +Prerequisites are git, cmake, make, cc and c++, e.g. Ubuntu/Debian sudo apt install git cmake build-essential diff --git a/backend/DEVELOPER b/backend/DEVELOPER index 7c0c8190..9e66e741 100644 --- a/backend/DEVELOPER +++ b/backend/DEVELOPER @@ -1,10 +1,10 @@ -Contents --------- - -2025-01-21 +2026-03-18 Here is a guide to which bit of source code does what. +library.c: + API entry points + 2of5.c: Code 2 of 5 Standard (Matrix) Code 2 of 5 Industrial @@ -40,7 +40,7 @@ codabar.c: Codabar codablock.c: - Codablock-F + Codablock F code11.c: Code 11 diff --git a/backend/aztec.c b/backend/aztec.c index 4be3eebd..0cfc7472 100644 --- a/backend/aztec.c +++ b/backend/aztec.c @@ -96,9 +96,9 @@ static int az_reduce(char *modes, unsigned char *source, const int length) { modes[j] = modes[i]; if ((modes[i] == AZ_P || (modes[i] & AZ_PS)) && AZ_DOUBLE_PUNCT_NO_LEN_CHECK(source, i)) { if (source[i] == '\r') { - source[j] = 'a'; /* "\r\n" */ + source[j] = 'a'; /* (CR LF) */ } else { - source[j] = 'b' + 7 - ((source[i] & 0x0F) >> 1); /* ". " -> 'b', ", " -> 'c', ": " -> 'd' */ + source[j] = 'b' + 7 - ((source[i] & 0x0F) >> 1); /* (. SP) -> 'b', (, SP) -> 'c', (: SP) -> 'd' */ } i += 2; } else { @@ -124,7 +124,7 @@ static char az_mode_char(const char mode) { if (mode & AZ_US) { assert(AZ_MASK(mode) == AZ_L || AZ_MASK(mode) == AZ_D); - return AZ_MASK(mode) == AZ_L ? 'r' : 't'; + return AZ_MASK(mode) == AZ_L ? 'K' : 'C'; } assert(AZ_MASK(mode) < ARRAY_SIZE(mode_chars)); @@ -164,7 +164,7 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const } } - /* Deal first with letter combinations which can be combined to one codeword + /* Deal first with letter combinations which can be combined to one codeword. Combinations are (CR LF) (. SP) (, SP) (: SP) in Punct mode */ current_mode = initial_mode; for (i = 0; i + 1 < length; i++) { @@ -182,26 +182,14 @@ static int az_text_modes(char modes[], unsigned char source[], int length, const count = az_count_doubles(source, length, i); next_mode = az_get_next_mode(modes, length, i); - if (current_mode == AZ_U) { - if (next_mode == AZ_D && count <= 5) { + if (next_mode == AZ_D) { + if ((current_mode == AZ_U && count <= 5) || (current_mode == AZ_L && count <= 4) + || (current_mode == AZ_M && count == 1) || (current_mode == AZ_D && count <= 7)) { memset(modes + i, AZ_D, 2 * count); } - } else if (current_mode == AZ_L) { - if (next_mode == AZ_D && count <= 4) { - memset(modes + i, AZ_D, 2 * count); - } - - } else if (current_mode == AZ_M) { - if (next_mode == AZ_D && count == 1) { - modes[i] = AZ_D; - modes[i + 1] = AZ_D; - } - - } else if (current_mode == AZ_D) { - if ((next_mode != AZ_D && count <= 4) || (next_mode == AZ_D && count <= 7)) { - memset(modes + i, AZ_D, 2 * count); - } + } else if (current_mode == AZ_D && count <= 4) { + memset(modes + i, AZ_D, 2 * count); } /* Default is Punct mode */ @@ -976,6 +964,8 @@ static int az_UpdateStateListForChar(struct az_state_list *list, const unsigned /* Default, optimized encodation algorithm by Frank Yellin and Rustam Abdullaev, adapted from ZXing via zxing-cpp's `HighLevelEncoder::Encode()` & slightly improved */ +/* Copyright 2013 ZXing authors */ /* ZXing */ +/* Copyright 2016 Huy Cuong Nguyen */ /* zxing-cpp */ /* SPDX-License-Identifier: Apache-2.0 */ /* Note that a bitstream that is encoded to be shortest based on mode choices may not be so after bit-stuffing */ static int az_binary_string(unsigned char source[], const int length, int bp, @@ -1002,7 +992,7 @@ static int az_binary_string(unsigned char source[], const int length, int bp, fprintf(stderr, "index %d\n", (int) i); #endif if (AZ_DOUBLE_PUNCT(source, length, i)) { - /* "\r\n" -> 2, ". " -> 3, ", " -> 4, ": " -> 5 */ + /* (CR LF) -> 2, (. SP) -> 3, (, SP) -> 4, (: SP) -> 5 */ const int pairCode = source[i] == '\r' ? 2 : 3 + 7 - ((source[i] & 0x0F) >> 1); if (!az_UpdateStateListForPair(list, i, pairCode)) { az_state_list_free(list); diff --git a/backend/big5.h b/backend/big5.h index 58ece87a..7d23171f 100644 --- a/backend/big5.h +++ b/backend/big5.h @@ -30,6 +30,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_BIG5_H #define Z_BIG5_H diff --git a/backend/codablock.c b/backend/codablock.c index 543310e7..ff7fe429 100644 --- a/backend/codablock.c +++ b/backend/codablock.c @@ -1,4 +1,4 @@ -/* codablock.c - Handles Codablock-F */ +/* codablock.c - Handles Codablock F */ /* libzint - the open source barcode library Copyright (C) 2016-2026 Harald Oehlmann @@ -50,7 +50,7 @@ #define ZTNum (CodeA | CodeB | CodeC) #define ZTFNC1 (CodeA | CodeB | CodeC | CodeFNC1) -/* ASCII-Extension for Codablock-F */ +/* ASCII-Extension for Codablock F */ #define aFNC1 ((uchar) 128) #define aFNC2 ((uchar) 129) #define aFNC3 ((uchar) 130) @@ -513,7 +513,7 @@ static void ASCIIZ128(uchar **ppOutPos, const int CharacterSet, const uchar c1, A2C128_C(ppOutPos, c1, c2); } -/* XLate Tables D.2, D.3 and F.1 of Codablock-F Specification and call output +/* XLate Tables D.2, D.3 and F.1 of Codablock F Specification and call output */ static void SumASCII(uchar **ppOutPos, const int Sum, const int CharacterSet) { switch (CharacterSet) { diff --git a/backend/common.c b/backend/common.c index d1cb326d..9d9d61d8 100644 --- a/backend/common.c +++ b/backend/common.c @@ -697,6 +697,7 @@ INTERNAL unsigned int z_decode_utf8(unsigned int *state, unsigned int *codep, co See https://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. */ + /* SPDX-License-Identifier: Apache-2.0 */ static const unsigned char utf8d[] = { /* The first part of the table maps bytes to character classes that diff --git a/backend/composite.c b/backend/composite.c index 202b2f79..90a3c48d 100644 --- a/backend/composite.c +++ b/backend/composite.c @@ -1,7 +1,7 @@ /* composite.c - Handles GS1 Composite Symbols */ /* libzint - the open source barcode library - Copyright (C) 2008-2025 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -809,6 +809,7 @@ static int cc_binary_string(struct zint_symbol *symbol, const unsigned char sour /* So still need FNC1 character but can't do single FNC1 in numeric mode, so insert alphanumeric latch "0000" and alphanumeric FNC1 "01111" (this implementation detail taken from BWIPP https://github.com/bwipp/postscriptbarcode Copyright (c) 2004-2019 Terry Burton) */ + /* SPDX-License-Identifier: MIT */ bp = z_bin_append_posn(15, 9, binary_string, bp); /* "000001111" */ /* Note an alphanumeric FNC1 is also a numeric latch, so now in numeric mode */ } diff --git a/backend/dmatrix.c b/backend/dmatrix.c index 4af2a7bf..8ef9e255 100644 --- a/backend/dmatrix.c +++ b/backend/dmatrix.c @@ -8,8 +8,8 @@ Adrian Kennard, Andrews & Arnold Ltd with help from Cliff Hones on the RS coding - (c) 2004 Adrian Kennard, Andrews & Arnold Ltd - (c) 2006 Stefan Schmidt + Copyright (c) 2004 Adrian Kennard, Andrews & Arnold Ltd + Copyright (c) 2006 Stefan Schmidt Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/backend/eci_sb.h b/backend/eci_sb.h index 7dcdc7c7..e4960020 100644 --- a/backend/eci_sb.h +++ b/backend/eci_sb.h @@ -4,7 +4,7 @@ "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP125*.TXT" */ /* libzint - the open source barcode library - Copyright (C) 2021-2025 Robin Stuart + Copyright (C) 2021-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -32,6 +32,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_ECI_SB_H #define Z_ECI_SB_H diff --git a/backend/gb18030.h b/backend/gb18030.h index 3f2779f2..b9d2c5ff 100644 --- a/backend/gb18030.h +++ b/backend/gb18030.h @@ -1,5 +1,5 @@ /* gb18030.h - tables for Unicode to GB 18030-2005, generated by "backend/tools/gen_eci_mb_h.php" - from "jdk-1.4.2/GB18030.TXT" + from "libiconv-1.11/GB18030.TXT" (see https://haible.de/bruno/charsets/conversion-tables/GB18030.tar.bz2) */ /* libzint - the open source barcode library @@ -31,6 +31,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_GB18030_H #define Z_GB18030_H diff --git a/backend/gb2312.h b/backend/gb2312.h index f5134e97..1c02779b 100644 --- a/backend/gb2312.h +++ b/backend/gb2312.h @@ -31,6 +31,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_GB2312_H #define Z_GB2312_H diff --git a/backend/gbk.h b/backend/gbk.h index d0cf5c44..792cc5d0 100644 --- a/backend/gbk.h +++ b/backend/gbk.h @@ -30,6 +30,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_GBK_H #define Z_GBK_H diff --git a/backend/gridmtx.c b/backend/gridmtx.c index b6a97947..66f1a9ec 100644 --- a/backend/gridmtx.c +++ b/backend/gridmtx.c @@ -1,7 +1,7 @@ /* gridmtx.c - Grid Matrix */ /* libzint - the open source barcode library - Copyright (C) 2009-2025 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -127,6 +127,7 @@ static int gm_in_numeral(const unsigned int ddata[], const int length, const int /* Calculate optimized encoding modes. Adapted from Project Nayuki */ /* Copyright (c) Project Nayuki. (MIT License) See qr.c for detailed notice */ +/* SPDX-License-Identifier: MIT */ static void gm_define_modes(char *modes, const unsigned int ddata[], const int length, const int debug_print) { /* Must be in same order as GM_H etc */ static const char mode_types[] = { GM_CHINESE, GM_NUMBER, GM_LOWER, GM_UPPER, GM_MIXED, GM_BYTE, '\0' }; diff --git a/backend/gs1.c b/backend/gs1.c index 93a31fc9..2b26224a 100644 --- a/backend/gs1.c +++ b/backend/gs1.c @@ -1758,7 +1758,7 @@ static int gs1se_verify(struct zint_symbol *symbol, const unsigned char source[] } else if (gs1raw_mode && !is_digital_link) { if (symbol->symbology == BARCODE_GS1_128 || symbol->symbology == BARCODE_DBAR_EXP || symbol->symbology == BARCODE_DBAR_EXPSTK || z_is_fixed_ratio(symbol->symbology) - || symbol->symbology == BARCODE_CODABLOCKF) { /* Codablock-F will be GS1-enabled in the future */ + || symbol->symbology == BARCODE_CODABLOCKF) { /* Codablock F will be GS1-enabled in the future */ /* Prefix caret */ local_source_buf[0] = '^'; if (source[0] == '\x1D') { /* Allow initial GS */ diff --git a/backend/hanxin.c b/backend/hanxin.c index 14134cc3..ecd0c250 100644 --- a/backend/hanxin.c +++ b/backend/hanxin.c @@ -1,7 +1,7 @@ /* hanxin.c - Han Xin Code */ /* libzint - the open source barcode library - Copyright (C) 2009-2025 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -353,6 +353,7 @@ static int hx_in_fourbyte(const unsigned int ddata[], const int length, const in /* Calculate optimized encoding modes. Adapted from Project Nayuki */ /* Copyright (c) Project Nayuki. (MIT License) See qr.c for detailed notice */ +/* SPDX-License-Identifier: MIT */ static void hx_define_modes(char *modes, const unsigned int ddata[], const int length, const int debug_print) { /* Must be in same order as HX_N etc */ static const char mode_types[] = { 'n', 't', 'b', '1', '2', 'd', 'f', '\0' }; diff --git a/backend/ksx1001.h b/backend/ksx1001.h index e2987f72..56a685d1 100644 --- a/backend/ksx1001.h +++ b/backend/ksx1001.h @@ -30,6 +30,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_KSX1001_H #define Z_KSX1001_H diff --git a/backend/library.c b/backend/library.c index 67f19412..f5b2f41c 100644 --- a/backend/library.c +++ b/backend/library.c @@ -457,7 +457,7 @@ static int hibc(struct zint_symbol *symbol, struct zint_seg segs[], const int se if (symbol->debug & ZINT_DEBUG_PRINT) printf("HIBC processed source: %s\n", to_process); - /* Code 128, Code 39 & Codablock-F set `content_segs` themselves, but the others don't, so do it now */ + /* Code 128, Code 39 & Codablock F set `content_segs` themselves, but the others don't, so do it now */ assert(!symbol->content_segs); /* HIBC symbologies don't satisfy `supports_non_iso8859_1()` */ if (content_segs && symbol->symbology != BARCODE_HIBC_128 && symbol->symbology != BARCODE_HIBC_39 && symbol->symbology != BARCODE_HIBC_BLOCKF) { diff --git a/backend/pcx.c b/backend/pcx.c index 79e0921e..c30b529b 100644 --- a/backend/pcx.c +++ b/backend/pcx.c @@ -1,7 +1,7 @@ /* pcx.c - Handles output to ZSoft PCX file */ /* libzint - the open source barcode library - Copyright (C) 2009-2025 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -126,6 +126,7 @@ INTERNAL int zint_pcx_pixel_plot(struct zint_symbol *symbol, const unsigned char /* Based on ImageMagick/coders/pcx.c PCXWritePixels() * Copyright 1999-2020 ImageMagick Studio LLC */ + /* SPDX-License-Identifier: ImageMagick */ previous = rle_row[0]; run_count = 1; for (column = 1; column < bytes_per_line; column++) { /* Note going up to bytes_per_line */ diff --git a/backend/pdf417.c b/backend/pdf417.c index 7c1848a0..8a752bff 100644 --- a/backend/pdf417.c +++ b/backend/pdf417.c @@ -32,9 +32,16 @@ */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* + ********************************************************************************************* + * TODO: Replace all code adapted from "pdf417.frm" as it was released under GPL v2.0 or later + ********************************************************************************************* + */ + /* This code is adapted from "Code barre PDF 417 / PDF 417 barcode" v2.5.0 which is Copyright (C) 2004 (Grandzebu). The original code (file pdf417.frm) can be downloaded from https://grandzebu.net/informatique/codbar/pdf417.zip */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* NOTE: symbol->option_1 is used to specify the security level (i.e. control the number of check codewords) @@ -1432,13 +1439,11 @@ static int pdf_enc(struct zint_symbol *symbol, struct zint_seg segs[], const int bp = z_bin_append_posn(0x1FEA8, 17, pattern, bp); /* Row start */ for (j = 0; j <= cols; j++) { - bp = z_bin_append_posn(zint_pdf_bitpattern[offset + dummy[j]], 16, pattern, bp); - pattern[bp++] = '0'; + bp = z_bin_append_posn(((int) zint_pdf_bitpattern[offset + dummy[j]]) << 1, 17, pattern, bp); } if (symbol->symbology != BARCODE_PDF417COMP) { - bp = z_bin_append_posn(zint_pdf_bitpattern[offset + dummy[j]], 16, pattern, bp); - pattern[bp++] = '0'; + bp = z_bin_append_posn(((int) zint_pdf_bitpattern[offset + dummy[j]]) << 1, 17, pattern, bp); bp = z_bin_append_posn(0x3FA29, 18, pattern, bp); /* Row Stop */ } else { pattern[bp++] = '1'; /* Compact PDF417 Stop pattern */ @@ -1761,23 +1766,19 @@ INTERNAL int zint_micropdf417(struct zint_symbol *symbol, struct zint_seg segs[] /* Copy the data into codebarre */ bp = z_bin_append_posn(zint_pdf_rap_side[LeftRAP - 1], 10, pattern, bp); - bp = z_bin_append_posn(zint_pdf_bitpattern[offset + chainemc[k]], 16, pattern, bp); - pattern[bp++] = '0'; + bp = z_bin_append_posn(((int) zint_pdf_bitpattern[offset + chainemc[k]]) << 1, 17, pattern, bp); if (symbol->option_2 >= 2) { if (symbol->option_2 == 3) { bp = z_bin_append_posn(zint_pdf_rap_centre[CentreRAP - 1], 10, pattern, bp); } - bp = z_bin_append_posn(zint_pdf_bitpattern[offset + chainemc[k + 1]], 16, pattern, bp); - pattern[bp++] = '0'; + bp = z_bin_append_posn(((int) zint_pdf_bitpattern[offset + chainemc[k + 1]]) << 1, 17, pattern, bp); if (symbol->option_2 >= 3) { if (symbol->option_2 == 4) { bp = z_bin_append_posn(zint_pdf_rap_centre[CentreRAP - 1], 10, pattern, bp); } - bp = z_bin_append_posn(zint_pdf_bitpattern[offset + chainemc[k + 2]], 16, pattern, bp); - pattern[bp++] = '0'; + bp = z_bin_append_posn(((int) zint_pdf_bitpattern[offset + chainemc[k + 2]]) << 1, 17, pattern, bp); if (symbol->option_2 == 4) { - bp = z_bin_append_posn(zint_pdf_bitpattern[offset + chainemc[k + 3]], 16, pattern, bp); - pattern[bp++] = '0'; + bp = z_bin_append_posn(((int) zint_pdf_bitpattern[offset + chainemc[k + 3]]) << 1, 17, pattern, bp); } } } diff --git a/backend/pdf417_tabs.h b/backend/pdf417_tabs.h index 8c6fd447..c877cc63 100644 --- a/backend/pdf417_tabs.h +++ b/backend/pdf417_tabs.h @@ -1,7 +1,7 @@ /* pdf417_tabs.h - PDF417 tables and coefficients */ /* libzint - the open source barcode library - Copyright (C) 2008-2025 Robin Stuart + Copyright (C) 2008-2026 Robin Stuart Portions Copyright (C) 2004 Grandzebu Redistribution and use in source and binary forms, with or without @@ -31,9 +31,6 @@ */ /* SPDX-License-Identifier: BSD-3-Clause */ -/* this file contains the character table, the pre-calculated coefficients and the - codeword patterns taken from lines 416 to 454 of pdf417.frm */ - /* See "pdf417.h" for declarations */ #ifndef Z_PDF417_TABS_H @@ -43,31 +40,32 @@ extern "C" { #endif /* __cplusplus */ -/* PDF417 error correction coefficients from Grand Zebu */ +/* PDF417 error correction coefficients from ISO/IEC 15438:2015 Annex F, Tables F.1 to F.9 + k is no. of EC codewords */ INTERNAL_DATA const unsigned short zint_pdf_coefrs[1022] = { - /* k = 2 */ + /* Table F.1, k = 2 */ 27, 917, - /* k = 4 */ + /* Table F.2, k = 4 */ 522, 568, 723, 809, - /* k = 8 */ + /* Table F.3, k = 8 */ 237, 308, 436, 284, 646, 653, 428, 379, - /* k = 16 */ + /* Table F.4, k = 16 */ 274, 562, 232, 755, 599, 524, 801, 132, 295, 116, 442, 428, 295, 42, 176, 65, - /* k = 32 */ + /* Table F.5, k = 32 */ 361, 575, 922, 525, 176, 586, 640, 321, 536, 742, 677, 742, 687, 284, 193, 517, 273, 494, 263, 147, 593, 800, 571, 320, 803, 133, 231, 390, 685, 330, 63, 410, - /* k = 64 */ + /* Table F.6, k = 64 */ 539, 422, 6, 93, 862, 771, 453, 106, 610, 287, 107, 505, 733, 877, 381, 612, 723, 476, 462, 172, 430, 609, 858, 822, 543, 376, 511, 400, 672, 762, 283, 184, 440, 35, 519, 31, 460, 594, 225, 535, 517, 352, 605, 158, 651, 201, 488, 502, 648, 733, 717, 83, 404, 97, 280, 771, 840, 629, 4, 381, 843, 623, 264, 543, - /* k = 128 */ + /* Table F.7, k = 128 */ 521, 310, 864, 547, 858, 580, 296, 379, 53, 779, 897, 444, 400, 925, 749, 415, 822, 93, 217, 208, 928, 244, 583, 620, 246, 148, 447, 631, 292, 908, 490, 704, 516, 258, 457, 907, 594, 723, 674, 292, 272, 96, 684, 432, 686, 606, 860, 569, @@ -77,7 +75,7 @@ INTERNAL_DATA const unsigned short zint_pdf_coefrs[1022] = { 157, 374, 242, 726, 600, 269, 375, 898, 845, 454, 354, 130, 814, 587, 804, 34, 211, 330, 539, 297, 827, 865, 37, 517, 834, 315, 550, 86, 801, 4, 108, 539, - /* k = 256 */ + /* Table F.8, k = 256 */ 524, 894, 75, 766, 882, 857, 74, 204, 82, 586, 708, 250, 905, 786, 138, 720, 858, 194, 311, 913, 275, 190, 375, 850, 438, 733, 194, 280, 201, 280, 828, 757, 710, 814, 919, 89, 68, 569, 11, 204, 796, 605, 540, 913, 801, 700, 799, 137, @@ -95,7 +93,7 @@ INTERNAL_DATA const unsigned short zint_pdf_coefrs[1022] = { 609, 829, 189, 20, 167, 29, 872, 449, 83, 402, 41, 656, 505, 579, 481, 173, 404, 251, 688, 95, 497, 555, 642, 543, 307, 159, 924, 558, 648, 55, 497, 10, - /* k = 512 */ + /* Table F.9, k = 512 */ 352, 77, 373, 504, 35, 599, 428, 207, 409, 574, 118, 498, 285, 380, 350, 492, 197, 265, 920, 155, 914, 299, 229, 643, 294, 871, 306, 88, 87, 193, 352, 781, 846, 75, 327, 520, 435, 543, 203, 666, 249, 346, 781, 621, 640, 268, 794, 534, @@ -130,7 +128,11 @@ INTERNAL_DATA const unsigned short zint_pdf_coefrs[1022] = { 63, 310, 863, 251, 366, 304, 282, 738, 675, 410, 389, 244, 31, 121, 303, 263 }; -INTERNAL_DATA const unsigned short zint_pdf_bitpattern[2787] = { +/* Encoding/decoding table of PDF417 symbol character bar-space sequences from ISO/IEC 15438:2015 Annex A + e.g. 1st entry B SBSBSB S + 3 111113 6 + 11101010111000000 = 1110 1010 1110 0000 with last space implied = 0xEAE0 */ +INTERNAL_DATA const unsigned short zint_pdf_bitpattern[2787] = { /* 2787 = 929 * 3 */ 0xEAE0, 0xF578, 0xFABE, 0xEA70, 0xF53C, 0xFA9F, 0xD460, 0xEA38, 0xD430, 0xA820, 0xD418, 0xA810, 0xD6E0, 0xEB78, 0xF5BE, 0xD670, 0xEB3C, 0xF59F, 0xAC60, 0xD638, 0xAC30, 0xAEE0, 0xD778, 0xEBBE, 0xAE70, 0xD73C, 0xEB9F, 0xAE38, 0xD71E, 0xAF78, @@ -412,7 +414,8 @@ INTERNAL_DATA const unsigned short zint_pdf_bitpattern[2787] = { 0xC3EA, 0xC3E9, 0x83CA, 0x87DA, 0x83C9, 0x87D9, 0xE3F5 }; -/* MicroPDF417 coefficients from ISO/IEC 24728:2006 Annex F */ +/* MicroPDF417 coefficients from ISO/IEC 24728:2006 Annex F + Note from Table 1 minimum no. of EC codewords (k) is 7, so don't need the entries for 3 to 6 */ INTERNAL_DATA const unsigned short zint_pdf_Microcoeffs[344] = { /* k = 7 */ 76, 925, 537, 597, 784, 691, 437, @@ -486,7 +489,7 @@ INTERNAL_DATA const unsigned short zint_pdf_MicroVariants[136] = { /*34*4*/ }; /* rows, columns, error codewords, k-offset */ -/* following is Left RAP, Centre RAP, Right RAP and Start Cluster from ISO/IEC 24728:2006 tables 10, 11 and 12 */ +/* Following is Left RAP, Centre RAP, Right RAP and Start Cluster from ISO/IEC 24728:2006 Tables 10, 11 and 12 */ INTERNAL_DATA const char zint_pdf_RAPTable[136] = { /*34*4*/ 1, 8, 36, 19, 9, 25, 1, 1, 8, 36, 19, 9, 27, 1, 7, 15, 25, 37, 1, 1, 21, 15, 1, 47, 1, 7, 15, 25, 37, 1, 1, 21, 15, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 15, 25, 37, 17, 9, 29, 31, 25, 19, 1, 7, 15, 25, 37, 17, 9, 29, 31, 25, diff --git a/backend/qr.c b/backend/qr.c index dd61ce1f..14e10257 100644 --- a/backend/qr.c +++ b/backend/qr.c @@ -230,6 +230,7 @@ static void qr_define_modes(char modes[], const unsigned int ddata[], const int * - The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. */ + /* SPDX-License-Identifier: MIT */ unsigned int state[11] = { 0 /*N*/, 0 /*A*/, 0 /*B*/, 0 /*K*/, /* Head/switch costs */ 0 /*version*/, diff --git a/backend/reedsol.c b/backend/reedsol.c index 73e2c0e0..8336444f 100644 --- a/backend/reedsol.c +++ b/backend/reedsol.c @@ -1,10 +1,10 @@ /* This is a simple Reed-Solomon encoder - (C) Cliff Hones 2004 + Copyright (C) Cliff Hones 2004 */ /* libzint - the open source barcode library - Copyright (C) 2009-2025 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -251,17 +251,17 @@ INTERNAL void zint_rs_encode_uint(const rs_t *rs, const int datalen, const unsig /* `logmod` (field characteristic) will be 2**bitlength - 1, eg 1023 for bitlength 10, 4095 for bitlength 12 */ INTERNAL int zint_rs_uint_init_gf(rs_uint_t *rs_uint, const unsigned int prime_poly, const int logmod) { int b, p, v; - unsigned int *logt, *alog; + unsigned short *logt, *alog; b = logmod + 1; rs_uint->logt = NULL; rs_uint->alog = NULL; - if (!(logt = (unsigned int *) calloc(b, sizeof(unsigned int)))) { + if (!(logt = (unsigned short *) calloc(b, sizeof(unsigned short)))) { return 0; } - if (!(alog = (unsigned int *) calloc(b * 2, sizeof(unsigned int)))) { + if (!(alog = (unsigned short *) calloc(b * 2, sizeof(unsigned short)))) { free(logt); return 0; } @@ -282,8 +282,8 @@ INTERNAL int zint_rs_uint_init_gf(rs_uint_t *rs_uint, const unsigned int prime_p INTERNAL void zint_rs_uint_init_code(rs_uint_t *rs_uint, const int nsym, int index) { int i, k; - const unsigned int *const logt = rs_uint->logt; - const unsigned int *const alog = rs_uint->alog; + const unsigned short *const logt = rs_uint->logt; + const unsigned short *const alog = rs_uint->alog; unsigned short *rspoly = rs_uint->rspoly; unsigned int *log_rspoly = rs_uint->log_rspoly; @@ -315,8 +315,8 @@ INTERNAL void zint_rs_uint_init_code(rs_uint_t *rs_uint, const int nsym, int ind INTERNAL void zint_rs_uint_encode(const rs_uint_t *rs_uint, const int datalen, const unsigned int *data, unsigned int *res) { int i, k; - const unsigned int *const logt = rs_uint->logt; - const unsigned int *const alog = rs_uint->alog; + const unsigned short *const logt = rs_uint->logt; + const unsigned short *const alog = rs_uint->alog; const unsigned short *const rspoly = rs_uint->rspoly; const unsigned int *const log_rspoly = rs_uint->log_rspoly; const int nsym = rs_uint->nsym; diff --git a/backend/reedsol.h b/backend/reedsol.h index 5b4c5488..07130215 100644 --- a/backend/reedsol.h +++ b/backend/reedsol.h @@ -4,7 +4,7 @@ */ /* libzint - the open source barcode library - Copyright (C) 2009-2025 Robin Stuart + Copyright (C) 2009-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -51,8 +51,8 @@ typedef struct { } rs_t; typedef struct { - unsigned int *logt; /* These are malloced */ - unsigned int *alog; + unsigned short *logt; /* These are malloced */ + unsigned short *alog; unsigned short rspoly[4096]; /* Generated poly, 12-bit max - needs to be enlarged if > 12-bit used */ unsigned int log_rspoly[4096]; /* Logs of poly */ int nsym; /* Degree of poly */ diff --git a/backend/sjis.h b/backend/sjis.h index da3da2bc..30610478 100644 --- a/backend/sjis.h +++ b/backend/sjis.h @@ -30,6 +30,7 @@ SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_SJIS_H #define Z_SJIS_H diff --git a/backend/tests/test_gb18030.c b/backend/tests/test_gb18030.c index 5193e5d6..71947ee9 100644 --- a/backend/tests/test_gb18030.c +++ b/backend/tests/test_gb18030.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2025 Robin Stuart + Copyright (C) 2019-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -45,7 +45,7 @@ INTERNAL int zint_test_u_gb18030_int(const unsigned int u, unsigned int *dest1, unsigned int *dest2); /* As control convert to GB 18030 using table generated from GB18030.TXT plus simple processing. - The version of GB18030.TXT is jdk-1.4.2/GB18030.TXT taken from + The version of GB18030.TXT is libiconv-1.11/GB18030.TXT taken from https://haible.de/bruno/charsets/conversion-tables/GB18030.html The generated file backend/tests/test_gb18030_tab.h does not include U+10000..10FFFF codepoints to save space. See also backend/tests/tools/data/GB18030.TXT.README and backend/tests/tools/gen_test_tab.php. diff --git a/backend/tests/test_gs1.c b/backend/tests/test_gs1.c index 62d6bbb1..5e9760e1 100644 --- a/backend/tests/test_gs1.c +++ b/backend/tests/test_gs1.c @@ -2712,7 +2712,7 @@ static void test_input_mode(const testCtx *const p_ctx) { /* 40*/ { BARCODE_AZTEC, "^1234", GS1_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 }, /* 41*/ { BARCODE_AZTEC, "1234", GS1_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_DATA, 0 }, /* 42*/ { BARCODE_AZTEC, "https://example.com/01/12345678901231", GS1_MODE, -1, 0, 0 }, - /* 43*/ { BARCODE_CODABLOCKF, "[01]12345678901231", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 }, /* Codablock-F does not support GS1 */ + /* 43*/ { BARCODE_CODABLOCKF, "[01]12345678901231", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 }, /* Codablock F does not support GS1 */ /* 44*/ { BARCODE_CODABLOCKF, "^0112345678901231", GS1_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 }, /* 45*/ { BARCODE_CODABLOCKF, "0112345678901231", GS1_MODE | GS1RAW_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 }, /* 46*/ { BARCODE_CODABLOCKF, "[01]12345678901231", GS1_MODE | ESCAPE_MODE, -1, ZINT_ERROR_INVALID_OPTION, 0 }, diff --git a/backend/tests/test_gs1se.c b/backend/tests/test_gs1se.c index c47b13c0..178a42f3 100644 --- a/backend/tests/test_gs1se.c +++ b/backend/tests/test_gs1se.c @@ -1036,7 +1036,7 @@ static void test_non_forced(const testCtx *const p_ctx) { /* 32*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE, -1, "[02]12345678901231[10]()[37]12345678[00]123456789012345675", 0, "" }, /* 33*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE, -1, "^021234567890123110()^3712345678^00123456789012345675", 0, "" }, /* 34*/ { BARCODE_AZTEC, GS1_MODE | GS1NOCHECK_MODE | GS1RAW_MODE, -1, "021234567890123110()\0353712345678\03500123456789012345675", 0, "" }, - /* 35*/ { BARCODE_CODABLOCKF, GS1_MODE, -1, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" }, /* Codablock-F does not support GS1 */ + /* 35*/ { BARCODE_CODABLOCKF, GS1_MODE, -1, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" }, /* Codablock F does not support GS1 */ /* 36*/ { BARCODE_CODABLOCKF, GS1_MODE | GS1NOCHECK_MODE, -1, "[01]12345678901231", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" }, /* 37*/ { BARCODE_CODABLOCKF, GS1_MODE, -1, "1234", ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode" }, /* 38*/ { BARCODE_CODEONE, GS1_MODE, -1, "[01]12345678901231", 0, "" }, diff --git a/backend/tests/test_pdf417.c b/backend/tests/test_pdf417.c index 319529a0..2721cde1 100644 --- a/backend/tests/test_pdf417.c +++ b/backend/tests/test_pdf417.c @@ -280,9 +280,12 @@ static void test_reader_init(const testCtx *const p_ctx) { const char *expected; const char *comment; }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ static const struct item data[] = { - /* 0*/ { BARCODE_PDF417, UNICODE_MODE, READER_INIT, "A", 0, 6, 103, "(12) 4 921 29 900 209 917 46 891 522 472 822 385", "Outputs Test Alpha flag 900" }, - /* 1*/ { BARCODE_MICROPDF417, UNICODE_MODE, READER_INIT, "A", 0, 11, 38, "(11) 921 900 29 900 179 499 922 262 777 478 300", "Outputs Test Alpha flag 900" }, + /* 0*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, READER_INIT, "A", 0, 6, 103, "(12) 4 921 29 900 209 917 46 891 522 472 822 385", "Outputs Test Alpha flag 900" }, + /* 1*/ { BARCODE_PDF417, UNICODE_MODE, READER_INIT, "A", 0, 6, 103, "(12) 4 921 29 900 209 917 46 891 522 472 822 385", "Outputs Test Alpha flag 900" }, + /* 2*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, READER_INIT, "A", 0, 11, 38, "(11) 921 900 29 900 179 499 922 262 777 478 300", "Outputs Test Alpha flag 900" }, + /* 3*/ { BARCODE_MICROPDF417, UNICODE_MODE, READER_INIT, "A", 0, 11, 38, "(11) 921 900 29 900 179 499 922 262 777 478 300", "Outputs Test Alpha flag 900" }, }; const int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -434,33 +437,40 @@ static void test_input(const testCtx *const p_ctx) { /* 54*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 1, -1, { 0, 0, "" }, "A", 0, 0, 6, 86, "(6) 2 29 752 533 551 139", 0, "BWIPP BYTE1" }, /* 55*/ { BARCODE_PDF417, UNICODE_MODE, -1, 1, -1, { 0, 0, "" }, "A", 0, 0, 6, 86, "(6) 2 29 752 533 551 139", 0, "BWIPP BYTE1" }, /* 56*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 2, -1, { 0, 0, "" }, "A", 0, 0, 5, 103, "(10) 2 29 478 509 903 637 74 490 760 21", 0, "BWIPP BYTE1" }, - /* 57*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 3, -1, { 0, 0, "" }, "A", 0, 0, 9, 103, "(18) 2 29 290 888 64 789 390 182 22 197 347 41 298 467 387 917 455 196", 0, "BWIPP BYTE1" }, - /* 58*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 4, -1, { 0, 0, "" }, "A", 0, 0, 12, 120, "(36) 4 29 900 900 702 212 753 721 695 584 222 459 110 594 813 465 718 912 667 349 852 602", 0, "BWIPP BYTE1" }, - /* 59*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 5, -1, { 0, 0, "" }, "A", 0, 0, 14, 154, "(70) 6 29 900 900 900 900 774 599 527 418 850 374 921 763 922 772 572 661 584 902 578 696", 0, "BWIPP BYTE1" }, - /* 60*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 6, -1, { 0, 0, "" }, "A", 0, 0, 19, 188, "(133) 5 29 900 900 900 113 261 822 368 600 652 404 869 860 902 184 702 611 323 195 794 566", 0, "BWIPP BYTE1" }, - /* 61*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 7, -1, { 0, 0, "" }, "A", 0, 0, 29, 222, "(261) 5 29 900 900 900 384 614 456 20 422 177 78 492 215 859 765 864 755 572 621 891 97 538", 0, "BWIPP BYTE1" }, - /* 62*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 0, 0, "" }, "A", 0, 0, 40, 290, "(520) 8 29 900 900 900 900 900 900 255 576 871 499 885 500 866 196 784 681 589 448 428 108", 0, "BWIPP BYTE1" }, - /* 63*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 1, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 111 100 17 53 923 1 111 104 903 71", 1, "H.4 example" }, - /* 64*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 1, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 111 100 17 53 923 1 111 104 903 71", 1, "H.4 example" }, - /* 65*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 4, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 928 111 103 17 53 923 1 111 104 922 772 754", 1, "H.4 example last segment" }, - /* 66*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 4, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 928 111 103 17 53 923 1 111 104 922 772 754", 1, "H.4 example last segment" }, - /* 67*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 2, 4, "" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 900 900 928 111 101 923 1 111 104 583", 1, "No ID" }, - /* 68*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 2, 4, "" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 900 900 928 111 101 923 1 111 104 583", 1, "No ID" }, - /* 69*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 99998, 99999, "12345" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 222 197 123 45 923 1 222 199 198", 1, "IDs '123', '045'" }, - /* 70*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 99998, 99999, "12345" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 222 197 123 45 923 1 222 199 198", 1, "IDs '123', '045'" }, - /* 71*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 1, 4, "017053" }, "A", 0, 0, 6, 99, "(24) 900 29 900 928 111 100 17 53 923 1 111 104 430 136 328 218 796 853 32 421 712 477 363", 1, "H.4 example" }, - /* 72*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, { 1, 4, "017053" }, "A", 0, 0, 6, 99, "(24) 900 29 900 928 111 100 17 53 923 1 111 104 430 136 328 218 796 853 32 421 712 477 363", 1, "H.4 example" }, - /* 73*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 4, 4, "017053" }, "A", 0, 0, 6, 99, "(24) 900 29 928 111 103 17 53 923 1 111 104 922 837 837 774 835 701 445 926 428 285 851 334", 1, "H.4 example last segment" }, - /* 74*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 3, 4, "" }, "A", 0, 0, 17, 38, "(17) 900 29 900 928 111 102 923 1 111 104 343 717 634 693 618 860 618", 1, "No ID" }, - /* 75*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, { 3, 4, "" }, "A", 0, 0, 17, 38, "(17) 900 29 900 928 111 102 923 1 111 104 343 717 634 693 618 860 618", 1, "No ID" }, - /* 76*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 99999, 99999, "100200300" }, "A", 0, 0, 11, 55, "(22) 900 29 928 222 198 100 200 300 923 1 222 199 922 693 699 895 719 637 154 478 399 638", 1, "IDs '100', '200', '300'" }, - /* 77*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, { 99999, 99999, "100200300" }, "A", 0, 0, 11, 55, "(22) 900 29 928 222 198 100 200 300 923 1 222 199 922 693 699 895 719 637 154 478 399 638", 1, "IDs '100', '200', '300'" }, - /* 78*/ { BARCODE_PDF417, DATA_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, "123456", 0, 0, 7, 103, "(14) 6 902 1 348 256 900 759 577 359 263 64 409 852 154", 0, "BWIPP BYTE" }, - /* 79*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, { 0, 0, "" }, "123456", 0, 0, 7, 103, "(14) 6 841 63 125 209 900 889 730 746 451 470 371 667 636", 1, "" }, - /* 80*/ { BARCODE_PDF417, DATA_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, "12345678901234567890", 0, 0, 9, 103, "(18) 10 902 211 358 354 304 269 753 190 900 327 902 163 367 231 586 808 731", 1, "" }, - /* 81*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, { 0, 0, "" }, "12345678901234567890", 0, 0, 9, 103, "(18) 10 902 211 358 354 304 269 753 190 900 327 902 163 367 231 586 808 731", 1, "" }, - /* 82*/ { BARCODE_PDF417, DATA_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 0, 12, 137, "(48) 40 902 491 81 137 450 302 67 15 174 492 862 667 475 869 12 434 685 326 422 57 117 339", 1, "" }, - /* 83*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, { 0, 0, "" }, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 0, 12, 137, "(48) 40 902 491 81 137 450 302 67 15 174 492 862 667 475 869 12 434 685 326 422 57 117 339", 1, "" }, + /* 57*/ { BARCODE_PDF417, UNICODE_MODE, -1, 2, -1, { 0, 0, "" }, "A", 0, 0, 5, 103, "(10) 2 29 478 509 903 637 74 490 760 21", 0, "BWIPP BYTE1" }, + /* 58*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 3, -1, { 0, 0, "" }, "A", 0, 0, 9, 103, "(18) 2 29 290 888 64 789 390 182 22 197 347 41 298 467 387 917 455 196", 0, "BWIPP BYTE1" }, + /* 59*/ { BARCODE_PDF417, UNICODE_MODE, -1, 3, -1, { 0, 0, "" }, "A", 0, 0, 9, 103, "(18) 2 29 290 888 64 789 390 182 22 197 347 41 298 467 387 917 455 196", 0, "BWIPP BYTE1" }, + /* 60*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 4, -1, { 0, 0, "" }, "A", 0, 0, 12, 120, "(36) 4 29 900 900 702 212 753 721 695 584 222 459 110 594 813 465 718 912 667 349 852 602", 0, "BWIPP BYTE1" }, + /* 61*/ { BARCODE_PDF417, UNICODE_MODE, -1, 4, -1, { 0, 0, "" }, "A", 0, 0, 12, 120, "(36) 4 29 900 900 702 212 753 721 695 584 222 459 110 594 813 465 718 912 667 349 852 602", 0, "BWIPP BYTE1" }, + /* 62*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 5, -1, { 0, 0, "" }, "A", 0, 0, 14, 154, "(70) 6 29 900 900 900 900 774 599 527 418 850 374 921 763 922 772 572 661 584 902 578 696", 0, "BWIPP BYTE1" }, + /* 63*/ { BARCODE_PDF417, UNICODE_MODE, -1, 5, -1, { 0, 0, "" }, "A", 0, 0, 14, 154, "(70) 6 29 900 900 900 900 774 599 527 418 850 374 921 763 922 772 572 661 584 902 578 696", 0, "BWIPP BYTE1" }, + /* 64*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 6, -1, { 0, 0, "" }, "A", 0, 0, 19, 188, "(133) 5 29 900 900 900 113 261 822 368 600 652 404 869 860 902 184 702 611 323 195 794 566", 0, "BWIPP BYTE1" }, + /* 65*/ { BARCODE_PDF417, UNICODE_MODE, -1, 6, -1, { 0, 0, "" }, "A", 0, 0, 19, 188, "(133) 5 29 900 900 900 113 261 822 368 600 652 404 869 860 902 184 702 611 323 195 794 566", 0, "BWIPP BYTE1" }, + /* 66*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 7, -1, { 0, 0, "" }, "A", 0, 0, 29, 222, "(261) 5 29 900 900 900 384 614 456 20 422 177 78 492 215 859 765 864 755 572 621 891 97 538", 0, "BWIPP BYTE1" }, + /* 67*/ { BARCODE_PDF417, UNICODE_MODE, -1, 7, -1, { 0, 0, "" }, "A", 0, 0, 29, 222, "(261) 5 29 900 900 900 384 614 456 20 422 177 78 492 215 859 765 864 755 572 621 891 97 538", 0, "BWIPP BYTE1" }, + /* 68*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 0, 0, "" }, "A", 0, 0, 40, 290, "(520) 8 29 900 900 900 900 900 900 255 576 871 499 885 500 866 196 784 681 589 448 428 108", 0, "BWIPP BYTE1" }, + /* 69*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 0, 0, "" }, "A", 0, 0, 40, 290, "(520) 8 29 900 900 900 900 900 900 255 576 871 499 885 500 866 196 784 681 589 448 428 108", 0, "BWIPP BYTE1" }, + /* 70*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 1, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 111 100 17 53 923 1 111 104 903 71", 1, "H.4 example" }, + /* 71*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 1, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 111 100 17 53 923 1 111 104 903 71", 1, "H.4 example" }, + /* 72*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 4, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 928 111 103 17 53 923 1 111 104 922 772 754", 1, "H.4 example last segment" }, + /* 73*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 4, 4, "017053" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 928 111 103 17 53 923 1 111 104 922 772 754", 1, "H.4 example last segment" }, + /* 74*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 2, 4, "" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 900 900 928 111 101 923 1 111 104 583", 1, "No ID" }, + /* 75*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 2, 4, "" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 900 900 928 111 101 923 1 111 104 583", 1, "No ID" }, + /* 76*/ { BARCODE_PDF417, UNICODE_MODE | FAST_MODE, -1, 8, -1, { 99998, 99999, "12345" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 222 197 123 45 923 1 222 199 198", 1, "IDs '123', '045'" }, + /* 77*/ { BARCODE_PDF417, UNICODE_MODE, -1, 8, -1, { 99998, 99999, "12345" }, "A", 0, 0, 41, 290, "(533) 21 29 900 900 900 900 900 900 900 900 900 900 928 222 197 123 45 923 1 222 199 198", 1, "IDs '123', '045'" }, + /* 78*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 1, 4, "017053" }, "A", 0, 0, 6, 99, "(24) 900 29 900 928 111 100 17 53 923 1 111 104 430 136 328 218 796 853 32 421 712 477 363", 1, "H.4 example" }, + /* 79*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, { 1, 4, "017053" }, "A", 0, 0, 6, 99, "(24) 900 29 900 928 111 100 17 53 923 1 111 104 430 136 328 218 796 853 32 421 712 477 363", 1, "H.4 example" }, + /* 80*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 4, 4, "017053" }, "A", 0, 0, 6, 99, "(24) 900 29 928 111 103 17 53 923 1 111 104 922 837 837 774 835 701 445 926 428 285 851 334", 1, "H.4 example last segment" }, + /* 81*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 3, 4, "" }, "A", 0, 0, 17, 38, "(17) 900 29 900 928 111 102 923 1 111 104 343 717 634 693 618 860 618", 1, "No ID" }, + /* 82*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, { 3, 4, "" }, "A", 0, 0, 17, 38, "(17) 900 29 900 928 111 102 923 1 111 104 343 717 634 693 618 860 618", 1, "No ID" }, + /* 83*/ { BARCODE_MICROPDF417, UNICODE_MODE | FAST_MODE, -1, -1, -1, { 99999, 99999, "100200300" }, "A", 0, 0, 11, 55, "(22) 900 29 928 222 198 100 200 300 923 1 222 199 922 693 699 895 719 637 154 478 399 638", 1, "IDs '100', '200', '300'" }, + /* 84*/ { BARCODE_MICROPDF417, UNICODE_MODE, -1, -1, -1, { 99999, 99999, "100200300" }, "A", 0, 0, 11, 55, "(22) 900 29 928 222 198 100 200 300 923 1 222 199 922 693 699 895 719 637 154 478 399 638", 1, "IDs '100', '200', '300'" }, + /* 85*/ { BARCODE_PDF417, DATA_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, "123456", 0, 0, 7, 103, "(14) 6 902 1 348 256 900 759 577 359 263 64 409 852 154", 0, "BWIPP BYTE" }, + /* 86*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, { 0, 0, "" }, "123456", 0, 0, 7, 103, "(14) 6 841 63 125 209 900 889 730 746 451 470 371 667 636", 1, "" }, + /* 87*/ { BARCODE_PDF417, DATA_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, "12345678901234567890", 0, 0, 9, 103, "(18) 10 902 211 358 354 304 269 753 190 900 327 902 163 367 231 586 808 731", 1, "" }, + /* 88*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, { 0, 0, "" }, "12345678901234567890", 0, 0, 9, 103, "(18) 10 902 211 358 354 304 269 753 190 900 327 902 163 367 231 586 808 731", 1, "" }, + /* 89*/ { BARCODE_PDF417, DATA_MODE | FAST_MODE, -1, -1, -1, { 0, 0, "" }, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 0, 12, 137, "(48) 40 902 491 81 137 450 302 67 15 174 492 862 667 475 869 12 434 685 326 422 57 117 339", 1, "" }, + /* 90*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, { 0, 0, "" }, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 0, 0, 12, 137, "(48) 40 902 491 81 137 450 302 67 15 174 492 862 667 475 869 12 434 685 326 422 57 117 339", 1, "" }, }; const int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_perf.c b/backend/tests/test_perf.c index e5610786..ac9a0dea 100644 --- a/backend/tests/test_perf.c +++ b/backend/tests/test_perf.c @@ -51,15 +51,23 @@ struct perf_item { }; static void test_perf(const testCtx *const p_ctx, const int default_iterations, const struct perf_item *data, - const int data_size) { - int debug = p_ctx->debug; + const int data_size, const char *const outfile) { + int debug = p_ctx->debug & 0xFFFF; + /* Hack (use "-d $((256 + (flg << 16)))") to select whether to time (`ZBarcode_Create()` always timed): + 1. `ZBarcode_Encode()` + 2. `ZBarcode_Buffer()` + 4. `ZBarcode_Buffer()` with `OUT_BUFFER_INTERMEDIATE` + 8. `ZBarcode_Print()` + 16. `ZBarcode_Print()` with `BARCODE_MEMORY_FILE` + with 0 meaning all */ + int flg = (p_ctx->debug >> 16) & 0xFF; int i, length, ret; struct zint_symbol *symbol = NULL; clock_t start; - clock_t total_create = 0, total_encode = 0, total_buffer = 0, total_buf_inter = 0, total_print = 0; - clock_t diff_create, diff_encode, diff_buffer, diff_buf_inter, diff_print; + clock_t total_create = 0, total_encode = 0, total_buffer = 0, total_buf_inter = 0, total_print = 0, total_memfile = 0; + clock_t diff_create, diff_encode, diff_buffer, diff_buf_inter, diff_print, diff_memfile; int comment_max = 0; const int iterations = p_ctx->arg ? p_ctx->arg : default_iterations; /* Use "-a N" to set iterations */ @@ -83,9 +91,10 @@ static void test_perf(const testCtx *const p_ctx, const int default_iterations, if (testContinue(p_ctx, i)) continue; - diff_create = diff_encode = diff_buffer = diff_buf_inter = diff_print = 0; + diff_create = diff_encode = diff_buffer = diff_buf_inter = diff_print = 0, diff_memfile = 0; for (j = 0; j < iterations; j++) { + int have_encoded = 0; start = clock(); symbol = ZBarcode_Create(); diff_create += clock() - start; @@ -113,55 +122,104 @@ static void test_perf(const testCtx *const p_ctx, const int default_iterations, data[i].option_1, data[i].option_2, data[i].option_3, -1 /*output_options*/, text, -1, debug); - start = clock(); - ret = ZBarcode_Encode(symbol, TCU(text), length); - diff_encode += clock() - start; - assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", - i, ret, data[i].ret, symbol->errtxt); + if (!flg || (flg & 1)) { + start = clock(); + ret = ZBarcode_Encode(symbol, TCU(text), length); + diff_encode += clock() - start; + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", + i, ret, data[i].ret, symbol->errtxt); + have_encoded = 1; + } + + if (!flg || (flg & 2)) { + if (!have_encoded) { + ret = ZBarcode_Encode(symbol, TCU(text), length); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", + i, ret, data[i].ret, symbol->errtxt); + have_encoded = 1; + } + start = clock(); + ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); + diff_buffer += clock() - start; + assert_zero(ret, "i:%d ZBarcode_Buffer ret %d != 0 (%s)\n", i, ret, symbol->errtxt); + } + + if (!flg || (flg & 4)) { + if (!have_encoded) { + ret = ZBarcode_Encode(symbol, TCU(text), length); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", + i, ret, data[i].ret, symbol->errtxt); + have_encoded = 1; + } + symbol->output_options |= OUT_BUFFER_INTERMEDIATE; + start = clock(); + ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); + diff_buf_inter += clock() - start; + assert_zero(ret, "i:%d ZBarcode_Buffer OUT_BUFFER_INTERMEDIATE ret %d != 0 (%s)\n", + i, ret, symbol->errtxt); + symbol->output_options &= ~OUT_BUFFER_INTERMEDIATE; /* Undo */ + } + + if (!flg || (flg & 8)) { + if (!have_encoded) { + ret = ZBarcode_Encode(symbol, TCU(text), length); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", + i, ret, data[i].ret, symbol->errtxt); + have_encoded = 1; + } + if (outfile && strlen(outfile) < 256) { + strcpy(symbol->outfile, outfile); + } + start = clock(); + ret = ZBarcode_Print(symbol, 0 /*rotate_angle*/); + diff_print += clock() - start; + assert_zero(ret, "i:%d ZBarcode_Print ret %d != 0 (%s)\n", i, ret, symbol->errtxt); + assert_zero(testUtilRemove(symbol->outfile), "i:%d testUtilRemove(%s) != 0\n", i, symbol->outfile); + } + + if (!flg || (flg & 16)) { + if (!have_encoded) { + ret = ZBarcode_Encode(symbol, TCU(text), length); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", + i, ret, data[i].ret, symbol->errtxt); + /*have_encoded = 1;*/ + } + symbol->output_options |= BARCODE_MEMORY_FILE; + if (outfile && strlen(outfile) < 256) { + strcpy(symbol->outfile, outfile); + } + start = clock(); + ret = ZBarcode_Print(symbol, 0 /*rotate_angle*/); + diff_memfile += clock() - start; + assert_zero(ret, "i:%d ZBarcode_Print BARCODE_MEMORY_FILE ret %d != 0 (%s)\n", i, ret, symbol->errtxt); + symbol->output_options &= ~BARCODE_MEMORY_FILE; /* Undo */ + } assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); - start = clock(); - ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); - diff_buffer += clock() - start; - assert_zero(ret, "i:%d ZBarcode_Buffer ret %d != 0 (%s)\n", i, ret, symbol->errtxt); - - symbol->output_options |= OUT_BUFFER_INTERMEDIATE; - start = clock(); - ret = ZBarcode_Buffer(symbol, 0 /*rotate_angle*/); - diff_buf_inter += clock() - start; - assert_zero(ret, "i:%d ZBarcode_Buffer OUT_BUFFER_INTERMEDIATE ret %d != 0 (%s)\n", - i, ret, symbol->errtxt); - symbol->output_options &= ~OUT_BUFFER_INTERMEDIATE; /* Undo */ - - start = clock(); - ret = ZBarcode_Print(symbol, 0 /*rotate_angle*/); - diff_print += clock() - start; - assert_zero(ret, "i:%d ZBarcode_Print ret %d != 0 (%s)\n", i, ret, symbol->errtxt); - assert_zero(testUtilRemove(symbol->outfile), "i:%d testUtilRemove(%s) != 0\n", i, symbol->outfile); - ZBarcode_Delete(symbol); } - printf(" %*s: encode % 8gms, buffer % 8gms, buf_inter % 8gms, print % 8gms, create % 8gms\n", + printf(" %*s: encode % 8gms, buffer % 8gms, buf_inter % 8gms, print % 8gms, memfile % 8gms, create % 8gms\n", comment_max, data[i].comment, TEST_PERF_TIME(diff_encode), TEST_PERF_TIME(diff_buffer), TEST_PERF_TIME(diff_buf_inter), - TEST_PERF_TIME(diff_print), TEST_PERF_TIME(diff_create)); + TEST_PERF_TIME(diff_print), TEST_PERF_TIME(diff_memfile), TEST_PERF_TIME(diff_create)); total_create += diff_create; total_encode += diff_encode; total_buffer += diff_buffer; total_buf_inter += diff_buf_inter; total_print += diff_print; + total_memfile += diff_memfile; } if (p_ctx->index == -1) { - printf(" %*s: encode % 8gms, buffer % 8gms, buf_inter % 8gms, print % 8gms, create % 8gms\n", + printf(" %*s: encode % 8gms, buffer % 8gms, buf_inter % 8gms, print % 8gms, memfile % 8gms, create % 8gms\n", comment_max, "totals", TEST_PERF_TIME(total_encode), TEST_PERF_TIME(total_buffer), TEST_PERF_TIME(total_buf_inter), - TEST_PERF_TIME(total_print), TEST_PERF_TIME(total_create)); + TEST_PERF_TIME(total_print), TEST_PERF_TIME(total_memfile), TEST_PERF_TIME(total_create)); } testFinish(); @@ -178,7 +236,7 @@ static void test_2of5(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_aztec(const testCtx *const p_ctx) { @@ -235,7 +293,7 @@ static void test_aztec(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 1 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_aztec_fast(const testCtx *const p_ctx) { @@ -292,7 +350,7 @@ static void test_aztec_fast(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 1 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_code11(const testCtx *const p_ctx) { @@ -304,7 +362,7 @@ static void test_code11(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_code128(const testCtx *const p_ctx) { @@ -317,7 +375,7 @@ static void test_code128(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_composite(const testCtx *const p_ctx) { @@ -344,7 +402,7 @@ static void test_composite(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 1 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_dmatrix(const testCtx *const p_ctx) { @@ -424,7 +482,7 @@ static void test_dmatrix(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_dotcode(const testCtx *const p_ctx) { @@ -442,7 +500,7 @@ static void test_dotcode(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 1 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_gridmtx(const testCtx *const p_ctx) { @@ -467,7 +525,7 @@ static void test_gridmtx(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 1 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_hanxin(const testCtx *const p_ctx) { @@ -509,7 +567,7 @@ static void test_hanxin(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 1 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_maxicode(const testCtx *const p_ctx) { @@ -532,7 +590,7 @@ static void test_maxicode(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 10 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_pdf417(const testCtx *const p_ctx) { @@ -582,7 +640,57 @@ static void test_pdf417(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); +} + +static void test_pdf417_fast(const testCtx *const p_ctx) { + + static const struct perf_item data[] = { + /* 0*/ { BARCODE_PDF417, FAST_MODE, -1, -1, -1, "1234567890", "", 0, 7, 103, "10 numerics" }, + /* 1*/ { BARCODE_PDF417, FAST_MODE, -1, -1, -1, + "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz&,:#-.$/+%*=^ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLM" + "NOPQRSTUVWXYZ;<>@[]_`~!||()?{}'123456789012345678901234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJK" + "LMNOPQRSTUVWXYZ12345678912345678912345678912345678900001234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFG" + "HIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234567" + "890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcde" + "fghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO", + "", 0, 43, 290, "960 chars, text/numeric" }, + /* 2*/ { BARCODE_PDF417, DATA_MODE, -1, -1, -1, + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240" + "\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240", + "", 0, 51, 358, "960 chars, byte" }, + /* 3*/ { BARCODE_PDF417, FAST_MODE, -1, -1, -1, + "BP2D+1.00+0005+FLE ESC BV+1.00+3.60*BX2D+1.00+0001+Casual shoes & apparel+90044030118100801265*D_2D+1.02+31351440315981+C910332+02032018+KXXXX CXXXX+UNIT 4 HXXX" + "XXXXX BUSINESS PARK++ST ALBANS+ST ALBANS++AL2 3TA+0001+000001+001+00000000+00++N+N+N+0000++++++N+++N*DS2D+1.01+0001+0001+90044030118100801265+++++07852389322+" + "+E*F_2D+1.00+0005*", + "", 0, 26, 222, "338 chars, text/numeric/byte" }, + }; + const int data_size = ARRAY_SIZE(data); + const int default_iterations = 5 * 1000; + + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_plessey(const testCtx *const p_ctx) { @@ -596,7 +704,7 @@ static void test_plessey(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_postal(const testCtx *const p_ctx) { @@ -609,7 +717,7 @@ static void test_postal(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 10 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_qr(const testCtx *const p_ctx) { @@ -662,7 +770,7 @@ static void test_qr(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_qr_fast(const testCtx *const p_ctx) { @@ -715,7 +823,7 @@ static void test_qr_fast(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_microqr(const testCtx *const p_ctx) { @@ -729,7 +837,7 @@ static void test_microqr(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 5 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); } static void test_upcean(const testCtx *const p_ctx) { @@ -749,7 +857,29 @@ static void test_upcean(const testCtx *const p_ctx) { const int data_size = ARRAY_SIZE(data); const int default_iterations = 10 * 1000; - test_perf(p_ctx, default_iterations, data, data_size); + test_perf(p_ctx, default_iterations, data, data_size, NULL /*outfile*/); +} + +static void test_gif(const testCtx *const p_ctx) { + + static const struct perf_item data[] = { + /* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, "123456ABCD", "", 0, 1, 123, "CODE128 10" }, + }; + const int data_size = ARRAY_SIZE(data); + const int default_iterations = 10 * 1000; + + test_perf(p_ctx, default_iterations, data, data_size, "out.gif"); +} + +static void test_tif(const testCtx *const p_ctx) { + + static const struct perf_item data[] = { + /* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, "123456ABCD", "", 0, 1, 123, "CODE128 10" }, + }; + const int data_size = ARRAY_SIZE(data); + const int default_iterations = 10 * 1000; + + test_perf(p_ctx, default_iterations, data, data_size, "out.tif"); } int main(int argc, char *argv[]) { @@ -767,12 +897,16 @@ int main(int argc, char *argv[]) { { "test_hanxin", test_hanxin }, { "test_maxicode", test_maxicode }, { "test_pdf417", test_pdf417 }, + { "test_pdf417_fast", test_pdf417_fast }, { "test_plessey", test_plessey }, { "test_postal", test_postal }, { "test_qr", test_qr }, { "test_qr_fast", test_qr_fast }, { "test_microqr", test_microqr }, { "test_upcean", test_upcean }, + + { "test_gif", test_gif }, + { "test_tif", test_tif }, }; testRun(argc, argv, funcs, ARRAY_SIZE(funcs)); diff --git a/backend/tests/test_tif.c b/backend/tests/test_tif.c index 33047610..ccd0e82a 100644 --- a/backend/tests/test_tif.c +++ b/backend/tests/test_tif.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2020-2025 Robin Stuart + Copyright (C) 2020-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -34,7 +34,7 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf); -/* For overview when debugging: ./test_tiff -f pixel_plot -d 5 */ +/* For overview when debugging: ./test_tif -f pixel_plot -d 5 */ static void test_pixel_plot(const testCtx *const p_ctx) { int debug = p_ctx->debug; diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 42e7095b..8ef2989e 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -32,7 +32,7 @@ * Copyright (C) 2006-2017 Kentaro Fukuchi */ /* Due to above: */ -/* SPDX-License-Identifier: LGPL-2.1+ */ +/* SPDX-License-Identifier: LGPL-2.0-or-later */ #ifdef _WIN32 #include diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index 530a05e60cbf1a4bffd14bb5949868836788fb58..8b468780f8fa5f5f38c4e8a6b5805dbfb5b32894 100644 GIT binary patch literal 157340 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 literal 157128 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
qt~H@1O&-2FemC*7Rlj? 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 XD;9XQ^EsR|u0gse9d?4q4X6XbKsvmzx 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�_Qm2f)YPl&-} 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 diff --git a/backend/tests/tools/gen_test_tab.php b/backend/tests/tools/gen_test_tab.php index 07922f35..7a2b238e 100644 --- a/backend/tests/tools/gen_test_tab.php +++ b/backend/tests/tools/gen_test_tab.php @@ -2,7 +2,7 @@ /* Generate lookup table from unicode.org mapping file (SHIFTJIS.TXT by default). */ /* libzint - the open source barcode library - Copyright (C) 2019-2022 Robin Stuart + Copyright (C) 2019-2026 Robin Stuart */ /* To create backend/tests/test_sjis_tab.h (from the project root directory): * @@ -18,7 +18,7 @@ * * To create backend/tests/test_gb18030_tab.h (note that backend/tests/tools/data/GB18030.TXT * will have to be downloaded first from https://haible.de/bruno/charsets/conversion-tables/GB18030.html - * using the version jdk-1.4.2/GB18030.TXT): + * using the version libiconv-1.11/GB18030.TXT): * * php backend/tests/tools/gen_test_tab.php -f GB18030.TXT -s gb18030_tab * diff --git a/backend/tif.c b/backend/tif.c index 8bc6c209..4e49a27c 100644 --- a/backend/tif.c +++ b/backend/tif.c @@ -38,7 +38,6 @@ #include "filemem.h" #include "output.h" #include "tif.h" -#include "tif_lzw.h" /* PhotometricInterpretation */ #define TIF_PMI_WHITEISZERO 0 @@ -51,13 +50,13 @@ #define TIF_NO_COMPRESSION 1 #define TIF_LZW 5 -static void to_color_map(const unsigned char rgb[4], tiff_color_t *color_map_entry) { +static void tif_to_color_map(const unsigned char rgb[4], tiff_color_t *color_map_entry) { color_map_entry->red = (rgb[0] << 8) | rgb[0]; color_map_entry->green = (rgb[1] << 8) | rgb[1]; color_map_entry->blue = (rgb[2] << 8) | rgb[2]; } -static void to_cmyk(const char *colour, unsigned char *cmyk) { +static void tif_to_cmyk(const char *colour, unsigned char *cmyk) { int cyan, magenta, yellow, black; unsigned char alpha; @@ -69,6 +68,134 @@ static void to_cmyk(const char *colour, unsigned char *cmyk) { cmyk[4] = alpha; } +/* LZW stuff - see `tif_lzw_compress()` below */ + +#define TIF_LZW_CLEAR_CODE 256 +#define TIF_LZW_EOI_CODE 257 /* EndOfInformation */ +#define TIF_LZW_MIN_BITS 9 +#define TIF_LZW_MAX_BITS 12 +#define TIF_LZW_TABLE_SIZE 4096 /* (1 << TIF_LZW_MAX_BITS) */ + +/* Write `code` to output `fmp` in 8-bit batches, returning updated `bytes_put` */ +static int tif_lzw_putCode(struct filemem *fmp, const int code, const int bitsPerCode, int *p_bits, int bytes_put) { + int bits = *p_bits & 0x0FFF; /* Actual bits in buffer */ + int num_bits = (*p_bits >> 16) & 0x0FFF; /* No. of bits in buffer */ + + bits = (bits << bitsPerCode) | code; + + for (num_bits += bitsPerCode; num_bits >= 8; num_bits -= 8) { + zint_fm_putc((bits >> (num_bits - 8)) & 0xFF, fmp); + bytes_put++; + } + + bits &= (1 << num_bits) - 1; + + *p_bits = (num_bits << 16) | bits; + + return bytes_put; +} + +/* LZW compression adapted from TwelveMonkeys ImageIO's `LZWEncoder::encode()`, returns no. of bytes written */ +/* Copyright (c) 2015, Harald Kuhr */ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* Tree algorithm from "LZW Compression Used to Encode/Decode a GIF File", Bob Montgomery, 1988, see + https://gingko.homeip.net/docs/file_formats/lzwgif.html#bob + "manuscript in public domain" according to "Encyclopedia of Graphics File Formats" (2nd edition, 1996) + by James D. Murray and William vanRyper, Chapter 9 "Data Compression", p.178 +*/ +static int tif_lzw_compress(struct filemem *fmp, const unsigned char *bp, const unsigned int blen) { + short suffixes[TIF_LZW_TABLE_SIZE] = {0}; /* "shade[]" in Montgomery diagram */ + /* A child is made up of a parent (or prefix) code plus a suffix byte + and siblings are strings with a common parent (or prefix) and different suffix bytes */ + short children[TIF_LZW_TABLE_SIZE] = {0}; /* "child[]" in Montgomery diagram */ + short siblings[TIF_LZW_TABLE_SIZE] = {0}; /* "sib[]" in Montgomery diagram */ + + int parent; + int bitsPerCode = TIF_LZW_MIN_BITS; /* "codesize" in Montgomery diagram, goes from 9 to 12 */ + int nextValidCode = TIF_LZW_EOI_CODE + 1; /* "nvc" - next available slot in `suffixes` */ + int maxCode = (1 << bitsPerCode) - 1; /* If `nextValidCode` hits this, `bitsPerCode` will have to be adjusted */ + + int bits = 0; /* Buffer for partial codes, top 16-bits no. of bits, bottom the bits */ + int bytes_put = 0; /* No. of bytes output */ + + const unsigned char *const be = bp + blen; + + assert(blen != 0); + + /* Init */ + bytes_put = tif_lzw_putCode(fmp, TIF_LZW_CLEAR_CODE & maxCode, bitsPerCode, &bits, bytes_put); + parent = *bp++; /* Parent is 1st code */ + + while (bp < be) { + const int value = *bp++; /* "color" in Montgomery diagram */ + int child = children[parent]; + + /* Does parent have a child? */ + if (child) { + /* Is child right value? */ + if (suffixes[child] == value) { + parent = child; /* Make new parent */ + } else { + int sibling = child; /* Makes loop easier */ + /* Try siblings */ + for (;;) { + /* Does sibling have a sibling? */ + if (siblings[sibling]) { + sibling = siblings[sibling]; + /* Is sibling right value? */ + if (suffixes[sibling] == value) { + parent = sibling; /* Make new parent */ + break; + } + } else { + /* Create one */ + siblings[sibling] = (short) nextValidCode; + goto update_child; /* Hack to avoid having func with large no. of args */ + } + } + } + /* Parent does not have a child */ + } else { + /* Create one */ + children[parent] = (short) nextValidCode; +update_child: + suffixes[nextValidCode] = (short) value; + bytes_put = tif_lzw_putCode(fmp, parent & maxCode, bitsPerCode, &bits, bytes_put); /* Put the code */ + parent = value; + if (++nextValidCode > maxCode) { + /* Adjust `bitsPerCode` (code size) if required */ + if (bitsPerCode == TIF_LZW_MAX_BITS) { + /* Signal reset by writing Clear code */ + bytes_put = tif_lzw_putCode(fmp, TIF_LZW_CLEAR_CODE & maxCode, bitsPerCode, &bits, bytes_put); + + /* Reset tables */ + memset(children, 0, sizeof(short) * TIF_LZW_TABLE_SIZE); + memset(siblings, 0, sizeof(short) * TIF_LZW_TABLE_SIZE); + bitsPerCode = TIF_LZW_MIN_BITS; + nextValidCode = TIF_LZW_EOI_CODE + 1; + } else { + /* Increase code size */ + bitsPerCode++; + } + maxCode = (1 << bitsPerCode) - 1; + } + } + } + + /* Write EOI when we are done */ + bytes_put = tif_lzw_putCode(fmp, parent & maxCode, bitsPerCode, &bits, bytes_put); + bytes_put = tif_lzw_putCode(fmp, TIF_LZW_EOI_CODE & maxCode, bitsPerCode, &bits, bytes_put); + + /* Flush partial codes */ + if (bits) { + const int num_bits = (bits >> 16) & 0x0FFF; + zint_fm_putc((bits << (8 - num_bits)) & 0xFF, fmp); /* Zero pad */ + bytes_put++; + } + + return bytes_put; +} + /* TIFF Revision 6.0 https://www.adobe.io/content/dam/udp/en/open/standards/tiff/TIFF6.pdf */ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char *pixelbuf) { unsigned char fg[4], bg[4]; @@ -94,7 +221,6 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char struct filemem *const fmp = &fm; const unsigned char *pb; int compression = TIF_NO_COMPRESSION; - tif_lzw_state lzw_state; long file_pos; const int output_to_stdout = symbol->output_options & BARCODE_STDOUT; uint32_t *strip_offset; @@ -134,9 +260,9 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char palette[i][4] = fg[3]; } map['0'] = 8; - to_cmyk(symbol->bgcolour, palette[8]); + tif_to_cmyk(symbol->bgcolour, palette[8]); map['1'] = 9; - to_cmyk(symbol->fgcolour, palette[9]); + tif_to_cmyk(symbol->fgcolour, palette[9]); pmi = TIF_PMI_SEPARATED; bits_per_sample = 8; @@ -171,7 +297,7 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char if (fg[3] == 0xff && bg[3] == 0xff) { /* If no alpha */ pmi = TIF_PMI_PALETTE_COLOR; for (i = 0; i < 10; i++) { - to_color_map(palette[i], &color_map[i]); + tif_to_color_map(palette[i], &color_map[i]); } bits_per_sample = 4; samples_per_pixel = 1; @@ -188,9 +314,9 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char } else { /* fg/bg only */ if (symbol->output_options & CMYK_COLOUR) { map['0'] = 0; - to_cmyk(symbol->bgcolour, palette[0]); + tif_to_cmyk(symbol->bgcolour, palette[0]); map['1'] = 1; - to_cmyk(symbol->fgcolour, palette[1]); + tif_to_cmyk(symbol->fgcolour, palette[1]); pmi = TIF_PMI_SEPARATED; bits_per_sample = 8; @@ -227,7 +353,7 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char pmi = TIF_PMI_PALETTE_COLOR; for (i = 0; i < 2; i++) { - to_color_map(palette[i], &color_map[i]); + tif_to_color_map(palette[i], &color_map[i]); } if (fg[3] == 0xff && bg[3] == 0xff) { /* If no alpha */ bits_per_sample = 4; @@ -316,7 +442,6 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char } if (!output_to_stdout) { compression = TIF_LZW; - tif_lzw_init(&lzw_state); } /* Header */ @@ -370,13 +495,13 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char if (strip_row == rows_per_strip || (strip == strip_count - 1 && strip_row == rows_last_strip)) { /* End of strip */ if (compression == TIF_LZW) { + #ifndef NDEBUG file_pos = zint_fm_tell(fmp); - if (!tif_lzw_encode(&lzw_state, fmp, strip_buf, bytes_put)) { /* Only fails if can't malloc */ - tif_lzw_cleanup(&lzw_state); - (void) zint_fm_close(fmp, symbol); - return z_errtxt(ZINT_ERROR_MEMORY, symbol, 673, "Insufficient memory for TIF LZW hash table"); - } - bytes_put = (unsigned int) (zint_fm_tell(fmp) - file_pos); + #endif + bytes_put = tif_lzw_compress(fmp, strip_buf, bytes_put); + #ifndef NDEBUG + assert(bytes_put == (unsigned int) (zint_fm_tell(fmp) - file_pos)); + #endif if (bytes_put != strip_bytes[strip]) { const int diff = bytes_put - strip_bytes[strip]; strip_bytes[strip] = bytes_put; @@ -402,8 +527,6 @@ INTERNAL int zint_tif_pixel_plot(struct zint_symbol *symbol, const unsigned char } if (compression == TIF_LZW) { - tif_lzw_cleanup(&lzw_state); - file_pos = zint_fm_tell(fmp); zint_fm_seek(fmp, 4, SEEK_SET); free_memory = file_pos; diff --git a/backend/tif_lzw.h b/backend/tif_lzw.h deleted file mode 100644 index 02e74615..00000000 --- a/backend/tif_lzw.h +++ /dev/null @@ -1,382 +0,0 @@ -/* tif_lzw.h - LZW compression for TIFF */ -/* - libzint - the open source barcode library - Copyright (C) 2021-2025 Robin Stuart - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. Neither the name of the project nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - */ -/* SPDX-License-Identifier: BSD-3-Clause */ - -#ifndef Z_TIF_LZW_H -#define Z_TIF_LZW_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * Adapted from TIFF Library 4.2.0 libtiff/tif_lzw.c */ -/* - * Copyright (c) 1988-1997 Sam Leffler - * Copyright (c) 1991-1997 Silicon Graphics, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software and - * its documentation for any purpose is hereby granted without fee, provided - * that (i) the above copyright notices and this permission notice appear in - * all copies of the software and related documentation, and (ii) the names of - * Sam Leffler and Silicon Graphics may not be used in any advertising or - * publicity relating to the software without the specific, prior written - * permission of Sam Leffler and Silicon Graphics. - * - * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR - * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, - * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF - * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - */ -/* - * TIFF Library. - * Rev 5.0 Lempel-Ziv & Welch Compression Support - * - * This code is derived from the compress program whose code is - * derived from software contributed to Berkeley by James A. Woods, - * derived from original work by Spencer Thomas and Joseph Orost. - * - * The original Berkeley copyright notice appears below in its entirety. - */ -/* - * Copyright (c) 1985, 1986 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * James A. Woods, derived from original work by Spencer Thomas - * and Joseph Orost. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#define MAXCODE(n) ((1L << (n)) - 1) - -/* - * The TIFF spec specifies that encoded bit - * strings range from 9 to 12 bits. - */ -#define BITS_MIN 9 /* start with 9 bits */ -#define BITS_MAX 12 /* max of 12 bit strings */ -/* predefined codes */ -#define CODE_CLEAR 256 /* code to clear string table */ -#define CODE_EOI 257 /* end-of-information code */ -#define CODE_FIRST 258 /* first free code entry */ -#define CODE_MAX MAXCODE(BITS_MAX) -#define HSIZE 9001L /* 91% occupancy */ -#define HSHIFT (13 - 8) - -/* - * Encoding-specific state. - */ -typedef uint16_t tif_lzw_hcode; /* codes fit in 16 bits */ -typedef struct { - long hash; - tif_lzw_hcode code; -} tif_lzw_hash; - -#define CHECK_GAP 10000 /* ratio check interval */ - -/* - * State block. - */ -typedef struct { - tif_lzw_hash *enc_hashtab; /* kept separate for small machines */ -} tif_lzw_state; - -/* - * LZW Encoding. - */ - -/* - * Reset encoding hash table. - */ -static void tif_lzw_cl_hash(tif_lzw_state *sp) { - register tif_lzw_hash *hp = &sp->enc_hashtab[HSIZE - 1]; - register long i = HSIZE - 8; - - do { - i -= 8; - hp[-7].hash = -1; - hp[-6].hash = -1; - hp[-5].hash = -1; - hp[-4].hash = -1; - hp[-3].hash = -1; - hp[-2].hash = -1; - hp[-1].hash = -1; - hp[ 0].hash = -1; - hp -= 8; - } while (i >= 0); - - for (i += 8; i > 0; i--, hp--) { - hp->hash = -1; - } -} - -#define CALCRATIO(sp, rat) { \ - if (incount > 0x007fffff) { /* NB: shift will overflow */ \ - rat = outcount >> 8; \ - rat = (rat == 0 ? 0x7fffffff : incount / rat); \ - } else \ - rat = (incount << 8) / outcount; \ -} - -/* Explicit 0xff masking to make icc -check=conversions happy */ -#define PutNextCode(op_fmp, c) { \ - nextdata = (nextdata << nbits) | c; \ - nextbits += nbits; \ - zint_fm_putc((nextdata >> (nextbits - 8)) & 0xff, op_fmp); \ - nextbits -= 8; \ - if (nextbits >= 8) { \ - zint_fm_putc((nextdata >> (nextbits - 8)) & 0xff, op_fmp); \ - nextbits -= 8; \ - } \ - outcount += nbits; \ -} - -/* - * Encode a chunk of pixels. - * - * Uses an open addressing double hashing (no chaining) on the - * prefix code/next character combination. We do a variant of - * Knuth's algorithm D (vol. 3, sec. 6.4) along with G. Knott's - * relatively-prime secondary probe. Here, the modular division - * first probe is gives way to a faster exclusive-or manipulation. - * Also do block compression with an adaptive reset, whereby the - * code table is cleared when the compression ratio decreases, - * but after the table fills. The variable-length output codes - * are re-sized at this point, and a CODE_CLEAR is generated - * for the decoder. - */ -static int tif_lzw_encode(tif_lzw_state *sp, struct filemem *op_fmp, const unsigned char *bp, int cc) { - register long fcode; - register tif_lzw_hash *hp; - register int h, c; - tif_lzw_hcode ent; - long disp; - - int nbits; /* # of bits/code */ - int maxcode; /* maximum code for nbits */ - int free_ent; /* next free entry in hash table */ - unsigned long nextdata; /* next bits of i/o */ - long nextbits; /* # of valid bits in nextdata */ - long checkpoint; /* point at which to clear table */ - long ratio; /* current compression ratio */ - long incount; /* (input) data bytes encoded */ - long outcount; /* encoded (output) bytes */ - - /* - * Reset encoding state at the start of a strip. - */ - if (sp->enc_hashtab == NULL) { - sp->enc_hashtab = (tif_lzw_hash *) malloc(HSIZE * sizeof(tif_lzw_hash)); - if (sp->enc_hashtab == NULL) { - return 0; - } - } - - tif_lzw_cl_hash(sp); /* clear hash table */ - - nbits = BITS_MIN; - maxcode = MAXCODE(BITS_MIN); - free_ent = CODE_FIRST; - nextdata = 0; - nextbits = 0; - checkpoint = CHECK_GAP; - ratio = 0; - incount = 0; - outcount = 0; - - ent = (tif_lzw_hcode) -1; - - if (cc > 0) { - PutNextCode(op_fmp, CODE_CLEAR); - ent = *bp++; cc--; incount++; - } - while (cc > 0) { - c = *bp++; cc--; incount++; - fcode = ((long)c << BITS_MAX) + ent; - h = (c << HSHIFT) ^ ent; /* xor hashing */ -#ifdef _WINDOWS - /* - * Check hash index for an overflow. - */ - if (h >= HSIZE) { - h -= HSIZE; - } -#endif - hp = &sp->enc_hashtab[h]; - if (hp->hash == fcode) { - ent = hp->code; - continue; - } - if (hp->hash >= 0) { - /* - * Primary hash failed, check secondary hash. - */ - disp = HSIZE - h; - if (h == 0) { - disp = 1; - } - do { - /* - * Avoid pointer arithmetic because of - * wraparound problems with segments. - */ - if ((h -= disp) < 0) { - h += HSIZE; - } - hp = &sp->enc_hashtab[h]; - if (hp->hash == fcode) { - ent = hp->code; - goto hit; - } - } while (hp->hash >= 0); - } - /* - * New entry, emit code and add to table. - */ - PutNextCode(op_fmp, ent); - ent = (tif_lzw_hcode) c; - hp->code = (tif_lzw_hcode) (free_ent++); - hp->hash = fcode; - if (free_ent == CODE_MAX - 1) { - /* table is full, emit clear code and reset */ - tif_lzw_cl_hash(sp); - ratio = 0; - incount = 0; - outcount = 0; - free_ent = CODE_FIRST; - PutNextCode(op_fmp, CODE_CLEAR); - nbits = BITS_MIN; - maxcode = MAXCODE(BITS_MIN); - } else { - /* - * If the next entry is going to be too big for - * the code size, then increase it, if possible. - */ - if (free_ent > maxcode) { - nbits++; - assert(nbits <= BITS_MAX); - maxcode = (int) MAXCODE(nbits); - } else if (incount >= checkpoint) { - long rat; - /* - * Check compression ratio and, if things seem - * to be slipping, clear the hash table and - * reset state. The compression ratio is a - * 24+8-bit fractional number. - */ - checkpoint = incount + CHECK_GAP; - CALCRATIO(sp, rat); - if (rat <= ratio) { - tif_lzw_cl_hash(sp); - ratio = 0; - incount = 0; - outcount = 0; - free_ent = CODE_FIRST; - PutNextCode(op_fmp, CODE_CLEAR); - nbits = BITS_MIN; - maxcode = MAXCODE(BITS_MIN); - } else { - ratio = rat; - } - } - } - hit: - ; - } - - /* - * Finish off an encoded strip by flushing the last - * string and tacking on an End Of Information code. - */ - if (ent != (tif_lzw_hcode) -1) { - - PutNextCode(op_fmp, ent); - free_ent++; - - if (free_ent == CODE_MAX - 1) { - /* table is full, emit clear code and reset */ - outcount = 0; - PutNextCode(op_fmp, CODE_CLEAR); - nbits = BITS_MIN; - } else { - /* - * If the next entry is going to be too big for - * the code size, then increase it, if possible. - */ - if (free_ent > maxcode) { - nbits++; - assert(nbits <= BITS_MAX); - } - } - } - PutNextCode(op_fmp, CODE_EOI); - /* Explicit 0xff masking to make icc -check=conversions happy */ - if (nextbits > 0) { - zint_fm_putc((nextdata << (8 - nextbits)) & 0xff, op_fmp); - } - - return 1; -} - -static void tif_lzw_cleanup(tif_lzw_state *sp) { - if (sp->enc_hashtab) { - free(sp->enc_hashtab); - } -} - -static void tif_lzw_init(tif_lzw_state *sp) { - sp->enc_hashtab = NULL; -} - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -/* vim: set ts=4 sw=4 et : */ -#endif /* Z_TIF_LZW_H */ diff --git a/backend/tools/gen_eci_mb_h.php b/backend/tools/gen_eci_mb_h.php index 20909671..844f578c 100644 --- a/backend/tools/gen_eci_mb_h.php +++ b/backend/tools/gen_eci_mb_h.php @@ -2,7 +2,7 @@ /* Generate ECI multibyte tables from unicode.org mapping files */ /* libzint - the open source barcode library - Copyright (C) 2022-2025 Robin Stuart + Copyright (C) 2022-2026 Robin Stuart */ /* SPDX-License-Identifier: BSD-3-Clause */ /* @@ -12,7 +12,7 @@ * * NOTE: backend/tools/data/GB18030.TXT will have to be downloaded first from the tarball * https://haible.de/bruno/charsets/conversion-tables/GB18030.tar.bz2 - * using the version jdk-1.4.2/GB18030.TXT + * using the version libiconv-1.11/GB18030.TXT * * NOTE: tools/data/GB2312.TXT will have to be downloaded first from the tarball * https://haible.de/bruno/charsets/conversion-tables/GB2312.tar.bz2 @@ -48,6 +48,7 @@ $copyright_text = <<<'EOD' SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ EOD; @@ -573,7 +574,7 @@ file_put_contents($out_dirname . '/gbk.h', implode("\n", $out) . "\n"); $out = array(); -out_header($out, 'gb18030', 'GB 18030-2005', 'jdk-1.4.2/GB18030.TXT', 2016, +out_header($out, 'gb18030', 'GB 18030-2005', 'libiconv-1.11/GB18030.TXT', 2016, '(see https://haible.de/bruno/charsets/conversion-tables/GB18030.tar.bz2)'); $file = $data_dirname . '/' . 'GB18030.TXT'; diff --git a/backend/tools/gen_eci_sb_h.php b/backend/tools/gen_eci_sb_h.php index f7c24a12..489cf178 100644 --- a/backend/tools/gen_eci_sb_h.php +++ b/backend/tools/gen_eci_sb_h.php @@ -2,7 +2,7 @@ /* Generate ECI single-byte tables & routines from unicode.org mapping files */ /* libzint - the open source barcode library - Copyright (C) 2022-2025 Robin Stuart + Copyright (C) 2022-2026 Robin Stuart */ /* SPDX-License-Identifier: BSD-3-Clause */ /* @@ -26,7 +26,7 @@ $head = <<<'EOD' "https://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP125*.TXT" */ /* libzint - the open source barcode library - Copyright (C) 2021-2025 Robin Stuart + Copyright (C) 2021-2026 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -54,6 +54,7 @@ $head = <<<'EOD' SUCH DAMAGE. */ /* SPDX-License-Identifier: BSD-3-Clause */ +/* SPDX-License-Identifier: Unicode-3.0 */ #ifndef Z_ECI_SB_H #define Z_ECI_SB_H diff --git a/backend/zint.h b/backend/zint.h index a4974159..30f3f790 100644 --- a/backend/zint.h +++ b/backend/zint.h @@ -212,7 +212,7 @@ extern "C" { #define BARCODE_DATAMATRIX 71 /* Data Matrix (ECC200) */ #define BARCODE_EAN14 72 /* EAN-14 */ #define BARCODE_VIN 73 /* Vehicle Identification Number */ -#define BARCODE_CODABLOCKF 74 /* Codablock-F */ +#define BARCODE_CODABLOCKF 74 /* Codablock F */ #define BARCODE_NVE18 75 /* NVE-18 (SSCC-18) */ #define BARCODE_JAPANPOST 76 /* Japanese Postal Code */ #define BARCODE_KOREAPOST 77 /* Korea Post */ @@ -244,7 +244,7 @@ extern "C" { #define BARCODE_HIBC_QR 104 /* HIBC QR Code */ #define BARCODE_HIBC_PDF 106 /* HIBC PDF417 */ #define BARCODE_HIBC_MICPDF 108 /* HIBC MicroPDF417 */ -#define BARCODE_HIBC_BLOCKF 110 /* HIBC Codablock-F */ +#define BARCODE_HIBC_BLOCKF 110 /* HIBC Codablock F */ #define BARCODE_HIBC_AZTEC 112 /* HIBC Aztec Code */ /* Tbarcode 10 codes */ diff --git a/debian/changelog b/debian/changelog index e3e78c38..156fc34a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,19 +1,29 @@ -zint (2.6.0) stable; urgency=medium +zint (2.16.0.9-1) unstable; urgency=low + + * Updated using https://salsa.debian.org/debian/zint as template, props + Dmitry Smirnov + * Ticket #147, props John Crisp + * TODO: enable building with the GS1 Syntax Engine + * TODO: "libzint2.16.symbols" file? + + -- Robin Stuart Wed, 18 Mar 2026 13:00:00 +0000 + +zint (2.6.0-1) stable; urgency=medium * Update to Qt5 * Output to EMF and TIF - + -- Robin Stuart Fri, 12 May 2017 09:00:00 +0000 zint (2.5.1) UNRELEASED; urgency=medium * Include support for DotCode * Include support for Han Xin (Chinese Sensible) code. - * Reinstate Codablock-F support. + * Reinstate Codablock F support. * Automated ECI pre-processing. * Output to BMP, GIF and PCX. * Huge code review and numerous bugfixes - * DMRE support and DataMatrix bugfixes + * DMRE support and DataMatrix bugfixes -- Robin Stuart Fri, 13 Jan 2017 20:33:54 +0000 @@ -21,7 +31,7 @@ zint (2.4.1) unstable; urgency=low * Update and review of files required by Debian including changelog. - -- Robin Stuart Sat, 02 Oct 2010 09:26:00 +0000 + -- Robin Stuart Sat, 02 Oct 2010 09:26:00 +0000 zint (2.4) unstable; urgency=low @@ -32,7 +42,7 @@ zint (2.4) unstable; urgency=low * Reinstated escape character input. * Simplification of Barcode Studio. - -- Robin Stuart Sat, 02 Oct 2010 05:00:00 +0000 + -- Robin Stuart Sat, 02 Oct 2010 05:00:00 +0000 zint (2.3.2) unstable; urgency=low @@ -43,18 +53,18 @@ zint (2.3.2) unstable; urgency=low * Also minor bugfixes for ISBN and Aztec Code, and added some small features like a --square option in the CLI. - -- Robin Stuart Sat, 02 Oct 2010 04:00:00 +0000 + -- Robin Stuart Sat, 02 Oct 2010 04:00:00 +0000 zint (2.3.1) unstable; urgency=low - * Removed Codablock-F. + * Removed Codablock F. * Redesigned scale function so that human readable text and Maxicode symbols can be scaled consistently. * Corrected encoding bugs with Code 128/Code 16k and Data Matrix ECC 050. * Added --notext option to CLI. - -- Robin Stuart Sat, 02 Oct 2010 03:00:00 +0000 + -- Robin Stuart Sat, 02 Oct 2010 03:00:00 +0000 zint (2.3) unstable; urgency=low @@ -68,7 +78,7 @@ zint (2.3) unstable; urgency=low * Advanced Barcode Studio version number to match library version number. - -- Robin Stuart Sat, 02 Oct 2010 02:00:00 +0000 + -- Robin Stuart Sat, 02 Oct 2010 02:00:00 +0000 zint (2.2.2) unstable; urgency=low @@ -86,8 +96,8 @@ zint (2.2.1-1) unstable; urgency=low zint (2.2.1) unstable; urgency=low - * bug fixes. Affected symbologies are Data Matrix, - USPS One Code, Aztec Code, PDF417, MicroPDF and Composite symbols. + * bug fixes. Affected symbologies are Data Matrix, + USPS One Code, Aztec Code, PDF417, MicroPDF and Composite symbols. If you use any of these then please update. -- BogDan Vatra Fri, 07 Aug 2009 15:04:12 +0300 diff --git a/debian/compat b/debian/compat deleted file mode 100644 index f11c82a4..00000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 \ No newline at end of file diff --git a/debian/control b/debian/control index 0b1d6bd2..74e4d2a7 100644 --- a/debian/control +++ b/debian/control @@ -1,42 +1,119 @@ Source: zint -Section: libs +Section: graphics Priority: optional Maintainer: Robin Stuart -Build-Depends: debhelper (>= 9), cmake, libpng12-dev, libqt4-dev -Standards-Version: 3.9.1 -Homepage: http://www.zint.org.uk/ +Build-Depends: debhelper-compat (= 12) + ,cmake + ,libpng-dev + ,libqt5svg5-dev + ,qtbase5-dev + ,qttools5-dev +Standards-Version: 4.6.2 +Homepage: https://www.zint.org.uk/ +Rules-Requires-Root: no Package: zint -Section: libs Architecture: any -Description: A library for encoding data in barcode symbols. - Zint is an Open Source barcode encoding and image generating library. - It currently features support for over 50 symbologies including - QR Code, Data Matrix, Aztec Code, Code 128, UPC/EAN, HIBC, GS1 DataBar and many others. - Also included are Unicode translation for symbologies which support Latin-1 and Kanji character sets, - full GS1 data support including verification and automated insertion of FNC1 characters and - support for encoding binary data including NULL (ASCII 0) characters. - -Package: zint-devel -Section: libdevel -Architecture: any -Depends: zint (= ${binary:Version}) -Description: Zint development files - This package contains development files for the Zint barcode encoding - library. +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: command line utility for encoding data in barcode symbols + Zint is a barcode generator library. It features support for over 50 + symbologies, including Australian Post, Aztec Code & Runes, BC412, + Channel, Codabar, Codablock F, Code 11, Code 128, Code 16K, Code 2 of + 5 (IATA, Interleaved, Data Logic, ITF-14, Deutsche Post Leitcode & + Identcode), Code 32 (Italian Pharmacode), Code 39 & Code 39 Extended, + Code 49, Code 93, Code One, DAFT, Data Matrix (incl. DMRE), DotCode, + DPD, Dutch Post KIX, EAN, FIM, Flattermarken, Grid Matrix, GS1 DataBar + (incl. stacked & GS1 Composite symbols), GS1-128, Han Xin, HIBC, ISBN, + Japan Post, Korea Post, LOGMARS, MaxiCode, NVE-18 (SSCC-18), PDF417 & + MicroPDF417, Pharmacode, PLANET, POSTNET, Plessey (MSI & UK), PZN, QR + Code, Micro QR & rMQR, Royal Mail RM4SCC & Mailmark, Telepen, + Ultracode, UPC-A, UPC-E, UPNQR, UPU S10, USPS Intelligent Mail and + VIN. + . + Also included are Unicode translation for all ECI character sets, full + GS1 data support including verification and automated insertion of + FNC1 characters and support for encoding binary data. Output can be + saved as BMP, EMF, EPS, GIF, PCX, PNG, SVG and TIFF. + . + This package contains Zint Barcode Generator (command line utility). Package: zint-qt +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Zint Barcode Studio, a Qt frontend to zint + Zint is a barcode generator library. It features support for over 50 + symbologies, including Australian Post, Aztec Code & Runes, BC412, + Channel, Codabar, Codablock F, Code 11, Code 128, Code 16K, Code 2 of + 5 (IATA, Interleaved, Data Logic, ITF-14, Deutsche Post Leitcode & + Identcode), Code 32 (Italian Pharmacode), Code 39 & Code 39 Extended, + Code 49, Code 93, Code One, DAFT, Data Matrix (incl. DMRE), DotCode, + DPD, Dutch Post KIX, EAN, FIM, Flattermarken, Grid Matrix, GS1 DataBar + (incl. stacked & GS1 Composite symbols), GS1-128, Han Xin, HIBC, ISBN, + Japan Post, Korea Post, LOGMARS, MaxiCode, NVE-18 (SSCC-18), PDF417 & + MicroPDF417, Pharmacode, PLANET, POSTNET, Plessey (MSI & UK), PZN, QR + Code, Micro QR & rMQR, Royal Mail RM4SCC & Mailmark, Telepen, + Ultracode, UPC-A, UPC-E, UPNQR, UPU S10, USPS Intelligent Mail and + VIN. + . + Also included are Unicode translation for all ECI character sets, full + GS1 data support including verification and automated insertion of + FNC1 characters and support for encoding binary data. Output can be + saved as BMP, EMF, EPS, GIF, PCX, PNG, SVG and TIFF. + . + This package contains Zint Barcode Studio, a Qt frontend for the Zint + barcode generator library. + +Package: libzint2.16 Section: libs Architecture: any -Depends: zint (= ${binary:Version}) -Description: Zint Barcode Studio. - This package contains Zint Barcode Studio, a QT frontend for the Zint - barcode encoding library. +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: library for encoding data in barcode symbols + Zint is a barcode generator library. It features support for over 50 + symbologies, including Australian Post, Aztec Code & Runes, BC412, + Channel, Codabar, Codablock F, Code 11, Code 128, Code 16K, Code 2 of + 5 (IATA, Interleaved, Data Logic, ITF-14, Deutsche Post Leitcode & + Identcode), Code 32 (Italian Pharmacode), Code 39 & Code 39 Extended, + Code 49, Code 93, Code One, DAFT, Data Matrix (incl. DMRE), DotCode, + DPD, Dutch Post KIX, EAN, FIM, Flattermarken, Grid Matrix, GS1 DataBar + (incl. stacked & GS1 Composite symbols), GS1-128, Han Xin, HIBC, ISBN, + Japan Post, Korea Post, LOGMARS, MaxiCode, NVE-18 (SSCC-18), PDF417 & + MicroPDF417, Pharmacode, PLANET, POSTNET, Plessey (MSI & UK), PZN, QR + Code, Micro QR & rMQR, Royal Mail RM4SCC & Mailmark, Telepen, + Ultracode, UPC-A, UPC-E, UPNQR, UPU S10, USPS Intelligent Mail and + VIN. + . + Also included are Unicode translation for all ECI character sets, full + GS1 data support including verification and automated insertion of + FNC1 characters and support for encoding binary data. Output can be + saved as BMP, EMF, EPS, GIF, PCX, PNG, SVG and TIFF. + . + This package provides the Zint barcode generator library. -Package: zint-qt-devel +Package: libzint-dev Section: libdevel Architecture: any -Depends: zint (= ${binary:Version}), zint-qt (= ${source:Version}), libqt4-dev -Description: QZint development files. - This package contains development files for the Qt wrapper over the Zint - library. \ No newline at end of file +Depends: libzint2.16 (= ${binary:Version}), ${misc:Depends} +Multi-Arch: same +Description: Zint development files + Zint is a barcode generator library. It features support for over 50 + symbologies, including Australian Post, Aztec Code & Runes, BC412, + Channel, Codabar, Codablock F, Code 11, Code 128, Code 16K, Code 2 of + 5 (IATA, Interleaved, Data Logic, ITF-14, Deutsche Post Leitcode & + Identcode), Code 32 (Italian Pharmacode), Code 39 & Code 39 Extended, + Code 49, Code 93, Code One, DAFT, Data Matrix (incl. DMRE), DotCode, + DPD, Dutch Post KIX, EAN, FIM, Flattermarken, Grid Matrix, GS1 DataBar + (incl. stacked & GS1 Composite symbols), GS1-128, Han Xin, HIBC, ISBN, + Japan Post, Korea Post, LOGMARS, MaxiCode, NVE-18 (SSCC-18), PDF417 & + MicroPDF417, Pharmacode, PLANET, POSTNET, Plessey (MSI & UK), PZN, QR + Code, Micro QR & rMQR, Royal Mail RM4SCC & Mailmark, Telepen, + Ultracode, UPC-A, UPC-E, UPNQR, UPU S10, USPS Intelligent Mail and + VIN. + . + Also included are Unicode translation for all ECI character sets, full + GS1 data support including verification and automated insertion of + FNC1 characters and support for encoding binary data. Output can be + saved as BMP, EMF, EPS, GIF, PCX, PNG, SVG and TIFF. + . + This package contains development files for the Zint barcode generator + library and for the Qt wrapper over the Zint library. diff --git a/debian/copyright b/debian/copyright index dbab6579..54c60f3d 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,40 +1,462 @@ -This package was debianized by: - - BogDan Vatra on Sat, 11 Apr 2009 23:45:53 +0300 - Modified by Robin Stuart on Fri, 13 Jan 2017 21:12:00 +0000 - -It was downloaded from: - - - -Upstream Author(s): - - Robin Stuart +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: Zint Barcode Generator +Upstream-Contact: Robin Stuart +Source: https://sourceforge.net/projects/zint/ +Files: * Copyright: + Copyright (C) 2006-2026 Robin Stuart + Copyright (C) 2014-2026 Harald Oehlmann + Copyright (C) 2008 by BogDan Vatra < bogdan@licentia.eu > + Copyright (C) 2006-2017 Kentaro Fukuchi +License: GPL-3.0-or-later - +Files: backend/* +Copyright: + Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2014-2026 Harald Oehlmann + Copyright (C) Cliff Hones 2004 + Copyright (c) 2004 Adrian Kennard, Andrews & Arnold Ltd + Copyright (c) 2006 Stefan Schmidt + Copyright (C) 2016 Zoe Stuart + Copyright (C) 2006-2009 United States Postal Service +License: BSD-3-Clause -License: +Files: + backend/aztec.c + backend/gs1.c + backend/fonts/normal_ttf.h + backend/fonts/normal_woff2.h +Copyright: + Copyright (C) 2017-2026 Robin Stuart + Copyright 2013 ZXing authors + Copyright 2016 Huy Cuong Nguyen + Copyright (c) 2024 GS1 AISBL. + Copyright 2013 Steve Matteson +License: BSD-3-Clause and Apache-2.0 - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. +Files: + backend/fonts/upcean_ttf.h + backend/fonts/upcean_woff2.h +Copyright: + Copyright (C) 2023 Robin Stuart + Copyright Matthew Skala (2011) +License: BSD-3-Clause and Metafont-deriv + You may freely use, modify, and/or distribute any of these files or the + resulting fonts, without limitation. - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +Files: + backend/fonts/OCRB-16.bdf + backend/fonts/OCRB-18.bdf +Copyright: + Copyright Matthew Skala (2011) +License: Metafont-permissive + As far as the digitization in METAFONT input which I have developed, you + may freely use, modify, and/or distribute any of these files or the + resulting fonts, without limitation. - You should have received a copy of the GNU General Public License - along with this program. If not, see . +Files: + backend/big5.h + backend/eci_sb.h + backend/gb18030.h + backend/gb2312.h + backend/gbk.h + backend/ksx1001.h + backend/sjis.h +Copyright: + Copyright (C) 2017-2026 Robin Stuart + Copyright © 1991-2023 Unicode, Inc. +License: BSD-3-Clause and Unicode-3.0 -On Debian systems, the complete text of the GNU General -Public License version 3 can be found in `/usr/share/common-licenses/GPL-3'. +Files: + backend/channel.c + backend/composite.c + backend/common.c + backend/gridmtx.c + backend/hanxin.c + backend/qr.* +Copyright: + Copyright (C) 2017-2026 Robin Stuart + Copyright (c) AIM 1997 + Copyright (c) 2004-2026 Terry Burton + Copyright (c) 2008-2009 Bjoern Hoehrmann + Copyright (c) Project Nayuki +License: BSD-3-Clause and MIT -The Debian packaging is: +Files: + backend/pcx.c +Copyright: + Copyright (C) 2017-2026 Robin Stuart + Copyright 1999-2013 ImageMagick Studio LLC +License: BSD-3-Clause and ImageMagick - Copyright (C) 2010-2017 Robin Stuart +Files: + backend/pdf417.c +Copyright: + Copyright (C) 2017-2026 Robin Stuart + Copyright (C) 2004 (Grandzebu). +License: BSD-3-Clause and GPL-2.0-or-later -and is licensed under the GPL version 3, see above. +Files: + docs/lua-crossrefs/lua-crossrefs.lua + getopt/* +Copyright: + Copyright (C) 2025-2026 Robin Stuart + Copyright © 2025 R. N. West. + Copyright (C) 1987-2003 Free Software Foundation, Inc. +License: GPL-2.0-or-later + +Files: + backend/tests/testcommon.* +Copyright: + Copyright (C) 2019-2026 Robin Stuart + Copyright (C) 2006-2017 Kentaro Fukuchi +License: LGPL-2.0-or-later + +Files: + frontend/main.c +Copyright: + Copyright (C) 2008-2026 Robin Stuart + Copyright 2002 Jon Griffiths + Copyright 2016 Sebastian Lackner +License: GPL-3.0-or-later and LGPL-2.1-or-later + +Files: + frontend_qt/res/black-eye.svg + frontend_qt/res/check.svg + frontend_qt/res/copy.svg + frontend_qt/res/delete.svg + frontend_qt/res/download.svg + frontend_qt/res/help-circle.svg + frontend_qt/res/menu.svg + frontend_qt/res/shuffle.svg + frontend_qt/res/white-eye.svg + frontend_qt/res/x.svg + frontend_qt/res/zap.svg +Copyright: + Copyright (c) 2013-2022 Cole Bemis +License: MIT + +Files: + frontend_qt/res/folder.svg + frontend_qt/res/monitor-bg.svg + frontend_qt/res/scaling.svg +Copyright: + Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022. +License: ISC + +Files: debian/* +Copyright: + 2013-2025 Dmitry Smirnov +License: GPL-3.0-or-later + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + ․ + http://www.apache.org/licenses/LICENSE-2.0 + ․ + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ․ + On Debian systems, the complete text of the Apache License, + Version 2.0 can be found in "/usr/share/common-licenses/Apache-2.0". + +License: BSD-3-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + ․ + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + ․ + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + ․ + 3. Neither the name of the project nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + ․ + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: GPL-2.0-or-later + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + ․ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + ․ + On Debian systems, the complete text of the GNU General Public + License Version 2 can be found in "/usr/share/common-licenses/GPL-2". + +License: GPL-3.0-or-later + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + ․ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + ․ + On Debian systems, the complete text of the GNU General Public + License Version 3 can be found in "/usr/share/common-licenses/GPL-3". + +License: ImageMagick + 1. Definitions. + License shall mean the terms and conditions for use, reproduction, and + distribution as defined by Sections 1 through 9 of this document. + . + Licensor shall mean the copyright owner or entity authorized by the copyright + owner that is granting the License. + . + Legal Entity shall mean the union of the acting entity and all other entities + that control, are controlled by, or are under common control with that entity. + For the purposes of this definition, control means (i) the power, direct or + indirect, to cause the direction or management of such entity, whether by + contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + . + You (or Your) shall mean an individual or Legal Entity exercising permissions + granted by this License. + . + Source form shall mean the preferred form for making modifications, including + but not limited to software source code, documentation source, and + configuration files. + . + Object form shall mean any form resulting from mechanical transformation or + translation of a Source form, including but not limited to compiled object + code, generated documentation, and conversions to other media types. + . + Work shall mean the work of authorship, whether in Source or Object form, made + available under the License, as indicated by a copyright notice that is + included in or attached to the work (an example is provided in the Appendix + below). + . + Derivative Works shall mean any work, whether in Source or Object form, that is + based on (or derived from) the Work and for which the editorial revisions, + annotations, elaborations, or other modifications represent, as a whole, an + original work of authorship. For the purposes of this License, Derivative Works + shall not include works that remain separable from, or merely link (or bind by + name) to the interfaces of, the Work and Derivative Works thereof. + . + Contribution shall mean any work of authorship, including the original version + of the Work and any modifications or additions to that Work or Derivative Works + thereof, that is intentionally submitted to Licensor for inclusion in the Work + by the copyright owner or by an individual or Legal Entity authorized to submit + on behalf of the copyright owner. For the purposes of this definition, + "submitted" means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, and + issue tracking systems that are managed by, or on behalf of, the Licensor for + the purpose of discussing and improving the Work, but excluding communication + that is conspicuously marked or otherwise designated in writing by the + copyright owner as Not a Contribution. + . + Contributor shall mean Licensor and any individual or Legal Entity on behalf + of whom a Contribution has been received by Licensor and subsequently + incorporated within the Work. + . + 2. Grant of Copyright License. Subject to the terms and conditions of this + License, each Contributor hereby grants to You a perpetual, worldwide, + non-exclusive, no-charge, royalty-free, irrevocable copyright license to + reproduce, prepare Derivative Works of, publicly display, publicly perform, + sublicense, and distribute the Work and such Derivative Works in Source or + Object form. + . + 3. Grant of Patent License. Subject to the terms and conditions of this + License, each Contributor hereby grants to You a perpetual, worldwide, + non-exclusive, no-charge, royalty-free, irrevocable patent license to make, + have made, use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable by such + Contributor that are necessarily infringed by their Contribution(s) alone or by + combination of their Contribution(s) with the Work to which such + Contribution(s) was submitted. If You institute patent litigation against any + entity (including a cross-claim or counterclaim in a lawsuit) alleging that the + Work or a Contribution incorporated within the Work constitutes direct or + contributory patent infringement, then any patent licenses granted to You under + this License for that Work shall terminate as of the date such litigation is + filed. + . + 4. Redistribution. You may reproduce and distribute copies of the Work or + Derivative Works thereof in any medium, with or without modifications, and in + Source or Object form, provided that You meet the following conditions: + . + a. You must give any other recipients of the Work or Derivative Works a + copy of this License; and + . + b. You must cause any modified files to carry prominent notices stating + that You changed the files; and + . + c. You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, patent, trademark, and attribution notices from + the Source form of the Work, excluding those notices that do not pertain to + any part of the Derivative Works; and + . + d. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable copy + of the attribution notices contained within such NOTICE file, excluding + those notices that do not pertain to any part of the Derivative Works, in + at least one of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or documentation, + if provided along with the Derivative Works; or, within a display generated + by the Derivative Works, if and wherever such third-party notices normally + appear. The contents of the NOTICE file are for informational purposes only + and do not modify the License. You may add Your own attribution notices + within Derivative Works that You distribute, alongside or as an addendum to + the NOTICE text from the Work, provided that such additional attribution + notices cannot be construed as modifying the License. + . + You may add Your own copyright statement to Your modifications and may provide + additional or different license terms and conditions for use, reproduction, or + distribution of Your modifications, or for any such Derivative Works as a + whole, provided Your use, reproduction, and distribution of the Work otherwise + complies with the conditions stated in this License. + . + 5. Submission of Contributions. Unless You explicitly state otherwise, any + Contribution intentionally submitted for inclusion in the Work by You to the + Licensor shall be under the terms and conditions of this License, without any + additional terms or conditions. Notwithstanding the above, nothing herein shall + supersede or modify the terms of any separate license agreement you may have + executed with Licensor regarding such Contributions. + . + 6. Trademarks. This License does not grant permission to use the trade names, + trademarks, service marks, or product names of the Licensor, except as required + for reasonable and customary use in describing the origin of the Work and + reproducing the content of the NOTICE file. + . + 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in + writing, Licensor provides the Work (and each Contributor provides its + Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied, including, without limitation, any warranties or + conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any risks + associated with Your exercise of permissions under this License. + . + 8. Limitation of Liability. In no event and under no legal theory, whether in + tort (including negligence), contract, or otherwise, unless required by + applicable law (such as deliberate and grossly negligent acts) or agreed to in + writing, shall any Contributor be liable to You for damages, including any + direct, indirect, special, incidental, or consequential damages of any + character arising as a result of this License or out of the use or inability to + use the Work (including but not limited to damages for loss of goodwill, work + stoppage, computer failure or malfunction, or any and all other commercial + damages or losses), even if such Contributor has been advised of the + possibility of such damages. + . + 9. Accepting Warranty or Additional Liability. While redistributing the Work or + Derivative Works thereof, You may choose to offer, and charge a fee for, + acceptance of support, warranty, indemnity, or other liability obligations + and/or rights consistent with this License. However, in accepting such + obligations, You may act only on Your own behalf and on Your sole + responsibility, not on behalf of any other Contributor, and only if You agree + to indemnify, defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason of your + accepting any such warranty or additional liability. + +License: ISC + Permission to use, copy, modify, and /or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + +License: MIT + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + ․ + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + +License: LGPL-2.0-or-later + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + ․ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + ․ + On Debian systems, the complete text of the GNU Library General Public + License Version 2 can be found in "/usr/share/common-licenses/LGPL-2". + +License: LGPL-2.1-or-later + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published + by the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + ․ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Library General Public License for more details. + ․ + On Debian systems, the complete text of the GNU Library General Public + License Version 2 can be found in "/usr/share/common-licenses/LGPL-2.1". + +License: Unicode-3.0 + NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, + INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR SOFTWARE, YOU + UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS + OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, + DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. + . + Permission is hereby granted, free of charge, to any person obtaining a copy of + data files and any associated documentation (the "Data Files") or software and + any associated documentation (the "Software") to deal in the Data Files or + Software without restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, and/or sell copies of the Data Files + or Software, and to permit persons to whom the Data Files or Software are + furnished to do so, provided that either (a) this copyright and permission + notice appear with all copies of the Data Files or Software, or (b) this + copyright and permission notice appear in associated Documentation. + . + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD + PARTY RIGHTS. + . + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE + LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY + DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. + . + Except as contained in this notice, the name of a copyright holder shall not be + used in advertising or otherwise to promote the sale, use or other dealings in + these Data Files or Software without prior written authorization of the + copyright holder. diff --git a/debian/libzint-dev.install b/debian/libzint-dev.install new file mode 100644 index 00000000..fc258174 --- /dev/null +++ b/debian/libzint-dev.install @@ -0,0 +1,4 @@ +usr/include +usr/lib/*/*.so +usr/lib/*/cmake/zint/*.cmake usr/share/zint/ +cmake/modules/FindZint.cmake usr/share/apps/cmake/modules/ diff --git a/debian/libzint2.16.install b/debian/libzint2.16.install new file mode 100644 index 00000000..af70f1d6 --- /dev/null +++ b/debian/libzint2.16.install @@ -0,0 +1 @@ +/usr/lib/*/libzint.so.* diff --git a/debian/not-installed b/debian/not-installed new file mode 100644 index 00000000..089a12f8 --- /dev/null +++ b/debian/not-installed @@ -0,0 +1 @@ +usr/lib/*/libQZint.a diff --git a/debian/rules b/debian/rules index cbe925d7..92701de7 100755 --- a/debian/rules +++ b/debian/rules @@ -1,3 +1,12 @@ #!/usr/bin/make -f +# vim: set ts=4 sw=4 noet : + %: - dh $@ + dh $@ --buildsystem=cmake + +# https://bugs-devel.debian.org/cgi-bin/bugreport.cgi?bug=1016936 +override_dh_dwz: + +# This is just to avoid a "no dependency information" error if have local non-package lib builds +override_dh_shlibdeps: + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info diff --git a/debian/zint-devel.install b/debian/zint-devel.install deleted file mode 100644 index 4c8a20a2..00000000 --- a/debian/zint-devel.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/include/zint.h -usr/lib/libzint.so diff --git a/debian/zint-qt-devel.install b/debian/zint-qt-devel.install deleted file mode 100644 index 63169a18..00000000 --- a/debian/zint-qt-devel.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/include/qzint.h -usr/lib/libQZint.so diff --git a/debian/zint-qt.install b/debian/zint-qt.install index de70f44d..a390c11a 100644 --- a/debian/zint-qt.install +++ b/debian/zint-qt.install @@ -1,2 +1,4 @@ -usr/lib/libQZint.so.* usr/bin/zint-qt +usr/share/man/man1/zint-qt.1 +*.desktop /usr/share/applications +zint-qt.png /usr/share/pixmaps diff --git a/debian/zint.install b/debian/zint.install index d0ca3895..36c8b0a4 100644 --- a/debian/zint.install +++ b/debian/zint.install @@ -1,2 +1,2 @@ -usr/lib/libzint.so.* usr/bin/zint +usr/share/man/man1/zint.1 diff --git a/docs/Makefile b/docs/Makefile index f37becc2..390e3a9a 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,9 +1,13 @@ -# Makefile for generating "manual.txt" and "manual.pdf" from "manual.pmd" and "zint.1" from "zint.1.pmd" using pandoc -# Copyright (C) 2022-2025 +# Makefile for generating: +# "manual.html", "manual.pdf" and "manual.txt" from "manual.pmd" +# "zint.1" from "zint.1.pmd" +# "zint-qt.1" from "zint-qt.1.pmd" +# using pandoc +# Copyright (C) 2022-2026 # vim: set ts=4 sw=4 noet : # # Requires pandoc >= 3.8.2, plus xelatex and various other packages - see "README" -# .svg images generated by "zint_images.sh" +# "images/*.svg" generated by "zint_images.sh" SOURCE = manual.pmd OUT_PDF = manual.pdf @@ -17,6 +21,8 @@ INCLUDES_TXT = inc_header_txt.tex INC_TXT = --include-in-header $(INCLUDES_TXT) SOURCE_MAN_PAGE = zint.1.pmd OUT_MAN_PAGE = zint.1 +SOURCE_QT_MAN_PAGE = zint-qt.1.pmd +OUT_QT_MAN_PAGE = zint-qt.1 LUA_FILTER = lua-crossrefs/lua-crossrefs.lua INFRASTRUCTURE = Makefile $(LUA_FILTER) $(HIGHLIGHT_THEME) IMAGES = \ @@ -160,7 +166,7 @@ TXT_OPTS = --lua-filter=$(LUA_FILTER) \ --columns 80 --eol=lf -t plain MAN_PAGE_OPTS = -s -t man -all : $(OUT_PDF) $(OUT_TXT) $(OUT_MAN_PAGE) $(OUT_HTML) +all : $(OUT_PDF) $(OUT_TXT) $(OUT_MAN_PAGE) $(OUT_QT_MAN_PAGE) $(OUT_HTML) $(OUT_PDF) : $(SOURCE) $(SOURCE_MAN_PAGE) $(INC_HEADER_PDF) $(INC_BEFORE_BODY_PDF) $(IMAGES) $(INFRASTRUCTURE) pandoc $(SOURCE_MAN_PAGE) -f markdown \ @@ -195,6 +201,11 @@ $(OUT_MAN_PAGE) : $(SOURCE_MAN_PAGE) $(INFRASTRUCTURE) $(MAN_PAGE_OPTS) \ -o $(OUT_MAN_PAGE) +$(OUT_QT_MAN_PAGE) : $(SOURCE_QT_MAN_PAGE) $(INFRASTRUCTURE) + pandoc $(SOURCE_QT_MAN_PAGE) -f markdown \ + $(MAN_PAGE_OPTS) \ + -o $(OUT_QT_MAN_PAGE) + # For debugging manual.tex : $(SOURCE) $(SOURCE_MAN_PAGE) $(INC_HEADER_PDF) $(INC_BEFORE_BODY_PDF) $(IMAGES) $(INFRASTRUCTURE) diff --git a/docs/README b/docs/README index 09531081..89e061c6 100644 --- a/docs/README +++ b/docs/README @@ -1,7 +1,8 @@ -% docs/README 2026-03-11 +% docs/README 2026-03-17 For generation of "docs/manual.html", "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" -and man page "docs/zint.1" from "docs/zint.1.pmd" using pandoc >= 3.8.2. +and man pages "docs/zint.1" from "docs/zint.1.pmd" and "docs/zint-qt.1" from "docs/zint-qt.1.pmd" +using pandoc >= 3.8.2. On Ubuntu/Debian (tested on Ubuntu 22.04 and Ubuntu 24.04) diff --git a/docs/lua-crossrefs/lua-crossrefs.lua b/docs/lua-crossrefs/lua-crossrefs.lua index 2fe6174e..4bfea632 100644 --- a/docs/lua-crossrefs/lua-crossrefs.lua +++ b/docs/lua-crossrefs/lua-crossrefs.lua @@ -1,8 +1,8 @@ -- libzint - the open source barcode library --- Copyright (C) 2025 Robin Stuart +-- Copyright (C) 2025-2026 Robin Stuart -- Hacked from https://github.com/rnwst/pandoc-lua-crossrefs --- © 2025 R. N. West. Released under the GPL version 2 or greater. +-- Copyright © 2025 R. N. West. Released under the GPL version 2 or greater. -- SPDX-License-Identifier: GPL-2.0-or-later PANDOC_VERSION:must_be_at_least '3.8.2' diff --git a/docs/manual.html b/docs/manual.html index 4b35e6af..f381fe03 100644 --- a/docs/manual.html +++ b/docs/manual.html @@ -504,6 +504,7 @@ id="toc-utf-8-to-eci-convenience-functions">5.17 UTF-8 to ECI convenience functions
  • 5.18 Zint Version
  • +
  • 5.19 Debug Info
  • 6. Types of Symbology @@ -631,8 +632,8 @@ Stacked Symbologies
    • 6.2.1 Basic Symbol Stacking
    • -
    • 6.2.2 -Codablock-F
    • +
    • 6.2.2 Codablock +F
    • 6.2.3 Code 16K (EN 12323)
    • 6.2.4 PDF417 @@ -1866,7 +1867,7 @@ DataBar Truncated) 74 BARCODE_CODABLOCKF -Codablock-F +Codablock F 75 @@ -1986,7 +1987,7 @@ DataBar Truncated) 110 BARCODE_HIBC_BLOCKF -HIBC Codablock-F +HIBC Codablock F 112 @@ -2154,7 +2155,7 @@ class="sourceCode bash">Warning 247: Height not compliant with standards

      Another switch is --heightperrow, which can be useful for symbologies that have a variable number of linear rows, namely -Codablock-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked, +Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked, MicroPDF417 and PDF417, as it changes the treatment of the height value from overall height to per-row height, allowing you to specify a consistent height for each linear row without having to know how many @@ -2193,7 +2194,7 @@ class="sourceCode bash">--whitesp or --vwhitesp switches.

      -

      Note that Codablock-F, Code 16K, Code 49, ITF-14, EAN-13, EAN-8, +

      Note that Codablock F, Code 16K, Code 49, ITF-14, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, UPC-A and UPC-E have compliant quiet zones added by default. This can be disabled with the option --noquietzones.

      @@ -2231,7 +2232,7 @@ alt="zint -b QRCODE --border=1 --box -d "This Text" --quietzones" />
      Figure 16: zint -b QRCODE --border=1 --box -d "This Text" --quietzones
      -

      Codablock-F, Code 16K and Code 49 always have boundary bars, and +

      Codablock F, Code 16K and Code 49 always have boundary bars, and default to particular horizontal whitespace values. Special considerations apply to ITF-14 and DPD - see 6.1.2.6 ITF-14 and 6.1.10.7 DPD Code for those @@ -2506,7 +2507,7 @@ Sets None -Codablock-F +Codablock F Latin-1 None @@ -2602,7 +2603,7 @@ Modes and ECI below.

      href="#gs1-data-entry-and-options">4.11.3 GS1 Data Entry and Options.

      Health Industry Barcode (HIBC) data may be encoded in the symbologies -Aztec Code, Codablock-F, Code 128, Code 39, Data Matrix, MicroPDF417, +Aztec Code, Codablock F, Code 128, Code 39, Data Matrix, MicroPDF417, PDF417 and QR Code. Within this mode, the leading '+' and the check character are automatically added by Zint, conforming to HIBC Labeler Identification Code (HIBC LIC). For HIBC Provider Applications @@ -3298,6 +3299,8 @@ hexadecimal values if asked to output to a text file ("*.txt") or if given the option --filetype=txt or the option --dump. This can be used for test and diagnostic purposes.

      +

      Also there’s the --verbose option which will output +debug information to stdout.

      Additional options are available which are specific to certain symbologies. These may, for example, control the amount of error correction data or the size of the symbol. These options are discussed @@ -4411,7 +4414,7 @@ For instance:

      if (ZBarcode_BarcodeName(BARCODE_PDF417, name) == 0) { printf("%s\n", name); } -

      will print BARCODE_PDF417.

      +

      will print “BARCODE_PDF417”.

      5.15 Checking Symbology Capabilities

      It can be useful for frontend programs to know the capabilities of a @@ -4607,6 +4610,11 @@ available, else zero.

      int ZBarcode_Version(void);

      The version parts are separated by hundreds. For instance, version "2.9.1" is returned as "20901".

      +

      5.19 Debug Info

      +

      Debugging information can be output to stdout by setting +the debug member to ZINT_DEBUG_PRINT +(1). Other values are used internally by the test suite and +shouldn’t be set.

      6. Types of Symbology

      6.1 One-Dimensional Symbols

      One-dimensional or linear symbols are what most people associate with @@ -5581,7 +5589,7 @@ alt="zint --notext --bind --separator=2 -d "This" -d "That""

      A more sophisticated method is to use some type of line indexing which indicates to the barcode reader which order the stacked symbols should be read in. This is demonstrated by the symbologies below.

      -

      6.2.2 Codablock-F

      +

      6.2.2 Codablock F

      This is a stacked symbology based on Code 128 which can encode Latin-1 data up to a maximum length of 2726 symbol characters, meaning for instance up to 2726 all ASCII characters, or 5452 all numeric, or up @@ -5592,12 +5600,12 @@ alt="zint -b CODABLOCKF -d "CODABLOCK F Symbology" --rows=3" />

      Figure 84: zint -b CODABLOCKF -d "CODABLOCK F Symbology" --rows=3
      -

      The width of the Codablock-F symbol can be set using the +

      The width of the Codablock F symbol can be set using the --cols option (API option_2), to a value between 9 and 67. The height (number of rows) can be set using the --rows option (API option_1), with a maximum -of 44. Zint does not currently support encoding of GS1 data in -Codablock-F symbols.

      +of 44. Zint does not currently support encoding of GS1 data in Codablock +F symbols.

      A separate symbology ID (BARCODE_HIBC_BLOCKF) can be used to encode Health Industry Barcode (HIBC) data which adds a leading '+' character and a modulo-49 check digit to the encoded @@ -8543,7 +8551,7 @@ Silicon Wafers (BC412) (1996)

    • Code
    • BS EN 798:1996 Bar coding - Symbology specifications - ‘Codabar’
    • -
    • AIM Europe ISS-X-24 - Uniform Symbology Specification Codablock-F +
    • AIM Europe ISS-X-24 - Uniform Symbology Specification Codablock F (1995)
    • ISO/IEC 15417:2007 Information technology - Automatic identification and data capture techniques - Code 128 bar code symbology @@ -9217,7 +9225,7 @@ the --border option.

      --cols=INTEGER

      Set the number of data columns in the symbol to INTEGER. -Affects Codablock-F, DotCode, GS1 DataBar Expanded Stacked +Affects Codablock F, DotCode, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417 symbols.

      --compliantheight
      @@ -9413,7 +9421,7 @@ floating-point.

      --heightperrow
      -

      Treat height as per-row. Affects Codablock-F, Code 16K, Code 49, GS1 +

      Treat height as per-row. Affects Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417.

      -i, --input=FILE
      @@ -9502,7 +9510,7 @@ can be 0, 90, 270 or 360.

      --rows=INTEGER
      -

      Set the number of rows for Codablock-F or PDF417 to INTEGER. +

      Set the number of rows for Codablock F or PDF417 to INTEGER. It will also set the minimum number of rows for Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK).

      @@ -9594,6 +9602,10 @@ names can be used with -b | --barcode.

      NUMBER is in X-dimensions, and may be floating-point. Maximum is 10 and minimum is -5. The default is 1.

      +
      --verbose
      +
      +

      Output debug information to stdout.

      +
      --vers=INTEGER

      Set the symbol version (size, check digits, other options) to @@ -9967,10 +9979,10 @@ role="doc-backlink">↩︎

    • default for DPD - see 6.1.10.7 DPD Code.↩︎

    • The BARCODE_BIND flag is always set for -Codablock-F, Code 16K and Code 49. Special considerations apply to +Codablock F, Code 16K and Code 49. Special considerations apply to ITF-14 - see 6.1.2.6 ITF-14.↩︎

    • -
    • Codablock-F, Code 16K, Code 49, EAN-13, EAN-8, EAN/UPC +

    • Codablock F, Code 16K, Code 49, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, ITF-14, UPC-A and UPC-E have compliant quiet zones added by default.↩︎

    • diff --git a/docs/manual.pmd b/docs/manual.pmd index 8299a1e4..d592329a 100644 --- a/docs/manual.pmd +++ b/docs/manual.pmd @@ -2,6 +2,8 @@ % Version 2.16.0.9 % March 2026 +[//]: # ( vim: set ts=4 sw=4 et : ) + # 1. Introduction The Zint project aims to provide a complete cross-platform open source barcode @@ -781,7 +783,7 @@ Value 73 `BARCODE_VIN` Vehicle Identification Number - 74 `BARCODE_CODABLOCKF` Codablock-F + 74 `BARCODE_CODABLOCKF` Codablock F 75 `BARCODE_NVE18` NVE-18 (SSCC-18) @@ -829,7 +831,7 @@ Value 108 `BARCODE_HIBC_MICPDF` HIBC MicroPDF417 - 110 `BARCODE_HIBC_BLOCKF` HIBC Codablock-F + 110 `BARCODE_HIBC_BLOCKF` HIBC Codablock F 112 `BARCODE_HIBC_AZTEC` HIBC Aztec Code @@ -934,7 +936,7 @@ Warning 247: Height not compliant with standards ``` Another switch is `--heightperrow`, which can be useful for symbologies that -have a variable number of linear rows, namely Codablock-F, Code 16K, Code 49, +have a variable number of linear rows, namely Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked, MicroPDF417 and PDF417, as it changes the treatment of the height value from overall height to per-row height, allowing you to specify a consistent height for each linear row without having to know @@ -982,7 +984,7 @@ A `--quietzones` option is also available which adds quiet zones compliant with the symbology's specification. This is in addition to any whitespace specified with the `--whitesp` or `--vwhitesp` switches. -Note that Codablock-F, Code 16K, Code 49, ITF-14, EAN-13, EAN-8, EAN/UPC +Note that Codablock F, Code 16K, Code 49, ITF-14, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, UPC-A and UPC-E have compliant quiet zones added by default. This can be disabled with the option `--noquietzones`. @@ -1016,7 +1018,7 @@ whitespace. ![`zint -b QRCODE --border=1 --box -d "This Text" --quietzones`](images/qrcode_box.svg){.i2d} -Codablock-F, Code 16K and Code 49 always have boundary bars, and default to +Codablock F, Code 16K and Code 49 always have boundary bars, and default to particular horizontal whitespace values. Special considerations apply to ITF-14 and DPD - see [6.1.2.6 ITF-14] and [6.1.10.7 DPD Code] for those symbologies. @@ -1258,7 +1260,7 @@ Latin-2 (ISO/IEC 8859-2 plus ASCII). Symbology Default character sets Alternate if input not Latin-1 ------------- ------------------------ ------------------------------ Aztec Code Latin-1 None -Codablock-F Latin-1 None +Codablock F Latin-1 None Code 128 Latin-1 None Code 16K Latin-1 None Code One Latin-1 None @@ -1290,7 +1292,7 @@ GS1 data can be encoded in a number of symbologies - see [4.11.3 GS1 Data Entry and Options]. Health Industry Barcode (HIBC) data may be encoded in the symbologies Aztec -Code, Codablock-F, Code 128, Code 39, Data Matrix, MicroPDF417, PDF417 and QR +Code, Codablock F, Code 128, Code 39, Data Matrix, MicroPDF417, PDF417 and QR Code. Within this mode, the leading `'+'` and the check character are automatically added by Zint, conforming to HIBC Labeler Identification Code (HIBC LIC). For HIBC Provider Applications Standard (HIBC PAS), preface the data @@ -1769,6 +1771,9 @@ values if asked to output to a text file (`"*.txt"`) or if given the option `--filetype=txt` or the option `--dump`. This can be used for test and diagnostic purposes. +Also there's the `--verbose` option which will output debug information to +`stdout`. + Additional options are available which are specific to certain symbologies. These may, for example, control the amount of error correction data or the size of the symbol. These options are discussed in section [6. Types of Symbology] of @@ -2479,10 +2484,10 @@ Table: API `output_options` Values {#tbl:api_output_options} [^15]: The `BARCODE_BIND_TOP` flag is set by default for DPD - see [6.1.10.7 DPD Code]. -[^16]: The `BARCODE_BIND` flag is always set for Codablock-F, Code 16K and Code +[^16]: The `BARCODE_BIND` flag is always set for Codablock F, Code 16K and Code 49. Special considerations apply to ITF-14 - see [6.1.2.6 ITF-14]. -[^17]: Codablock-F, Code 16K, Code 49, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, +[^17]: Codablock F, Code 16K, Code 49, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, ITF-14, UPC-A and UPC-E have compliant quiet zones added by default. ## 5.11 Setting the Input Mode @@ -2719,7 +2724,7 @@ if (ZBarcode_BarcodeName(BARCODE_PDF417, name) == 0) { } ``` -will print `BARCODE_PDF417`. +will print "BARCODE_PDF417". ## 5.15 Checking Symbology Capabilities @@ -2896,6 +2901,12 @@ int ZBarcode_Version(void); The version parts are separated by hundreds. For instance, version `"2.9.1"` is returned as `"20901"`. +## 5.19 Debug Info + +Debugging information can be output to `stdout` by setting the `debug` member to +`ZINT_DEBUG_PRINT` (`1`). Other values are used internally by the test suite and +shouldn't be set. + # 6. Types of Symbology @@ -3733,7 +3744,7 @@ A more sophisticated method is to use some type of line indexing which indicates to the barcode reader which order the stacked symbols should be read in. This is demonstrated by the symbologies below. -### 6.2.2 Codablock-F +### 6.2.2 Codablock F This is a stacked symbology based on Code 128 which can encode Latin-1 data up to a maximum length of 2726 symbol characters, meaning for instance up to 2726 @@ -3743,10 +3754,10 @@ all ASCII characters, or 5452 all numeric, or up to 1363 all extended ASCII ![`zint -b CODABLOCKF -d "CODABLOCK F Symbology" --rows=3`](images/codablockf.svg){.lin} -The width of the Codablock-F symbol can be set using the `--cols` option (API +The width of the Codablock F symbol can be set using the `--cols` option (API `option_2`), to a value between 9 and 67. The height (number of rows) can be set using the `--rows` option (API `option_1`), with a maximum of 44. Zint does not -currently support encoding of GS1 data in Codablock-F symbols. +currently support encoding of GS1 data in Codablock F symbols. A separate symbology ID (`BARCODE_HIBC_BLOCKF`) can be used to encode Health Industry Barcode (HIBC) data which adds a leading `'+'` character and a @@ -5200,7 +5211,7 @@ international standards: (BC412) (1996) - ANSI/AIM BC12-1998 - Uniform Symbology Specification Channel Code - BS EN 798:1996 Bar coding - Symbology specifications - 'Codabar' -- AIM Europe ISS-X-24 - Uniform Symbology Specification Codablock-F (1995) +- AIM Europe ISS-X-24 - Uniform Symbology Specification Codablock F (1995) - ISO/IEC 15417:2007 Information technology - Automatic identification and data capture techniques - Code 128 bar code symbology specification - BS EN 12323:2005 AIDC technologies - Symbology specifications - Code 16K diff --git a/docs/manual.txt b/docs/manual.txt index 130c9c13..b2e18b19 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -78,6 +78,7 @@ March 2026 - 5.16 Feedback - 5.17 UTF-8 to ECI convenience functions - 5.18 Zint Version + - 5.19 Debug Info - 6. Types of Symbology - 6.1 One-Dimensional Symbols - 6.1.1 Code 11 @@ -133,7 +134,7 @@ March 2026 - 6.1.14 BC412 (SEMI T1-95) - 6.2 Stacked Symbologies - 6.2.1 Basic Symbol Stacking - - 6.2.2 Codablock-F + - 6.2.2 Codablock F - 6.2.3 Code 16K (EN 12323) - 6.2.4 PDF417 (ISO 15438) - 6.2.5 Compact PDF417 (ISO 15438) @@ -922,7 +923,7 @@ underscores are optional. 73 BARCODE_VIN Vehicle Identification Number - 74 BARCODE_CODABLOCKF Codablock-F + 74 BARCODE_CODABLOCKF Codablock F 75 BARCODE_NVE18 NVE-18 (SSCC-18) @@ -970,7 +971,7 @@ underscores are optional. 108 BARCODE_HIBC_MICPDF HIBC MicroPDF417 - 110 BARCODE_HIBC_BLOCKF HIBC Codablock-F + 110 BARCODE_HIBC_BLOCKF HIBC Codablock F 112 BARCODE_HIBC_AZTEC HIBC Aztec Code @@ -1063,7 +1064,7 @@ given: Warning 247: Height not compliant with standards Another switch is --heightperrow, which can be useful for symbologies that have -a variable number of linear rows, namely Codablock-F, Code 16K, Code 49, GS1 +a variable number of linear rows, namely Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked, MicroPDF417 and PDF417, as it changes the treatment of the height value from overall height to per-row height, allowing you to specify a consistent height for each linear row without having to know how many there @@ -1102,7 +1103,7 @@ A --quietzones option is also available which adds quiet zones compliant with the symbology’s specification. This is in addition to any whitespace specified with the --whitesp or --vwhitesp switches. -Note that Codablock-F, Code 16K, Code 49, ITF-14, EAN-13, EAN-8, EAN/UPC +Note that Codablock F, Code 16K, Code 49, ITF-14, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, UPC-A and UPC-E have compliant quiet zones added by default. This can be disabled with the option --noquietzones. @@ -1133,7 +1134,7 @@ whitespace. [zint -b QRCODE --border=1 --box -d "This Text" --quietzones] -Codablock-F, Code 16K and Code 49 always have boundary bars, and default to +Codablock F, Code 16K and Code 49 always have boundary bars, and default to particular horizontal whitespace values. Special considerations apply to ITF-14 and DPD - see 6.1.2.6 ITF-14 and 6.1.10.7 DPD Code for those symbologies. @@ -1342,7 +1343,7 @@ Latin-2 (ISO/IEC 8859-2 plus ASCII). Symbology Default character sets Alternate if input not Latin-1 --------------- -------------------------- -------------------------------- Aztec Code Latin-1 None - Codablock-F Latin-1 None + Codablock F Latin-1 None Code 128 Latin-1 None Code 16K Latin-1 None Code One Latin-1 None @@ -1371,7 +1372,7 @@ GS1 data can be encoded in a number of symbologies - see 4.11.3 GS1 Data Entry and Options. Health Industry Barcode (HIBC) data may be encoded in the symbologies Aztec -Code, Codablock-F, Code 128, Code 39, Data Matrix, MicroPDF417, PDF417 and QR +Code, Codablock F, Code 128, Code 39, Data Matrix, MicroPDF417, PDF417 and QR Code. Within this mode, the leading '+' and the check character are automatically added by Zint, conforming to HIBC Labeler Identification Code (HIBC LIC). For HIBC Provider Applications Standard (HIBC PAS), preface the data @@ -1791,6 +1792,8 @@ values if asked to output to a text file ("*.txt") or if given the option --filetype=txt or the option --dump. This can be used for test and diagnostic purposes. +Also there’s the --verbose option which will output debug information to stdout. + Additional options are available which are specific to certain symbologies. These may, for example, control the amount of error correction data or the size of the symbol. These options are discussed in section 6. Types of Symbology of @@ -2653,7 +2656,7 @@ success. For instance: printf("%s\n", name); } -will print BARCODE_PDF417. +will print “BARCODE_PDF417”. 5.15 Checking Symbology Capabilities @@ -2802,6 +2805,12 @@ Lastly, the version of the Zint library linked to is returned by: The version parts are separated by hundreds. For instance, version "2.9.1" is returned as "20901". +5.19 Debug Info + +Debugging information can be output to stdout by setting the debug member to +ZINT_DEBUG_PRINT (1). Other values are used internally by the test suite and +shouldn’t be set. + 6. Types of Symbology 6.1 One-Dimensional Symbols @@ -3566,7 +3575,7 @@ A more sophisticated method is to use some type of line indexing which indicates to the barcode reader which order the stacked symbols should be read in. This is demonstrated by the symbologies below. -6.2.2 Codablock-F +6.2.2 Codablock F This is a stacked symbology based on Code 128 which can encode Latin-1 data up to a maximum length of 2726 symbol characters, meaning for instance up to 2726 @@ -3575,10 +3584,10 @@ all ASCII characters, or 5452 all numeric, or up to 1363 all extended ASCII [zint -b CODABLOCKF -d "CODABLOCK F Symbology" --rows=3] -The width of the Codablock-F symbol can be set using the --cols option (API +The width of the Codablock F symbol can be set using the --cols option (API option_2), to a value between 9 and 67. The height (number of rows) can be set using the --rows option (API option_1), with a maximum of 44. Zint does not -currently support encoding of GS1 data in Codablock-F symbols. +currently support encoding of GS1 data in Codablock F symbols. A separate symbology ID (BARCODE_HIBC_BLOCKF) can be used to encode Health Industry Barcode (HIBC) data which adds a leading '+' character and a modulo-49 @@ -4976,7 +4985,7 @@ international standards: (BC412) (1996) - ANSI/AIM BC12-1998 - Uniform Symbology Specification Channel Code - BS EN 798:1996 Bar coding - Symbology specifications - ‘Codabar’ -- AIM Europe ISS-X-24 - Uniform Symbology Specification Codablock-F (1995) +- AIM Europe ISS-X-24 - Uniform Symbology Specification Codablock F (1995) - ISO/IEC 15417:2007 Information technology - Automatic identification and data capture techniques - Code 128 bar code symbology specification - BS EN 12323:2005 AIDC technologies - Symbology specifications - Code 16K @@ -5291,9 +5300,9 @@ OPTIONS --cols=INTEGER - Set the number of data columns in the symbol to INTEGER. Affects - Codablock-F, DotCode, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), - MicroPDF417 and PDF417 symbols. + Set the number of data columns in the symbol to INTEGER. Affects Codablock + F, DotCode, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and + PDF417 symbols. --compliantheight @@ -5466,7 +5475,7 @@ OPTIONS --heightperrow - Treat height as per-row. Affects Codablock-F, Code 16K, Code 49, GS1 DataBar + Treat height as per-row. Affects Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417. -i, --input=FILE @@ -5554,7 +5563,7 @@ OPTIONS --rows=INTEGER - Set the number of rows for Codablock-F or PDF417 to INTEGER. It will also + Set the number of rows for Codablock F or PDF417 to INTEGER. It will also set the minimum number of rows for Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). @@ -5643,6 +5652,10 @@ OPTIONS is in X-dimensions, and may be floating-point. Maximum is 10 and minimum is -5. The default is 1. +--verbose + + Output debug information to stdout. + --vers=INTEGER Set the symbol version (size, check digits, other options) to INTEGER. The @@ -5981,10 +5994,10 @@ height). [15] The BARCODE_BIND_TOP flag is set by default for DPD - see 6.1.10.7 DPD Code. -[16] The BARCODE_BIND flag is always set for Codablock-F, Code 16K and Code 49. +[16] The BARCODE_BIND flag is always set for Codablock F, Code 16K and Code 49. Special considerations apply to ITF-14 - see 6.1.2.6 ITF-14. -[17] Codablock-F, Code 16K, Code 49, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, +[17] Codablock F, Code 16K, Code 49, EAN-13, EAN-8, EAN/UPC add-ons, ISBN, ITF-14, UPC-A and UPC-E have compliant quiet zones added by default. [18] ZINT_CAP_EANUPC was previously named ZINT_CAP_EXTENDABLE, which is still diff --git a/docs/zint-qt.1 b/docs/zint-qt.1 new file mode 100644 index 00000000..cfeaec01 --- /dev/null +++ b/docs/zint-qt.1 @@ -0,0 +1,50 @@ +.\" Automatically generated by Pandoc 3.9 +.\" +.TH "ZINT\-QT" "1" "March 2026" "Version 2.16.0.9" +.SH NAME +\f[CR]zint\-qt\f[R] \- Zint Barcode Studio, a Qt frontend to the Zint +Barcode Generator +.SH SYNOPSIS +.PP +\f[CR]zint\-qt\f[R] [\f[CR]\-\-verbose\f[R]] +.SH DESCRIPTION +zint\-qt encodes input data in a barcode which can then be saved to an +image file or to the clipboard. +.PP +Input data is UTF\-8, unless the \(lqBinary Mode\(rq checkbox is +checked. +.PP +Output may be in one of these formats: Windows Bitmap (\f[CR]BMP\f[R]), +Enhanced Metafile Format (\f[CR]EMF\f[R]), Encapsulated PostScript +(\f[CR]EPS\f[R]), Graphics Interchange Format (\f[CR]GIF\f[R]), ZSoft +Paintbrush (\f[CR]PCX\f[R]), Portable Network Format (\f[CR]PNG\f[R]), +Scalable Vector Graphic (\f[CR]SVG\f[R]), or Tagged Image File Format +(\f[CR]TIF\f[R]). +.SH OPTIONS +.TP +\f[CR]\-\-verbose\f[R] +Output debug information to stdout. +.SH EXIT STATUS +\f[CR]0\f[R] +.SH BUGS +Please send bug reports to https://sourceforge.net/p/zint/tickets/. +.SH SEE ALSO +Documentation for \f[CR]zint\-qt\f[R] (and the API \f[CR]libzint\f[R] +and the CLI \f[CR]zint\f[R]) is available from +.IP +.EX + https://zint.org.uk/manual/ +.EE +.PP +and at +.IP +.EX + https://sourceforge.net/p/zint/docs/manual.txt +.EE +.SH COPYRIGHT +Copyright © 2026 Robin Stuart. +Released under GNU GPL 3.0 or later. +.SH AUTHOR +Robin Stuart \c +.MT robin@zint.org.uk +.ME \c diff --git a/docs/zint-qt.1.pmd b/docs/zint-qt.1.pmd new file mode 100644 index 00000000..68d16dd7 --- /dev/null +++ b/docs/zint-qt.1.pmd @@ -0,0 +1,55 @@ +% ZINT-QT(1) Version 2.16.0.9 +% +% March 2026 + +[//]: # ( vim: set ts=4 sw=4 et : ) + +# NAME + +`zint-qt` - Zint Barcode Studio, a Qt frontend to the Zint Barcode Generator + +# SYNOPSIS + +| `zint-qt` [`--verbose`] + +# DESCRIPTION + +zint-qt encodes input data in a barcode which can then be saved to an image file or to the clipboard. + +Input data is UTF-8, unless the "Binary Mode" checkbox is checked. + +Output may be in one of these formats: Windows Bitmap (`BMP`), Enhanced Metafile Format (`EMF`), Encapsulated +PostScript (`EPS`), Graphics Interchange Format (`GIF`), ZSoft Paintbrush (`PCX`), Portable Network Format (`PNG`), +Scalable Vector Graphic (`SVG`), or Tagged Image File Format (`TIF`). + +# OPTIONS + +`--verbose` + +: Output debug information to stdout. + +# EXIT STATUS + +`0` + +# BUGS + +Please send bug reports to https://sourceforge.net/p/zint/tickets/. + +# SEE ALSO + +Documentation for `zint-qt` (and the API `libzint` and the CLI `zint`) is available from + + https://zint.org.uk/manual/ + +and at + + https://sourceforge.net/p/zint/docs/manual.txt + +# COPYRIGHT + +Copyright © 2026 Robin Stuart. Released under GNU GPL 3.0 or later. + +# AUTHOR + +Robin Stuart diff --git a/docs/zint.1 b/docs/zint.1 index d11bb994..208296d1 100644 --- a/docs/zint.1 +++ b/docs/zint.1 @@ -103,7 +103,7 @@ Use the CMYK colour space when outputting to Encapsulated PostScript .TP \f[CR]\-\-cols=INTEGER\f[R] Set the number of data columns in the symbol to \f[I]INTEGER\f[R]. -Affects Codablock\-F, DotCode, GS1 DataBar Expanded Stacked +Affects Codablock F, DotCode, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417 symbols. .TP \f[CR]\-\-compliantheight\f[R] @@ -283,7 +283,7 @@ Set the height of the symbol in X\-dimensions. .TP \f[CR]\-\-heightperrow\f[R] Treat height as per\-row. -Affects Codablock\-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked +Affects Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417. .TP \f[CR]\-i\f[R], \f[CR]\-\-input=FILE\f[R] @@ -374,7 +374,7 @@ Rotate the symbol by \f[I]INTEGER\f[R] degrees, where \f[I]INTEGER\f[R] can be 0, 90, 270 or 360. .TP \f[CR]\-\-rows=INTEGER\f[R] -Set the number of rows for Codablock\-F or PDF417 to \f[I]INTEGER\f[R]. +Set the number of rows for Codablock F or PDF417 to \f[I]INTEGER\f[R]. It will also set the minimum number of rows for Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). @@ -477,6 +477,9 @@ Adjust the gap between the barcode and the Human Readable Text (HRT). Maximum is 10 and minimum is \-5. The default is 1. .TP +\f[CR]\-\-verbose\f[R] +Output debug information to stdout. +.TP \f[CR]\-\-vers=INTEGER\f[R] Set the symbol version (size, check digits, other options) to \f[I]INTEGER\f[R]. diff --git a/docs/zint.1.pmd b/docs/zint.1.pmd index 1d31a52d..ce1c884a 100644 --- a/docs/zint.1.pmd +++ b/docs/zint.1.pmd @@ -2,6 +2,8 @@ % % March 2026 +[//]: # ( vim: set ts=4 sw=4 et : ) + # NAME `zint` - encode data as a barcode image @@ -93,7 +95,7 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S `--cols=INTEGER` -: Set the number of data columns in the symbol to *INTEGER*. Affects Codablock-F, DotCode, GS1 DataBar Expanded +: Set the number of data columns in the symbol to *INTEGER*. Affects Codablock F, DotCode, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417 symbols. `--compliantheight` @@ -250,7 +252,7 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S `--heightperrow` -: Treat height as per-row. Affects Codablock-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), +: Treat height as per-row. Affects Codablock F, Code 16K, Code 49, GS1 DataBar Expanded Stacked (DBAR_EXPSTK), MicroPDF417 and PDF417. `-i`, `--input=FILE` @@ -332,7 +334,7 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S `--rows=INTEGER` -: Set the number of rows for Codablock-F or PDF417 to *INTEGER*. It will also set the minimum number of rows for +: Set the number of rows for Codablock F or PDF417 to *INTEGER*. It will also set the minimum number of rows for Code 16K or Code 49, and the maximum number of rows for GS1 DataBar Expanded Stacked (DBAR_EXPSTK). `--scale=NUMBER` @@ -409,6 +411,10 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S : Adjust the gap between the barcode and the Human Readable Text (HRT). *NUMBER* is in X-dimensions, and may be floating-point. Maximum is 10 and minimum is -5. The default is 1. +`--verbose` + +: Output debug information to stdout. + `--vers=INTEGER` : Set the symbol version (size, check digits, other options) to *INTEGER*. The meaning is symbol-specific. diff --git a/frontend/CMakeLists.txt b/frontend/CMakeLists.txt index e04ae088..9dd3fe40 100644 --- a/frontend/CMakeLists.txt +++ b/frontend/CMakeLists.txt @@ -24,8 +24,10 @@ if(NOT HAVE_GETOPT_LONG_ONLY) target_link_libraries(${PROJECT_NAME} zint_bundled_getopt) endif() -get_property(libdir GLOBAL PROPERTY ZINT_LIBDIR) -set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${libdir}") +if(APPLE AND NOT CMAKE_INSTALL_RPATH) + get_property(libdir GLOBAL PROPERTY ZINT_LIBDIR) + set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${libdir}") +endif() install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME) if(UNIX) diff --git a/frontend/main.c b/frontend/main.c index 86187751..5cb9ba00 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -106,7 +106,7 @@ static void types(void) { "28 FLAT Flattermarken 104 HIBC_QR HIBC QR Code\n" "29 DBAR_OMN GS1 DataBar Omni 106 HIBC_PDF HIBC PDF417\n" "30 DBAR_LTD GS1 DataBar Limited 108 HIBC_MICPDF HIBC MicroPDF417\n" - "31 DBAR_EXP GS1 DataBar Expanded 110 HIBC_BLOCKF HIBC Codablock-F\n", stdout); + "31 DBAR_EXP GS1 DataBar Expanded 110 HIBC_BLOCKF HIBC Codablock F\n", stdout); fputs("32 TELEPEN Telepen Alpha 112 HIBC_AZTEC HIBC Aztec Code\n" "34 UPCA UPC-A 115 DOTCODE DotCode\n" "35 UPCA_CHK UPC-A + Check Digit 116 HANXIN Han Xin Code\n" @@ -134,7 +134,7 @@ static void types(void) { "71 DATAMATRIX Data Matrix 147 DXFILMEDGE DX Film Edge Barcode\n", stdout); fputs("72 EAN14 EAN-14 (GS1-128 based) 148 EAN8_CC Composite EAN-8\n" "73 VIN Vehicle Information No. 149 EAN13_CC Composite EAN-13\n" - "74 CODABLOCKF Codablock-F\n", stdout); + "74 CODABLOCKF Codablock F\n", stdout); } /* Output version information */ @@ -224,7 +224,7 @@ if (have_gs1syntaxengine) { " --quietzones Add compliant quiet zones\n" " -r, --reverse Reverse colours (white on black)\n" " --rotate=INTEGER Rotate symbol by INTEGER (0, 90, 180, 270) degrees\n" - " --rows=INTEGER Set number of rows (Codablock-F/PDF417)\n", stdout); + " --rows=INTEGER Set number of rows (Codablock F/PDF417)\n", stdout); fputs( " --scale=NUMBER Adjust size of X-dimension\n" " --scalexdimdp=X[,R] Adjust size to X-dimension X at resolution R\n" " --scmvv=INTEGER Prefix SCM with \"[)>\\R01\\Gvv\" (vv is INTEGER) (MaxiCode)\n" @@ -236,11 +236,12 @@ if (have_gs1syntaxengine) { " --structapp=I,C[,ID] Set Structured Append info (I index, C count)\n" " -t, --types Display table of barcode types\n", stdout); fputs( " --textgap=NUMBER Adjust gap between barcode and HRT in multiples of X-dim\n" + " --verbose Output debug info to stdout\n" " --vers=INTEGER Set symbol version (size, check digits, other options)\n" " -v, --version Display Zint version\n" - " --vwhitesp=INTEGER Set height of vertical whitespace in multiples of X-dim\n" - " -w, --whitesp=INTEGER Set width of horizontal whitespace in multiples of X-dim\n", stdout); - fputs( " --werror Convert all warnings into errors\n", stdout); + " --vwhitesp=INTEGER Set height of vertical whitespace in multiples of X-dim\n", stdout); + fputs( " -w, --whitesp=INTEGER Set width of horizontal whitespace in multiples of X-dim\n" + " --werror Convert all warnings into errors\n", stdout); } /* Display supported ECI codes */ @@ -1255,6 +1256,7 @@ static void win_free_args(void) { * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ static WCHAR **win_CommandLineToArgvW(const WCHAR *cmdline, int *numargs) { int qcount, bcount; const WCHAR *s; @@ -1640,7 +1642,7 @@ int main(int argc, char **argv) { #endif {"textgap", 1, NULL, OPT_TEXTGAP}, {"types", 0, NULL, 't'}, - {"verbose", 0, NULL, OPT_VERBOSE}, /* Currently undocumented, output some debug info */ + {"verbose", 0, NULL, OPT_VERBOSE}, {"vers", 1, NULL, OPT_VERS}, {"version", 0, NULL, 'v'}, {"vwhitesp", 1, NULL, OPT_VWHITESP}, diff --git a/frontend/test.sh b/frontend/test.sh index 4b5c4aad..7a190457 100755 --- a/frontend/test.sh +++ b/frontend/test.sh @@ -239,10 +239,10 @@ echo testing EAN-14 zint -o bar72.txt -b 72 -d 3210987654321 zint -o bar72.gif -b 72 --height=50 --border=10 -d 3210987654321 zint -o bar72.svg -b 72 --height=50 --border=10 -d 3210987654321 -echo testing Codablock-F -zint -o bar74.txt -b 74 -d "Demonstration Codablock-F symbol generated by libzint" -zint -o bar74.gif -b 74 -d "Demonstration Codablock-F symbol generated by libzint" -zint -o bar74.svg -b 74 -d "Demonstration Codablock-F symbol generated by libzint" +echo testing Codablock F +zint -o bar74.txt -b 74 -d "Demonstration Codablock F symbol generated by libzint" +zint -o bar74.gif -b 74 -d "Demonstration Codablock F symbol generated by libzint" +zint -o bar74.svg -b 74 -d "Demonstration Codablock F symbol generated by libzint" echo testing NVE-18 zint -o bar75.txt -b 75 -d 76543210987654321 zint -o bar75.gif -b 75 --height=50 --border=10 -d 76543210987654321 diff --git a/frontend_qt/CMakeLists.txt b/frontend_qt/CMakeLists.txt index a6fd902c..f8693103 100644 --- a/frontend_qt/CMakeLists.txt +++ b/frontend_qt/CMakeLists.txt @@ -52,7 +52,12 @@ target_link_libraries(${PROJECT_NAME} QZint Qt${QT_VERSION_MAJOR}::UiTools Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Svg Qt${QT_VERSION_MAJOR}::Core) -get_property(libdir GLOBAL PROPERTY ZINT_LIBDIR) -set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${libdir}") +if(APPLE AND NOT CMAKE_INSTALL_RPATH) + get_property(libdir GLOBAL PROPERTY ZINT_LIBDIR) + set_target_properties(${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_RPATH};${libdir}") +endif() install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_BINDIR}" RUNTIME) +if(UNIX) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../docs/zint-qt.1" DESTINATION "${CMAKE_INSTALL_MANDIR}/man1" COMPONENT doc) +endif() diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index c1424a3b..ed357e86 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -127,7 +127,7 @@ static const struct bstyle_item bstyle_items[] = { { QSL("Brazilian Postal Code (CEPNet)"), BARCODE_CEPNET }, { QSL("Channel Code"), BARCODE_CHANNEL }, { QSL("Codabar (EN 798)"), BARCODE_CODABAR }, - { QSL("Codablock-F (and HIBC)"), BARCODE_CODABLOCKF }, + { QSL("Codablock F (and HIBC)"), BARCODE_CODABLOCKF }, { QSL("Code 11"), BARCODE_CODE11 }, { QSL("Code 128 (ISO 15417) (and GS1-128 and HIBC)"), BARCODE_CODE128 }, { QSL("Code 16K (EN 12323)"), BARCODE_CODE16K }, @@ -236,7 +236,7 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags fl) m_btnHeightPerRowDisable(nullptr), m_btnHeightPerRowDefault(nullptr), m_scaleWindow(nullptr) { - // Undocumented command line debug flag + // Command line debug flag m_bc.bc.setDebug(QCoreApplication::arguments().contains(QSL("--verbose"))); QCoreApplication::setOrganizationName(QSL("zint")); @@ -817,7 +817,7 @@ void MainWindow::about() "

      A free barcode generator

      " "

      Instruction manual is available at the project homepage:
      " "https://www.zint.org.uk.

      " - "

      Copyright © 2006-2025 Robin Stuart and others.
      " + "

      Copyright © 2006-2026 Robin Stuart and others.
      " "Qt backend by BogDan Vatra.
      " "Released under GNU GPL 3.0 or later.

      " "

      Qt version %2. Qt settings:
      %3

      " @@ -1960,7 +1960,7 @@ void MainWindow::change_options() m_optionWidget = uiload.load(&file); file.close(); load_sub_settings(settings, symbology); - tabMain->insertTab(1, m_optionWidget, tr("Codablock&-F")); + tabMain->insertTab(1, m_optionWidget, tr("Cod&ablock F")); btype->setItemText(0, tr("Default (bind)")); connect(get_widget(QSL("cmbCbfWidth")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); connect(get_widget(QSL("cmbCbfHeight")), SIGNAL(currentIndexChanged(int)), SLOT(update_preview())); diff --git a/frontend_qt/res/LICENSE_feathericons b/frontend_qt/res/LICENSE_feathericons index c2f512f4..06487d5d 100644 --- a/frontend_qt/res/LICENSE_feathericons +++ b/frontend_qt/res/LICENSE_feathericons @@ -19,3 +19,5 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +SPDX-License-Identifier: MIT diff --git a/frontend_qt/res/LICENSE_lucide b/frontend_qt/res/LICENSE_lucide index 325e8ff0..7f14a48f 100644 --- a/frontend_qt/res/LICENSE_lucide +++ b/frontend_qt/res/LICENSE_lucide @@ -13,3 +13,5 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +SPDX-License-Identifier: ISC