int reduced_charset(struct zint_symbol *symbol, uint8_t *source, int length) { /* These are the "norm" standards which only support Latin-1 at most */ int error_number = 0; uint8_t preprocessed[length + 1]; if(symbol->symbology == BARCODE_CODE16K) { symbol->whitespace_width = 16; symbol->border_width = 2; symbol->output_options = BARCODE_BIND; } if(symbol->symbology == BARCODE_ITF14) { symbol->whitespace_width = 20; symbol->border_width = 8; symbol->output_options = BARCODE_BOX; } switch(symbol->input_mode) { case DATA_MODE: case GS1_MODE: memcpy(preprocessed, source, length); preprocessed[length] = '\0'; break; case UNICODE_MODE: error_number = latin1_process(symbol, source, preprocessed, &length); if(error_number != 0) { return error_number; } break; } switch(symbol->symbology) { case BARCODE_PDF417: error_number = pdf417enc(symbol, preprocessed, length); break; case BARCODE_PDF417TRUNC: error_number = pdf417enc(symbol, preprocessed, length); break; case BARCODE_MICROPDF417: error_number = micro_pdf417(symbol, preprocessed, length); break; } return error_number; }
int hibc(struct zint_symbol *symbol, uint8_t source[], int length) { int counter, error_number, i; char to_process[40], temp[2], check_digit; if(length > 36) { strcpy(symbol->errtxt, "Data too long for HIBC LIC"); return ZERROR_TOO_LONG; } to_upper(source); error_number = is_sane(TECHNETIUM , source, length); if(error_number == ZERROR_INVALID_DATA) { strcpy(symbol->errtxt, "Invalid characters in data"); return error_number; } strcpy(to_process, "+"); counter = 41; for(i = 0; i < length; i++) { counter += posn(TECHNETIUM, source[i]); } counter = counter % 43; if(counter < 10) { check_digit = itoc(counter); } else { if(counter < 36) { check_digit = (counter - 10) + 'A'; } else { switch(counter) { case 36: check_digit = '-'; break; case 37: check_digit = '.'; break; case 38: check_digit = ' '; break; case 39: check_digit = '$'; break; case 40: check_digit = '/'; break; case 41: check_digit = '+'; break; case 42: check_digit = '%'; break; default: check_digit = ' '; break; /* Keep compiler happy */ } } } temp[0] = check_digit; temp[1] = '\0'; concat(to_process, (char *)source); concat(to_process, temp); length = strlen(to_process); switch(symbol->symbology) { case BARCODE_HIBC_QR: error_number = qr_code(symbol, (uint8_t *)to_process, length); break; case BARCODE_HIBC_PDF: error_number = pdf417enc(symbol, (uint8_t *)to_process, length); break; case BARCODE_HIBC_MICPDF: error_number = micro_pdf417(symbol, (uint8_t *)to_process, length); break; } return error_number; }
int reduced_charset(struct zint_symbol *symbol, unsigned char *source, int length) { /* These are the "norm" standards which only support Latin-1 at most */ int error_number = 0; #ifndef _MSC_VER unsigned char preprocessed[length + 1]; #else unsigned char* preprocessed = (unsigned char*)_alloca(length + 1); #endif if(symbol->symbology == BARCODE_CODE16K) { symbol->whitespace_width = 16; symbol->border_width = 2; symbol->output_options = BARCODE_BIND; } if(symbol->symbology == BARCODE_ITF14) { symbol->whitespace_width = 20; symbol->border_width = 8; symbol->output_options = BARCODE_BOX; } switch(symbol->input_mode) { case DATA_MODE: case GS1_MODE: memcpy(preprocessed, source, length); preprocessed[length] = '\0'; break; case UNICODE_MODE: error_number = latin1_process(symbol, source, preprocessed, &length); if(error_number != 0) { return error_number; } break; } switch(symbol->symbology) { case BARCODE_C25MATRIX: error_number = matrix_two_of_five(symbol, preprocessed, length); break; case BARCODE_C25IND: error_number = industrial_two_of_five(symbol, preprocessed, length); break; case BARCODE_C25INTER: error_number = interleaved_two_of_five(symbol, preprocessed, length); break; case BARCODE_C25IATA: error_number = iata_two_of_five(symbol, preprocessed, length); break; case BARCODE_C25LOGIC: error_number = logic_two_of_five(symbol, preprocessed, length); break; case BARCODE_DPLEIT: error_number = dpleit(symbol, preprocessed, length); break; case BARCODE_DPIDENT: error_number = dpident(symbol, preprocessed, length); break; case BARCODE_UPCA: error_number = eanx(symbol, preprocessed, length); break; case BARCODE_UPCE: error_number = eanx(symbol, preprocessed, length); break; case BARCODE_EANX: error_number = eanx(symbol, preprocessed, length); break; case BARCODE_EAN128: error_number = ean_128(symbol, preprocessed, length); break; case BARCODE_CODE39: error_number = c39(symbol, preprocessed, length); break; case BARCODE_PZN: error_number = pharmazentral(symbol, preprocessed, length); break; case BARCODE_EXCODE39: error_number = ec39(symbol, preprocessed, length); break; case BARCODE_CODABAR: error_number = codabar(symbol, preprocessed, length); break; case BARCODE_CODE93: error_number = c93(symbol, preprocessed, length); break; case BARCODE_LOGMARS: error_number = c39(symbol, preprocessed, length); break; case BARCODE_CODE128: error_number = code_128(symbol, preprocessed, length); break; case BARCODE_CODE128B: error_number = code_128(symbol, preprocessed, length); break; case BARCODE_NVE18: error_number = nve_18(symbol, preprocessed, length); break; case BARCODE_CODE11: error_number = code_11(symbol, preprocessed, length); break; case BARCODE_MSI_PLESSEY: error_number = msi_handle(symbol, preprocessed, length); break; case BARCODE_TELEPEN: error_number = telepen(symbol, preprocessed, length); break; case BARCODE_TELEPEN_NUM: error_number = telepen_num(symbol, preprocessed, length); break; case BARCODE_PHARMA: error_number = pharma_one(symbol, preprocessed, length); break; case BARCODE_PLESSEY: error_number = plessey(symbol, preprocessed, length); break; case BARCODE_ITF14: error_number = itf14(symbol, preprocessed, length); break; case BARCODE_FLAT: error_number = flattermarken(symbol, preprocessed, length); break; case BARCODE_FIM: error_number = fim(symbol, preprocessed, length); break; case BARCODE_POSTNET: error_number = post_plot(symbol, preprocessed, length); break; case BARCODE_PLANET: error_number = planet_plot(symbol, preprocessed, length); break; case BARCODE_RM4SCC: error_number = royal_plot(symbol, preprocessed, length); break; case BARCODE_AUSPOST: error_number = australia_post(symbol, preprocessed, length); break; case BARCODE_AUSREPLY: error_number = australia_post(symbol, preprocessed, length); break; case BARCODE_AUSROUTE: error_number = australia_post(symbol, preprocessed, length); break; case BARCODE_AUSREDIRECT: error_number = australia_post(symbol, preprocessed, length); break; case BARCODE_CODE16K: error_number = code16k(symbol, preprocessed, length); break; case BARCODE_PHARMA_TWO: error_number = pharma_two(symbol, preprocessed, length); break; case BARCODE_ONECODE: error_number = imail(symbol, preprocessed, length); break; case BARCODE_ISBNX: error_number = eanx(symbol, preprocessed, length); break; case BARCODE_RSS14: error_number = rss14(symbol, preprocessed, length); break; case BARCODE_RSS14STACK: error_number = rss14(symbol, preprocessed, length); break; case BARCODE_RSS14STACK_OMNI: error_number = rss14(symbol, preprocessed, length); break; case BARCODE_RSS_LTD: error_number = rsslimited(symbol, preprocessed, length); break; case BARCODE_RSS_EXP: error_number = rssexpanded(symbol, preprocessed, length); break; case BARCODE_RSS_EXPSTACK: error_number = rssexpanded(symbol, preprocessed, length); break; case BARCODE_EANX_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_EAN128_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_RSS14_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_RSS_LTD_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_RSS_EXP_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_UPCA_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_UPCE_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_RSS14STACK_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_RSS14_OMNI_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_RSS_EXPSTACK_CC: error_number = composite(symbol, preprocessed, length); break; case BARCODE_KIX: error_number = kix_code(symbol, preprocessed, length); break; case BARCODE_CODE32: error_number = code32(symbol, preprocessed, length); break; case BARCODE_DAFT: error_number = daft_code(symbol, preprocessed, length); break; case BARCODE_EAN14: error_number = ean_14(symbol, preprocessed, length); break; case BARCODE_AZRUNE: error_number = aztec_runes(symbol, preprocessed, length); break; case BARCODE_KOREAPOST: error_number = korea_post(symbol, preprocessed, length); break; case BARCODE_HIBC_128: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_HIBC_39: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_HIBC_DM: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_HIBC_QR: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_HIBC_PDF: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_HIBC_MICPDF: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_HIBC_AZTEC: error_number = hibc(symbol, preprocessed, length); break; case BARCODE_JAPANPOST: error_number = japan_post(symbol, preprocessed, length); break; case BARCODE_CODE49: error_number = code_49(symbol, preprocessed, length); break; case BARCODE_CHANNEL: error_number = channel_code(symbol, preprocessed, length); break; case BARCODE_CODEONE: error_number = code_one(symbol, preprocessed, length); break; case BARCODE_DATAMATRIX: error_number = dmatrix(symbol, preprocessed, length); break; case BARCODE_PDF417: error_number = pdf417enc(symbol, preprocessed, length); break; case BARCODE_PDF417TRUNC: error_number = pdf417enc(symbol, preprocessed, length); break; case BARCODE_MICROPDF417: error_number = micro_pdf417(symbol, preprocessed, length); break; case BARCODE_MAXICODE: error_number = maxicode(symbol, preprocessed, length); break; case BARCODE_AZTEC: error_number = aztec(symbol, preprocessed, length); break; } return error_number; }