Commit Graph

116 Commits

Author SHA1 Message Date
gitlost
fab7435fac Performance improvements for linear encoding and raster output
- use fixed-length string tables (mostly) instead of (char *) pointer ones
   (saves ~40K)
 - re-use C128Table for CODABLOCKF and CODE16K
   (required removal of Stop character and extra CODE16K-only entry)
 - use pointer to destination and copy (memcpy/strcpy(), bin_append_posn())
   instead of concatenating (strcat()) (mostly)
 - replace last remaining bin_append()s with bin_append_posn();
   bin_append() removed
 - add length arg to toupper() and expand() (avoids strlen())
 - change is_sane() to use table-based flags (avoids an iteration)
 - rename lookup() to is_sane_lookup() and change to check and return posns
   and use in pointer to destination loops (avoids strcat()s)
 - remove special case PHARMA in expand() (dealt with in pharma())
 - make #define SILVER/CALCIUM/TECHNETIUM/KRSET etc static strings
 - replace strchr() -> posn()
 - CODE128: populate destination once in checksum loop; re-use and export
   some more routines (c128_set_a/b/c(), c128_put_in_set()) for sharing;
   prefix defines (SHIFTA -> C128_SHIFTA etc) and existing exported routines
 - use factor XOR toggle trick in checksum calcs (avoids branch)
 - raster.c: fill out single 1-pixel row and copy using new draw_bar_line(),
   copy_bar_line() routines; similarly in buffer_plot compare previous line &
   copy if same (same technique as used to improve non-half-integer scaling,
   significant performance increase, (c) codemonkey82);
   also done for PNG (BMP/GIF/PCX/TIFF not done)
 - raster/vector/output.c: shorten "output_" prefix -> "out_";
   sync vector to other raster changes to try to keep source files similar
 - 2of5.c: prefix "c25_"
JAPANPOST: return error if input data truncated (backward incompatible)
DAFT: max chars 50 -> 100
common.c: istwodigit() -> is_twodigit()
common.c/emf.c/output.c: use some further stripf()s (MSVC6 float variations)
library.c: new check_output_args() helper
zint.h: add BARCODE_LAST marker and use in library.c
QRCODE: remove a NOLINT (requires clang-tidy-13), one remaining
CMake: separate no-optimize from ZINT_DEBUG into new ZINT_NOOPT option
2021-10-20 23:05:30 +01:00
gitlost
72eac41c34 Add compliant height, using ZINT_COMPLIANT_HEIGHT flag for back-compatibility
Rename barcode funcs to same as BARCODE_XXX name
library: barcode funcs array for dispatch, used for ZBarcode_ValidID() also
general: change is_sane() comparison to nonzero from ZINT_ERROR_INVALID_OPTION
MAILMARK: fuller error messages
CODABAR: add option to show check character in HRT
zint.h: use 0xNNNN for OR-able defines
GUI: add guard descent height reset button, add Zint version to window title,
  static get_zint_version() method, use QStringLiteral (QSL shorthand),
  use SIGNAL(toggled()), add errtxt "popup" and status bar, add icons,
  add saveAs shortcut, add main menu, context menus and actions, add help,
  reset_view() -> reset_colours(), add copy to clipboard as EMF/GIF/PNG/TIF,
  lessen triggering of update_preview(), shorten names of getters/setters,
  simplify/shorten some update_preview() logic in switch,
  CODEONE disable structapp for Version S
qzint.cpp: add on_errored signal, add missing getters, add test
2021-10-09 00:13:39 +01:00
gitlost
c0791ad85e Add Structured Append support for AZTEC, CODEONE, DATAMATRIX, DOTCODE,
GRIDMATRIX, MAXICODE, MICROPDF417, PDF417, QRCODE, ULTRA
DOTCODE: use pre-calculated generator poly coeffs in Reed-Solomon for
  performance improvement
PDF417/MICROPDF417: use common routine pdf417_initial()
GUI: code lines <= 118, shorthand widget_obj(),
  shorten calling upcean_addon_gap(), upcean_guard_descent()
various backend: var name debug -> debug_print
2021-09-28 21:42:44 +01:00
gitlost
37fac73cb1 DATAMATRIX/CODEONE: Use LCM in look ahead tests to avoid floats (#228) 2021-06-29 22:02:24 +01:00
gitlost
8c419ab4fb DATAMATRIX/DBAR_LTD: some hacks to get around MSVC 2015/2019 x64 optimizer bugs 2021-06-27 15:58:27 +01:00
gitlost
52c00e59ba C25/DBAR: use new func gs1_check_digit() for common GS1 check digit calc
CODE11/CODE39/EXCODE39/CODE93/PZN/CHANNEL/VIN/DBAR/UPCEAN: fuller error messages
DATAMATRIX: look_ahead_test debug counts
DBAR: consolidate option_2 cols_per_row
CMakeLists.txt: restore -fno-var-tracking-assignments for gcc no DEBUG
overall: suppress various warnings on various configs
testcommon.c: clean-up
2021-06-27 11:47:55 +01:00
gitlost
542fed1d4f DATAMATRIX: strip extra precision in loop also (#228); AZTEC: move assert after error check (#229) 2021-06-26 00:27:04 +01:00
gitlost
c693482aa1 Change height and row_height array to floats; DAFT tracker ratio 2021-06-19 13:11:23 +01:00
gitlost
4a8cac2a5a CODEONE/DATAMATRIX/MAILMARK/PLESSEY: fix some 32-bit/portability bugs
PLESSEY: add options NCR weighted mod-10, hide check digit(s) in HRT
test suite: now runnable under MSVC 2019, 2017, 2015, MinGW/MSYS
win32/README: update with MSVC 2019 and CMake instructions
2021-06-10 11:15:39 +01:00
gitlost
79d3c1dc7a Add GS1PARENS_MODE (input_mode) to allow inputting GS1 AIs in parentheses 2021-05-15 12:23:46 +01:00
gitlost
88d1a9f625 DATAMATRIX: make EOD encodation strictly ISO 16022 compliant 2021-02-23 00:01:15 +00:00
gitlost
f62a678d0f #209 suppress CodeQL warnings except CODEONE; simplifications AZTEC_RUNE, MICROPDF417 2020-12-23 10:57:24 +00:00
gitlost
cd214addba HANXIN: 0xFFE terminator; reedsol/AZTEC: stack-based; AZTEC/HANXIN/QR/GRIDMATRIX speedups; #209 2020-11-27 12:54:44 +00:00
gitlost
943ba79866 AZTEC: fix bit-stuffing; AZTECRUNE: fix >= 128; DATAMATRIX: eod shift -> 0 pad; Qt6 2020-10-26 12:21:43 +00:00
gitlost
36c19053d7 vector.c: string halign; POSTNET/PLANET: 1 module space; ZBarcode_Cap(); GUI settings 2020-09-30 12:19:12 +01:00
gitlost
3f5ac34057 DATAMATRIX: avoid unnecessary latch in X12 mode at end of data, #208 2020-09-28 19:46:23 +01:00
gitlost
6242e02638 CODEONE/ULTRA overrun fixes; TELEPEN fixes; CODEONE/LOGMARS/VIN/CODABAR options; GUI updates; tests 2020-06-04 18:45:25 +01:00
Robin Stuart
257da3fff5 Prevent Data Matrix buffer overflow bug
Fixes #176 reported by Daniel Gredler at OkapiBarcode
2020-01-05 12:35:16 +00:00
gitlost
bca82ecc0d libzint.so: suppress exporting INTERNAL functions to the shared library; ZINT_TEST 2019-12-19 00:37:55 +00:00
gitlost
fed7378675 Handle UNICODE_MODE ECI conversion for reduced charset barcodes and QRCODE/MICROQR 2019-11-27 16:16:14 +00:00
Robin Stuart
15ae99ee11 Allow explicit ECI 3
Setting ECI to 3 now causes Zint to include ECI 3 in symbol, and allows entry of data formatted in ISO 8859_1
Fixes #127 requested by Harald Oehlmann
2019-10-06 17:39:54 +01:00
Harald Oehlmann
5c9d127ad1 2019-09-19 HaO DM: when encoding ECI, data scrambled when base256 encoding was chosen. The ECI codeword 241 was missing in the binary marker array and thus, the binrary length was inserted before the latch to binary resulting in very corrupt data. 2019-09-18 10:51:01 +02:00
Harald Oehlmann
cb3eea2ba0 2018-08-30 HaO Implemented GS separator for Datamatrix (--gssep option). Ticket #139 2019-08-30 16:14:17 +02:00
Robin Stuart
23a990c37c Ensure ECI encoding doesn't corrupt binary data in Data Matrix
Fixes #105 reported by Daniel Gredler
2018-06-20 23:47:06 +01:00
Harald Oehlmann
3853897d88 Do not apply rect/dmre options if concrete size is given. E.g. "zint -b72 --vers 31" will ignore eventual option "--square or --dmre". 2018-04-08 20:20:56 +02:00
Boris Zentner
31cc0ae78a Remove spaces before EOL 2017-10-25 17:23:57 +01:00
Boris Zentner
45441a6da7 Fix mixed unix / windows EOL 2017-10-25 17:15:35 +01:00
Harald Oehlmann
f83e5b1501 Make compile with MS-VC6 2017-10-16 19:26:54 +02:00
Rodrigo Torres
4963a772db Refactor 2017-09-11 19:21:33 +01:00
Robin Stuart
50ec72527b Minor tweaks, no change of function 2017-08-07 08:37:02 +01:00
Robin Stuart
608b4b9134 Audit of error codes 2017-07-27 16:01:53 +01:00
Robin Stuart
24f175b6f6 Flag if DM_SQUARE is used at the same time as symbol size selection 2017-07-26 11:16:54 +01:00
oxygenic
d8330f5d96 back-merged 2017-07-24 13:44:27 +01:00
Julien Nabet
3257a5c0af cppcheck: fix reports
[backend/bmp.c:133]: (error) Memory leak: bitmap
[backend/bmp.c:126]: (error) Memory leak: bitmap
[backend/composite.c:464]: (error) Array index -1 is out of bounds.
[backend/composite.c:507]: (error) Array index -1 is out of bounds.
[backend/dmatrix.c:962]: (style) Redundant condition: i!=0. 'i==0 || (i!=0 && binary[i-1]!='b')' is equivalent to 'i==0 || binary[i-1]!='b''
[backend/raster.c:122]: (error) Memory leak: rotated_pixbuf
[backend/raster.c:506]: (error) Memory leak: pixelbuf
[frontend/main.c:273]: (error) Uninitialized variable: format_string
[frontend_qt/exportwindow.cpp:103]: (style) Array index 'j' is used before limits check.
2017-07-01 09:49:47 +01:00
Robin Stuart
a085bca168 Revion of ECI number encoding 2017-06-18 13:00:22 +01:00
Robin Stuart
b3a1b24d18 help the compiler create more efficient code
Patch from Michael <virtual_worlds@gmx.de>
Full text: As usual I have modified only minor things to remove warnigs when compiled as C++ code, have added some const-specifiers where possible to help the compiler create more efficient code and added some static-specifiers to make functions invisible to other modules.
2017-05-29 10:43:47 +01:00
Robin Stuart
a1327cbd0d Bugfix: Insertion of unlatch character in EDIFACT mode will unlatch immediately, not at the end of the 24-bit block
Fixes #60, Ref: ISO para 5.2.8.2.
Bug report thanks to ice4x800@sf
2017-05-14 18:46:43 +01:00
Harald Oehlmann
c52032acb2 Update win c6 makefile and tcl backend to version 2.6.0 2017-05-12 14:16:59 +02:00
Robin Stuart
19ba8a34c4 Update to version 2.6.0 and update copyright to 2017 2017-05-11 21:14:38 +01:00
Robin Stuart
6f4610aa98 Add verbose mode to output debug info without recompiling 2017-04-11 10:05:38 +01:00
Robin Stuart
5acbffff0d Consistently throw an error if data does not fit in specified size symbol
See ticket #57
2017-04-11 09:26:39 +01:00
Robin Stuart
6115a3f8b6 Avoid trying to encode non-EDIFACT characters in EDIFACT mode
Bug report by brunt, revokes commit [dc3626], tickets #44 and #50
2016-11-26 20:10:51 +00:00
Robin Stuart
0dc3b60c2b Counteract inaccuracy of float values in look ahead test
Bug report by brunt, ticket #49
2016-11-26 13:58:54 +00:00
Robin Stuart
08aefa6aea Include string terminator when keeping track of b256 encoded characters
bug report and patch by brunt, ticket #48
2016-11-26 11:38:00 +00:00
Robin Stuart
1d503c54fe Unlatch EDIFACT encodation when buffer is empty
bug report and patch by brunt, ticket #46
2016-11-26 11:28:43 +00:00
Robin Stuart
6af035ba98 Unlatch X12 encodation when there are 2 codewords left in the buffer
bug report by brunt, ticket #45
2016-11-26 11:18:37 +00:00
Robin Stuart
dc36261030 Force unlatch from EDIFACT on illegal character
Bug report and patch by brunt, ticket #44
2016-11-26 09:00:41 +00:00
Robin Stuart
1155683be1 Include last input character in look ahead test
Bug and patch by brunt, ticket #43
2016-11-26 08:44:59 +00:00
Robin Stuart
658cdd7a69 Check for too many codewords after remainder in 144x144 symbols
Bug report and patch by brunt, ticket #42
2016-11-25 20:50:35 +00:00
Robin Stuart
886e789090 Add unlatch if C40/Text buffer is empty
also don't read binary marker beyond end of input

Relates to #38 and #41
2016-11-22 22:03:28 +00:00