mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Added EAN-14 and corrected bug in EAN-128
This commit is contained in:
parent
30f8e4f77b
commit
c8adcab343
@ -696,6 +696,11 @@ int ean_128(struct zint_symbol *symbol, unsigned char source[])
|
|||||||
/* Rule 2 */
|
/* Rule 2 */
|
||||||
list[0][1]++;
|
list[0][1]++;
|
||||||
list[0][0]--;
|
list[0][0]--;
|
||||||
|
if(indexliste == 1) {
|
||||||
|
list[0][1] = 1;
|
||||||
|
list[1][1] = LATCHB;
|
||||||
|
indexliste = 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(indexliste > 1) {
|
if(indexliste > 1) {
|
||||||
for(i = 1; i < indexliste; i++) {
|
for(i = 1; i < indexliste; i++) {
|
||||||
@ -893,3 +898,47 @@ int ean_128(struct zint_symbol *symbol, unsigned char source[])
|
|||||||
|
|
||||||
return errornum;
|
return errornum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ean_14(struct zint_symbol *symbol, unsigned char source[])
|
||||||
|
{
|
||||||
|
/* EAN-14 - A version of EAN-128 */
|
||||||
|
int input_length, i, count, check_digit;
|
||||||
|
int error_number;
|
||||||
|
char ean128_equiv[20];
|
||||||
|
|
||||||
|
strcpy(ean128_equiv, "");
|
||||||
|
input_length = strlen(source);
|
||||||
|
|
||||||
|
if(input_length != 13) {
|
||||||
|
strcpy(symbol->errtxt, "error: input wrong length");
|
||||||
|
return ERROR_TOO_LONG;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_number = is_sane(NESET, source);
|
||||||
|
if(error_number == ERROR_INVALID_DATA) {
|
||||||
|
strcpy(symbol->errtxt, "error: invalid character in data");
|
||||||
|
return error_number;
|
||||||
|
}
|
||||||
|
concat(ean128_equiv, "[01]");
|
||||||
|
concat(ean128_equiv, source);
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
for (i = input_length - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
count += ctoi(source[i]);
|
||||||
|
|
||||||
|
if (!((i%2) == 1))
|
||||||
|
{
|
||||||
|
count += 2 * ctoi(source[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
check_digit = 10 - (count%10);
|
||||||
|
if (check_digit == 10) { check_digit = 0; }
|
||||||
|
ean128_equiv[17] = itoc(check_digit);
|
||||||
|
ean128_equiv[18] = '\0';
|
||||||
|
|
||||||
|
error_number = ean_128(symbol, ean128_equiv);
|
||||||
|
|
||||||
|
return error_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user