mirror of
https://git.code.sf.net/p/zint/code
synced 2026-07-30 18:09:50 +00:00
AZTEC: add almost optimal encoding algorithm, previous algorithm
available via "--fast" (input_mode |= FAST_MODE) (ticket #347); add new option "--azfull" (option_3 = ZINT_AZTEC_FULL) to only consider Full symbols (not Compact ones) on automatic sizing GUI: adjust Aztec tab to show feedback by selecting combos and shorten message to just actual ECC; grpCodabar min width library: debug source input dump 200 -> 2000 common: some code fiddling (c -> ch, flg -> flag) backend_tcl: add "-azfull" option & make capitalization of help more consistent general: remove some trailing whitespace manual: make Aztec ECCs more precise, i.e. ">=" rather than ">" (similarly in GUI) CLI: code fiddling c -> opt
This commit is contained in:
@@ -61,7 +61,7 @@ $(STATLIB): $(LIB_OBJ)
|
||||
@echo Linking $@...
|
||||
$(AR) $@ $(LIB_OBJ)
|
||||
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
|
||||
|
||||
|
||||
.PHONY: install uninstall clean dist
|
||||
|
||||
install:
|
||||
|
||||
+1013
-381
File diff suppressed because it is too large
Load Diff
+80
-8
@@ -96,15 +96,87 @@ static const char AztecSymbolChar[128] = {
|
||||
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 25, 30, 26, 27
|
||||
};
|
||||
|
||||
/* Modes */
|
||||
#define AZ_U 1
|
||||
#define AZ_L 2
|
||||
#define AZ_M 3
|
||||
#define AZ_P 4
|
||||
#define AZ_D 5
|
||||
#define AZ_B 6 /* 5 or 11-bit Byte (ideally would be separate modes, but not done due to performance hit) */
|
||||
|
||||
/* Pseudo-modes */
|
||||
#define AZ_X 7 /* Used to indicate chars belonging to more than one mode */
|
||||
#define AZ_E 8 /* Used to signal no next mode */
|
||||
|
||||
#define AZ_NUM_MODES 6
|
||||
|
||||
#define AZ_MASK(m) ((m) & 0x0F)
|
||||
|
||||
#define AZ_PS 0x10
|
||||
#define AZ_US 0x20
|
||||
|
||||
/* P/S */
|
||||
#define AZ_U_PS (AZ_U | AZ_PS)
|
||||
#define AZ_L_PS (AZ_L | AZ_PS)
|
||||
#define AZ_M_PS (AZ_M | AZ_PS)
|
||||
#define AZ_D_PS (AZ_D | AZ_PS)
|
||||
|
||||
/* U/S */
|
||||
#define AZ_L_US (AZ_L | AZ_US)
|
||||
#define AZ_D_US (AZ_D | AZ_US)
|
||||
|
||||
static const char AztecModes[128] = {
|
||||
'B', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'M', 'X', 'B', 'B',
|
||||
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'M', 'M', 'M', 'M', 'M',
|
||||
'X', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'P', 'X', 'P', 'X', 'P',
|
||||
'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'P', 'P', 'P', 'P', 'P', 'P',
|
||||
'M', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U',
|
||||
'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'P', 'M', 'P', 'M', 'M',
|
||||
'M', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',
|
||||
'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'P', 'M', 'P', 'M', 'M'
|
||||
AZ_B, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M, AZ_X, AZ_B, AZ_B,
|
||||
AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_B, AZ_M, AZ_M, AZ_M, AZ_M, AZ_M,
|
||||
AZ_X, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_X, AZ_P, AZ_X, AZ_P,
|
||||
AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_D, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P, AZ_P,
|
||||
AZ_M, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U,
|
||||
AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_U, AZ_P, AZ_M, AZ_P, AZ_M, AZ_M,
|
||||
AZ_M, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L,
|
||||
AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_L, AZ_P, AZ_M, AZ_P, AZ_M, AZ_M
|
||||
};
|
||||
|
||||
/* Testable flags */
|
||||
#define AZ_U_F 0x01
|
||||
#define AZ_L_F 0x02
|
||||
#define AZ_M_F 0x04
|
||||
#define AZ_P_F 0x08
|
||||
#define AZ_D_F 0x10
|
||||
|
||||
/* Flag version of `AztecModes[]` */
|
||||
static const char AztecFlags[128] = {
|
||||
0, AZ_M_F, AZ_M_F, AZ_M_F, /* 0-3*/
|
||||
AZ_M_F, AZ_M_F, AZ_M_F, AZ_M_F, /* 4-7*/
|
||||
AZ_M_F, AZ_M_F, AZ_M_F, AZ_M_F, /* 8-11*/
|
||||
AZ_M_F, AZ_M_F | AZ_P_F, 0, 0, /* 12-15*/
|
||||
0, 0, 0, 0, /* 16-19*/
|
||||
0, 0, 0, 0, /* 20-23*/
|
||||
0, 0, 0, AZ_M_F, /* 24-27*/
|
||||
AZ_M_F, AZ_M_F, AZ_M_F, AZ_M_F, /* 28-31*/
|
||||
AZ_U_F | AZ_L_F | AZ_M_F | AZ_D_F, AZ_P_F, AZ_P_F, AZ_P_F, /* 32-35*/
|
||||
AZ_P_F, AZ_P_F, AZ_P_F, AZ_P_F, /* 36-39*/
|
||||
AZ_P_F, AZ_P_F, AZ_P_F, AZ_P_F, /* 40-43*/
|
||||
AZ_P_F | AZ_D_F, AZ_P_F, AZ_P_F | AZ_D_F, AZ_P_F, /* 44-47*/
|
||||
AZ_D_F, AZ_D_F, AZ_D_F, AZ_D_F, /* 48-51*/
|
||||
AZ_D_F, AZ_D_F, AZ_D_F, AZ_D_F, /* 52-55*/
|
||||
AZ_D_F, AZ_D_F, AZ_P_F, AZ_P_F, /* 56-59*/
|
||||
AZ_P_F, AZ_P_F, AZ_P_F, AZ_P_F, /* 60-63*/
|
||||
AZ_M_F, AZ_U_F, AZ_U_F, AZ_U_F, /* 64-67*/
|
||||
AZ_U_F, AZ_U_F, AZ_U_F, AZ_U_F, /* 68-71*/
|
||||
AZ_U_F, AZ_U_F, AZ_U_F, AZ_U_F, /* 72-75*/
|
||||
AZ_U_F, AZ_U_F, AZ_U_F, AZ_U_F, /* 76-79*/
|
||||
AZ_U_F, AZ_U_F, AZ_U_F, AZ_U_F, /* 80-83*/
|
||||
AZ_U_F, AZ_U_F, AZ_U_F, AZ_U_F, /* 84-87*/
|
||||
AZ_U_F, AZ_U_F, AZ_U_F, AZ_P_F, /* 88-91*/
|
||||
AZ_M_F, AZ_P_F, AZ_M_F, AZ_M_F, /* 92-95*/
|
||||
AZ_M_F, AZ_L_F, AZ_L_F, AZ_L_F, /* 96-99*/
|
||||
AZ_L_F, AZ_L_F, AZ_L_F, AZ_L_F, /* 100-103*/
|
||||
AZ_L_F, AZ_L_F, AZ_L_F, AZ_L_F, /* 104-107*/
|
||||
AZ_L_F, AZ_L_F, AZ_L_F, AZ_L_F, /* 108-111*/
|
||||
AZ_L_F, AZ_L_F, AZ_L_F, AZ_L_F, /* 112-115*/
|
||||
AZ_L_F, AZ_L_F, AZ_L_F, AZ_L_F, /* 116-119*/
|
||||
AZ_L_F, AZ_L_F, AZ_L_F, AZ_P_F, /* 120-123*/
|
||||
AZ_M_F, AZ_P_F, AZ_M_F, AZ_M_F, /* 124-127*/
|
||||
};
|
||||
|
||||
/* Codewords per symbol */
|
||||
|
||||
+18
-18
@@ -1,7 +1,7 @@
|
||||
/* common.c - Contains functions needed for a number of barcodes */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2008-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2008-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -36,13 +36,13 @@
|
||||
#include "common.h"
|
||||
|
||||
/* Converts a character 0-9, A-F to its equivalent integer value */
|
||||
INTERNAL int z_ctoi(const char source) {
|
||||
if (z_isdigit(source))
|
||||
return (source - '0');
|
||||
if (source >= 'A' && source <= 'F')
|
||||
return (source - 'A' + 10);
|
||||
if (source >= 'a' && source <= 'f')
|
||||
return (source - 'a' + 10);
|
||||
INTERNAL int z_ctoi(const char ch) {
|
||||
if (z_isdigit(ch))
|
||||
return (ch - '0');
|
||||
if (ch >= 'A' && ch <= 'F')
|
||||
return (ch - 'A' + 10);
|
||||
if (ch >= 'a' && ch <= 'f')
|
||||
return (ch - 'a' + 10);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -70,20 +70,20 @@ INTERNAL void z_to_upper(unsigned char source[], const int length) {
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns the number of times a character occurs in `source` */
|
||||
INTERNAL int z_chr_cnt(const unsigned char source[], const int length, const unsigned char c) {
|
||||
/* Returns the number of times a character `ch` occurs in `source` */
|
||||
INTERNAL int z_chr_cnt(const unsigned char source[], const int length, const unsigned char ch) {
|
||||
int count = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < length; i++) {
|
||||
count += source[i] == c;
|
||||
count += source[i] == ch;
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/* Flag table for `is_chr()` and `z_not_sane()` */
|
||||
#define IS_CLS_F (IS_CLI_F | IS_SIL_F)
|
||||
static const unsigned short flgs[256] = {
|
||||
static const unsigned short flags[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*00-1F*/
|
||||
IS_SPC_F, IS_C82_F, IS_C82_F, IS_HSH_F, /*20-23*/ /* !"# */
|
||||
IS_CLS_F, IS_SIL_F | IS_C82_F, IS_C82_F, IS_C82_F, /*24-27*/ /* $%&' */
|
||||
@@ -115,17 +115,17 @@ static const unsigned short flgs[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*E0-FF*/
|
||||
};
|
||||
|
||||
/* Whether a character matches `flg` */
|
||||
INTERNAL int z_is_chr(const unsigned int flg, const unsigned int c) {
|
||||
return z_isascii(c) && (flgs[c] & flg);
|
||||
/* Whether a character `ch` matches `flag` */
|
||||
INTERNAL int z_is_chr(const unsigned int flag, const unsigned int ch) {
|
||||
return z_isascii(ch) && (flags[ch] & flag); /* As passed an int ch need to check it's ASCII */
|
||||
}
|
||||
|
||||
/* Verifies if a string only uses valid characters, returning 1-based position in `source` if not, 0 for success */
|
||||
INTERNAL int z_not_sane(const unsigned int flg, const unsigned char source[], const int length) {
|
||||
INTERNAL int z_not_sane(const unsigned int flag, const unsigned char source[], const int length) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < length; i++) {
|
||||
if (!(flgs[source[i]] & flg)) {
|
||||
if (!(flags[source[i]] & flag)) {
|
||||
return i + 1;
|
||||
}
|
||||
}
|
||||
@@ -849,7 +849,7 @@ INTERNAL void z_hrt_cpy_cat_nochk(struct zint_symbol *symbol, const unsigned cha
|
||||
symbol->text[total_length] = '\0';
|
||||
}
|
||||
|
||||
/* Copy a single ASCII character into `symbol->text` (i.e. replaces content) */
|
||||
/* Copy a single ASCII character `ch` into `symbol->text` (i.e. replaces content) */
|
||||
INTERNAL void z_hrt_cpy_chr(struct zint_symbol *symbol, const char ch) {
|
||||
symbol->text[0] = ch;
|
||||
symbol->text_length = 1;
|
||||
|
||||
+12
-12
@@ -137,11 +137,11 @@ typedef unsigned __int64 uint64_t;
|
||||
#define z_isfintf(arg) (fmodf(arg, 1.0f) == 0.0f)
|
||||
|
||||
/* Simple versions of <ctype.h> functions with no dependence on locale */
|
||||
#define z_isdigit(c) ((c) <= '9' && (c) >= '0')
|
||||
#define z_isupper(c) ((c) >= 'A' && (c) <= 'Z')
|
||||
#define z_islower(c) ((c) >= 'a' && (c) <= 'z')
|
||||
#define z_isascii(c) (!((c) & ~0x7F))
|
||||
#define z_iscntrl(c) (!((c) & ~0x1F) || (c) == 127)
|
||||
#define z_isdigit(ch) ((ch) <= '9' && (ch) >= '0')
|
||||
#define z_isupper(ch) ((ch) >= 'A' && (ch) <= 'Z')
|
||||
#define z_islower(ch) ((ch) >= 'a' && (ch) <= 'z')
|
||||
#define z_isascii(ch) (!((ch) & ~0x7F))
|
||||
#define z_iscntrl(ch) (!((ch) & ~0x1F) || (ch) == 127)
|
||||
|
||||
/* Shorthands to cast away char pointer signedness */
|
||||
#define ZUCP(p) ((unsigned char *) (p))
|
||||
@@ -155,7 +155,7 @@ typedef unsigned __int64 uint64_t;
|
||||
#define z_xtoc(i) ((i) < 10 ? z_itoc(i) : ((i) - 10) + 'A')
|
||||
|
||||
/* Converts a character 0-9, A-F to its equivalent integer value */
|
||||
INTERNAL int z_ctoi(const char source);
|
||||
INTERNAL int z_ctoi(const char ch);
|
||||
|
||||
/* Converts decimal string of length <= 9 to integer value. Returns -1 if not numeric */
|
||||
INTERNAL int z_to_int(const unsigned char source[], const int length);
|
||||
@@ -163,8 +163,8 @@ INTERNAL int z_to_int(const unsigned char source[], const int length);
|
||||
/* Converts lower case characters to upper case in string `source` */
|
||||
INTERNAL void z_to_upper(unsigned char source[], const int length);
|
||||
|
||||
/* Returns the number of times a character occurs in `source` */
|
||||
INTERNAL int z_chr_cnt(const unsigned char source[], const int length, const unsigned char c);
|
||||
/* Returns the number of times a character `ch` occurs in `source` */
|
||||
INTERNAL int z_chr_cnt(const unsigned char source[], const int length, const unsigned char ch);
|
||||
|
||||
/* `z_is_chr()` & `z_not_sane()` flags */
|
||||
#define IS_SPC_F 0x0001 /* Space */
|
||||
@@ -190,11 +190,11 @@ INTERNAL int z_chr_cnt(const unsigned char source[], const int length, const uns
|
||||
/* The most commonly used set */
|
||||
#define NEON_F IS_NUM_F /* NEON "0123456789" */
|
||||
|
||||
/* Whether a character matches `flg` */
|
||||
INTERNAL int z_is_chr(const unsigned int flg, const unsigned int c);
|
||||
/* Whether a character `ch` matches `flag` */
|
||||
INTERNAL int z_is_chr(const unsigned int flag, const unsigned int ch);
|
||||
|
||||
/* Verifies if a string only uses valid characters, returning 1-based position in `source` if not, 0 for success */
|
||||
INTERNAL int z_not_sane(const unsigned int flg, const unsigned char source[], const int length);
|
||||
INTERNAL int z_not_sane(const unsigned int flag, const unsigned char source[], const int length);
|
||||
|
||||
/* Verifies if a string only uses valid characters as above, but also returns `test_string` position of each in
|
||||
`posns` array */
|
||||
@@ -319,7 +319,7 @@ INTERNAL void z_hrt_cpy_nochk(struct zint_symbol *symbol, const unsigned char so
|
||||
INTERNAL void z_hrt_cpy_cat_nochk(struct zint_symbol *symbol, const unsigned char source[], const int length,
|
||||
const char separator, const unsigned char cat[], const int cat_length);
|
||||
|
||||
/* Copy a single ASCII character into `symbol->text` (i.e. replaces content) */
|
||||
/* Copy a single ASCII character `ch` into `symbol->text` (i.e. replaces content) */
|
||||
INTERNAL void z_hrt_cpy_chr(struct zint_symbol *symbol, const char ch);
|
||||
|
||||
/* No-check as-is append of ASCII to `symbol->text`, assuming current `symbol->text_length` + `length` fits */
|
||||
|
||||
+3
-3
@@ -1048,9 +1048,9 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[
|
||||
const int len = local_segs[0].length;
|
||||
const int primary_len = symbol->primary[0] ? (int) strlen(symbol->primary) : 0;
|
||||
char name[32];
|
||||
char source[1001]; /* 200*5 + 1 = 1001 */
|
||||
char source[10001]; /* 2000*5 + 1 = 10001 */
|
||||
(void) ZBarcode_BarcodeName(symbol->symbology, name);
|
||||
z_debug_print_escape(local_segs[0].source, len > 200 ? 200 : len, source);
|
||||
z_debug_print_escape(local_segs[0].source, len > 2000 ? 2000 : len, source);
|
||||
printf("\nZBarcode_Encode_Segs: %s (%d), height %g, scale: %g, whitespace: (%d, %d), border_width: %d\n"
|
||||
" output_options: 0x%X, fg: \"%s\", bg: \"%s\"\n"
|
||||
" outfile: \"%s\"\n"
|
||||
@@ -1069,7 +1069,7 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[
|
||||
symbol->eci, symbol->dpmm, symbol->dot_size,
|
||||
symbol->text_gap, symbol->guard_descent, symbol->structapp.index, symbol->structapp.count,
|
||||
symbol->structapp.id, symbol->warn_level, seg_count,
|
||||
len > 200 ? "first 200 " : "", seg_count > 1 ? "[0]" : "", len, source);
|
||||
len > 2000 ? "first 2000 " : "", seg_count > 1 ? "[0]" : "", len, source);
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 173 B After Width: | Height: | Size: 174 B |
+2848
-292
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
/* These are not real tests, just performance indicators */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2025-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -185,11 +185,20 @@ static void test_aztec(const testCtx *const p_ctx) {
|
||||
|
||||
static const struct perf_item data[] = {
|
||||
/* 0*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
"ABC xyz ~~~ ??? 1234 \377\377",
|
||||
"", 0, 19, 19, "31 chars, Compact 6-bit words, mixed" },
|
||||
/* 1*/ { BARCODE_AZTEC, ESCAPE_MODE, -1, -1, -1,
|
||||
"[)>\\R06\\G+/ACMRN123456/V2009121908334\\R\\E",
|
||||
"", 0, 23, 23, "41 chars, Compact 8-bit words, mixed" },
|
||||
/* 2*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
"ABCDEFGHIJKLM nopqrstuvwxyz ~~~~~~~~~~~~ ???????????? 12345678901234567890 \377\377\377",
|
||||
"", 0, 27, 27, "90 chars, 8-bit words, mixed" },
|
||||
/* 3*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
"", 0, 49, 49, "286 chars, 8-bit words, upper" },
|
||||
/* 1*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
/* 4*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
@@ -197,7 +206,7 @@ static void test_aztec(const testCtx *const p_ctx) {
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
|
||||
"", 0, 79, 79, "900 chars, 10-bit words, numeric" },
|
||||
/* 2*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
/* 5*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
@@ -206,7 +215,7 @@ static void test_aztec(const testCtx *const p_ctx) {
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377",
|
||||
"", 0, 91, 91, "980 chars, 10-bit words, mixed" },
|
||||
/* 3*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
/* 6*/ { BARCODE_AZTEC, -1, -1, -1, -1,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
@@ -219,7 +228,64 @@ static void test_aztec(const testCtx *const p_ctx) {
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377",
|
||||
"", 0, 113, 113, "1540 chars, 12-bit words, mixed" },
|
||||
/* 4*/ { BARCODE_AZRUNE, -1, -1, -1, -1,
|
||||
/* 7*/ { BARCODE_AZRUNE, -1, -1, -1, -1,
|
||||
"255",
|
||||
"", 0, 11, 11, "3 chars, AZRUNE" },
|
||||
};
|
||||
const int data_size = ARRAY_SIZE(data);
|
||||
const int default_iterations = 1 * 1000;
|
||||
|
||||
test_perf(p_ctx, default_iterations, data, data_size);
|
||||
}
|
||||
|
||||
static void test_aztec_fast(const testCtx *const p_ctx) {
|
||||
|
||||
static const struct perf_item data[] = {
|
||||
/* 0*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1,
|
||||
"ABC xyz ~~~ ??? 1234 \377\377",
|
||||
"", 0, 19, 19, "31 chars, Compact 6-bit words, mixed" },
|
||||
/* 1*/ { BARCODE_AZTEC, ESCAPE_MODE | FAST_MODE, -1, -1, -1,
|
||||
"[)>\\R06\\G+/ACMRN123456/V2009121908334\\R\\E",
|
||||
"", 0, 23, 23, "41 chars, Compact 8-bit words, mixed" },
|
||||
/* 2*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1,
|
||||
"ABCDEFGHIJKLM nopqrstuvwxyz ~~~~~~~~~~~~ ???????????? 12345678901234567890 \377\377\377",
|
||||
"", 0, 27, 27, "90 chars, 8-bit words, mixed" },
|
||||
/* 3*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||
"", 0, 49, 49, "286 chars, 8-bit words, upper" },
|
||||
/* 4*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1,
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
|
||||
"", 0, 79, 79, "900 chars, 10-bit words, numeric" },
|
||||
/* 5*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377",
|
||||
"", 0, 91, 91, "980 chars, 10-bit words, mixed" },
|
||||
/* 6*/ { BARCODE_AZTEC, FAST_MODE, -1, -1, -1,
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377"
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ~~~~~~~~~~~~~~~~~~~~~~~~~ ?????????????????????????? 12345678901234567890123456 \377\377\377\377\377\377",
|
||||
"", 0, 113, 113, "1540 chars, 12-bit words, mixed" },
|
||||
/* 7*/ { BARCODE_AZRUNE, -1, -1, -1, -1,
|
||||
"255",
|
||||
"", 0, 11, 11, "3 chars, AZRUNE" },
|
||||
};
|
||||
@@ -691,6 +757,7 @@ int main(int argc, char *argv[]) {
|
||||
testFunction funcs[] = { /* name, func */
|
||||
{ "test_2of5", test_2of5 },
|
||||
{ "test_aztec", test_aztec },
|
||||
{ "test_aztec_fast", test_aztec_fast },
|
||||
{ "test_code11", test_code11 },
|
||||
{ "test_code128", test_code128 },
|
||||
{ "test_composite", test_composite },
|
||||
|
||||
@@ -168,7 +168,15 @@ static void test_random(const testCtx *const p_ctx, const struct random_item *rd
|
||||
|
||||
static void test_aztec(const testCtx *const p_ctx) {
|
||||
struct random_item rdata = {
|
||||
FLAG_FULL_8BIT, BARCODE_AZTEC, DATA_MODE, 899, 1, 0, 0, -1, 1590
|
||||
FLAG_FULL_8BIT, BARCODE_AZTEC, DATA_MODE, 899, 1, 0, 0, -1, 1900
|
||||
};
|
||||
|
||||
test_random(p_ctx, &rdata);
|
||||
}
|
||||
|
||||
static void test_aztec_fast(const testCtx *const p_ctx) {
|
||||
struct random_item rdata = {
|
||||
FLAG_FULL_8BIT, BARCODE_AZTEC, DATA_MODE | FAST_MODE, 899, 1, 0, 0, -1, 1590
|
||||
};
|
||||
|
||||
test_random(p_ctx, &rdata);
|
||||
@@ -298,6 +306,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
testFunction funcs[] = { /* name, func */
|
||||
{ "test_aztec", test_aztec },
|
||||
{ "test_aztec_fast", test_aztec_fast },
|
||||
{ "test_codablockf", test_codablockf },
|
||||
{ "test_codablockf_ascii", test_codablockf_ascii },
|
||||
{ "test_code128", test_code128 },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2019-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2019-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -1851,9 +1851,9 @@ static void test_quiet_zones(const testCtx *const p_ctx) {
|
||||
/*231*/ { BARCODE_HIBC_BLOCKF, -1, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 },
|
||||
/*232*/ { BARCODE_HIBC_BLOCKF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 0 /*set*/, 0, 44, 0, 20 },
|
||||
/*233*/ { BARCODE_HIBC_BLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 202, 44, 1 /*set*/, 0, 44, 0, 4 },
|
||||
/*234*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 },
|
||||
/*235*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 },
|
||||
/*236*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 0, 2 },
|
||||
/*234*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 4, 4 },
|
||||
/*235*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 4, 4 },
|
||||
/*236*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 1 /*set*/, 8, 10, 4, 4 },
|
||||
/*237*/ { BARCODE_DOTCODE, -1, -1, -1, -1, "1234", "", 0, 10, 10, 13, 27, 21, 1 /*set*/, 5, 6, 1, 1 },
|
||||
/*238*/ { BARCODE_DOTCODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 10, 13, 39, 33, 0 /*set*/, 0, 33, 0, 7 },
|
||||
/*239*/ { BARCODE_HANXIN, -1, -1, -1, -1, "1234", "", 0, 23, 23, 23, 46, 46, 1 /*set*/, 0, 2, 0, 14 },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2019-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2019-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -2063,9 +2063,9 @@ static void test_quiet_zones(const testCtx *const p_ctx) {
|
||||
/*230*/ { BARCODE_HIBC_BLOCKF, -1, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 },
|
||||
/*231*/ { BARCODE_HIBC_BLOCKF, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 242, 44, 20, 2, 4, 40 },
|
||||
/*232*/ { BARCODE_HIBC_BLOCKF, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 20, 2, 101, 202, 44, 0, 2, 4, 40 },
|
||||
/*233*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 },
|
||||
/*234*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 },
|
||||
/*235*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 22, 0, 2, 2 },
|
||||
/*233*/ { BARCODE_HIBC_AZTEC, -1, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 4, 0, 2, 2 },
|
||||
/*234*/ { BARCODE_HIBC_AZTEC, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 4, 0, 2, 2 },
|
||||
/*235*/ { BARCODE_HIBC_AZTEC, BARCODE_NO_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 15, 15, 15, 30, 30, 4, 0, 2, 2 },
|
||||
/*236*/ { BARCODE_DOTCODE, -1, -1, -1, -1, "1234", "", 0, 10, 10, 13, 26, 20, 5, 1, 1.6, 0 },
|
||||
/*237*/ { BARCODE_DOTCODE, BARCODE_QUIET_ZONES, -1, -1, -1, "1234", "", 0, 10, 10, 13, 38, 32, 11, 7, 1.6, 0 },
|
||||
/*238*/ { BARCODE_HANXIN, -1, -1, -1, -1, "1234", "", 0, 23, 23, 23, 46, 46, 0, 0, 14, 2 },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2019-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2019-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -617,7 +617,13 @@ const char *testUtilOption3Name(int symbology, int option_3) {
|
||||
const char *name = NULL;
|
||||
const unsigned int high_byte = option_3 == -1 ? 0 : (option_3 >> 8) & 0xFF;
|
||||
|
||||
if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM) {
|
||||
if (symbology == BARCODE_AZTEC || symbology == BARCODE_HIBC_AZTEC) {
|
||||
if ((option_3 & 0xFF) == ZINT_AZTEC_FULL) {
|
||||
name = "ZINT_AZTEC_FULL";
|
||||
} else {
|
||||
name = (option_3 & 0xFF) ? "-1" : "0";
|
||||
}
|
||||
} else if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM) {
|
||||
if (option_3 > 0) {
|
||||
if ((option_3 & 0x7F) == DM_SQUARE) {
|
||||
if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
|
||||
Binary file not shown.
@@ -13,7 +13,7 @@
|
||||
/* See https://sourceforge.net/p/zint/mailman/message/59278637/
|
||||
and https://github.com/bwipp/postscriptbarcode/commit/763fb4ffbfad7b379723dd3570183c769b28c786
|
||||
and "Pre-calculated QR and MicroQR tables" comment in "qr.h"
|
||||
|
||||
|
||||
Paste output after comment
|
||||
*/
|
||||
|
||||
|
||||
+5
-2
@@ -1,7 +1,7 @@
|
||||
/* zint.h - definitions for libzint */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2009-2025 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2009-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -322,11 +322,14 @@ extern "C" {
|
||||
#define GS1NOCHECK_MODE 0x0020 /* Do not check validity of GS1 data (except that printable ASCII only) */
|
||||
#define HEIGHTPERROW_MODE 0x0040 /* Interpret `height` as per-row rather than as overall height */
|
||||
#define FAST_MODE 0x0080 /* Use faster if less optimal encodation or other shortcuts if available */
|
||||
/* Note: affects DATAMATRIX, MICROPDF417, PDF417, QRCODE & UPNQR only */
|
||||
/* (affects AZTEC, DATAMATRIX, MICROPDF417, PDF417, QRCODE & UPNQR only) */
|
||||
#define EXTRA_ESCAPE_MODE 0x0100 /* Process special symbology-specific escape sequences as well as others */
|
||||
/* Note: currently Code 128 only */
|
||||
#define GS1SYNTAXENGINE_MODE 0x0200 /* Use the GS1 Syntax Engine (if available) to strictly validate GS1 input */
|
||||
|
||||
/* Aztec Code specific options (`symbol->option_3`) */
|
||||
#define ZINT_AZTEC_FULL 128 /* Only consider Full versions on automatic symbol size selection */
|
||||
|
||||
/* Data Matrix specific options (`symbol->option_3`) */
|
||||
#define DM_SQUARE 100 /* Only consider square versions on automatic symbol size selection */
|
||||
#define DM_DMRE 101 /* Consider DMRE versions on automatic symbol size selection */
|
||||
|
||||
Reference in New Issue
Block a user