diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 00000000..c10cc1d8 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,658 @@ +Version 2.9.1.9 (dev) (not released yet) +======================================== + +**Incompatible changes** +------------------------ +- Add halign (horizontal align) to struct zint_vector_string + NOTE: backward incompatible text drawing for UPC/EAN +- Change height and row_height array to floats + NOTE: may cause changes in heights + +Changes +------- +- Move project history/version from manual.txt and backend/README into this file +- Command line switches -d or -i for code data may now be at any position. +- Add rotation for vector formats +- Change double to float for performance in many internal places +- Ticket 197: Allow scaling in substeps. Warn if scaling < 0.5 as pixels lost. +- Ticket 197: add output option to bypass time-intensive buffer_plot() + (OUT_BUFFER_INTERMEDIATE) +- Reduce BMP size by using 1 bit per pixel (except Ultracode) +- New warn_level field, WARN_FAIL_ALL +- Add ZPL compatibility mode (preliminary) +- Remove version info from zint.h and put in zintconfig.h via zintconfig.h.in +- Add ZBarcode_Cap() +- Add GUI symbology filter, separate settings for each symbology +- Require cmake 3.5, use PNG::PNG and add Qt6 build option +- Make library fully stack-based so reentrant apart from file operations +- Performance improvements (large data) for AZTEC/HANXIN/GRIDMATRIX/PDF417/QR +- Option scmvv for MaxiCode #212; postcode needn't be space-filled +- eci: Add support for all ECIs (Big5, Korean, UCS-2BE) +- CLI: Handle UTF-8 args on Windows; -b +- DATAMATRIX: make EOD encodation strictly ISO 16022 compliant +- png.c: Use palette for file size savings +- tif.c: Use palette/bilevel/LZW to reduce file size, alpha/CMYK support +- Option gs1parens (GS1PARENS_MODE) +- MAXICODE: Rejig raster output to more closely match ISO 16023:2000 +- C25STANDARD/C25INTER/C25IATA/C25LOGIC/C25IND: add check digit option (#216) +- Use zint-64.svg for smoother icons, props frhun +- Add whitespace_height to zint_symbol (vertical whitespace) +- AZTEC: optimize populate_map (good for small data) +- CMake: Windows compatible, backend/tests & frontend/tests now subprojects + using new zint_add_test.cmake file, static build, new ZINT_USE_PNG and + ZINT_USE_QT options, getopt moved to subproject and getopt detection, + sanitizer flag detection, and many other improvements, props Alonso Schaich +- PLESSEY: add options NCR weighted mod-10, hide check digit(s) in HRT +- Fuller error messages; more comments zint.h + +Bugs +---- +- Code16k selects GS1 mode by default in GUI +- Ultracode: use white pixels instead background for white modules. +- EMF: fix Ultracode colours. +- Ultracode: fix count of codewords when using reader init mode +- Databar Limited: add 5 right guard spaces (ISO/IEC 24723:2010 6.2 (e)) +- Data Matrix: avoid unnecessary latch in X12 mode at end of data, #208 +- Data Matrix: fix eod shift -> 0 pad +- POSTNET/PLANET: remove extra 1 module space +- Aztec: fix bit-stuffing (again!) and Aztec Rune: fix for data >= 128 +- EAN composite: allow for check digit + buffer overflow for too long add-on +- Han Xin fix 0xFFE terminator +- GUI: Use UTF-8 for QSettings (non-ASCII was getting garbled on restore) +- DOTCODE: Fix best_mask -> high_score prime test +- CODEONE: various fixes, ECI support +- #218 Prevent buffer overflow in ean_leading_zeroes by checking max lengths +- MAXICODE: fix mask typos for ECI 3/4 bytes +- Fix UPCEAN small font ignored/disabled (introduced [1adba1]) +- get_best_eci: check UTF-8 before returning 26 +- MAXICODE: fix shifting from sets C/D/E to A/B (only latch available) +- EAN14, NVE18: fix checksum calc for zero-filled input +- png: ULTRA: allow for fgcolour if bind/box (MR #111) +- DOTCODE: allow for max 200 cols in CLI, GUI, Tcl +- CODEONE/DATAMATRIX/MAILMARK/PLESSEY: fix some 32-bit/portability bugs +- CODABAR: fix CALCIUM define address use, props Alonso Schaich +- DATAMATRIX/CODEONE: Use LCM in look ahead tests to avoid floats (#228) +- raster/output: use new isfintf() to test floats integral (CodeQL) +- ZBarcode_Encode: don't reinit symbol->outfile, props Alonso Schaich +- CODEONE: is_last_single_ascii() out-of-bounds, #232 CI-Fuzz, props Jan Schrewe +- library: compat symbology 39 fix; ISBN: "X" check + + +Version 2.9.1 2020-08-04 +======================== + +Changes +------- +- Ticket 122: Implement transparency support + - Ticket 129: -nobackground option added + - -fg and -bg may contain an alpha channel + - structure zint_symbol may now contain an alpha channel as output +- Added DPD Symbology +- Add support for Unicode escape characters + +Bugs +---- +- EMF text colour does not change +- Fix QPainterPath dependency for Visual Studio + + +Version 2.9.0 2020-07-31 +======================== + +Changes +------- +- Dotcode: adapt to AIM DOC Revision 4 +- New option "-separator=" for zint to specify the separator height of stacked + symbologies. +- make internal routines invisible by a static function definition. +- CODE11: make adding check digits an option, selectable to 2 (default as now), + 1 or none +- LOGMARS restrict max length to 30 per MIL-STD-1189 Rev. B; make check digit + optional +- CODE39/EXCODE39: max length now 85 +- VIN code extended to international licence plates +- CODABAR: 3 data characters minimum (plus start/stop), check digit option added +- Channel Code: performance improvement +- QT GUI: + - GRIDMATRIX/HX/MQR/QRCODE/RMQR: allow separate selection of size/ECC + - add DAFT and VIN Symbologies + - Separarator option for DATAMATRIX + - Ticket 162: parse escape sequences + - gui element reassigments +- UPC/EAN/ITF-14 Composite: Ticket 72: new option --addongap (default:9) to set + the gap between code and composite. +- TCL Backend: The following symbology names were renamed: + - Matrix2of5 -> Standard2of5 + - PDF417Trunc -> PDF417Compact + - RSS14Stacked -> GS1DataBarStacked + - RSS14Stacked -> GS1DataBarStacked + - RSS14StackedOmni -> GS1DataBarSstackedOmni + - RSS14ExpandedStacked -> GS1DataBarExpandedStacked + - OneCode -> USPSIntelligentMail + - EAN128-CC -> GS1-128-CC + - RSS14-CC -> GS1DataBarOmni-CC + - RSSLimited-CC -> GS1DataBarLimited-CC + - RSSExpandedStacked-CC -> GS1DataBarExpanded-CC + - RSSEXPanded-CC -> GS1DataBarExpanded-CC + - RSS14Stacked-CC -> GS1DataBarStacked-CC + - RSS14Omni-CC -> GS1DataBarStackedOmni-CC + - RSSExpandedStacked-CC -> GS1DataBarExpandedStacked-CC + ** Potential incompatibility ** +- API Symbol names changed but old names preserved in zint.h + - BARCODE_C25MATRIX -> BARCODE_C25STANDARD + - BARCODE_EAB128_CC -> BARCODE_GS1_128 + - BARCODE_RSS14 -> BARCODE_DBAR_OMN + - BARCODE_RSS_LTD -> BARCODE_DBAR_LTD + - BARCODE_RSS_EXP -> BARCODE_DBAR_EXP + - BARCODE_PDF417TRUNC -> BARCODE_PDF417COMP + - BARCODE_RSS14STACK -> BARCODE_DBAR_STK + - BARCODE_RSS14STACK_OMNI -> BARCODE_DBAR_OMNSTK + - BARCODE_RSS_EXPSTACK -> BARCODE_DBAR_EXPSTK + - BARCODE_ONECODE -> BARCODE_USPS_IMAIL + - BARCODE_EAN128_CC -> BARCODE_GS1_128_CC + - BARCODE_RSS14_CC -> BARCODE_DBAR_OMN_CC + - BARCODE_RSS_LTD_CC -> BARCODE_DBAR_LTD_CC + - BARCODE_RSS_EXP_CC -> BARCODE_DBAR_EXP_CC + - BARCODE_RSS14STACK_CC -> BARCODE_DBAR_STK_CC + - BARCODE_RSS_EXPSTACK_CC -> BARCODE_DBAR_EXPSTK_CC + +Bugs +---- +- Ticket 185 EMF export corrections + - fine scaling by the use of float arithmetic + - full header (extension1&2) with correct size field +- Ticket 190: Aztec buffer overrun fixed +- Ticket 191 suppress clang-tidy warnings: raster.c, composite.c, qr.c +- Ultracode internal encoding bugs, ECI 899 +- GS1 data: exclude DEL character +- Ticket 192: missing malloc.h include for Windows compilers. +- Correct GS1 AI 253 & 255 length from 14 to 13 +- Codablock F changes: + - FNC4 may not be split over rows. + - Use Code128 routine for one line Codablock FIM + - Correct column range to 9 ... 62 + - allow new options: row count and column count, border_width and HIBC mode + - pad correctly empty and last row + - separator length correction +- Code128 changes: + - Correctly encode CodeA charset with control-character only data + - Improve coding of Extended ASCII (FNC4) + - Checksum calculation overflow protection + - EAN128 may reduce length +- Check for incomplete escape sequences on data specification: "\" without + following character. +- Code16K fixes: remove extended ASCII latch, pad character +- Restructuring to have common code centralized: + - Code128 routines for Codablock&Code16K + - output.c has common routines from raster.c and symbologies. +- HIBC_39: restrict max length to 68 otherwise to avoid overrun +- Code One: protect agains overrun +- Telepen: allow DEL +- GS1 Databar/ GS1-128 Composite: + - Separator bar corrections + - Ticket 200: spurious additional row + - Correct names in GUI +- Compact PDF417: + - Add missing stop pattern. + - Rename in GUI: "PDF417 Truncated" to "Compact PDF417". +- PDF417: Optimize text compaction mode switch. +- Human readable representation: Code128, Code39, Code93 special characters + are shown by a blank. +- ITF14: Ticket 201: allow bind option + + +Version 2.8.0 2020-04-10 +======================== + +Changes +------- +(New) Tests for auspost, codablock, composite, dotcode, general, telepen, + upcean, all output formats +- QR, Han Xin, Grid Matrix: the multi byte compaction schemes (ex: Kanji) + are used by some decoders as codepage information (Ex: GB2312) and output + may be translated to UTF-8. This may destroy the data in a not controlable + manner. + In consequence, multibyte compaction schemes are disabled by default. + The new option --fullmultibyte (option_3 = ZINT_FULL_MULTIBYTE) enables this + optimisation. +- Add new symbology "Ultra Code" with the ability to output colour codes. + +Bugs +---- +- Ticket 181 penetration test found many bugs: + - Auspost: null bytes in content caused segfault + - Codablock: data 0x1a..0x1f caused segfault + - Dotcode: overrun in binary mode, overrun in codeword_array buffer + Correct encoding of HT/FS/GS/RS when shifting to code set B + - empty or unreadable input file + - telepen: buffer overflow + - EANUCC: buffer overflow on multiple + (multiple extension bars) + - Maxicode: index overrun on numeric compaction + - CodeOne: Simple i indexing not sp + i in C1_ASCII numeric latch loop. + - Aztec: free memory +- Ticket 183: Databar stacked separator correction +- Ticket 182: Output bitmap type was char, where some targets assigned 0 + if pixel colour >127 (e.g. negative). API change to use unsigned char. +- HanXin: wrong codepage, gb2312 instead gb18030. +- PDF417: corrected alloced sizes to max characters +- Ticket 189: FNC1 encodation fixed (FLG(0) missing after FLG(n)) +- PCX format: added missing bytes_per_line if bitmap width is odd. + + +Version 2.7.1 2020-02-01 +======================== + +Changes +------- +- QR encoding optimized to get smaller code matrix results +- PDF417: remove obsolete codeword number option in qzint. + Option removed in qtzint. +- Removed annex B (3 digit country codes) and annex C (GS1 General + Specification) from the manual. This material may be found elsewhere. +- MAC homebrew remark added to the documentation +- Correct cmake file to match BSD-3-clause licence + +Bugs +---- +- Correct uninitialized warning in gridmatrix.call +- do not export internal functions +- raster painting of UPC-A bound check +- pdf417 documentation corrected: change flag -security to -secure +- Dot Code encoding ECI number corrected +- Corrected postscript plotting error +- Datamatrix: corrected possible buffer overrun in 3 characters to 2 byte + encodings. +- In 2.7.0 removed interface "ZBarcode_Render" still declared +- vc6 make was missing (trivial) resource.h + + +Version 2.7.0 2019-12-05 +======================== + +Changes +------- +- Automatic height option added to qzint +- DotCode in line with new specification +- New GS1 AIs 7240, 235, 417, 7040, 8026, updated checks for 7007, 8008 +- New Symbology rMQR +- QR and Qridmatrix optimisation for GB2312 +- removed depreciated interface for gLabels program. Please use current + interface. + +Fixed bugs +---------- +- Many improvements in composite codes +- SVG output corrected for messages containing "<" and "&". +- GS1-128 and RSS may only be used with GS1 contents +- Han Xin chinese character handling + + +Version 2.6.7 2019-10-07 +======================== + +Changes +------- +Ticket 127: Allow to code ECI 3 if explicitly given for debug purposes. +**Incompatible change** +"--eci 3" now leads to included ECI information. +"--eci 0" may now be used to not include any ECI information. +The default of the parameter changed from 3 to 0. + +Fixed bugs +---------- +Ticket 146, 165: fix wrong encoding of RSS composite codes + + +Version 2.6.6 2019-09-18 +======================== + +Fixed bugs +---------- +Ticket 161: PDF row size may be set +Ticket 155: PDF numeric compaction +Ticket 164: crash due to call of svg_plot withnull vector +Ticket 119: Crash on bullseye raster drawing +qtzint: Micro-QR version option choice corrected (+1 missing). +Datamatrix: code corruption when ECI was encoded and base256 encoding was +automatically chosen. + + +Version 2.6.5 2019-09-02 +======================== + +Fixed bugs +---------- +backend/main.c was missing +Maxicode bullseye rastering for scale = 0.5 +Crash in utf to eci. +eci ISO 8859-16 table missing data line +upce check for 7 digit input (causes crash) and BARCODE_UPCE_CHK -> BARCODE_UPCE +mapping removed +US imail check for invalid barcode identifier and allow 0/5/9/11 length zip +maxicode code set correction +cmake flags for debugging and sanitize options +unit tests for the changes, with a simple test suite based on qrencode/tests + + +Version 2.6.4 2019-08-30 +======================== +Fixed bugs: EMF output, maxicode plot/content +Datamatrix DMRE updated to the ISO/IEC29158 version. This is incompatible in the +way that the old -vers numbers for DMRE are re-assigned. +The separator of GS1-datamatrix may be switched from FNC1 to GS. +GS1 field length check AI 8009 and 7230 to 7239 currected. + + +Version 2.6.3 2018-02-15 +======================== +New symbology Royal Mail 4-state Mailmark. Added North America VIN verification. +Bugfixes for TIF and EMF output and escape character handling. + + +Version 2.6.2 2017-10-22 +======================== +Further bugfixes in Aztec and DotCode. Expand escape sequence support +to API and GUI. Handle UTF BOM. Bugfix raster images of Maxicode. + + +Version 2.6.1 2017-08-27 +======================== +Library bugfixes: EDIFACT unlatch in Data Matrix, Add UPNQR, Improved Aztec +data compression, Detect Code 128 data too long, Make error codes consistent. +GUI improvements: Additional clipboard options, remove border width bug, +remove changing background colour bug, remember more settings and make GUI +more consistent with user expectations. All windows now resizable and more +information given when batch processing. + + +Version 2.6.0 2017-05-12 +======================== +Update front end to Qt5. Output to EMF and TIF. Copy to clipboard. Update +to latest draft of DMRE. Usual bugfixes. + + +Version 2.5.1 2017-04-03 +======================== +Numerous bugfixes, especially with Data Matrix thanks to extensive testing +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. +Many minor fixes and improvements. + + +Version 2.4.3 2011-05-16 +======================== +Includes minor bugfixes + + +Version 2.4.1 2011-04-19 & 2.4.2 2011-05-04 +=========================================== +A whole host of bugfixes including correction of ECC routines +for Code-1 and addition of batch processing at the command line. + + +Version 2.4 2010-09-13 +====================== +Built extensions to the API for integrating with glabels with thanks to +Sam Lown and Jim Evins. Added code optimisation and input from stdin thanks to +Ismael Luceno. Reinstated escape character input. Simplification of Barcode +Studio. + + +Version 2.3.2 2010-05-29 +======================== +Corrected many bugs in GS1 DataBar Extended thanks to the careful +study of the code by Pablo Orduña at the PIRAmIDE project. Similarly corrected +some bugs in Maxicode thanks to Monica Swanson at Source Technologies. Also +minor bugfixes for ISBN and Aztec Code, and added some small features like a +--square option in the CLI. + + +Version 2.3.1 2010-04-07 +======================== +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. + + +Version 2.3 2009-11-23 +====================== +Fixed problems with Micro QR Code and rebuilt QR Code support removing +dependence on libqrencode. Improved Kanji character support for QR Code and +Micro QR Code which now auto-detects and automatically converts to Shift-JIS. +Added Grid Matrix symbology with Kanji character support and automatic +conversion to GB 2312. Removed no_qr compile option. Advanced Barcode Studio +version number to match library version number. + + +Version 2.2.2 2009-09-29 +======================== +A beta release previewing the new API structure. Better NULL character +support with "nullchar" value removed. Added loading from file and sequence +dialogs in Barcode Studio. + + +Version 2.2.1 2009-08-06 +======================== +Data encoding bugfixes for Aztec Code, Data Matrix ECC200, USPS One +Code and PDF417. Symbol plotting bugfixes for MicroPDF417 and 2D components of +composite symbols. Text formatting bugfix for Qt renderer and a couple of +compiler fixes for MSVC PNG image output. + + +Version 2.2 2009-07-18 +====================== +Added Code One and GS1 support in Code 49. Changed GUI binary name to +zint-qt and brought GUI up to version 1.0. Made some minor bugfixes to Code 39, +ITF-14, Aztec Code, Code 128 and Code 16K. Added 'rest' button to GUI. Included +.spec file from Radist. + + +Version 2.1.4 2009-06-19 +======================== +Many stability improvements including removal of buffer overruns in +Code 39, LOGMARS, PZN, Aztec Code and Composite CC-A. Addition of files for +compiling on MS Windows platform - tested successfully on XP and Vista. + + +Version 2.1.3 2009-05-19 +============= +Many improvements to the QZint GUI which is now renamed "Zint Barcode +Studio 0.2". Added Japanese Postal Barcode, Code 49 and Channel Code and made +corrections to Data Matrix ECC200 (Binary mode data compression terminates too +soon), Aztec Code (Bug when automatically resizing after removing "all 0" and +"all 1" codewords) and Code 128 (Extended ASCII characters become corrupt). + + +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 +indicators above row 6). + + +Version 2.1.1 2009-02-10 +======================== +Minor Data Matrix ECC200 bugfix and added HIBC options. + + +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, +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 +Aztec Code. Added scale and direct to stdout options. Rebult Data Matrix ECC200 +ECC 200 encoding algorithms to support NULL encoding and GS1 data encoding. + + +Version 2.0 2008-11-18 +====================== +Made corrections to Aztec Code and tested output with bcTester. Added +Aztec Runes, Micro QR Code and Data Matrix ECC200 ECC 000-140. Updated e-mail +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 +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 +Code. Rearranged symbology numbers to match Tbarcode v8. Corrected a never +ending loop bug in EAN-128. + + +Version 1.6.2 2008-07-28 +======================== +Added KIX Code support and PNG image rotation. Corrected a bug +affecting extended ASCII support in Code 128 and Code 16k. + + +Version 1.6.1 2008-07-08 +======================== +Major restructuring of PNG generating code: Now draws UPCA and EAN +symbols properly and puts human readable text into the image. Also corrected +some nasty 'never ending loop' bugs in Code 128 and check digit bugs in PostNet +and Planet. + + +Version 1.6 2008-04-22 +====================== +Data Matrix ECC200, Maxicode and Australia Post now use common +Reed-Solomon functions – this also fixes a bug in Maxicode error correction and +replaces the last of the Lien code. Added PNG output for Maxicode symbols. +Removed some useless code. Updated QR support for libqrencode v2.0.0. + + +Version 1.5.5 2008-03-09 +======================== +Added composite symbology support. Corrected errors with GS1-128 and +PDF417/MicroPDF417 byte processing. Transferred licence to GPL version 3. + + +Version 1.5.4 2007-11-26 +======================== +Added GS1 DataBar (Reduced Space Symbology) support. + + +Version 1.5.3 2007-10-10 +======================== +Made huge corrections to Maxicode support by removing and re-writing +much of John's code. Maxicode now supports extended ASCII and modes 4, 5 and 6. + + +Version 1.5.2 2007-09-26 +======================== +Added extended ASCII support to Code 16k. Corrected Code 128 error. +Added Maxicode support by integrating code by John Lien. + + +Version 1.5.1 2007-09-03 +======================== +Added formatting code to EPS output of EAN and UPC symbols according +to EN 797:1996. Checked against and, where appropriate, altered or corrected to +comply with ISO 16388 and ISO 15417 including Latin-1 support. Altered default +image settings, added automatic ITF border. Corrected error with USPS OneCode. +Tidied up Code 39 quite a bit, added Mod 43 options. + + +Version 1.5 2007-08-12 +====================== +Pulled everything together to make an API. Corrected errors with EAN-13, +PDF417 and LOGMARS. Added EPS output. Added QR Code support using libqrencode. +Corrected ISBN verification error. Re-compiled documentation in HTML form. Put +in place proper error handling routines. --font option removed. Encoding is now +done with a restructured zint_symbol structure. Added make install option and +optional QR Code support to Makefile. Corrected minor problem with 4-State +Codes. Restructured code into fewer source code files. Added MicroPDF417 +support. + + +Version 1.4 2007-06-20 +====================== +Added NVE-18 support. Corrected some problems with compilation and input +verification. Command line option handling now uses getopt(), and all the +switches have changed. Added –font option. + + +Version 1.3 2007-06-13 +====================== +Supports USPS OneCode and LOGMARS. Brought all usage information into +one User Manual document. + + +Version 1.2 2007-05-28 +====================== +Supports Data Matrix ECC200 (by absorption of IEC16022 code by Stefan +Schmidt et al). Added reverse colours, FIM, MSI/Plessey Modulo 11 and Modulo +11/10. Corrected Code 16k check digit calculation. + + +Version 1.1 2007-04-26 +====================== +Added more derivatives (Code 2 of 5 Matrix, IATA and Data Logic, +Truncated PDF417, Deutsche Post Leitcode and Identcode, Pharmazentralnummer, +Planet) and Flattermarken. Tidied up 2 of 5 code. + + +Version 1.0 2007-04-20 +====================== +Corrected problem with escape character codes. Supports PDF417. This +completes the list of features I originally wanted (plus a few more), hence +skip to version 1.0. + + +Version 0.6 2007-04-01 +====================== +Added Plessey and some derivative codes (EAN-128, Code 128 subset B, +Auspost Reply, Auspost Routing, Auspost Redirect, ITF-14). Tidied up code +again: separated symbologies into more files and put all lookup tables into +arrays (much reducing the amount of code, especially for Code 39e and Code 93). +Errors now output to stderr. Added proper input verification. Distribution now +packs with HTML pages instead of separate README. Outputs to PNG. Outputs +colour. User variable whitespace and border width. Box option. Fixed EAN add-on +bug. Added whitespace and height options. Project name changed to Zint to avoid +conflict with extant trade name. Added escape character input. + + +Version 0.5 2007-02-28 +====================== +Added Australia Post 4-State Barcodes and Pharmacode (1 and 2 track). +4-state codes now draw with correct height/width ratio. + + +Version 0.4 2007-01-15 +====================== +Added barcode stacking (now stacks up to 16 barcodes) and Code16k (stub). + + +Version 0.3 2006-12-30 +====================== +Added MSI/Plessey Mod 10 check and 2 x Mod 10 check options, Telepen +ASCII and Telepen numeric, Postnet, RM4SCC. Code has been tidied up quite a +bit. Bind option added. + + +Version 0.2 2006-12-12 +====================== +Added Code 128 (which is now the default), Code 11, Code 2 of 5, Add-on +codes EAN-2 and EAN-5 parity and MSI/Plessey without check digit. + + +Version 0.1 (as Zebar) 2006-11-13 +================================= +Draws UPC-A. UPC-E, EAN-8, EAN-13, Interlaced 2 of 5, +Codabar, Code 39, Extended Code 39 and Code 93 barcodes and Add-on codes EAN-2 +and EAN-5 without parity. diff --git a/README b/README index 4a62662b..aed53f82 100644 --- a/README +++ b/README @@ -7,341 +7,42 @@ this capability into your own programs. Zint is able to encode data in the following formats: Code 11, Standard Code 2 of 5, IATA Code 2 of 5, Industrial Code 2 of 5, -Interleaved Code 2 of 5, Code 2 of 5 Data Logic, ITF-14, Deutche Post -Leitcode, Deutche Post Identcode, UPC-A, UPC-E, EAN-2, EAN-5, EAN-8, -EAN-13, UK Plessey, MSI Plessey, Telepen Alpha, Telepen Numeric, Code 39, -Extended Code 39, Code 93, PZN, Code 23, LOGMARS, Codabar, Pharmacode, Code -128, EAN-128, NVE-18, Code 16k, PDF417, MicroPDF417, Two-Track Pharmacode, -PostNet, PLANET, Australia Post 4-State Symbols, RM4SCC, USPS OneCode, GS1 -DataBar, DataBar-14, DataBar Limited, DataBar Extended, DataBar Stacked, -Composite Symbology, Data Matrix, QR Code, Maxicode, Aztec Code, EAN-13, -Micro QR, Korea Post Barcode, HIBC Code 128, HIBC Code 39, HIBC Data Matrix, -HIBC PDF417, HIBC MicroPDF417, HIBC QR Code, HIBC Aztec Code, Japanese Postal -Code, Code 49, Channel Code, Code One, Grid Matrix, FIM and Flattermarken, -Codablock-F, DotCode, Han Xin Code, rMQR and Ultracode. +Interleaved Code 2 of 5, Code 2 of 5 Data Logic, ITF-14, Deutshe Post Leitcode, +Deutshe Post Identcode, UPC-A, UPC-E, EAN-2, EAN-5, EAN-8, EAN-13, ISBN, UK +Plessey, MSI Plessey, Telepen Alpha, Telepen Numeric, Code 39, Extended Code 39, +Code 93, PZN, Code 32, LOGMARS, Codabar, Pharmacode, Code 128, GS1-128, NVE-18, +Code 16k, PDF417, MicroPDF417, Two-Track Pharmacode, POSTNET, PLANET, Australia +Post 4-State Symbols, RM4SCC, Dutch Post KIX, USPS Intelligent Mail, GS1 DataBar +Omnidirectional, GS1 DataBar Limited, GS1 DataBar Expanded, GS1 DataBar Stacked, +Composite Symbology, Data Matrix, QR Code, MaxiCode, Aztec Code, Aztec Runes, +EAN-14, Micro QR, Korea Post Barcode, HIBC Code 128, HIBC Code 39, HIBC Data +Matrix, HIBC PDF417, HIBC MicroPDF417, HIBC QR Code, HIBC Codablock-F, HIBC +Aztec Code, Japanese Postal Code, Code 49, Channel Code, Code One, Grid Matrix, +DAFT, FIM and Flattermarken, Codablock-F, DotCode, Han Xin Code, rMQR, +Ultracode, UPNQR, VIN, and DPD Code. Output can be saved as BMP, EPS, GIF, PCX, TIF, EMF, PNG or SVG. + PROJECT HISTORY --------------- +Please see "ChangeLog" in the project root directory. -Version 2.5.0: -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. -Many minor fixes and improvements. - -Version 2.5.1: -Numerous bugfixes, especially with Data Matrix thanks to extensive testing -by brunt@SF - -Version 2.6.0: -Update front end to Qt5. Output to EMF and TIF. Copy to clipboard. Update -to latest draft of DMRE. Usual bugfixes. - -Version 2.6.1: -Library bugfixes: EDIFACT unlatch in Data Matrix, Add UPNQR, Improved Aztec -data compression, Detect Code 128 data too long, Make error codes consistent. -GUI improvements: Additional clipboard options, remove border width bug, -remove changing background colour bug, remember more settings and make GUI -more consistent with user expectations. All windows now resizable and more -information given when batch processing. - -Version 2.6.2: -Further bugfixes in Aztec and DotCode. Expand escape sequence support -to API and GUI. Handle UTF BOM. Bugfix raster images of Maxicode. - -Version 2.6.3: -New symbology Royal Mail 4-state Mailmark. Added North America VIN verification. -Bugfixes for TIF and EMF output and escape character handling. - -Version 2.6.4: -Fixed bugs: EMF output, maxicode plot/content -Datamatrix DMRE updated to the ISO/IEC29158 version. This is incompatible in the way, -that the old -vers numbers for DMRE are re-assigned. -The separator of GS1-datamatrix may be switched from FNC1 to GS. -GS1 field length check AI 8009 and 7230 to 7239 currected. - -Version 2.6.5: -Fixed bugs: -backend/main.c was missing -Maxicode bullseye rastering for scale = 0.5 -Crash in uto to eci. -eci ISO 8859-16 table missing data line -upce check for 7 digit input (causes crash) and BARCODE_UPCE_CHK -> BARCODE_UPCE mapping removed -US imail check for invalid barcode identifier and allow 0/5/9/11 length zip -maxicode code set correction -cmake flags for debugging and sanitize options -unit tests for the changes, with a simple test suite based on qrencode/tests - -Version 2.6.6: -Fixed bugs: -Ticket 161: PDF row size may be set -Ticket 155: PDF numeric compaction -Ticket 164: crash due to call of svg_plot withnull vector -Ticket 119: Crash on bullseye raster drawing -qtzint: Micro-QR version option choice corrected (+1 missing). -Datamatrix: code corruption when ECI was encoded and base256 encoding was automatically chosen. - -Version 2.6.7 2019-10-07: - -Changes: -Ticket 127: Allow to code ECI 3 if explicitly given for debug purposes. -***Incompatible change** -"--eci 3" now leads to included ECI information. -"--eci 0" may now be used to not include any ECI information. -The default of the parameter changed from 3 to 0. - -Fixed bugs: -Ticket 146, 165: fix wrong encoding of RSS composite codes - -Version 2.7.0 2019-12-05: -Changes: -- Automatic height option added to qzint -- DotCode in line with new specification -- New GS1 AIs 7240, 235, 417, 7040, 8026, updated checks for 7007, 8008 -- New Symbology rMQR -- QR and Qridmatrix optimisation for GB2312 -- removed depreciated interface for gLabels program. Please use current interface. - -Fixed bugs: -- Many improvements in composite codes -- SVG output corrected for messages containing "<" and "&". -- GS1-128 and RSS may only be used with GS1 contents -- Han Xin chinese character handling - -Version 2.7.1 2020-02-01: -Changes: -- QR encoding optimized to get smaller code matrix results -- PDF417: remove obsolete codeword number option in qzint. - Option removed in qtzint. -- Removed annex B (3 digit country codes) and annex C (GS1 General Specification) - from the manual. This material may be found elsewhere. -- MAC homebrew remark added to the documentation -- Correct cmake file to match BSD-3-clause licence -Bugs: -- Correct uninitialized warning in gridmatrix.call -- do not export internal functions -- raster painting of UPC-A bound check -- pdf417 documentation corrected: change flag -security to -secure -- Dot Code encoding ECI number corrected -- Corrected postscript plotting error -- Datamatrix: corrected possible buffer overrun in 3 characters to 2 byte - encodings. -- In 2.7.0 removed interface "ZBarcode_Render" still declared -- vc6 make was missing (trivial) resource.h - -Version 2.8.0 2020-04-10: -Changes: -(New) Tests for auspost, codablock, composite, dotcode, general, telepen, upcean, - all output formats, -- QR, Han Xin, Grid Matrix: the multi byte compaction schemes (ex: Kanji) - are used by some decoders as codepage information (Ex: GB2312) and output - may be translated to UTF-8. This may destroy the data in a not controlable - manner. - In consequence, multibyte compaction schemes are disabled by default. - The new option --fullmultibyte (option_3 = ZINT_FULL_MULTIBYTE) enables this - optimisation. -- Add new symbology "Ultra Code" with the ability to output colour codes. -Bugs: -- Ticket 181 penetration test found many bugs: - - Auspost: null bytes in content caused segfault - - Codablock: data 0x1a..0x1f caused segfault - - Dotcode: overrun in binary mode, overrun in codeword_array buffer - Correct encoding of HT/FS/GS/RS when shifting to code set B - - empty or unreadable input file - - telepen: buffer overflow - - EANUCC: buffer overflow on multiple + (multiple extension bars) - - Maxicode: index overrun on numeric compaction - - CodeOne: Simple i indexing not sp + i in C1_ASCII numeric latch loop. - - Aztec: free memory -- Ticket 183: Databar stacked separator correction -- Ticket 182: Output bitmap type was char, where some targets assigned 0 - if pixel colour >127 (e.g. negative). API change to use unsigned char. -- HanXin: wrong codepage, gb2312 instead gb18030. -- PDF417: corrected alloced sizes to max characters -- Ticket 189: FNC1 encodation fixed (FLG(0) missing after FLG(n)) -- PCX format: added missing bytes_per_line if bitmap width is odd. - -Version 2.9.0 2020-07-31: -Changes: -- Dotcode: adopt to AIM DOC Revision 4 -- New option "-separator=" for zint to specify the separator height of stacked - symbologies. -- make internal routines invisible by a static function definition. -- CODE11: make adding check digits an option, selectable to 2 (default as now), - 1 or none -- LOGMARS restrict max length to 30 per MIL-STD-1189 Rev. B; make check digit - optional -- CODE39/EXCODE39: max length now 85 -- VIN code extended to international licence plates -- CODABAR: 3 data characters minimum (plus start/stop), check digit option added -- Channel Code: performance improvement -- QT GUI: - - GRIDMATRIX/HX/MQR/QRCODE/RMQR: allow separate selection of size/ECC - - add DAFT and VIN Symbolgies - - Separarator option for DATAMATRIX - - Ticket 162: parse escape sequences - - gui element reassigments -- UPC/EAN/ITF-14 Composite: Ticket 72: new option --addongap (default:9) to set - the gap between code and composite. -- TCL Backend: The following symbology names were renamed: - - Matrix2of5 -> Standard2of5 - - PDF417Trunc -> PDF417Compact - - RSS14Stacked -> GS1DataBarStacked - - RSS14Stacked -> GS1DataBarStacked - - RSS14StackedOmni -> GS1DataBarSstackedOmni - - RSS14ExpandedStacked -> GS1DataBarExpandedStacked - - OneCode -> USPSIntelligentMail - - EAN128-CC -> GS1-128-CC - - RSS14-CC -> GS1DataBarOmni-CC - - RSSLimited-CC -> GS1DataBarLimited-CC - - RSSExpandedStacked-CC -> GS1DataBarExpanded-CC - - RSSEXPanded-CC -> GS1DataBarExpanded-CC - - RSS14Stacked-CC -> GS1DataBarStacked-CC - - RSS14Omni-CC -> GS1DataBarStackedOmni-CC - - RSSExpandedStacked-CC -> GS1DataBarExpandedStacked-CC - *** Potential incompatibility *** -- API Symbol names changed but old names preserved in zint.h - - BARCODE_C25MATRIX -> BARCODE_C25STANDARD - - BARCODE_EAB128_CC -> BARCODE_GS1_128 - - BARCODE_RSS14 -> BARCODE_DBAR_OMN - - BARCODE_RSS_LTD -> BARCODE_DBAR_LTD - - BARCODE_RSS_EXP -> BARCODE_DBAR_EXP - - BARCODE_PDF417TRUNC -> BARCODE_PDF417COMP - - BARCODE_RSS14STACK -> BARCODE_DBAR_STK - - BARCODE_RSS14STACK_OMNI -> BARCODE_DBAR_OMNSTK - - BARCODE_RSS_EXPSTACK -> BARCODE_DBAR_EXPSTK - - BARCODE_ONECODE -> BARCODE_USPS_IMAIL - - BARCODE_EAN128_CC -> BARCODE_GS1_128_CC - - BARCODE_RSS14_CC -> BARCODE_DBAR_OMN_CC - - BARCODE_RSS_LTD_CC -> BARCODE_DBAR_LTD_CC - - BARCODE_RSS_EXP_CC -> BARCODE_DBAR_EXP_CC - - BARCODE_RSS14STACK_CC -> BARCODE_DBAR_STK_CC - - BARCODE_RSS_EXPSTACK_CC -> BARCODE_DBAR_EXPSTK_CC - -Bugs: -- Ticket 185 EMF export corrections - - fine scaling by the use of float arithmetic - - full header (extension1&2) with correct size field -- Ticket 190: Aztec buffer overrun fixed -- Ticket 191 suppress clang-tidy warnings: raster.c, composite.c, qr.c -- Ultracode internal encoding bugs, ECI 899 -- GS1 data: exclude DEL character -- Ticket 192: missing malloc.h include for Windows compilers. -- Correct GS1 AI 253 & 255 length from 14 to 13 -- Codablock F changes: - - FNC4 may not be split over rows. - - Use Code128 routine for one line Codablock FIM - - Correct column range to 9 ... 62 - - allow new options: row count and column count, border_width and HIBC mode - - pad correctly empty and last row - - separator length correction -- Code128 changes: - - Correctly encode CodeA charset with control-character only data - - Improve coding of Extended ASCII (FNC4) - - Checksum calculation overflow protection - - EAN128 may reduce length -- Check for incomplete escape sequences on data specification: "\" without - following character. -- Code16K fixes: remove extended ASCII latch, pad character -- Restructuring to have common code centralized: - - Code128 routines for Codablock&Code16K - - output.c has common routines from raster.c and symbologies. -- HIBC_39: restrict max length to 68 otherwise to avoid overrun -- Code One: protect agains overrun -- Telepen: allow DEL -- GS1 Databar/ GS1-128 Composite: - - Separator bar corrections - - Ticket 200: spurious additional row - - Correct names in GUI -- Compact PDF417: - - Add missing stop pattern. - - Rename in GUI: "PDF417 Truncated" to "Compact PDF417". -- PDF417: Optimize text compaction mode switch. -- Human readable representation: Code128, Code39, Code93 special characters - are shown by a blank. -- ITF14: Ticket 201: allow bind option - -Version 2.9.1 2020-08-04: -Changes: -- Ticket 122: Implement transparency support - - Ticket 129: -nobackground option added - - -fg and -bg may contain an alpha channel - - structure zint_symbol may now contain an alpha channel as output -- Added DPD Symbology -- Add support for Unicode escape characters -Bugs: -- EMF text colour does not change -- Fix QPainterPath dependency for Visual Studio - -Version 2.9.2 not released yet: -***Incompatible change** -- Add halign to struct zint_vector_string NOTE: backward incompatible UPC/EAN - -Changes: -- Command line switches -d or -i for code data may now be at any position. -- Add rotation for vector formats -- Change double to float for performance in many internal places -- Ticket 197: Allow scaling in substeps. - Warn if scaling < 0.5 as pixels are lost. -- Ticket 197: add output option to bypass time-intensive buffer_plot() - (OUT_BUFFER_INTERMEDIATE) -- Reduce BMP size by using 1 bit per pixel (except Ultracode) -- Remove backend Qt interface and incorporate into frontend GUI -- Add ZPL compatibility mode (preliminary) -- Remove version info from zint.h and put in zintconfig.h via zintconfig.h.in -- Add ZBarcode_Cap() -- Add GUI symbology filter, separate settings for each symbology -- Require cmake 3.5, use PNG::PNG and add Qt6 build option -- Make library fully stack-based so reentrant apart from file operations -- Performance improvements (large data) for Aztec, Han Xin, Grid Matrix, PDF417 - and QR -- Option scmvv for MaxiCode #212; postcode needn't be space-filled -- eci: Add support for all ECIs (Big5, Korean, UCS-2BE) -- CLI: Handle UTF-8 args on Windows; -b -- DATAMATRIX: make EOD encodation strictly ISO 16022 compliant -- png.c: Use palette for file size savings -- tif.c: Use palette/bilevel/LZW to reduce file size, alpha/CMYK support -- Option gs1parens (GS1PARENS_MODE) -- MAXICODE: Rejig raster output to more closely match ISO 16023:2000 -- C25STANDARD/C25INTER/C25IATA/C25LOGIC/C25IND: add check digit option (#216) - -Bugs: -- Code16k selects GS1 mode by default in GUI -- Ultracode: use white pixels instead background for white modules. -- EMF: fix Ultracode colours. -- Ultracode: fix count of codewords when using reader init mode -- Databar Limited: add 5 right guard spaces (ISO/IEC 24723:2010 6.2 (e)) -- Data Matrix: avoid unnecessary latch in X12 mode at end of data, #208 -- Data Matrix: fix eod shift -> 0 pad -- POSTNET/PLANET: remove extra 1 module space -- Aztec: fix bit-stuffing (again!) and Aztec Rune: fix for data >= 128 -- EAN composite: allow for check digit + buffer overflow for too long add-on -- Han Xin fix 0xFFE terminator -- GUI: Use UTF-8 for QSettings (non-ASCII was getting garbled on restore) -- DOTCODE: Fix best_mask -> high_score prime test -- CODEONE: various fixes, ECI support -- #218 Prevent buffer overflow in ean_leading_zeroes by checking max lengths -- MAXICODE: fix mask typos for ECI 3/4 bytes -- Fix UPCEAN small font ignored/disabled (introduced [1adba1]) -- get_best_eci: check UTF-8 before returning 26 -- MAXICODE: fix shifting from sets C/D/E to A/B (only latch available) -- EAN14, NVE18: fix checksum calc for zero-filled input CONTACT US ---------- The home of Zint is: - + The code is now also mirrored at: - + For feature requests or bug reports please either join the mailing list at - - + + or add a ticket on the project's SourceForge. diff --git a/docs/manual.txt b/docs/manual.txt index 37f23a70..d2acfe9b 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -76,9 +76,9 @@ Reader Initialisation: Some symbologies allow a special character to be included ECI: The ECI mechanism allows for multi-language data to be encoded in symbols which would usually support only Latin-1 (ISO/IEC 8859-1) - characters. This can be useful, for example, if you need to encode - Cyrillic characters, but should be used with caution as not all scanners - support this method. + characters. This can be useful, for example, if you need to encode + Cyrillic characters, but should be used with caution as not all scanners + support this method. Two other concepts that are important are raster and vector. Raster is a low level bitmap representation of an image. BMP, GIF, PCX, PNG and TIF are raster @@ -105,7 +105,7 @@ cmake .. make sudo make install -The command line program can be accessed by typing +The CLI command line program can be accessed by typing zint {options} @@ -114,7 +114,7 @@ The GUI can be accessed by typing zint-qt To test that the installation has been successful a shell script is included in -the /frontend folder. To run the test type +the frontend sub-directory. To run the test type ./test.sh @@ -151,7 +151,7 @@ brew install zint 2.4 zint tcl backend -------------------- The tcl backend may be built using the provided TEA build on Linux, Windows, -Mac-OS and Android. For Windows, a MS-VC6 makefile is also available. +Mac-OS and Android. For Windows, an MS-VC6 makefile is also available. 3. Using Zint Barcode Studio @@ -566,7 +566,7 @@ Latin-1 then you should check that the resulting barcode can be understood by your target barcode reader. Zint will generate a warning message when an ECI code that has not been explicitly requested has been inserted into a symbol. -GS1 data can be encoded in a number of symbologies. Application identifiers +GS1 data can be encoded in a number of symbologies. Application Identifiers should be enclosed in [square brackets] followed by the data to be encoded (see 6.1.11.3). To encode GS1 data use the --gs1 option. GS1 mode is assumed (and doesn't need to be set) for GS1-128, EAN-14, DataBar and Composite symbologies @@ -820,8 +820,9 @@ size of the symbol. These options are discussed in section 6 of this guide. 5. Using the API ================ -Zint has been written using the C language and currently only has an API for -use with C language programs. +Zint has been written using the C language and has an API for use with C/C++ +language programs. A Qt interface is available in the backend_qt sub-directory, +and a Tcl interface is available in the backend_tcl sub-directory. The libzint API has been designed to be very similar to that used by the GNU Barcode package. This allows easy migration from GNU Barcode to Zint. Zint, @@ -931,8 +932,8 @@ allow you to do this: int ZBarcode_Buffer(struct zint_symbol *symbol, int rotate_angle); -int ZBarcode_Encode_and_Buffer(struct zint_symbol *symbol, unsigned char *source, - int length, int rotate_angle); +int ZBarcode_Encode_and_Buffer(struct zint_symbol *symbol, + unsigned char *source, int length, int rotate_angle); int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol, char *filename, int rotate_angle); @@ -985,18 +986,18 @@ you to do this: int ZBarcode_Buffer_Vector(struct zint_symbol *symbol, int rotate_angle); int ZBarcode_Encode_and_Buffer_Vector(struct zint_symbol *symbol, - unsigned char *source, int length, int rotate_angle); + unsigned char *source, int length, int rotate_angle); int ZBarcode_Encode_File_and_Buffer_Vector(struct zint_symbol *symbol, - char *filename, int rotate_angle); + char *filename, int rotate_angle); Here the "vector" pointer is set to a header which contains pointers to lists of structures representing the various elements of the barcode: rectangles, hexagons, strings and circles. To draw the barcode, each of the element types is iterated in turn, and using the information stored is drawn by a rendering system. For instance, to draw a barcode using a rendering system with -"prepare_canvas()", "draw_rect()", "draw_hexagon()", "draw_string()", and -"draw_circle()" routines available: +prepare_canvas(), draw_rect(), draw_hexagon(), draw_string(), and draw_circle() +routines available: struct zint_vector_rect *rect; struct zint_vector_hexagon *hexagon; @@ -1004,31 +1005,31 @@ struct zint_vector_string *string; struct zint_vector_circle *circle; prepare_canvas(symbol->vector->width, symbol->vector->height, symbol->scale, - symbol->fgcolour, symbol->bgcolor, rotate_angle); + symbol->fgcolour, symbol->bgcolor, rotate_angle); rect = symbol->vector->rectangles; while (rect) { - draw_rect(rect->x, rect->y, rect->width, rect->height, rect->colour); - rect = rect->next; + draw_rect(rect->x, rect->y, rect->width, rect->height, rect->colour); + rect = rect->next; } hexagon = symbol->vector->hexagons; while (hexagon) { - draw_hexagon(hexagon->x, hexagon->y, hexagon->diameter, hexagon->rotation): - hexagon = hexagon->next; + draw_hexagon(hexagon->x, hexagon->y, hexagon->diameter, hexagon->rotation): + hexagon = hexagon->next; } string = symbol->vector->strings; while (string) { - draw_string(string->x, string->y, string->fsize, string->rotation, - string->halign, string->text, string->length): - string = string->next; + draw_string(string->x, string->y, string->fsize, string->rotation, + string->halign, string->text, string->length): + string = string->next; } circle = symbol->vector->circles; while (circle) { - draw_circle(circle->x, circle->y, circle->diameter, circle->colour): - circle = circle->next; + draw_circle(circle->x, circle->y, circle->diameter, circle->colour): + circle = circle->next; } 5.6 Setting Options @@ -1411,7 +1412,7 @@ GS1_MODE | Encodes GS1 data using FNC1 characters. | ESCAPE_MODE | Process input data for escape sequences. GS1PARENS_MODE | Parentheses (round brackets) used in input data instead of - | square brackets to delimit GS1 application identifiers + | square brackets to delimit GS1 Application Identifiers | (parentheses must not otherwise occur in the data). ------------------------------------------------------------------------------ @@ -1875,7 +1876,7 @@ components. 6.1.12.1 DataBar Omnidirectional and DataBar Truncated ------------------------------------------------------ Previously known as RSS-14 this standard encodes a 13 digit item code. A check -digit and application identifier of (01) are added by Zint. (A 14 digit code +digit and Application Identifier of (01) are added by Zint. (A 14 digit code that appends the check digit may be given, in which case the check digit will be verified.) To produce a truncated symbol set the symbol height to a value between 32 and 13. Normal DataBar Omnidirectional symbols should have a height @@ -3006,223 +3007,7 @@ those owners, companies or organisations. 7.3 Version Information ----------------------- -v0.1 - (as Zebar) Draws UPC-A. UPC-E, EAN-8, EAN-13, Interlaced 2 of 5, -Codabar, Code 39, Extended Code 39 and Code 93 barcodes and Add-on codes EAN-2 -and EAN-5 without parity. 13/11/2006 - -v0.2 - Added Code 128 (which is now the default), Code 11, Code 2 of 5, Add-on -codes EAN-2 and EAN-5 parity and MSI/Plessey without check digit. 12/12/2006 - -v0.3 - Added MSI/Plessey Mod 10 check and 2 x Mod 10 check options, Telepen -ASCII and Telepen numeric, Postnet, RM4SCC. Code has been tidied up quite a -bit. Bind option added. 30/12/2006 - -v0.4 - Added barcode stacking (now stacks up to 16 barcodes) and Code16k -(stub). 15/1/2007 - -v0.5 - Added Australia Post 4-State Barcodes and Pharmacode (1 and 2 track). -4-state codes now draw with correct height/width ratio. 28/2/2007 - -v0.6 - Added Plessey and some derivative codes (EAN-128, Code 128 subset B, -Auspost Reply, Auspost Routing, Auspost Redirect, ITF-14). Tidied up code -again: separated symbologies into more files and put all lookup tables into -arrays (much reducing the amount of code, especially for Code 39e and Code 93). -Errors now output to stderr. Added proper input verification. Distribution now -packs with HTML pages instead of separate README. Outputs to PNG. Outputs -colour. User variable whitespace and border width. Box option. Fixed EAN add-on -bug. Added whitespace and height options. Project name changed to Zint to avoid -conflict with extant trade name. Added escape character input. 1/4/2007 - -v1.0 - Corrected problem with escape character codes. Supports PDF417. This -completes the list of features I originally wanted (plus a few more), hence -skip to version 1.0. 20/4/2007 - -v1.1 - Added more derivatives (Code 2 of 5 Matrix, IATA and Data Logic, -Truncated PDF417, Deutsche Post Leitcode and Identcode, Pharmazentralnummer, -Planet) and Flattermarken. Tidied up 2 of 5 code. 26/4/2007 - -v1.2 - Supports Data Matrix ECC200 (by absorption of IEC16022 code by Stefan -Schmidt et al). Added reverse colours, FIM, MSI/Plessey Modulo 11 and Modulo -11/10. Corrected Code 16k check digit calculation. 28/5/2007 - -v1.3 - Supports USPS OneCode and LOGMARS. Brought all usage information into -one User Manual document. 13/6/2007 - -v1.4 - Added NVE-18 support. Corrected some problems with compilation and input -verification. Command line option handling now uses getopt(), and all the -switches have changed. Added –font option. 20/6/2007 - -v1.5 - Pulled everything together to make an API. Corrected errors with EAN-13, -PDF417 and LOGMARS. Added EPS output. Added QR Code support using libqrencode. -Corrected ISBN verification error. Re-compiled documentation in HTML form. Put -in place proper error handling routines. --font option removed. Encoding is now -done with a restructured zint_symbol structure. Added make install option and -optional QR Code support to Makefile. Corrected minor problem with 4-State -Codes. Restructured code into fewer source code files. Added MicroPDF417 -support. 12/8/2007 - -v1.5.1 - Added formatting code to EPS output of EAN and UPC symbols according -to EN 797:1996. Checked against and, where appropriate, altered or corrected to -comply with ISO 16388 and ISO 15417 including Latin-1 support. Altered default -image settings, added automatic ITF border. Corrected error with USPS OneCode. -Tidied up Code 39 quite a bit, added Mod 43 options. 3/9/2007 - -v1.5.2 - Added extended ASCII support to Code 16k. Corrected Code 128 error. -Added Maxicode support by integrating code by John Lien. 26/9/2007 - -v1.5.3 - Made huge corrections to Maxicode support by removing and re-writing -much of John's code. Maxicode now supports extended ASCII and modes 4, 5 and 6. -10/10/2007 - -v1.5.4 - Added GS1 DataBar (Reduced Space Symbology) support. 26/11/2007 - -v1.5.5 - Added composite symbology support. Corrected errors with GS1-128 and - -PDF417/MicroPDF417 byte processing. Transferred licence to GPL version 3. -9/3/2008 - -v1.6 - Data Matrix ECC200, Maxicode and Australia Post now use common -Reed-Solomon functions – this also fixes a bug in Maxicode error correction and -replaces the last of the Lien code. Added PNG output for Maxicode symbols. -Removed some useless code. Updated QR support for libqrencode v2.0.0. 22/4/2008 - -v1.6.1 - Major restructuring of PNG generating code: Now draws UPCA and EAN -symbols properly and puts human readable text into the image. Also corrected -some nasty 'never ending loop' bugs in Code 128 and check digit bugs in PostNet -and Planet. 8/7/2008 - -v1.6.2 - Added KIX Code support and PNG image rotation. Corrected a bug -affecting extended ASCII support in Code 128 and Code 16k. 28/7/2008. - -v2.0 beta - 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. 29/9/2008 - -v2.0 beta r2 - Many corrections and bugfixes. (Code 11, Code 128, EAN-128, -Aztec Code, Codablock-F, Code 16k, POSTNET, PLANET, NVE-18, PZN, Data Matrix -ECC200, Maxicode and QR Code) - -v2.0 - Made corrections to Aztec Code and tested output with bcTester. Added -Aztec Runes, Micro QR Code and Data Matrix ECC200 ECC 000-140. Updated e-mail -information. 18/11/2008 - -v2.1 - 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, -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 -Aztec Code. Added scale and direct to stdout options. Rebult Data Matrix ECC200 -ECC 200 encoding algorithms to support NULL encoding and GS1 data encoding. -31/1/2009 - -v2.1.1 - Minor Data Matrix ECC200 bugfix and added HIBC options. 10/2/2009 - -v2.1.2 - 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 -indicators above row 6). 1/3/2009 - -v2.1.3 - Many improvements to the QZint GUI which is now renamed "Zint Barcode -Studio 0.2". Added Japanese Postal Barcode, Code 49 and Channel Code and made -corrections to Data Matrix ECC200 (Binary mode data compression terminates too -soon), Aztec Code (Bug when automatically resizing after removing "all 0" and -"all 1" codewords) and Code 128 (Extended ASCII characters become corrupt). -19/5/2009 - -v2.1.4 - Many stability improvements including removal of buffer overruns in -Code 39, LOGMARS, PZN, Aztec Code and Composite CC-A. Addition of files for -compiling on MS Windows platform - tested successfully on XP and Vista. -19/6/2009 - -v2.2 - Added Code One and GS1 support in Code 49. Changed GUI binary name to -zint-qt and brought GUI up to version 1.0. Made some minor bugfixes to Code 39, -ITF-14, Aztec Code, Code 128 and Code 16K. Added 'rest' button to GUI. Included -.spec file from Radist. 18/7/2009 - -v2.2.1 - Data encoding bugfixes for Aztec Code, Data Matrix ECC200, USPS One -Code and PDF417. Symbol plotting bugfixes for MicroPDF417 and 2D components of -composite symbols. Text formatting bugfix for Qt renderer and a couple of -compiler fixes for MSVC PNG image output. 6/8/2009 - -v2.2.2 - A beta release previewing the new API structure. Better NULL character -support with "nullchar" value removed. Added loading from file and sequence -dialogs in Barcode Studio. 29/9/2009 - -v2.3 - Fixed problems with Micro QR Code and rebuilt QR Code support removing -dependence on libqrencode. Improved Kanji character support for QR Code and -Micro QR Code which now auto-detects and automatically converts to Shift-JIS. -Added Grid Matrix symbology with Kanji character support and automatic -conversion to GB 2312. Removed no_qr compile option. Advanced Barcode Studio -version number to match library version number. 23/11/2009 - -v2.3.1 - 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. 7/3/2010 - -v2.3.2 - Corrected many bugs in GS1 DataBar Extended thanks to the careful -study of the code by Pablo Orduña at the PIRAmIDE project. Similarly corrected -some bugs in Maxicode thanks to Monica Swanson at Source Technologies. Also -minor bugfixes for ISBN and Aztec Code, and added some small features like a ---square option in the CLI. 29/5/2010 - -v2.4 - Built extensions to the API for integrating with glabels with thanks to -Sam Lown and Jim Evins. Added code optimisation and input from stdin thanks to -Ismael Luceno. Reinstated escape character input. Simplification of Barcode -Studio. 13/9/2010 - -v2.4.1 & 2.4.2 – A whole host of bugfixes including correction of ECC routines -for Code-1 and addition of batch processing at the command line. 19/4/2011 & -4/5/2011 - -v2.4.3 - Includes minor bugfixes 16/5/2011 - -v2.5 – Support for DotCode and Han Xin code. Restore support for Codablock-F. -ECI code processing. Output to BMP, GIF and PCX. Added bold text option. Many -minor bugfixes and improvements. -13/11/2016 - -v2.6 - Output to EMF and TIF. Update frontend to Qt5. Copy to clipboard on -KDE and Windows. -12/5/2017 - -v2.6.1 - Various bugfixes to backend, including improved Aztec code processing. -Many improvements to GUI including resizeable screens and more output while -batch processing, more consistent use of dialogues. -27/8/2017 - -v2.6.2 - Further bugfixes in Aztec and DotCode. Expand escape sequence support -to API and GUI. Handle UTF BOM. Bugfix raster images of Maxicode. -22/10/2017 - -v2.6.3 - New symbology Royal Mail 4-state Mailmark. Added North America VIN -verification. Bugfixes for TIF and EMF output and escape character handling. -15/02/2018 - -v2.6.4 - Datamatrix DMRE updated to the ISO/IEC29158 version. This is -incompatible in the way, that the old -vers numbers for DMRE are re-assigned. -The separator of GS1-datamatrix may be switched from FNC1 to GS. -GS1 field length check AI 8009 and 7230 to 7239 corrected. - -v2.6.5 - minor bugfixes - -v2.6.6 - minor Bugfixes - -v2.6.7 - Allow to code ECI 3 if explicitly given for debug purposes. - -v2.7.0 - new features: -- Automatic height option added to qzint -- DotCode in line with new specification -- New GS1 AIs 7240, 235, 417, 7040, 8026, updated checks for 7007, 8008 -- New Symbology rMQR -- QR and Gridmatrix optimisation for GB2312 -- removed deprecated interface for gLabels program. Please use current - interface. - -v2.8.0 -- Add Ultracode implementation -- Disable full multi byte compression for QR family, Han Xin and Gridmatrix by - default. It may be enabled by a new option. +This has been moved to "ChangeLog" in the project root directory. 7.4 Sources of Information -------------------------- diff --git a/win32/README b/win32/README index 2f7acf35..7863cab3 100644 --- a/win32/README +++ b/win32/README @@ -131,7 +131,7 @@ Recent versions of Qt no longer supply a specific component for Visual Studio 2015, but you can use "MSVC 2017 32-bit" instead as it's compatible. For information on building a standalone version of Zint Studio using Visual -Studio 2015, see "frontend_qt/howto_build_qzint_using_msvs2015.txt" +Studio 2015, see "frontend_qt\howto_build_qzint_using_msvs2015.txt" CMake and Visual Studio