K1 and K2 check digit fix

This commit is contained in:
hooper114 2009-02-28 18:59:47 +00:00
parent 3c33245242
commit 293ecd93d0

View File

@ -18,7 +18,7 @@
with this program; if not, write to the Free Software Foundation, Inc., with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Includes bugfix thanks to rens.dol@gmail.com Includes bugfixes thanks to rens.dol@gmail.com
*/ */
#include <string.h> #include <string.h>
@ -641,8 +641,13 @@ int codablock(struct zint_symbol *symbol, unsigned char source[])
k1_sum = 0; k1_sum = 0;
k2_sum = 0; k2_sum = 0;
for(i = 0; i < input_length; i++) { for(i = 0; i < input_length; i++) {
k1_sum += (i + 1) * source[i]; if(gs1 && source[i] == '[') {
k2_sum += i * source[i]; k1_sum += (i + 1) * 29; /* GS */
k2_sum += i * 29;
} else {
k1_sum += (i + 1) * source[i];
k2_sum += i * source[i];
}
} }
k1_check = k1_sum % 86; k1_check = k1_sum % 86;
k2_check = k2_sum % 86; k2_check = k2_sum % 86;
@ -701,14 +706,14 @@ int codablock(struct zint_symbol *symbol, unsigned char source[])
/* Resolve the data into patterns and place in symbol structure */ /* Resolve the data into patterns and place in symbol structure */
for(i = 0; i < rows_needed; i++) { for(i = 0; i < rows_needed; i++) {
int writer, flip_flop; int writer, flip_flop;
/*
printf("row %d: ",i); printf("row %d: ",i);
printf("103 %d %d [", subset_selector[i], row_indicator[i]); printf("103 %d %d [", subset_selector[i], row_indicator[i]);
for(j = 0; j < columns_needed; j++) { for(j = 0; j < columns_needed; j++) {
printf("%d ",blockmatrix[i][j]); printf("%d ",blockmatrix[i][j]);
} }
printf("] %d 106\n", row_check[i]); printf("] %d 106\n", row_check[i]);
*/
strcpy(row_pattern, ""); strcpy(row_pattern, "");
/* Start character */ /* Start character */
concat(row_pattern, C128Table[103]); /* Always Start A */ concat(row_pattern, C128Table[103]); /* Always Start A */