mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Correct "trailing full stop" bug.
This commit is contained in:
parent
695df7572b
commit
f3e8505fd4
@ -129,16 +129,16 @@ int aztec_text_process(unsigned char source[], const unsigned int src_len, char
|
|||||||
}while(i < (maplength - 1));
|
}while(i < (maplength - 1));
|
||||||
|
|
||||||
/* look for blocks of characters which use the same table */
|
/* look for blocks of characters which use the same table */
|
||||||
blocks = 0;
|
blocks = 1;
|
||||||
blockmap[0][0] = typemap[0];
|
blockmap[0][0] = typemap[0];
|
||||||
blockmap[1][0] = 1;
|
blockmap[1][0] = 1;
|
||||||
for(i = 1; i < maplength; i++) {
|
for(i = 1; i < maplength; i++) {
|
||||||
if(typemap[i] == typemap[i - 1]) {
|
if(typemap[i] == typemap[i - 1]) {
|
||||||
blockmap[1][blocks]++;
|
blockmap[1][blocks - 1]++;
|
||||||
} else {
|
} else {
|
||||||
blocks++;
|
blocks++;
|
||||||
blockmap[0][blocks] = typemap[i];
|
blockmap[0][blocks - 1] = typemap[i];
|
||||||
blockmap[1][blocks] = 1;
|
blockmap[1][blocks - 1] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,6 +148,7 @@ int aztec_text_process(unsigned char source[], const unsigned int src_len, char
|
|||||||
if(blockmap[0][0] & 8) { blockmap[0][0] = 8; }
|
if(blockmap[0][0] & 8) { blockmap[0][0] = 8; }
|
||||||
|
|
||||||
if(blocks > 1) {
|
if(blocks > 1) {
|
||||||
|
|
||||||
/* look for adjacent blocks which can use the same table (left to right search) */
|
/* look for adjacent blocks which can use the same table (left to right search) */
|
||||||
for(i = 1; i < blocks; i++) {
|
for(i = 1; i < blocks; i++) {
|
||||||
if(blockmap[0][i] & blockmap[0][i - 1]) {
|
if(blockmap[0][i] & blockmap[0][i - 1]) {
|
||||||
@ -193,7 +194,7 @@ int aztec_text_process(unsigned char source[], const unsigned int src_len, char
|
|||||||
|
|
||||||
/* Put the adjusted block data back into typemap */
|
/* Put the adjusted block data back into typemap */
|
||||||
j = 0;
|
j = 0;
|
||||||
for(i = 0; i <= blocks; i++) {
|
for(i = 0; i < blocks; i++) {
|
||||||
if((blockmap[1][i] < 3) && (blockmap[0][i] != 32)) { /* Shift character(s) needed */
|
if((blockmap[1][i] < 3) && (blockmap[0][i] != 32)) { /* Shift character(s) needed */
|
||||||
for(k = 0; k < blockmap[1][i]; k++) {
|
for(k = 0; k < blockmap[1][i]; k++) {
|
||||||
typemap[j + k] = blockmap[0][i] + 64;
|
typemap[j + k] = blockmap[0][i] + 64;
|
||||||
@ -693,6 +694,7 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length)
|
|||||||
}
|
}
|
||||||
|
|
||||||
err_code = aztec_text_process(local_source, length, binary_string, gs1);
|
err_code = aztec_text_process(local_source, length, binary_string, gs1);
|
||||||
|
|
||||||
|
|
||||||
if(err_code != 0) {
|
if(err_code != 0) {
|
||||||
strcpy(symbol->errtxt, "Input too long or too many extended ASCII characters");
|
strcpy(symbol->errtxt, "Input too long or too many extended ASCII characters");
|
||||||
@ -836,18 +838,7 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length)
|
|||||||
adjusted_length = strlen(adjusted_string);
|
adjusted_length = strlen(adjusted_string);
|
||||||
adjustment_size = adjusted_length - data_length;
|
adjustment_size = adjusted_length - data_length;
|
||||||
|
|
||||||
if(debug) {
|
/* Add padding */
|
||||||
printf("Codewords:\n");
|
|
||||||
for(i = 0; i < (adjusted_length / codeword_size); i++) {
|
|
||||||
for(j = 0; j < codeword_size; j++) {
|
|
||||||
printf("%c", adjusted_string[(i * codeword_size) + j]);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Only important if this loop is repeated */
|
|
||||||
|
|
||||||
remainder = adjusted_length % codeword_size;
|
remainder = adjusted_length % codeword_size;
|
||||||
|
|
||||||
padbits = codeword_size - remainder;
|
padbits = codeword_size - remainder;
|
||||||
@ -864,6 +855,16 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length)
|
|||||||
}
|
}
|
||||||
if(count == codeword_size) { adjusted_string[adjusted_length - 1] = '0'; }
|
if(count == codeword_size) { adjusted_string[adjusted_length - 1] = '0'; }
|
||||||
|
|
||||||
|
if(debug) {
|
||||||
|
printf("Codewords:\n");
|
||||||
|
for(i = 0; i < (adjusted_length / codeword_size); i++) {
|
||||||
|
for(j = 0; j < codeword_size; j++) {
|
||||||
|
printf("%c", adjusted_string[(i * codeword_size) + j]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} while(adjusted_length > data_maxsize);
|
} while(adjusted_length > data_maxsize);
|
||||||
/* This loop will only repeat on the rare occasions when the rule about not having all 1s or all 0s
|
/* This loop will only repeat on the rare occasions when the rule about not having all 1s or all 0s
|
||||||
means that the binary string has had to be lengthened beyond the maximum number of bits that can
|
means that the binary string has had to be lengthened beyond the maximum number of bits that can
|
||||||
@ -956,6 +957,17 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length)
|
|||||||
strcpy(symbol->errtxt, "Data too long for specified Aztec Code symbol size");
|
strcpy(symbol->errtxt, "Data too long for specified Aztec Code symbol size");
|
||||||
return ERROR_TOO_LONG;
|
return ERROR_TOO_LONG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(debug) {
|
||||||
|
printf("Codewords:\n");
|
||||||
|
for(i = 0; i < (adjusted_length / codeword_size); i++) {
|
||||||
|
for(j = 0; j < codeword_size; j++) {
|
||||||
|
printf("%c", adjusted_string[(i * codeword_size) + j]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(reader && (layers > 22)) {
|
if(reader && (layers > 22)) {
|
||||||
@ -1136,6 +1148,7 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length)
|
|||||||
if((data_blocks - 1) & 0x02) { descriptor[6] = '1'; } else { descriptor[6] = '0'; }
|
if((data_blocks - 1) & 0x02) { descriptor[6] = '1'; } else { descriptor[6] = '0'; }
|
||||||
if((data_blocks - 1) & 0x01) { descriptor[7] = '1'; } else { descriptor[7] = '0'; }
|
if((data_blocks - 1) & 0x01) { descriptor[7] = '1'; } else { descriptor[7] = '0'; }
|
||||||
descriptor[8] = '\0';
|
descriptor[8] = '\0';
|
||||||
|
if(debug) printf("Mode Message = %s\n", descriptor);
|
||||||
} else {
|
} else {
|
||||||
/* The first 5 bits represent the number of layers minus 1 */
|
/* The first 5 bits represent the number of layers minus 1 */
|
||||||
if((layers - 1) & 0x10) { descriptor[0] = '1'; } else { descriptor[0] = '0'; }
|
if((layers - 1) & 0x10) { descriptor[0] = '1'; } else { descriptor[0] = '0'; }
|
||||||
@ -1160,6 +1173,7 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length)
|
|||||||
if((data_blocks - 1) & 0x02) { descriptor[14] = '1'; } else { descriptor[14] = '0'; }
|
if((data_blocks - 1) & 0x02) { descriptor[14] = '1'; } else { descriptor[14] = '0'; }
|
||||||
if((data_blocks - 1) & 0x01) { descriptor[15] = '1'; } else { descriptor[15] = '0'; }
|
if((data_blocks - 1) & 0x01) { descriptor[15] = '1'; } else { descriptor[15] = '0'; }
|
||||||
descriptor[16] = '\0';
|
descriptor[16] = '\0';
|
||||||
|
if(debug) printf("Mode Message = %s\n", descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Split into 4-bit codewords */
|
/* Split into 4-bit codewords */
|
||||||
|
Loading…
Reference in New Issue
Block a user