Do not apply rect/dmre options if concrete size is given. E.g. "zint -b72 --vers 31" will ignore eventual option "--square or --dmre".

This commit is contained in:
Harald Oehlmann 2018-04-08 20:20:56 +02:00
parent 68fdae09c3
commit 3853897d88

View File

@ -1170,30 +1170,30 @@ int data_matrix_200(struct zint_symbol *symbol,const unsigned char source[], con
calcsize = i; calcsize = i;
} }
} }
if (symbol->option_3 == DM_SQUARE) { if (optionsize == -1) {
/* Skip rectangular symbols in square only mode */ // We are in automatic size mode as the exact symbol size was not given
while (matrixH[calcsize] != matrixW[calcsize]) { // Now check the detailed search options square only or no dmre
calcsize++; if (symbol->option_3 == DM_SQUARE) {
/* Skip rectangular symbols in square only mode */
while (matrixH[calcsize] != matrixW[calcsize]) {
calcsize++;
}
} else if (symbol->option_3 != DM_DMRE) {
/* Skip DMRE symbols in no dmre mode */
while (isDMRE[calcsize]) {
calcsize++;
}
} }
if (optionsize != -1) {
strcpy(symbol->errtxt, "521: Can not force square symbols when symbol size is selected");
error_number = ZINT_WARN_INVALID_OPTION;
}
} else if (symbol->option_3 != DM_DMRE) {
/* Skip DMRE symbols */
while (isDMRE[calcsize]) {
calcsize++;
}
}
symbolsize = optionsize;
if (calcsize > optionsize) {
symbolsize = calcsize; symbolsize = calcsize;
if (optionsize != -1) { } else {
strcpy(symbol->errtxt, "522: Input too long for selected symbol size"); // The symbol size was given by --ver (option_2)
return ZINT_ERROR_TOO_LONG; // Thus check if the data fits into this symbol size and use this size
} if (calcsize > optionsize) {
strcpy(symbol->errtxt, "522: Input too long for selected symbol size");
return ZINT_ERROR_TOO_LONG;
}
symbolsize = optionsize;
} }
// Now we know the symbol size we can handle the remaining data in the process buffer. // Now we know the symbol size we can handle the remaining data in the process buffer.