- AZTEC/CHANNEL/CODABLOCKF/CODE16K/CODE49/CODEONE/DATAMATRIX/

DOTCODE/GRIDMATRIX/HANXIN/MICROPDF417/MICROQR/PDF417/QRCODE/
  RMQR/ULTRA: set `option_1/2/3` to values used in encodation
  ("Feedback options"), and add new access methods
  `encodedOption1()` etc. to Qt Backend, and use in GUI to provide
  better feedback on "Automatic" selections
- AZTEC: give more precise warnings in low ECC situations, and
  indicate via `option_1` by setting to -1 (min 3 words), 0
  (<5% + 3 words) (`ecc_ratio`)
- set_height: fix non-compliance false positives by using epsilon
  in checks (prompted by CODABLOCKF non-compliant warning for
  zint-generated compliant height - floating point `rows` mult !=
  `zero_count` div; one test regression for CODE93);
  better warning messages on non-compliant heights (min/max)
- manual/man page: fix DATAMATRIX Sizes tables "28 12x26" ->
  "27 12x26"
- GUI: AZTEC/CODEONE: add Zint versions to comboboxes
- DOTCODE: improve error messages re size too small/large
- ULTRA: better ZINT_TEST codeword dump (ZINT_DEBUG_TEST)
- general: various tabs -> spaces; prettify main .rc files;
  trailing spaces; small amount of code fiddling (CODE16K)
This commit is contained in:
gitlost 2025-03-07 16:51:36 +00:00
parent d0465375bb
commit d222add96d
68 changed files with 1929 additions and 1497 deletions

View file

@ -1851,6 +1851,11 @@ INTERNAL int qrcode(struct zint_symbol *symbol, struct zint_seg segs[], const in
bitmask = qr_apply_bitmask(grid, size, ecc_level, user_mask, fast_encode, debug_print);
/* Feedback options */
symbol->option_1 = ecc_level + 1;
symbol->option_2 = version;
symbol->option_3 = (symbol->option_3 & 0xFF) | ((bitmask + 1) << 8);
qr_add_format_info(grid, size, ecc_level, bitmask);
symbol->width = size;
@ -2339,6 +2344,11 @@ INTERNAL int microqr(struct zint_symbol *symbol, unsigned char source[], int len
microqr_populate_grid(grid, size, full_stream, bp);
bitmask = microqr_apply_bitmask(grid, size, user_mask, debug_print);
/* Feedback options */
symbol->option_1 = ecc_level + 1;
symbol->option_2 = version + 1;
symbol->option_3 = (symbol->option_3 & 0xFF) | ((bitmask + 1) << 8);
/* Add format data */
format = version ? (version - 1) * 2 + ecc_level + 1 : 0;
@ -2463,6 +2473,11 @@ INTERNAL int upnqr(struct zint_symbol *symbol, unsigned char source[], int lengt
bitmask = qr_apply_bitmask(grid, size, ecc_level, user_mask, fast_encode, debug_print);
/* Feedback options */
symbol->option_1 = ecc_level + 1;
symbol->option_2 = version;
symbol->option_3 = (symbol->option_3 & 0xFF) | ((bitmask + 1) << 8);
qr_add_format_info(grid, size, ecc_level, bitmask);
symbol->width = size;
@ -2726,6 +2741,10 @@ INTERNAL int rmqr(struct zint_symbol *symbol, struct zint_seg segs[], const int
(est_binlen + 7) / 8, target_codewords);
}
/* Feedback options */
symbol->option_1 = ecc_level + 1;
symbol->option_2 = version + 1;
if (debug_print) {
printf("Minimum codewords: %d\n", (est_binlen + 7) / 8);
printf("Selected version: %d = R%dx%d-%c\n",