From 90293ebcdaf2734dd043f395cd2b92dd8d93498c Mon Sep 17 00:00:00 2001 From: gitlost Date: Fri, 10 Feb 2023 14:44:10 +0000 Subject: [PATCH] - Add `text_gap` option to allow adjustment of vertical gap between barcode and text - EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC - DAFT: up max to 250 chars - EMF/EPS/SVG: fix addon bars placement/length when text hidden - Qt backend: use `QFontMetrics::horizontalAdvance()` rather than `boundingRect()` to calc text width (seems to be more accurate) - library: make printf/sprintf() format arg always literal string - output: fix errtxt nos clash; use array for `out_upcean_split_text()` text parts - raster/vector: smallify addon text printing logic - frontend: warn if output file and direct options both given; add TODO note about `CommandLineToArgvW()` loading shell32.dll - manual: put HRT options in own section --- ChangeLog | 8 + backend/emf.c | 3 +- backend/gs1.c | 15 +- backend/library.c | 18 +- backend/output.c | 72 +- backend/output.h | 7 +- backend/postal.c | 8 +- backend/ps.c | 3 +- backend/raster.c | 115 +-- backend/svg.c | 3 +- .../tests/data/emf/code128_egrave_bold.emf | Bin 1248 -> 1248 bytes .../data/emf/code128_egrave_bold_100dpi.emf | Bin 1248 -> 1248 bytes .../data/emf/code128_egrave_bold_1200dpi.emf | Bin 1248 -> 1248 bytes .../data/emf/code128_egrave_bold_150dpi.emf | Bin 1248 -> 1248 bytes .../data/emf/code128_egrave_bold_300dpi.emf | Bin 1248 -> 1248 bytes .../data/emf/code128_egrave_bold_400dpi.emf | Bin 1248 -> 1248 bytes backend/tests/data/emf/code39_rotate_180.emf | Bin 1136 -> 1136 bytes backend/tests/data/emf/code39_rotate_270.emf | Bin 1136 -> 1136 bytes backend/tests/data/emf/code39_rotate_90.emf | Bin 1136 -> 1136 bytes .../data/emf/code39_rotate_90_300dpi.emf | Bin 1136 -> 1136 bytes backend/tests/data/emf/ean13_5addon_#185.emf | Bin 1876 -> 1876 bytes .../data/emf/ean13_5addon_ggs_5.2.2.5.2-2.emf | Bin 1876 -> 1876 bytes backend/tests/data/emf/itf14_bold.emf | Bin 1552 -> 1552 bytes backend/tests/data/emf/itf14_bold_600dpi.emf | Bin 1552 -> 1552 bytes backend/tests/data/emf/telenum_fg_bg.emf | Bin 1268 -> 1268 bytes .../tests/data/emf/telenum_fg_bg_150dpi.emf | Bin 1268 -> 1268 bytes .../data/emf/upca_2addon_ggs_5.2.6.6-5.emf | Bin 1860 -> 1860 bytes backend/tests/data/emf/upce_2addon.emf | Bin 1460 -> 1460 bytes backend/tests/data/emf/upce_2addon_150dpi.emf | Bin 1460 -> 1460 bytes .../tests/data/emf/upce_2addon_small_bold.emf | Bin 1460 -> 1460 bytes backend/tests/data/emf/upu_s10_cmyk_nobg.emf | Bin 1536 -> 1536 bytes .../tests/data/eps/code128_egrave_bold.eps | 4 +- .../eps/code128_egrave_bold_rotate_90.eps | 4 +- .../tests/data/eps/code128_escape_latin1.eps | 4 +- backend/tests/data/eps/code39_fg_bg.eps | 2 +- .../tests/data/eps/code39_fgalpha_bg_cmyk.eps | 2 +- backend/tests/data/eps/code39_nobg_cmyk.eps | 2 +- .../data/eps/dbar_ltd_24724_fig7_bold.eps | 4 +- .../data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps | 86 +- .../data/eps/upca_2addon_ggs_5.2.6.6-5.eps | 88 +- backend/tests/data/eps/upce_5addon.eps | 78 +- .../tests/data/eps/upce_5addon_small_bold.eps | 88 +- backend/tests/data/print/emf/code128_aim.emf | Bin 956 -> 956 bytes backend/tests/data/print/eps/code128_aim.eps | 4 +- backend/tests/data/print/svg/code128_aim.svg | 2 +- backend/tests/data/svg/channel_cmyk_nobg.svg | 2 +- backend/tests/data/svg/code128_amperands.svg | 2 +- .../tests/data/svg/code128_egrave_bold.svg | 2 +- .../data/svg/code128_egrave_bold_box3.svg | 2 +- .../svg/code128_egrave_bold_hvwsp2_box2.svg | 2 +- .../data/svg/code128_egrave_bold_hvwsp3.svg | 2 +- backend/tests/data/svg/code39_small.svg | 2 +- backend/tests/data/svg/dbar_ltd.svg | 2 +- backend/tests/data/svg/dpd_compliant.svg | 2 +- .../data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg | 20 +- .../data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg | 38 +- .../data/svg/ean13_cc_2addon_cca_4x4.svg | 20 +- .../data/svg/ean13_cc_5addon_ccb_3x4.svg | 38 +- .../svg/ean13_cc_5addon_ccb_3x4_notext.svg | 32 +- backend/tests/data/svg/ean2.svg | 2 +- backend/tests/data/svg/ean5.svg | 2 +- backend/tests/data/svg/ean8_2addon.svg | 18 +- backend/tests/data/svg/ean8_5addon.svg | 36 +- .../tests/data/svg/ean8_cc_2addon_cca_4x3.svg | 18 +- .../tests/data/svg/ean8_cc_5addon_ccb_8x3.svg | 36 +- backend/tests/data/svg/gs1_128_cc_fig12.svg | 2 +- .../data/svg/telepen_height0.4_rotate_180.svg | 4 +- .../data/svg/upca_2addon_ggs_5.2.6.6-5.svg | 22 +- backend/tests/data/svg/upca_5addon.svg | 40 +- backend/tests/data/svg/upca_5addon_bind3.svg | 40 +- .../tests/data/svg/upca_5addon_small_bold.svg | 54 +- .../tests/data/svg/upca_cc_2addon_cca_3x4.svg | 22 +- .../tests/data/svg/upca_cc_5addon_ccb_4x4.svg | 40 +- .../data/svg/upca_cc_5addon_ccb_4x4_bind3.svg | 40 +- .../svg/upca_cc_5addon_ccb_4x4_notext.svg | 32 +- backend/tests/data/svg/upce_2addon.svg | 20 +- backend/tests/data/svg/upce_5addon.svg | 38 +- backend/tests/data/svg/upce_5addon_notext.svg | 32 +- backend/tests/data/svg/upce_5addon_small.svg | 42 +- .../tests/data/svg/upce_cc_2addon_cca_5x2.svg | 20 +- .../svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg | 20 +- .../data/svg/upce_cc_2addon_cca_5x2_nobg.svg | 20 +- .../svg/upce_cc_2addon_cca_5x2_rotate_270.svg | 26 +- .../tests/data/svg/upce_cc_5addon_ccb_8x2.svg | 38 +- .../svg/upce_cc_5addon_ccb_8x2_notext.svg | 32 +- backend/tests/test_emf.c | 3 +- backend/tests/test_library.c | 304 +++--- backend/tests/test_output.c | 30 +- backend/tests/test_png.c | 123 +-- backend/tests/test_postal.c | 6 +- backend/tests/test_raster.c | 335 +++++-- backend/tests/test_svg.c | 113 +-- backend/tests/test_vector.c | 872 ++++++++++++++---- backend/tests/testcommon.c | 2 +- backend/tests/testcommon.h | 4 +- backend/vector.c | 205 ++-- backend/zint.h | 3 +- backend_qt/qzint.cpp | 38 +- backend_qt/qzint.h | 5 + backend_qt/tests/test_qzint.cpp | 126 ++- backend_tcl/zint.c | 19 +- docs/images/bc412.svg | 2 +- docs/images/c25iata.svg | 2 +- docs/images/c25ind.svg | 2 +- docs/images/c25inter.svg | 2 +- docs/images/c25logic.svg | 2 +- docs/images/c25standard.svg | 2 +- docs/images/channel.svg | 2 +- docs/images/codabar.svg | 2 +- docs/images/code11.svg | 2 +- docs/images/code128.svg | 2 +- docs/images/code128_box.svg | 2 +- docs/images/code128_green.svg | 2 +- docs/images/code128_green_alpha.svg | 2 +- docs/images/code128_rotate90.svg | 4 +- docs/images/code128_small_bold.svg | 2 +- docs/images/code128_stacked.svg | 2 +- docs/images/code128_textgap.svg | 47 + docs/images/code128ab.svg | 2 +- docs/images/code32.svg | 2 +- docs/images/code39.svg | 2 +- docs/images/code93.svg | 2 +- docs/images/dbar_exp.svg | 2 +- docs/images/dbar_ltd.svg | 2 +- docs/images/dbar_omn.svg | 2 +- docs/images/dbar_truncated.svg | 2 +- docs/images/dpd.svg | 2 +- docs/images/dpident.svg | 2 +- docs/images/dpleit.svg | 2 +- docs/images/ean14.svg | 2 +- docs/images/eanx13.svg | 10 +- docs/images/eanx5.svg | 6 +- docs/images/eanx8_5.svg | 40 +- docs/images/eanx_cc_a.svg | 10 +- docs/images/eanx_cc_b.svg | 10 +- docs/images/excode39.svg | 2 +- docs/images/gs1_128.svg | 2 +- docs/images/gs1_128_cc_c.svg | 2 +- docs/images/gui_appearance.png | Bin 283869 -> 294589 bytes docs/images/hibc_128.svg | 2 +- docs/images/hibc_39.svg | 2 +- docs/images/isbnx.svg | 10 +- docs/images/itf14.svg | 2 +- docs/images/itf14_border0.svg | 2 +- docs/images/koreapost.svg | 2 +- docs/images/logmars.svg | 2 +- docs/images/msi_plessey.svg | 2 +- docs/images/nve18.svg | 2 +- docs/images/plessey.svg | 2 +- docs/images/pzn.svg | 2 +- docs/images/telepen.svg | 2 +- docs/images/telepen_num.svg | 2 +- docs/images/upca.svg | 12 +- docs/images/upca_5.svg | 44 +- docs/images/upce.svg | 10 +- docs/images/upu_s10.svg | 2 +- docs/images/vin.svg | 2 +- docs/manual.pmd | 95 +- docs/manual.txt | 99 +- docs/zint.1 | 14 +- docs/zint.1.pmd | 9 +- docs/zint_images.sh | 1 + frontend/main.c | 52 +- frontend/tests/test_args.c | 86 +- frontend_qt/mainWindow.ui | 71 +- frontend_qt/mainwindow.cpp | 49 +- frontend_qt/mainwindow.h | 3 + 167 files changed, 2706 insertions(+), 1734 deletions(-) create mode 100644 docs/images/code128_textgap.svg diff --git a/ChangeLog b/ChangeLog index 7e79ba85..a8ee7b60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,9 @@ Version 2.12.0.9 (dev) not released yet for "C,M,Y,K" comma-separated decimal percentage strings - CMYK values for EPS (slightly) and TIF (significantly) have changed - now use the same RGB -> CMYK formula +- Text (HRT) placement for vector (EMF/EPS/SVG) output changed - for EAN/UPC + slightly further away from barcode, for all others slightly nearer. Some + horizontal alignments of EAN/UPC vector text also tweaked Changes ------- @@ -25,6 +28,9 @@ Changes - GUI: Rearrange some Appearance tab inputs (Border Type <-> Width, Show Text <-> Font, Text/Font <-> Printing Scale/Size) to flow more naturally; save button "Save As..." -> "Save..." and add icon +- Add `text_gap` option to allow adjustment of vertical gap between barcode and + text (HRT) +- DAFT: up max to 250 chars Bugs ---- @@ -35,6 +41,8 @@ Bugs - GUI: fg/bgcolor text edit: fix right-click context menu not working properly by checking for it on FocusOut - GUI: fix fg/gbcolor icon background not being reset on zap +- EMF/EPS/SVG/GUI: ignore BOLD_TEXT for EAN/UPC +- EMF/EPS/SVG: fix addon bars placement/length when text hidden Version 2.12.0 (2022-12-12) diff --git a/backend/emf.c b/backend/emf.c index 9f3ec22d..684bcd73 100644 --- a/backend/emf.c +++ b/backend/emf.c @@ -553,8 +553,7 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) { /* Create font records, alignment records and text color */ if (symbol->vector->strings) { - bold = (symbol->output_options & BOLD_TEXT) && - (!is_extendable(symbol->symbology) || (symbol->output_options & SMALL_TEXT)); + bold = (symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology); memset(&emr_extcreatefontindirectw, 0, sizeof(emr_extcreatefontindirectw)); emr_extcreatefontindirectw.type = 0x00000052; /* EMR_EXTCREATEFONTINDIRECTW */ emr_extcreatefontindirectw.size = 104; diff --git a/backend/gs1.c b/backend/gs1.c index 0de6c79c..3445cf6a 100644 --- a/backend/gs1.c +++ b/backend/gs1.c @@ -1,7 +1,7 @@ /* gs1.c - Verifies GS1 data */ /* libzint - the open source barcode library - Copyright (C) 2009-2022 Robin Stuart + Copyright (C) 2009-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -846,7 +846,11 @@ static const unsigned char *coupon_vli(const unsigned char *data, const int data if ((vli < vli_min || vli > vli_max) && (vli != 9 || !vli_nine)) { *p_err_no = 3; *p_err_posn = d - data + 1; - sprintf(err_msg, vli < 0 ? "Non-numeric %s VLI '%c'" : "Invalid %s VLI '%c'", name, *d); + if (vli < 0) { + sprintf(err_msg, "Non-numeric %s VLI '%c'", name, *d); + } else { + sprintf(err_msg, "Invalid %s VLI '%c'", name, *d); + } return NULL; } d++; @@ -1101,8 +1105,11 @@ static int couponcode(const unsigned char *data, int data_len, int offset, int m *p_err_no = 3; *p_err_posn = d - 1 - data + 1; - sprintf(err_msg, data_field < 0 ? "Non-numeric Data Field '%c'" : "Invalid Data Field '%c'", - *(d - 1)); + if (data_field < 0) { + sprintf(err_msg, "Non-numeric Data Field '%c'", *(d - 1)); + } else { + sprintf(err_msg, "Invalid Data Field '%c'", *(d - 1)); + } return 0; } } diff --git a/backend/library.c b/backend/library.c index ad7759a8..5948d3dc 100644 --- a/backend/library.c +++ b/backend/library.c @@ -216,9 +216,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ static int error_tag(struct zint_symbol *symbol, int error_number, const char *error_string) { if (error_number != 0) { - static const char error_fmt[] = "Error %.93s"; /* Truncate if too long */ - static const char warn_fmt[] = "Warning %.91s"; /* Truncate if too long */ - const char *fmt = error_number >= ZINT_ERROR ? error_fmt : warn_fmt; + const char *const error_arg = error_string ? error_string : symbol->errtxt; char error_buffer[100]; if (error_number < ZINT_ERROR && symbol->warn_level == WARN_FAIL_ALL) { @@ -230,9 +228,12 @@ static int error_tag(struct zint_symbol *symbol, int error_number, const char *e } else { /* ZINT_WARN_INVALID_OPTION */ error_number = ZINT_ERROR_INVALID_OPTION; } - fmt = error_fmt; } - sprintf(error_buffer, fmt, error_string ? error_string : symbol->errtxt); + if (error_number >= ZINT_ERROR) { + sprintf(error_buffer, "Error %.93s", error_arg); /* Truncate if too long */ + } else { + sprintf(error_buffer, "Warning %.91s", error_arg); /* Truncate if too long */ + } strcpy(symbol->errtxt, error_buffer); } @@ -1096,6 +1097,9 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[ if ((symbol->guard_descent < 0.0f) || (symbol->guard_descent > 50.0f)) { return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "769: Guard bar descent out of range (0 to 50)"); } + if ((symbol->text_gap < 0.0f) || (symbol->text_gap > 5.0f)) { + return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "219: Text gap out of range (0 to 5)"); + } if ((symbol->whitespace_width < 0) || (symbol->whitespace_width > 100)) { return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "766: Whitespace width out of range (0 to 100)"); } @@ -1185,7 +1189,7 @@ int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[ local_segs[0].length = (int) ustrlen(reduced); } } else { - return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "220: Selected symbology does not support GS1 mode"); + return error_tag(symbol, ZINT_ERROR_INVALID_OPTION, "210: Selected symbology does not support GS1 mode"); } } @@ -1445,7 +1449,7 @@ int ZBarcode_Encode_File(struct zint_symbol *symbol, const char *filename) { return error_tag(symbol, ZINT_ERROR_INVALID_DATA, "239: Filename NULL"); } - if (!strcmp(filename, "-")) { + if (strcmp(filename, "-") == 0) { file = stdin; fileLen = ZINT_MAX_DATA_LEN; } else { diff --git a/backend/output.c b/backend/output.c index 76e907f5..458bd5e3 100644 --- a/backend/output.c +++ b/backend/output.c @@ -41,7 +41,6 @@ #endif #include "common.h" #include "output.h" -#include "font.h" #define OUT_SSET_F (IS_NUM_F | IS_UHX_F | IS_LHX_F) /* SSET "0123456789ABCDEFabcdef" */ @@ -53,11 +52,11 @@ static int out_check_colour(struct zint_symbol *symbol, const char *colour, cons if ((comma1 = strchr(colour, ',')) == NULL) { const int len = (int) strlen(colour); if ((len != 6) && (len != 8)) { - sprintf(symbol->errtxt, "690: Malformed %s RGB colour (6 or 8 characters only)", name); + sprintf(symbol->errtxt, "880: Malformed %s RGB colour (6 or 8 characters only)", name); return ZINT_ERROR_INVALID_OPTION; } if (!is_sane(OUT_SSET_F, (unsigned char *) colour, len)) { - sprintf(symbol->errtxt, "691: Malformed %s RGB colour '%s' (hexadecimal only)", name, colour); + sprintf(symbol->errtxt, "881: Malformed %s RGB colour '%s' (hexadecimal only)", name, colour); return ZINT_ERROR_INVALID_OPTION; } @@ -67,28 +66,28 @@ static int out_check_colour(struct zint_symbol *symbol, const char *colour, cons /* CMYK comma-separated percentages */ if ((comma2 = strchr(comma1 + 1, ',')) == NULL || (comma3 = strchr(comma2 + 1, ',')) == NULL || strchr(comma3 + 1, ',') != NULL) { - sprintf(symbol->errtxt, "692: Malformed %s CMYK colour (4 decimal numbers, comma-separated)", name); + sprintf(symbol->errtxt, "882: Malformed %s CMYK colour (4 decimal numbers, comma-separated)", name); return ZINT_ERROR_INVALID_OPTION; } if (comma1 - colour > 3 || comma2 - (comma1 + 1) > 3 || comma3 - (comma2 + 1) > 3 || strlen(comma3 + 1) > 3) { - sprintf(symbol->errtxt, "693: Malformed %s CMYK colour (3 digit maximum per number)", name); + sprintf(symbol->errtxt, "883: Malformed %s CMYK colour (3 digit maximum per number)", name); return ZINT_ERROR_INVALID_OPTION; } if ((val = to_int((const unsigned char *) colour, (int) (comma1 - colour))) == -1 || val > 100) { - sprintf(symbol->errtxt, "694: Malformed %s CMYK colour C (decimal 0-100 only)", name); + sprintf(symbol->errtxt, "884: Malformed %s CMYK colour C (decimal 0-100 only)", name); return ZINT_ERROR_INVALID_OPTION; } if ((val = to_int((const unsigned char *) (comma1 + 1), (int) (comma2 - (comma1 + 1)))) == -1 || val > 100) { - sprintf(symbol->errtxt, "695: Malformed %s CMYK colour M (decimal 0-100 only)", name); + sprintf(symbol->errtxt, "885: Malformed %s CMYK colour M (decimal 0-100 only)", name); return ZINT_ERROR_INVALID_OPTION; } if ((val = to_int((const unsigned char *) (comma2 + 1), (int) (comma3 - (comma2 + 1)))) == -1 || val > 100) { - sprintf(symbol->errtxt, "696: Malformed %s CMYK colour Y (decimal 0-100 only)", name); + sprintf(symbol->errtxt, "886: Malformed %s CMYK colour Y (decimal 0-100 only)", name); return ZINT_ERROR_INVALID_OPTION; } if ((val = to_int((const unsigned char *) (comma3 + 1), (int) strlen(comma3 + 1))) == -1 || val > 100) { - sprintf(symbol->errtxt, "697: Malformed %s CMYK colour K (decimal 0-100 only)", name); + sprintf(symbol->errtxt, "887: Malformed %s CMYK colour K (decimal 0-100 only)", name); return ZINT_ERROR_INVALID_OPTION; } @@ -741,7 +740,8 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi /* Calculate large bar height i.e. linear bars with zero row height that respond to the symbol height. If scaler `si` non-zero (raster), then large_bar_height if non-zero or else row heights will be rounded to nearest pixel and symbol height adjusted */ -INTERNAL float out_large_bar_height(struct zint_symbol *symbol, int si, int *row_heights_si, int *symbol_height_si) { +INTERNAL float out_large_bar_height(struct zint_symbol *symbol, const int si, int *row_heights_si, + int *symbol_height_si) { float fixed_height = 0.0f; int zero_count = 0; int round_rows = 0; @@ -812,64 +812,62 @@ INTERNAL float out_large_bar_height(struct zint_symbol *symbol, int si, int *row } /* Split UPC/EAN add-on text into various constituents */ -INTERNAL void out_upcean_split_text(int upceanflag, unsigned char text[], - unsigned char textpart1[5], unsigned char textpart2[7], unsigned char textpart3[7], - unsigned char textpart4[2]) { +INTERNAL void out_upcean_split_text(const int upceanflag, const unsigned char text[], unsigned char textparts[4][7]) { int i; if (upceanflag == 6) { /* UPC-E */ - textpart1[0] = text[0]; - textpart1[1] = '\0'; + textparts[0][0] = text[0]; + textparts[0][1] = '\0'; for (i = 0; i < 6; i++) { - textpart2[i] = text[i + 1]; + textparts[1][i] = text[i + 1]; } - textpart2[6] = '\0'; + textparts[1][6] = '\0'; - textpart3[0] = text[7]; - textpart3[1] = '\0'; + textparts[2][0] = text[7]; + textparts[2][1] = '\0'; } else if (upceanflag == 8) { /* EAN-8 */ for (i = 0; i < 4; i++) { - textpart1[i] = text[i]; + textparts[0][i] = text[i]; } - textpart1[4] = '\0'; + textparts[0][4] = '\0'; for (i = 0; i < 4; i++) { - textpart2[i] = text[i + 4]; + textparts[1][i] = text[i + 4]; } - textpart2[4] = '\0'; + textparts[1][4] = '\0'; } else if (upceanflag == 12) { /* UPC-A */ - textpart1[0] = text[0]; - textpart1[1] = '\0'; + textparts[0][0] = text[0]; + textparts[0][1] = '\0'; for (i = 0; i < 5; i++) { - textpart2[i] = text[i + 1]; + textparts[1][i] = text[i + 1]; } - textpart2[5] = '\0'; + textparts[1][5] = '\0'; for (i = 0; i < 5; i++) { - textpart3[i] = text[i + 6]; + textparts[2][i] = text[i + 6]; } - textpart3[5] = '\0'; + textparts[2][5] = '\0'; - textpart4[0] = text[11]; - textpart4[1] = '\0'; + textparts[3][0] = text[11]; + textparts[3][1] = '\0'; } else if (upceanflag == 13) { /* EAN-13 */ - textpart1[0] = text[0]; - textpart1[1] = '\0'; + textparts[0][0] = text[0]; + textparts[0][1] = '\0'; for (i = 0; i < 6; i++) { - textpart2[i] = text[i + 1]; + textparts[1][i] = text[i + 1]; } - textpart2[6] = '\0'; + textparts[1][6] = '\0'; for (i = 0; i < 6; i++) { - textpart3[i] = text[i + 7]; + textparts[2][i] = text[i + 7]; } - textpart3[6] = '\0'; + textparts[2][6] = '\0'; } } diff --git a/backend/output.h b/backend/output.h index b6804014..c8496676 100644 --- a/backend/output.h +++ b/backend/output.h @@ -62,12 +62,11 @@ INTERNAL int out_process_upcean(const struct zint_symbol *symbol, int *p_main_wi /* Calculate large bar height i.e. linear bars with zero row height that respond to the symbol height. If scaler `si` non-zero (raster), then large_bar_height if non-zero or else row heights will be rounded to nearest pixel and symbol height adjusted */ -INTERNAL float out_large_bar_height(struct zint_symbol *symbol, int si, int *row_heights_si, int *symbol_height_si); +INTERNAL float out_large_bar_height(struct zint_symbol *symbol, const int si, int *row_heights_si, + int *symbol_height_si); /* Split UPC/EAN add-on text into various constituents */ -INTERNAL void out_upcean_split_text(int upceanflag, unsigned char text[], - unsigned char textpart1[5], unsigned char textpart2[7], unsigned char textpart3[7], - unsigned char textpart4[2]); +INTERNAL void out_upcean_split_text(const int upceanflag, const unsigned char text[], unsigned char textparts[4][7]); /* Create output file, creating sub-directories if necessary. Returns `fopen()` FILE pointer */ INTERNAL FILE *out_fopen(const char filename[256], const char *mode); diff --git a/backend/postal.c b/backend/postal.c index 2e919c2b..5ca6dc61 100644 --- a/backend/postal.c +++ b/backend/postal.c @@ -1,7 +1,7 @@ /* postal.c - Handles POSTNET, PLANET, CEPNet, FIM. RM4SCC and Flattermarken */ /* libzint - the open source barcode library - Copyright (C) 2008-2022 Robin Stuart + Copyright (C) 2008-2023 Robin Stuart Including bug fixes by Bryan Hatton Redistribution and use in source and binary forms, with or without @@ -559,12 +559,12 @@ INTERNAL int kix(struct zint_symbol *symbol, unsigned char source[], int length) /* Handles DAFT Code symbols */ INTERNAL int daft(struct zint_symbol *symbol, unsigned char source[], int length) { - int posns[100]; + int posns[250]; int loopey; int writer; - if (length > 100) { - strcpy(symbol->errtxt, "492: Input too long (100 character maximum)"); + if (length > 250) { + strcpy(symbol->errtxt, "492: Input too long (250 character maximum)"); return ZINT_ERROR_TOO_LONG; } to_upper(source, length); diff --git a/backend/ps.c b/backend/ps.c index 3b5d13d8..61571a6d 100644 --- a/backend/ps.c +++ b/backend/ps.c @@ -427,8 +427,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) { string = symbol->vector->strings; if (string) { - if ((symbol->output_options & BOLD_TEXT) - && (!is_extendable(symbol->symbology) || (symbol->output_options & SMALL_TEXT))) { + if ((symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology)) { font = "Helvetica-Bold"; } else { font = "Helvetica"; diff --git a/backend/raster.c b/backend/raster.c index 38d68780..a664e09d 100644 --- a/backend/raster.c +++ b/backend/raster.c @@ -44,10 +44,10 @@ #include "font.h" /* Font for human readable text */ -#define DEFAULT_INK '1' -#define DEFAULT_PAPER '0' +#define DEFAULT_INK '1' /* Black */ +#define DEFAULT_PAPER '0' /* White */ -#define UPCEAN_TEXT 1 +#define UPCEAN_TEXT 1 /* Helper flag for `draw_string()`/`draw_letter()` to indicate dealing with UPC/EAN */ #ifndef ZINT_NO_PNG INTERNAL int png_pixel_plot(struct zint_symbol *symbol, const unsigned char *pixelbuf); @@ -61,7 +61,7 @@ static const char ultra_colour[] = "0CBMRYGKW"; static int buffer_plot(struct zint_symbol *symbol, const unsigned char *pixelbuf) { /* Place pixelbuffer into symbol */ - unsigned char fgalpha, bgalpha; + unsigned char alpha[2]; unsigned char map[91][3] = { {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, /* 0x00-0F */ {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, /* 0x10-1F */ @@ -78,11 +78,11 @@ static int buffer_plot(struct zint_symbol *symbol, const unsigned char *pixelbuf const size_t bm_bitmap_width = (size_t) symbol->bitmap_width * 3; if (out_colour_get_rgb(symbol->fgcolour, &map[DEFAULT_INK][0], &map[DEFAULT_INK][1], &map[DEFAULT_INK][2], - &fgalpha)) { + &alpha[0])) { plot_alpha = 1; } if (out_colour_get_rgb(symbol->bgcolour, &map[DEFAULT_PAPER][0], &map[DEFAULT_PAPER][1], &map[DEFAULT_PAPER][2], - &bgalpha)) { + &alpha[1])) { plot_alpha = 1; } @@ -119,7 +119,7 @@ static int buffer_plot(struct zint_symbol *symbol, const unsigned char *pixelbuf const int pe = p + symbol->bitmap_width; for (; p < pe; p++, bitmap += 3) { memcpy(bitmap, map[pixelbuf[p]], 3); - symbol->alphamap[p] = pixelbuf[p] == DEFAULT_PAPER ? bgalpha : fgalpha; + symbol->alphamap[p] = alpha[pixelbuf[p] == DEFAULT_PAPER]; } } } @@ -318,7 +318,7 @@ static void draw_letter(unsigned char *pixelbuf, const unsigned char letter, int } /* Following should never happen (ISBN check digit "X" not printed) */ - if ((textflags & UPCEAN_TEXT) && (letter < '0' || letter > '9')) { + if ((textflags & UPCEAN_TEXT) && !z_isdigit(letter)) { return; /* Not reached */ } @@ -743,6 +743,7 @@ static int plot_raster_maxicode(struct zint_symbol *symbol, const int rotate_ang image_width = (int) ceilf(hex_image_width + xoffset_si + roffset_si); image_height = (int) ceilf(hex_image_height + yoffset_si + boffset_si); + assert(image_width && image_height); if (!(pixelbuf = (unsigned char *) malloc((size_t) image_width * image_height))) { strcpy(symbol->errtxt, "655: Insufficient memory for pixel buffer"); @@ -865,7 +866,7 @@ static int plot_raster_dotty(struct zint_symbol *symbol, const int rotate_angle, return error_number; } -/* Convert UTF-8 to ISO 8859-1 for draw_string() human readable text */ +/* Convert UTF-8 to ISO/IEC 8859-1 for `draw_string()` human readable text */ static void to_iso8859_1(const unsigned char source[], unsigned char preprocessed[]) { int j, i, input_length; @@ -915,7 +916,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl float textoffset; int upceanflag = 0; int addon_latch = 0; - unsigned char textpart1[5], textpart2[7], textpart3[7], textpart4[2]; + unsigned char textparts[4][7]; int hide_text; int i, r; int block_width = 0; @@ -967,13 +968,13 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl if (upceanflag) { textflags = UPCEAN_TEXT | (symbol->output_options & SMALL_TEXT); /* Bold not available for UPC/EAN */ text_height = (UPCEAN_FONT_HEIGHT + 1) / 2; - text_gap = 1.0f; + text_gap = symbol->text_gap ? symbol->text_gap : 1.0f; /* Height of guard bar descent (none for EAN-2 and EAN-5) */ guard_descent = upceanflag != 2 && upceanflag != 5 ? symbol->guard_descent : 0.0f; } else { textflags = symbol->output_options & (SMALL_TEXT | BOLD_TEXT); text_height = textflags & SMALL_TEXT ? (SMALL_FONT_HEIGHT + 1) / 2 : (NORMAL_FONT_HEIGHT + 1) / 2; - text_gap = 1.0f; + text_gap = symbol->text_gap ? symbol->text_gap : 1.0f; guard_descent = 0.0f; } @@ -989,6 +990,7 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl image_width = symbol->width * si + xoffset_si + roffset_si; image_height = symbol_height_si + textoffset * si + yoffset_si + boffset_si; + assert(image_width && image_height); if (!(pixelbuf = (unsigned char *) malloc((size_t) image_width * image_height))) { strcpy(symbol->errtxt, "658: Insufficient memory for pixel buffer"); @@ -1145,99 +1147,72 @@ static int plot_raster_default(struct zint_symbol *symbol, const int rotate_angl } if (upceanflag >= 6) { /* UPC-E, EAN-8, UPC-A, EAN-13 */ + const int addon_len = (int) ustrlen(addon); /* Note font sizes halved as in pixels */ /* Halved again to get middle position that draw_string() expects */ const int upcea_width_adj = (UPCEAN_SMALL_FONT_WIDTH + 3) / 4; - const int upcea_height_adj = (UPCEAN_FONT_HEIGHT - UPCEAN_SMALL_FONT_HEIGHT) * si / 2; + const int upcea_height_adj = ((UPCEAN_FONT_HEIGHT - UPCEAN_SMALL_FONT_HEIGHT) * si + 1) / 2; /* Halved again to get middle position that draw_string() expects */ const int ean_width_adj = (UPCEAN_FONT_WIDTH + 3) / 4; - out_upcean_split_text(upceanflag, symbol->text, textpart1, textpart2, textpart3, textpart4); + out_upcean_split_text(upceanflag, symbol->text, textparts); if (upceanflag == 6) { /* UPC-E */ int text_xposn = -(5 + upcea_width_adj) * si + comp_xoffset_si; - draw_string(pixelbuf, textpart1, text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, + draw_string(pixelbuf, textparts[0], text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, image_width, image_height, si); text_xposn = 24 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart2, text_xposn, text_yposn, textflags, image_width, image_height, si); + draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = (51 + 3 + upcea_width_adj) * si + comp_xoffset_si; - draw_string(pixelbuf, textpart3, text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, + draw_string(pixelbuf, textparts[2], text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, image_width, image_height, si); - switch (ustrlen(addon)) { - case 2: - text_xposn = (61 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; - case 5: - text_xposn = (75 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; + if (addon_len) { + text_xposn = ((addon_len == 2 ? 61 : 75) + addon_gap) * si + comp_xoffset_si; + draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); } } else if (upceanflag == 8) { /* EAN-8 */ int text_xposn = 17 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart1, text_xposn, text_yposn, textflags, image_width, image_height, si); + draw_string(pixelbuf, textparts[0], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = 50 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart2, text_xposn, text_yposn, textflags, image_width, image_height, si); - switch (ustrlen(addon)) { - case 2: - text_xposn = (77 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; - case 5: - text_xposn = (91 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; + draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si); + if (addon_len) { + text_xposn = ((addon_len == 2 ? 77 : 91) + addon_gap) * si + comp_xoffset_si; + draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); } } else if (upceanflag == 12) { /* UPC-A */ int text_xposn = (-(5 + upcea_width_adj)) * si + comp_xoffset_si; - draw_string(pixelbuf, textpart1, text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, + draw_string(pixelbuf, textparts[0], text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, image_width, image_height, si); text_xposn = 27 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart2, text_xposn, text_yposn, textflags, image_width, image_height, si); + draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = 67 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart3, text_xposn, text_yposn, textflags, image_width, image_height, si); + draw_string(pixelbuf, textparts[2], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = (95 + 5 + upcea_width_adj) * si + comp_xoffset_si; - draw_string(pixelbuf, textpart4, text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, + draw_string(pixelbuf, textparts[3], text_xposn, text_yposn + upcea_height_adj, textflags | SMALL_TEXT, image_width, image_height, si); - switch (ustrlen(addon)) { - case 2: - text_xposn = (105 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; - case 5: - text_xposn = (119 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; + if (addon_len) { + text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si; + draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); } } else { /* EAN-13 */ int text_xposn = (-(5 + ean_width_adj)) * si + comp_xoffset_si; - draw_string(pixelbuf, textpart1, text_xposn, text_yposn, textflags, image_width, image_height, si); + draw_string(pixelbuf, textparts[0], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = 24 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart2, text_xposn, text_yposn, textflags, image_width, image_height, si); + draw_string(pixelbuf, textparts[1], text_xposn, text_yposn, textflags, image_width, image_height, si); text_xposn = 71 * si + comp_xoffset_si; - draw_string(pixelbuf, textpart3, text_xposn, text_yposn, textflags, image_width, image_height, si); - switch (ustrlen(addon)) { - case 2: - text_xposn = (105 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; - case 5: - text_xposn = (119 + addon_gap) * si + comp_xoffset_si; - draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, - image_width, image_height, si); - break; + draw_string(pixelbuf, textparts[2], text_xposn, text_yposn, textflags, image_width, image_height, si); + if (addon_len) { + text_xposn = ((addon_len == 2 ? 105 : 119) + addon_gap) * si + comp_xoffset_si; + draw_string(pixelbuf, addon, text_xposn, addon_text_yposn, textflags, + image_width, image_height, si); } } } else { diff --git a/backend/svg.c b/backend/svg.c index 8e355bdc..ddb6d2b9 100644 --- a/backend/svg.c +++ b/backend/svg.c @@ -296,8 +296,7 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) { circle = circle->next; } - bold = (symbol->output_options & BOLD_TEXT) - && (!is_extendable(symbol->symbology) || (symbol->output_options & SMALL_TEXT)); + bold = (symbol->output_options & BOLD_TEXT) && !is_extendable(symbol->symbology); string = symbol->vector->strings; while (string) { const char *const halign = string->halign == 2 ? "end" : string->halign == 1 ? "start" : "middle"; diff --git a/backend/tests/data/emf/code128_egrave_bold.emf b/backend/tests/data/emf/code128_egrave_bold.emf index b6eb375984d8eeeae9e61151da570a0bd8909afa..95270b3bd0944b205bcfdda584209d1d8b8b1426 100644 GIT binary patch delta 13 UcmaFB`G9l792Ul+$#Yqp0Vk~m4FCWD delta 13 UcmaFB`G9l792Umn$#Yqp0VlEr4gdfE diff --git a/backend/tests/data/emf/code128_egrave_bold_100dpi.emf b/backend/tests/data/emf/code128_egrave_bold_100dpi.emf index c52622dba179d537c1e47cbf779c6dd4367578fa..f1cce5cbc88118817210d1f41125f00d55132f9a 100644 GIT binary patch delta 13 UcmaFB`G9l792Um>$#Yqp0VkdX3IG5A delta 13 UcmaFB`G9l792Ulc$#Yqp0Vksc3jhEB diff --git a/backend/tests/data/emf/code128_egrave_bold_1200dpi.emf b/backend/tests/data/emf/code128_egrave_bold_1200dpi.emf index ce9a2e4ce9a7c7f81a52577e5c342eae50c9f105..284e2636af582dab98f28aec71a601aa1d2e3af9 100644 GIT binary patch delta 13 UcmaFB`G9l792Q2C$#Yqp0Va0@&j0`b delta 13 UcmaFB`G9l792Q2`$#Yqp0Vd1@-~a#s diff --git a/backend/tests/data/emf/code128_egrave_bold_150dpi.emf b/backend/tests/data/emf/code128_egrave_bold_150dpi.emf index a48f29bb66e12744c07a81248785345cc64212cb..4074338713720ed4e78befd4bc54c883bab41f4f 100644 GIT binary patch delta 13 VcmaFB`G9l792Ul9ljpKH0{|$o1wjA+ delta 13 VcmaFB`G9l792UkEljpKH0{|$y1w#M; diff --git a/backend/tests/data/emf/code128_egrave_bold_300dpi.emf b/backend/tests/data/emf/code128_egrave_bold_300dpi.emf index 52e1579eed552b023ef390837818b2ec2102824a..3b265579b234ee0af0fa70d3ba046410e20f0fd9 100644 GIT binary patch delta 13 UcmaFB`G9l792Q33$#Yqp0VebW=l}o! delta 13 UcmaFB`G9l792UmF$#Yqp0VfCq>;M1& diff --git a/backend/tests/data/emf/code128_egrave_bold_400dpi.emf b/backend/tests/data/emf/code128_egrave_bold_400dpi.emf index cf242c45114494a3dec47fc532d3d00ca6fea47a..6471bf4aa6de9da6a655e4de7a11270d67ab5dfd 100644 GIT binary patch delta 13 VcmaFB`G9l792UksljpKH0{|%>1y=w7 delta 13 VcmaFB`G9l792UldljpKH0{|&F1zZ3C diff --git a/backend/tests/data/emf/code39_rotate_180.emf b/backend/tests/data/emf/code39_rotate_180.emf index 8cf1dbb664902bbd5f3f004374dcd8bd65c3c02c..edb7a760f67cdaa4e97b5922ca6f7d921ae100af 100644 GIT binary patch delta 13 Ucmeys@quH54hv(^WL*|#03=5QO8@`> delta 13 Ucmeys@quH54hv)PWL*|#03=KVOaK4? diff --git a/backend/tests/data/emf/code39_rotate_270.emf b/backend/tests/data/emf/code39_rotate_270.emf index 1600f02ff8ed8bc5825398a1e43657a490a84369..805090610a6fffec329d11d29d5feab1fec213b7 100644 GIT binary patch delta 13 Ucmeys@quH54hv(^WL*|#03=5QO8@`> delta 13 Ucmeys@quH54hv)PWL*|#03=KVOaK4? diff --git a/backend/tests/data/emf/code39_rotate_90.emf b/backend/tests/data/emf/code39_rotate_90.emf index c4edf19905507f940abb74a8780e2de1b1ab7803..415677512ab315f8ccdeea70f63bb42a3c26f239 100644 GIT binary patch delta 13 Ucmeys@quH54hv(^WL*|#03=5QO8@`> delta 13 Ucmeys@quH54hv)PWL*|#03=KVOaK4? diff --git a/backend/tests/data/emf/code39_rotate_90_300dpi.emf b/backend/tests/data/emf/code39_rotate_90_300dpi.emf index 2aaf81397678769ef5f43ad49d48a5565683a06d..e526ed04896ece60cadbbb311376a1e6ed004ce0 100644 GIT binary patch delta 13 Ucmeys@quH54hy62WL*|#03(hBCIA2c delta 13 Ucmeys@quH54hv)8WL*|#03)IVDgXcg diff --git a/backend/tests/data/emf/ean13_5addon_#185.emf b/backend/tests/data/emf/ean13_5addon_#185.emf index 74433a1919fc576b379ec793b3feaea2383409a3..8b88ca1f6a3d3d97a20c827f3f07dd55b9094beb 100644 GIT binary patch delta 263 zcmcb@cZF|*3yY)x0|UboAkG6~Z6KBa;%7iCFgcb*94z|@$U~O>2A1uG%Kkx<{Rfua z3zg+!MAgd!N%hHh*eU?WlOUD= delta 263 zcmcb@cZF|*3yY*M0|UboAkG6~Z6KBa;%7iCJUNy{94z|@$U~O>2A1uG%Kkx<{Rfua z3zg+!MAgd!2A1uG%Kkx<{Rfua z3zg+!MAgd!NzKXk*vbIMp&*z5 delta 263 zcmcb@cZF|*3yY*M0|UboAkG6~Z6KBa;%7iCJUNy{94z|@$U~O>2A1uG%Kkx<{Rfua z3zg+!MAgd!=sm17d;6ccHRBfIMW`Utn2YR)}5( kMpRigAYWjzE$e#5o0BK9s!tYSb71tEyp~OUat+%F00=S_S^xk5 delta 123 zcmX@YcZ6@l8Wu+3$!l4}C50In7+wK!3J_}pu>=sm17hLHccHRBfIMW`Utn2YR)}5( kMpRigAYXX0E$e#5TazcUs!tYSb71tCyp~OUat+%F01iSGZU6uP diff --git a/backend/tests/data/emf/upce_2addon.emf b/backend/tests/data/emf/upce_2addon.emf index 050699127ae8cc3f0092395a49b172628362765a..4a12e18e090732b4d4b34c3953705db5766ce26f 100644 GIT binary patch delta 119 zcmdnOy@h*23A3aC0|P?`5T^jKHV{hyaTgE^OzveC2g^2&XZ+Xrvm^0PZK@> delta 119 zcmdnOy@h*23A3ay0|P?`5T^jKHV{hyaTgE^Pwr(F2g^2PLpL>rvm^5auZVk diff --git a/backend/tests/data/emf/upce_2addon_150dpi.emf b/backend/tests/data/emf/upce_2addon_150dpi.emf index 06382bc4651519860d7de79f62c8ef6f1e4c7690..bee31869d84463cbfb24002f9991af450d32f14e 100644 GIT binary patch delta 115 zcmdnOy@h*23A3aC0|P?~5GMk$HV{hyaT^c|OzveC2g^Vd(5itM& delta 115 zcmdnOy@h*23A3aS0|P?~5GMk$HV{hyaT^c|P3~nD2g^_3=>VnF5j_9^ diff --git a/backend/tests/data/emf/upce_2addon_small_bold.emf b/backend/tests/data/emf/upce_2addon_small_bold.emf index b25e5ef644753ed762b27530f03a24e7b25c713e..3a9a1d06beb09ef12d8d0497be0b91da6ce14536 100644 GIT binary patch delta 197 zcmdnOy@h*%h+qK&0^H_iVDOlzsxDgy6q5sDVT2r*HKUAy;p)W9a;6E4lf4+dChIWD zK$vBWg_{pDZf2C^0jlc&;uIj(24V>y?gC<-$-T_tVA*Lv9;g2|C1BaN d%;JnZlUZ5TGuBRyWKo}dhsA->d9p0)bO7!EAXfkY delta 197 zcmdnOy@h*%h+sYg0^H_iU@)JksxDgq6q5sDA%q;5HKUAy!C+!$Iny4d$zF_JlXVzn zAj~qxg3SjRH#17|0@ZZ@aS9M?1F-}UcL6c)14l03T=seE14l03U4xegFUf diff --git a/backend/tests/data/eps/code128_egrave_bold.eps b/backend/tests/data/eps/code128_egrave_bold.eps index 07547cc0..27ebb1b8 100644 --- a/backend/tests/data/eps/code128_egrave_bold.eps +++ b/backend/tests/data/eps/code128_egrave_bold.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 224 119 @@ -84,7 +84,7 @@ end matrix currentmatrix /Helvetica-ISOLatin1 findfont 14.00 scalefont setfont - 0 0 moveto 112.00 3.50 translate 0.00 rotate 0 0 moveto + 0 0 moveto 112.00 4.90 translate 0.00 rotate 0 0 moveto (gjpqy) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps b/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps index d4075600..281cc11c 100644 --- a/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps +++ b/backend/tests/data/eps/code128_egrave_bold_rotate_90.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 119 224 @@ -84,7 +84,7 @@ end matrix currentmatrix /Helvetica-ISOLatin1 findfont 14.00 scalefont setfont - 0 0 moveto 3.50 112.00 translate 0.00 rotate 0 0 moveto + 0 0 moveto 4.90 112.00 translate 0.00 rotate 0 0 moveto (gjpqy) stringwidth gsave 270 rotate diff --git a/backend/tests/data/eps/code128_escape_latin1.eps b/backend/tests/data/eps/code128_escape_latin1.eps index 3e440eb8..5bd695d1 100644 --- a/backend/tests/data/eps/code128_escape_latin1.eps +++ b/backend/tests/data/eps/code128_escape_latin1.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 246 119 @@ -90,7 +90,7 @@ end matrix currentmatrix /Helvetica-ISOLatin1 findfont 14.00 scalefont setfont - 0 0 moveto 123.00 3.50 translate 0.00 rotate 0 0 moveto + 0 0 moveto 123.00 4.90 translate 0.00 rotate 0 0 moveto (A\\B\)\(D) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/code39_fg_bg.eps b/backend/tests/data/eps/code39_fg_bg.eps index 62f5cdff..f5a6785a 100644 --- a/backend/tests/data/eps/code39_fg_bg.eps +++ b/backend/tests/data/eps/code39_fg_bg.eps @@ -65,7 +65,7 @@ TE matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 64.00 3.50 translate 0.00 rotate 0 0 moveto + 0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto (*123*) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps b/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps index d09689d4..c50d4c69 100644 --- a/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps +++ b/backend/tests/data/eps/code39_fgalpha_bg_cmyk.eps @@ -65,7 +65,7 @@ TE matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 64.00 3.50 translate 0.00 rotate 0 0 moveto + 0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto (*123*) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/code39_nobg_cmyk.eps b/backend/tests/data/eps/code39_nobg_cmyk.eps index af40aa6e..527d1203 100644 --- a/backend/tests/data/eps/code39_nobg_cmyk.eps +++ b/backend/tests/data/eps/code39_nobg_cmyk.eps @@ -62,7 +62,7 @@ TE matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 64.00 3.50 translate 0.00 rotate 0 0 moveto + 0 0 moveto 64.00 4.90 translate 0.00 rotate 0 0 moveto (*123*) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps b/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps index 906607cf..f470735d 100644 --- a/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps +++ b/backend/tests/data/eps/dbar_ltd_24724_fig7_bold.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 158 119 @@ -61,7 +61,7 @@ TE matrix currentmatrix /Helvetica-Bold findfont 14.00 scalefont setfont - 0 0 moveto 79.00 3.50 translate 0.00 rotate 0 0 moveto + 0 0 moveto 79.00 4.90 translate 0.00 rotate 0 0 moveto (\(01\)15012345678907) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps b/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps index 895af35d..1ee2cf51 100644 --- a/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps +++ b/backend/tests/data/eps/ean13_2addon_ggs_5.2.2.5.1-2.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 276 117 @@ -9,87 +9,87 @@ /TE { pop pop } bind def newpath 1.00 1.00 1.00 setrgbcolor -116.40 0.00 TB 0.00 276.00 TR +116.90 0.00 TB 0.00 276.00 TR TE 0.00 0.00 0.00 setrgbcolor -110.00 6.40 TB 22.00 2.00 TR +110.00 6.90 TB 22.00 2.00 TR TE -110.00 6.40 TB 26.00 2.00 TR +110.00 6.90 TB 26.00 2.00 TR TE -100.00 16.40 TB 30.00 6.00 TR +100.00 16.90 TB 30.00 6.00 TR TE -100.00 16.40 TB 38.00 4.00 TR +100.00 16.90 TB 38.00 4.00 TR TE -100.00 16.40 TB 46.00 2.00 TR +100.00 16.90 TB 46.00 2.00 TR TE -100.00 16.40 TB 54.00 2.00 TR +100.00 16.90 TB 54.00 2.00 TR TE -100.00 16.40 TB 58.00 4.00 TR +100.00 16.90 TB 58.00 4.00 TR TE -100.00 16.40 TB 66.00 4.00 TR +100.00 16.90 TB 66.00 4.00 TR TE -100.00 16.40 TB 72.00 8.00 TR +100.00 16.90 TB 72.00 8.00 TR TE -100.00 16.40 TB 82.00 2.00 TR +100.00 16.90 TB 82.00 2.00 TR TE -100.00 16.40 TB 90.00 2.00 TR +100.00 16.90 TB 90.00 2.00 TR TE -100.00 16.40 TB 96.00 2.00 TR +100.00 16.90 TB 96.00 2.00 TR TE -100.00 16.40 TB 100.00 2.00 TR +100.00 16.90 TB 100.00 2.00 TR TE -100.00 16.40 TB 108.00 4.00 TR +100.00 16.90 TB 108.00 4.00 TR TE -110.00 6.40 TB 114.00 2.00 TR +110.00 6.90 TB 114.00 2.00 TR TE -110.00 6.40 TB 118.00 2.00 TR +110.00 6.90 TB 118.00 2.00 TR TE -100.00 16.40 TB 122.00 2.00 TR +100.00 16.90 TB 122.00 2.00 TR TE -100.00 16.40 TB 128.00 6.00 TR +100.00 16.90 TB 128.00 6.00 TR TE -100.00 16.40 TB 136.00 4.00 TR +100.00 16.90 TB 136.00 4.00 TR TE -100.00 16.40 TB 142.00 4.00 TR +100.00 16.90 TB 142.00 4.00 TR TE -100.00 16.40 TB 150.00 2.00 TR +100.00 16.90 TB 150.00 2.00 TR TE -100.00 16.40 TB 154.00 6.00 TR +100.00 16.90 TB 154.00 6.00 TR TE -100.00 16.40 TB 164.00 6.00 TR +100.00 16.90 TB 164.00 6.00 TR TE -100.00 16.40 TB 174.00 2.00 TR +100.00 16.90 TB 174.00 2.00 TR TE -100.00 16.40 TB 178.00 4.00 TR +100.00 16.90 TB 178.00 4.00 TR TE -100.00 16.40 TB 186.00 4.00 TR +100.00 16.90 TB 186.00 4.00 TR TE -100.00 16.40 TB 192.00 2.00 TR +100.00 16.90 TB 192.00 2.00 TR TE -100.00 16.40 TB 200.00 2.00 TR +100.00 16.90 TB 200.00 2.00 TR TE -110.00 6.40 TB 206.00 2.00 TR +110.00 6.90 TB 206.00 2.00 TR TE -110.00 6.40 TB 210.00 2.00 TR +110.00 6.90 TB 210.00 2.00 TR TE -91.00 6.40 TB 226.00 2.00 TR +93.10 6.90 TB 226.00 2.00 TR TE -91.00 6.40 TB 230.00 4.00 TR +93.10 6.90 TB 230.00 4.00 TR TE -91.00 6.40 TB 238.00 4.00 TR +93.10 6.90 TB 238.00 4.00 TR TE -91.00 6.40 TB 246.00 2.00 TR +93.10 6.90 TB 246.00 2.00 TR TE -91.00 6.40 TB 250.00 2.00 TR +93.10 6.90 TB 250.00 2.00 TR TE -91.00 6.40 TB 256.00 2.00 TR +93.10 6.90 TB 256.00 2.00 TR TE -91.00 6.40 TB 262.00 4.00 TR +93.10 6.90 TB 262.00 4.00 TR TE matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 12.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 12.20 0.80 translate 0.00 rotate 0 0 moveto (9) stringwidth pop neg 0 rmoveto @@ -98,7 +98,7 @@ setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 70.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 71.00 0.80 translate 0.00 rotate 0 0 moveto (771384) stringwidth pop -2 div 0 rmoveto @@ -107,7 +107,7 @@ setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 164.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 163.00 0.80 translate 0.00 rotate 0 0 moveto (524017) stringwidth pop -2 div 0 rmoveto @@ -116,7 +116,7 @@ setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 246.00 101.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 246.00 101.90 translate 0.00 rotate 0 0 moveto (12) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps b/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps index b2d1be99..2e7fc476 100644 --- a/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps +++ b/backend/tests/data/eps/upca_2addon_ggs_5.2.6.6-5.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 276 117 @@ -9,87 +9,87 @@ /TE { pop pop } bind def newpath 1.00 1.00 1.00 setrgbcolor -116.40 0.00 TB 0.00 276.00 TR +116.90 0.00 TB 0.00 276.00 TR TE 0.00 0.00 0.00 setrgbcolor -110.00 6.40 TB 18.00 2.00 TR +110.00 6.90 TB 18.00 2.00 TR TE -110.00 6.40 TB 22.00 2.00 TR +110.00 6.90 TB 22.00 2.00 TR TE -110.00 6.40 TB 30.00 4.00 TR +110.00 6.90 TB 30.00 4.00 TR TE -110.00 6.40 TB 36.00 2.00 TR +110.00 6.90 TB 36.00 2.00 TR TE -100.00 16.40 TB 42.00 4.00 TR +100.00 16.90 TB 42.00 4.00 TR TE -100.00 16.40 TB 50.00 2.00 TR +100.00 16.90 TB 50.00 2.00 TR TE -100.00 16.40 TB 56.00 2.00 TR +100.00 16.90 TB 56.00 2.00 TR TE -100.00 16.40 TB 62.00 4.00 TR +100.00 16.90 TB 62.00 4.00 TR TE -100.00 16.40 TB 68.00 8.00 TR +100.00 16.90 TB 68.00 8.00 TR TE -100.00 16.40 TB 78.00 2.00 TR +100.00 16.90 TB 78.00 2.00 TR TE -100.00 16.40 TB 82.00 2.00 TR +100.00 16.90 TB 82.00 2.00 TR TE -100.00 16.40 TB 90.00 4.00 TR +100.00 16.90 TB 90.00 4.00 TR TE -100.00 16.40 TB 96.00 4.00 TR +100.00 16.90 TB 96.00 4.00 TR TE -100.00 16.40 TB 106.00 2.00 TR +100.00 16.90 TB 106.00 2.00 TR TE -110.00 6.40 TB 110.00 2.00 TR +110.00 6.90 TB 110.00 2.00 TR TE -110.00 6.40 TB 114.00 2.00 TR +110.00 6.90 TB 114.00 2.00 TR TE -100.00 16.40 TB 118.00 2.00 TR +100.00 16.90 TB 118.00 2.00 TR TE -100.00 16.40 TB 122.00 2.00 TR +100.00 16.90 TB 122.00 2.00 TR TE -100.00 16.40 TB 132.00 2.00 TR +100.00 16.90 TB 132.00 2.00 TR TE -100.00 16.40 TB 140.00 2.00 TR +100.00 16.90 TB 140.00 2.00 TR TE -100.00 16.40 TB 146.00 2.00 TR +100.00 16.90 TB 146.00 2.00 TR TE -100.00 16.40 TB 152.00 2.00 TR +100.00 16.90 TB 152.00 2.00 TR TE -100.00 16.40 TB 160.00 6.00 TR +100.00 16.90 TB 160.00 6.00 TR TE -100.00 16.40 TB 168.00 2.00 TR +100.00 16.90 TB 168.00 2.00 TR TE -100.00 16.40 TB 174.00 6.00 TR +100.00 16.90 TB 174.00 6.00 TR TE -100.00 16.40 TB 184.00 2.00 TR +100.00 16.90 TB 184.00 2.00 TR TE -110.00 6.40 TB 188.00 2.00 TR +110.00 6.90 TB 188.00 2.00 TR TE -110.00 6.40 TB 194.00 6.00 TR +110.00 6.90 TB 194.00 6.00 TR TE -110.00 6.40 TB 202.00 2.00 TR +110.00 6.90 TB 202.00 2.00 TR TE -110.00 6.40 TB 206.00 2.00 TR +110.00 6.90 TB 206.00 2.00 TR TE -81.00 16.40 TB 226.00 2.00 TR +83.10 16.90 TB 226.00 2.00 TR TE -81.00 16.40 TB 230.00 4.00 TR +83.10 16.90 TB 230.00 4.00 TR TE -81.00 16.40 TB 238.00 2.00 TR +83.10 16.90 TB 238.00 2.00 TR TE -81.00 16.40 TB 244.00 4.00 TR +83.10 16.90 TB 244.00 4.00 TR TE -81.00 16.40 TB 250.00 2.00 TR +83.10 16.90 TB 250.00 2.00 TR TE -81.00 16.40 TB 254.00 2.00 TR +83.10 16.90 TB 254.00 2.00 TR TE -81.00 16.40 TB 262.00 4.00 TR +83.10 16.90 TB 262.00 4.00 TR TE matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 8.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 8.70 0.80 translate 0.00 rotate 0 0 moveto (0) stringwidth pop neg 0 rmoveto @@ -98,7 +98,7 @@ setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 72.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 74.00 0.80 translate 0.00 rotate 0 0 moveto (12345) stringwidth pop -2 div 0 rmoveto @@ -107,7 +107,7 @@ setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 152.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 152.00 0.80 translate 0.00 rotate 0 0 moveto (67890) stringwidth pop -2 div 0 rmoveto @@ -116,13 +116,13 @@ setmatrix matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 218.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 217.30 0.80 translate 0.00 rotate 0 0 moveto (5) show setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 246.00 101.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 246.00 101.90 translate 0.00 rotate 0 0 moveto (24) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/upce_5addon.eps b/backend/tests/data/eps/upce_5addon.eps index 79cc76b1..d5723cce 100644 --- a/backend/tests/data/eps/upce_5addon.eps +++ b/backend/tests/data/eps/upce_5addon.eps @@ -1,5 +1,5 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 %%BoundingBox: 0 0 238 117 @@ -9,79 +9,79 @@ /TE { pop pop } bind def newpath 1.00 1.00 1.00 setrgbcolor -116.40 0.00 TB 0.00 238.00 TR +116.90 0.00 TB 0.00 238.00 TR TE 0.00 0.00 0.00 setrgbcolor -110.00 6.40 TB 18.00 2.00 TR +110.00 6.90 TB 18.00 2.00 TR TE -110.00 6.40 TB 22.00 2.00 TR +110.00 6.90 TB 22.00 2.00 TR TE -100.00 16.40 TB 26.00 4.00 TR +100.00 16.90 TB 26.00 4.00 TR TE -100.00 16.40 TB 34.00 4.00 TR +100.00 16.90 TB 34.00 4.00 TR TE -100.00 16.40 TB 42.00 2.00 TR +100.00 16.90 TB 42.00 2.00 TR TE -100.00 16.40 TB 48.00 4.00 TR +100.00 16.90 TB 48.00 4.00 TR TE -100.00 16.40 TB 54.00 8.00 TR +100.00 16.90 TB 54.00 8.00 TR TE -100.00 16.40 TB 64.00 2.00 TR +100.00 16.90 TB 64.00 2.00 TR TE -100.00 16.40 TB 70.00 6.00 TR +100.00 16.90 TB 70.00 6.00 TR TE -100.00 16.40 TB 78.00 2.00 TR +100.00 16.90 TB 78.00 2.00 TR TE -100.00 16.40 TB 82.00 6.00 TR +100.00 16.90 TB 82.00 6.00 TR TE -100.00 16.40 TB 92.00 2.00 TR +100.00 16.90 TB 92.00 2.00 TR TE -100.00 16.40 TB 96.00 2.00 TR +100.00 16.90 TB 96.00 2.00 TR TE -100.00 16.40 TB 100.00 8.00 TR +100.00 16.90 TB 100.00 8.00 TR TE -110.00 6.40 TB 110.00 2.00 TR +110.00 6.90 TB 110.00 2.00 TR TE -110.00 6.40 TB 114.00 2.00 TR +110.00 6.90 TB 114.00 2.00 TR TE -110.00 6.40 TB 118.00 2.00 TR +110.00 6.90 TB 118.00 2.00 TR TE -81.00 16.40 TB 134.00 2.00 TR +83.10 16.90 TB 134.00 2.00 TR TE -81.00 16.40 TB 138.00 4.00 TR +83.10 16.90 TB 138.00 4.00 TR TE -81.00 16.40 TB 144.00 4.00 TR +83.10 16.90 TB 144.00 4.00 TR TE -81.00 16.40 TB 152.00 4.00 TR +83.10 16.90 TB 152.00 4.00 TR TE -81.00 16.40 TB 158.00 2.00 TR +83.10 16.90 TB 158.00 2.00 TR TE -81.00 16.40 TB 164.00 2.00 TR +83.10 16.90 TB 164.00 2.00 TR TE -81.00 16.40 TB 170.00 4.00 TR +83.10 16.90 TB 170.00 4.00 TR TE -81.00 16.40 TB 176.00 2.00 TR +83.10 16.90 TB 176.00 2.00 TR TE -81.00 16.40 TB 180.00 2.00 TR +83.10 16.90 TB 180.00 2.00 TR TE -81.00 16.40 TB 190.00 2.00 TR +83.10 16.90 TB 190.00 2.00 TR TE -81.00 16.40 TB 194.00 2.00 TR +83.10 16.90 TB 194.00 2.00 TR TE -81.00 16.40 TB 198.00 2.00 TR +83.10 16.90 TB 198.00 2.00 TR TE -81.00 16.40 TB 206.00 4.00 TR +83.10 16.90 TB 206.00 4.00 TR TE -81.00 16.40 TB 212.00 2.00 TR +83.10 16.90 TB 212.00 2.00 TR TE -81.00 16.40 TB 216.00 4.00 TR +83.10 16.90 TB 216.00 4.00 TR TE -81.00 16.40 TB 226.00 2.00 TR +83.10 16.90 TB 226.00 2.00 TR TE matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 8.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 8.70 0.80 translate 0.00 rotate 0 0 moveto (0) stringwidth pop neg 0 rmoveto @@ -90,7 +90,7 @@ setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 66.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 67.00 0.80 translate 0.00 rotate 0 0 moveto (123456) stringwidth pop -2 div 0 rmoveto @@ -99,13 +99,13 @@ setmatrix matrix currentmatrix /Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 126.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 125.30 0.80 translate 0.00 rotate 0 0 moveto (5) show setmatrix matrix currentmatrix /Helvetica findfont 20.00 scalefont setfont - 0 0 moveto 182.00 101.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 182.00 101.90 translate 0.00 rotate 0 0 moveto (12345) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/eps/upce_5addon_small_bold.eps b/backend/tests/data/eps/upce_5addon_small_bold.eps index 5cde3c39..7a191a58 100644 --- a/backend/tests/data/eps/upce_5addon_small_bold.eps +++ b/backend/tests/data/eps/upce_5addon_small_bold.eps @@ -1,111 +1,111 @@ %!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Zint 2.10.0.9 +%%Creator: Zint 2.12.0.9 %%Title: Zint Generated Symbol %%Pages: 0 -%%BoundingBox: 0 0 238 112 +%%BoundingBox: 0 0 238 113 %%EndComments /TB { 2 copy } bind def /TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def /TE { pop pop } bind def newpath 1.00 1.00 1.00 setrgbcolor -111.90 0.00 TB 0.00 238.00 TR +112.28 0.00 TB 0.00 238.00 TR TE 0.00 0.00 0.00 setrgbcolor -110.00 1.90 TB 18.00 2.00 TR +110.00 2.28 TB 18.00 2.00 TR TE -110.00 1.90 TB 22.00 2.00 TR +110.00 2.28 TB 22.00 2.00 TR TE -100.00 11.90 TB 26.00 4.00 TR +100.00 12.28 TB 26.00 4.00 TR TE -100.00 11.90 TB 34.00 4.00 TR +100.00 12.28 TB 34.00 4.00 TR TE -100.00 11.90 TB 42.00 2.00 TR +100.00 12.28 TB 42.00 2.00 TR TE -100.00 11.90 TB 48.00 4.00 TR +100.00 12.28 TB 48.00 4.00 TR TE -100.00 11.90 TB 54.00 8.00 TR +100.00 12.28 TB 54.00 8.00 TR TE -100.00 11.90 TB 64.00 2.00 TR +100.00 12.28 TB 64.00 2.00 TR TE -100.00 11.90 TB 70.00 6.00 TR +100.00 12.28 TB 70.00 6.00 TR TE -100.00 11.90 TB 78.00 2.00 TR +100.00 12.28 TB 78.00 2.00 TR TE -100.00 11.90 TB 82.00 6.00 TR +100.00 12.28 TB 82.00 6.00 TR TE -100.00 11.90 TB 92.00 2.00 TR +100.00 12.28 TB 92.00 2.00 TR TE -100.00 11.90 TB 96.00 2.00 TR +100.00 12.28 TB 96.00 2.00 TR TE -100.00 11.90 TB 100.00 8.00 TR +100.00 12.28 TB 100.00 8.00 TR TE -110.00 1.90 TB 110.00 2.00 TR +110.00 2.28 TB 110.00 2.00 TR TE -110.00 1.90 TB 114.00 2.00 TR +110.00 2.28 TB 114.00 2.00 TR TE -110.00 1.90 TB 118.00 2.00 TR +110.00 2.28 TB 118.00 2.00 TR TE -87.00 11.90 TB 134.00 2.00 TR +87.72 12.28 TB 134.00 2.00 TR TE -87.00 11.90 TB 138.00 4.00 TR +87.72 12.28 TB 138.00 4.00 TR TE -87.00 11.90 TB 144.00 4.00 TR +87.72 12.28 TB 144.00 4.00 TR TE -87.00 11.90 TB 152.00 4.00 TR +87.72 12.28 TB 152.00 4.00 TR TE -87.00 11.90 TB 158.00 2.00 TR +87.72 12.28 TB 158.00 2.00 TR TE -87.00 11.90 TB 164.00 2.00 TR +87.72 12.28 TB 164.00 2.00 TR TE -87.00 11.90 TB 170.00 4.00 TR +87.72 12.28 TB 170.00 4.00 TR TE -87.00 11.90 TB 176.00 2.00 TR +87.72 12.28 TB 176.00 2.00 TR TE -87.00 11.90 TB 180.00 2.00 TR +87.72 12.28 TB 180.00 2.00 TR TE -87.00 11.90 TB 190.00 2.00 TR +87.72 12.28 TB 190.00 2.00 TR TE -87.00 11.90 TB 194.00 2.00 TR +87.72 12.28 TB 194.00 2.00 TR TE -87.00 11.90 TB 198.00 2.00 TR +87.72 12.28 TB 198.00 2.00 TR TE -87.00 11.90 TB 206.00 4.00 TR +87.72 12.28 TB 206.00 4.00 TR TE -87.00 11.90 TB 212.00 2.00 TR +87.72 12.28 TB 212.00 2.00 TR TE -87.00 11.90 TB 216.00 4.00 TR +87.72 12.28 TB 216.00 4.00 TR TE -87.00 11.90 TB 226.00 2.00 TR +87.72 12.28 TB 226.00 2.00 TR TE matrix currentmatrix -/Helvetica-Bold findfont +/Helvetica findfont 12.00 scalefont setfont - 0 0 moveto 8.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 8.70 0.56 translate 0.00 rotate 0 0 moveto (0) stringwidth pop neg 0 rmoveto (0) show setmatrix matrix currentmatrix -/Helvetica-Bold findfont +/Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 66.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 67.00 0.56 translate 0.00 rotate 0 0 moveto (123456) stringwidth pop -2 div 0 rmoveto (123456) show setmatrix matrix currentmatrix -/Helvetica-Bold findfont +/Helvetica findfont 12.00 scalefont setfont - 0 0 moveto 126.00 0.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 125.30 0.56 translate 0.00 rotate 0 0 moveto (5) show setmatrix matrix currentmatrix -/Helvetica-Bold findfont +/Helvetica findfont 14.00 scalefont setfont - 0 0 moveto 182.00 101.40 translate 0.00 rotate 0 0 moveto + 0 0 moveto 182.00 101.78 translate 0.00 rotate 0 0 moveto (12345) stringwidth pop -2 div 0 rmoveto diff --git a/backend/tests/data/print/emf/code128_aim.emf b/backend/tests/data/print/emf/code128_aim.emf index 512d6db26a431b1e364dab81c78b8c410251b75c..b0f33736cb8b2d9c84ce1bd1d8e4ef5751298ffb 100644 GIT binary patch delta 13 UcmdnPzK4B74KriW - AIM diff --git a/backend/tests/data/svg/channel_cmyk_nobg.svg b/backend/tests/data/svg/channel_cmyk_nobg.svg index 10e5561f..338c17f6 100644 --- a/backend/tests/data/svg/channel_cmyk_nobg.svg +++ b/backend/tests/data/svg/channel_cmyk_nobg.svg @@ -16,7 +16,7 @@ - 123 diff --git a/backend/tests/data/svg/code128_amperands.svg b/backend/tests/data/svg/code128_amperands.svg index 28c0ee97..1d9d15eb 100644 --- a/backend/tests/data/svg/code128_amperands.svg +++ b/backend/tests/data/svg/code128_amperands.svg @@ -33,7 +33,7 @@ - <>"&' diff --git a/backend/tests/data/svg/code128_egrave_bold.svg b/backend/tests/data/svg/code128_egrave_bold.svg index 0981b05f..ab2eb658 100644 --- a/backend/tests/data/svg/code128_egrave_bold.svg +++ b/backend/tests/data/svg/code128_egrave_bold.svg @@ -39,7 +39,7 @@ - Égjpqy diff --git a/backend/tests/data/svg/code128_egrave_bold_box3.svg b/backend/tests/data/svg/code128_egrave_bold_box3.svg index f592b81e..1da0b5d2 100644 --- a/backend/tests/data/svg/code128_egrave_bold_box3.svg +++ b/backend/tests/data/svg/code128_egrave_bold_box3.svg @@ -43,7 +43,7 @@ - Égjpqy diff --git a/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg b/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg index 45a78718..24ac99a1 100644 --- a/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg +++ b/backend/tests/data/svg/code128_egrave_bold_hvwsp2_box2.svg @@ -43,7 +43,7 @@ - Égjpqy diff --git a/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg b/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg index e95f3ec6..f14c85f2 100644 --- a/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg +++ b/backend/tests/data/svg/code128_egrave_bold_hvwsp3.svg @@ -39,7 +39,7 @@ - Égjpqy diff --git a/backend/tests/data/svg/code39_small.svg b/backend/tests/data/svg/code39_small.svg index c93b6d41..d0660a8c 100644 --- a/backend/tests/data/svg/code39_small.svg +++ b/backend/tests/data/svg/code39_small.svg @@ -33,7 +33,7 @@ - *123* diff --git a/backend/tests/data/svg/dbar_ltd.svg b/backend/tests/data/svg/dbar_ltd.svg index 608c21d3..77c2ca6d 100644 --- a/backend/tests/data/svg/dbar_ltd.svg +++ b/backend/tests/data/svg/dbar_ltd.svg @@ -31,7 +31,7 @@ - (01)00123456789098 diff --git a/backend/tests/data/svg/dpd_compliant.svg b/backend/tests/data/svg/dpd_compliant.svg index 02207b63..3274c22f 100644 --- a/backend/tests/data/svg/dpd_compliant.svg +++ b/backend/tests/data/svg/dpd_compliant.svg @@ -67,7 +67,7 @@ - 0081 827 0998 0000 0200 28 101 276 B diff --git a/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg b/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg index f735e419..de87e6ba 100644 --- a/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg +++ b/backend/tests/data/svg/ean13_2addon_ggs_5.2.2.5.1-2.svg @@ -38,22 +38,22 @@ - - - - - - - - + + + + + + + 9 - 771384 - 524017 diff --git a/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg b/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg index 9186e92c..25c5acec 100644 --- a/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg +++ b/backend/tests/data/svg/ean13_5addon_ggs_5.2.2.5.2-2.svg @@ -38,31 +38,31 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 9 - 780877 - 799306 diff --git a/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg b/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg index 866b9d09..5d02b25d 100644 --- a/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg +++ b/backend/tests/data/svg/ean13_cc_2addon_cca_4x4.svg @@ -120,22 +120,22 @@ - - - - - - - - + + + + + + + 1 - 234567 - 890128 diff --git a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg index f57b25b4..468a3a3e 100644 --- a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg +++ b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4.svg @@ -118,31 +118,31 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 1 - 234567 - 890128 diff --git a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg index c56eeb39..2aa1e49d 100644 --- a/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg +++ b/backend/tests/data/svg/ean13_cc_5addon_ccb_3x4_notext.svg @@ -118,21 +118,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/ean2.svg b/backend/tests/data/svg/ean2.svg index ac209e03..e4dc03a4 100644 --- a/backend/tests/data/svg/ean2.svg +++ b/backend/tests/data/svg/ean2.svg @@ -15,7 +15,7 @@ - 12 diff --git a/backend/tests/data/svg/ean5.svg b/backend/tests/data/svg/ean5.svg index 4ced2d75..2c01ac0a 100644 --- a/backend/tests/data/svg/ean5.svg +++ b/backend/tests/data/svg/ean5.svg @@ -24,7 +24,7 @@ - 12345 diff --git a/backend/tests/data/svg/ean8_2addon.svg b/backend/tests/data/svg/ean8_2addon.svg index 1639f733..abdb9f42 100644 --- a/backend/tests/data/svg/ean8_2addon.svg +++ b/backend/tests/data/svg/ean8_2addon.svg @@ -30,18 +30,18 @@ - - - - - - - - + + + + + + + 1234 - 5670 diff --git a/backend/tests/data/svg/ean8_5addon.svg b/backend/tests/data/svg/ean8_5addon.svg index 01e82906..00cda891 100644 --- a/backend/tests/data/svg/ean8_5addon.svg +++ b/backend/tests/data/svg/ean8_5addon.svg @@ -30,27 +30,27 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 1234 - 5670 diff --git a/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg b/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg index f6c85896..e1fd6118 100644 --- a/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg +++ b/backend/tests/data/svg/ean8_cc_2addon_cca_4x3.svg @@ -93,18 +93,18 @@ - - - - - - - - + + + + + + + 9876 - 5430 diff --git a/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg b/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg index 2807b850..b557acc1 100644 --- a/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg +++ b/backend/tests/data/svg/ean8_cc_5addon_ccb_8x3.svg @@ -150,27 +150,27 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 9876 - 5430 diff --git a/backend/tests/data/svg/gs1_128_cc_fig12.svg b/backend/tests/data/svg/gs1_128_cc_fig12.svg index 9ade7617..3fb65814 100644 --- a/backend/tests/data/svg/gs1_128_cc_fig12.svg +++ b/backend/tests/data/svg/gs1_128_cc_fig12.svg @@ -244,7 +244,7 @@ - (00)030123456789012340 diff --git a/backend/tests/data/svg/telepen_height0.4_rotate_180.svg b/backend/tests/data/svg/telepen_height0.4_rotate_180.svg index ad2687ea..04849e66 100644 --- a/backend/tests/data/svg/telepen_height0.4_rotate_180.svg +++ b/backend/tests/data/svg/telepen_height0.4_rotate_180.svg @@ -30,8 +30,8 @@ - + A diff --git a/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg b/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg index cd62aa7f..80ce272a 100644 --- a/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg +++ b/backend/tests/data/svg/upca_2addon_ggs_5.2.6.6-5.svg @@ -38,26 +38,26 @@ - - - - - - - - + + + + + + + 0 - 12345 - 67890 - 5 diff --git a/backend/tests/data/svg/upca_5addon.svg b/backend/tests/data/svg/upca_5addon.svg index e0d489f7..b1a4caf8 100644 --- a/backend/tests/data/svg/upca_5addon.svg +++ b/backend/tests/data/svg/upca_5addon.svg @@ -38,35 +38,35 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 6 - 14141 - 23441 - 7 diff --git a/backend/tests/data/svg/upca_5addon_bind3.svg b/backend/tests/data/svg/upca_5addon_bind3.svg index ade6f752..868a20ef 100644 --- a/backend/tests/data/svg/upca_5addon_bind3.svg +++ b/backend/tests/data/svg/upca_5addon_bind3.svg @@ -38,37 +38,37 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - 6 - 14141 - 23441 - 7 diff --git a/backend/tests/data/svg/upca_5addon_small_bold.svg b/backend/tests/data/svg/upca_5addon_small_bold.svg index 35d676f4..d401db48 100644 --- a/backend/tests/data/svg/upca_5addon_small_bold.svg +++ b/backend/tests/data/svg/upca_5addon_small_bold.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -38,40 +38,40 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + 6 - + 14141 - + 23441 - + 7 + font-family="Helvetica, sans-serif" font-size="14.0" > 12345 diff --git a/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg b/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg index d8b7d2e6..1844c6df 100644 --- a/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg +++ b/backend/tests/data/svg/upca_cc_2addon_cca_3x4.svg @@ -103,26 +103,26 @@ - - - - - - - - + + + + + + + 1 - 23456 - 78901 - 2 diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg index 92a8abca..6b7fc944 100644 --- a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4.svg @@ -118,35 +118,35 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 1 - 23456 - 78901 - 2 diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg index 7d39e0ec..064f1f72 100644 --- a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_bind3.svg @@ -118,37 +118,37 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - 1 - 23456 - 78901 - 2 diff --git a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg index 0fc3fda0..622f7acf 100644 --- a/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg +++ b/backend/tests/data/svg/upca_cc_5addon_ccb_4x4_notext.svg @@ -118,21 +118,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/upce_2addon.svg b/backend/tests/data/svg/upce_2addon.svg index d41ddf07..34085aef 100644 --- a/backend/tests/data/svg/upce_2addon.svg +++ b/backend/tests/data/svg/upce_2addon.svg @@ -25,22 +25,22 @@ - - - - - - - - + + + + + + + 1 - 234567 - 0 diff --git a/backend/tests/data/svg/upce_5addon.svg b/backend/tests/data/svg/upce_5addon.svg index 545e6b0f..0d70f408 100644 --- a/backend/tests/data/svg/upce_5addon.svg +++ b/backend/tests/data/svg/upce_5addon.svg @@ -25,31 +25,31 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 1 - 234567 - 0 diff --git a/backend/tests/data/svg/upce_5addon_notext.svg b/backend/tests/data/svg/upce_5addon_notext.svg index 7c7f359d..c6fe09fc 100644 --- a/backend/tests/data/svg/upce_5addon_notext.svg +++ b/backend/tests/data/svg/upce_5addon_notext.svg @@ -25,21 +25,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/backend/tests/data/svg/upce_5addon_small.svg b/backend/tests/data/svg/upce_5addon_small.svg index e5469fa0..270facc7 100644 --- a/backend/tests/data/svg/upce_5addon_small.svg +++ b/backend/tests/data/svg/upce_5addon_small.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -25,31 +25,31 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 1 - 234567 - 0 diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg index 8c8d334e..b60c1d62 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2.svg @@ -80,22 +80,22 @@ - - - - - - - - + + + + + + + 0 - 654321 - 7 diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg index f35125df..dbfd11a4 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_fgbgalpha.svg @@ -80,22 +80,22 @@ - - - - - - - - + + + + + + + 0 - 654321 - 7 diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg index ce003fcb..eba80d57 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_nobg.svg @@ -79,22 +79,22 @@ - - - - - - - - + + + + + + + 0 - 654321 - 7 diff --git a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg index de36a106..41a9fc0a 100644 --- a/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg +++ b/backend/tests/data/svg/upce_cc_2addon_cca_5x2_rotate_270.svg @@ -80,23 +80,23 @@ - - - - - - - - + + + + + + + + 0 - + 654321 - + 7 - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 1 - 876543 - 5 diff --git a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg index 5a16d4cb..639033fc 100644 --- a/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg +++ b/backend/tests/data/svg/upce_cc_5addon_ccb_8x2_notext.svg @@ -106,21 +106,21 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/backend/tests/test_emf.c b/backend/tests/test_emf.c index 72d45fb2..bb815bac 100644 --- a/backend/tests/test_emf.c +++ b/backend/tests/test_emf.c @@ -158,7 +158,8 @@ static void test_print(const testCtx *const p_ctx) { /* Note this will fail (on Ubuntu anyway) if LibreOffice Base/Calc/Impress/Writer running (i.e. anything but LibreOffice Draw) Doesn't seem to be a way to force Draw invocation through the command line */ ret = testUtilVerifyLibreOffice(expected_file, debug); - assert_zero(ret, "i:%d %s libreoffice %s ret %d != 0\n", i, testUtilBarcodeName(data[i].symbology), expected_file, ret); + assert_zero(ret, "i:%d %s libreoffice %s ret %d != 0 - check that LibreOffice is not running!\n", + i, testUtilBarcodeName(data[i].symbology), expected_file, ret); } } else { assert_nonzero(testUtilExists(symbol->outfile), "i:%d testUtilExists(%s) == 0\n", i, symbol->outfile); diff --git a/backend/tests/test_library.c b/backend/tests/test_library.c index f99e1edd..f38df8f9 100644 --- a/backend/tests/test_library.c +++ b/backend/tests/test_library.c @@ -52,6 +52,7 @@ static void test_checks(const testCtx *const p_ctx) { int border_width; float scale; float dot_size; + float text_gap; float guard_descent; int warn_level; int ret; @@ -61,155 +62,157 @@ static void test_checks(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_CODE128, -1, "1234", -1, -1, 3, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 217: Symbology does not support ECI switching", -1 }, - /* 1*/ { BARCODE_CODE128, -1, "1234", -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", -1 }, - /* 2*/ { BARCODE_QRCODE, -1, "1234", -1, -1, 3, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", -1 }, - /* 3*/ { BARCODE_QRCODE, -1, "1234", -1, -1, 999999 + 1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 218: Invalid ECI code 1000000", -1 }, - /* 4*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, 0.009, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 227: Scale out of range (0.01 to 200)", -1 }, - /* 5*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, 200.01, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 227: Scale out of range (0.01 to 200)", -1 }, - /* 6*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, -1, 20.1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 221: Dot size out of range (0.01 to 20)", -1 }, - /* 7*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, 0.01, 0.009, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 221: Dot size out of range (0.01 to 20)", -1 }, - /* 8*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, -0.1, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 765: Height out of range (0 to 2000)", -1 }, - /* 9*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 2000.01, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 765: Height out of range (0 to 2000)", -1 }, - /* 10*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, -1, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 766: Whitespace width out of range (0 to 100)", -1 }, - /* 11*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 101, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 766: Whitespace width out of range (0 to 100)", -1 }, - /* 12*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 767: Whitespace height out of range (0 to 100)", -1 }, - /* 13*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 101, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 767: Whitespace height out of range (0 to 100)", -1 }, - /* 14*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 768: Border width out of range (0 to 100)", -1 }, - /* 15*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 101, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 768: Border width out of range (0 to 100)", -1 }, - /* 16*/ { BARCODE_CODE128, -1, "1234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode", -1 }, - /* 17*/ { BARCODE_EANX, -1, "123456789012", -1, -1, -1, 0, 0, 0, 101, -1, -1, -0.5, -1, ZINT_ERROR_INVALID_OPTION, "Error 769: Guard bar descent out of range (0 to 50)", -1 }, - /* 18*/ { BARCODE_EANX, -1, "123456789012", -1, -1, -1, 0, 0, 0, 101, -1, -1, 50.1, -1, ZINT_ERROR_INVALID_OPTION, "Error 769: Guard bar descent out of range (0 to 50)", -1 }, - /* 19*/ { BARCODE_GS1_128, -1, "[21]12\0004", 8, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 262: NUL characters not permitted in GS1 mode", -1 }, - /* 20*/ { BARCODE_GS1_128, -1, "[21]12é4", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1", -1 }, - /* 21*/ { BARCODE_GS1_128, -1, "[21]12\0074", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 251: Control characters are not supported by GS1", -1 }, - /* 22*/ { BARCODE_GS1_128, -1, "[21]1234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", -1 }, - /* 23*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, - /* 24*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, - /* 25*/ { 0, -1, "1", -1, -1, 1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 217: Symbology does not support ECI switching", BARCODE_CODE128 }, /* Not supporting beats invalid ECI */ - /* 26*/ { 0, -1, "1", -1, -1, 1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, - /* 27*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, 0.009, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 221: Dot size out of range (0.01 to 20)", BARCODE_CODE128 }, - /* 28*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, 0.009, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, - /* 29*/ { 0, -1, "1", -1, -1, 1, 0, 0, 0, 0, -1, 0.009, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 217: Symbology does not support ECI switching", BARCODE_CODE128 }, /* Invalid dot size no longer beats invalid ECI */ - /* 30*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, 0.009, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, - /* 31*/ { 5, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_C25STANDARD }, - /* 32*/ { 5, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_C25STANDARD }, - /* 33*/ { 10, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_EANX }, - /* 34*/ { 10, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, - /* 35*/ { 11, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_EANX }, - /* 36*/ { 11, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, - /* 37*/ { 12, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_EANX }, - /* 38*/ { 12, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, - /* 39*/ { 15, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_EANX }, - /* 40*/ { 15, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, - /* 41*/ { 17, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_UPCA }, - /* 42*/ { 17, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCA }, - /* 43*/ { 19, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_TOO_LONG, "Error 362: Input too short (3 character minimum)", BARCODE_CODABAR }, - /* 44*/ { 19, -1, "A1B", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 207: Codabar 18 not supported", BARCODE_CODABAR }, - /* 45*/ { 19, -1, "A1B", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 207: Codabar 18 not supported", -1 }, - /* 46*/ { 26, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_UPCA }, - /* 47*/ { 26, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCA }, - /* 48*/ { 27, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 208: UPCD1 not supported", 27 }, - /* 49*/ { 33, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI", BARCODE_GS1_128 }, - /* 50*/ { 33, -1, "[10]23", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_GS1_128 }, - /* 51*/ { 33, -1, "[10]23", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_GS1_128 }, - /* 52*/ { 36, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_UPCA }, - /* 53*/ { 36, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCA }, - /* 54*/ { 39, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_UPCE }, - /* 55*/ { 39, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCE }, - /* 56*/ { 41, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_NONCOMPLIANT, "Warning 479: Input length is not standard (5, 9 or 11 characters)", BARCODE_POSTNET }, - /* 57*/ { 41, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_POSTNET }, - /* 58*/ { 41, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, - /* 59*/ { 42, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_POSTNET }, - /* 60*/ { 42, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, - /* 61*/ { 43, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_POSTNET }, - /* 62*/ { 43, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, - /* 63*/ { 44, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_POSTNET }, - /* 64*/ { 44, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, - /* 65*/ { 45, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_POSTNET }, - /* 66*/ { 45, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, - /* 67*/ { 46, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_PLESSEY }, - /* 68*/ { 46, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_PLESSEY }, - /* 69*/ { 48, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_NVE18 }, - /* 70*/ { 48, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_NVE18 }, - /* 71*/ { 59, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_CODE128 }, - /* 72*/ { 59, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_CODE128 }, - /* 73*/ { 61, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_CODE128 }, - /* 74*/ { 61, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_CODE128 }, - /* 75*/ { 62, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_CODE93 }, - /* 76*/ { 62, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_CODE93 }, - /* 77*/ { 64, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_AUSPOST }, - /* 78*/ { 64, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_AUSPOST }, - /* 79*/ { 65, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_AUSPOST }, - /* 80*/ { 65, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_AUSPOST }, - /* 81*/ { 78, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_DBAR_OMN }, - /* 82*/ { 78, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_DBAR_OMN }, - /* 83*/ { 83, -1, "12345678901", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_PLANET }, - /* 84*/ { 83, -1, "12345678901", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_PLANET }, - /* 85*/ { 88, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI", BARCODE_GS1_128 }, - /* 86*/ { 88, -1, "[10]12", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_GS1_128 }, - /* 87*/ { 88, -1, "[10]12", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_GS1_128 }, - /* 88*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 212: Symbology out of range", BARCODE_CODE128 }, - /* 89*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 212: Symbology out of range", -1 }, - /* 90*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 213: Symbology out of range", BARCODE_CODE128 }, - /* 91*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 213: Symbology out of range", -1 }, - /* 92*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 213: Symbology out of range", BARCODE_CODE128 }, - /* 93*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 213: Symbology out of range", -1 }, - /* 94*/ { 100, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_128 }, - /* 95*/ { 100, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_128 }, - /* 96*/ { 101, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_39 }, - /* 97*/ { 101, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_39 }, - /* 98*/ { 103, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_DM }, - /* 99*/ { 103, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_DM }, - /*100*/ { 105, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_QR }, - /*101*/ { 105, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_QR }, - /*102*/ { 107, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_PDF }, - /*103*/ { 107, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_PDF }, - /*104*/ { 109, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_MICPDF }, - /*105*/ { 109, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_MICPDF }, - /*106*/ { 111, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", BARCODE_HIBC_BLOCKF }, - /*107*/ { 111, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_BLOCKF }, - /*108*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 214: Symbology out of range", BARCODE_CODE128 }, - /*109*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 214: Symbology out of range", -1 }, - /*110*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 214: Symbology out of range", BARCODE_CODE128 }, - /*111*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 214: Symbology out of range", -1 }, - /*112*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*113*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*114*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*115*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*116*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*117*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*118*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*119*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*120*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*121*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*122*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*123*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*124*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*125*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*126*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, - /*127*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, - /*128*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 216: Symbology out of range", BARCODE_CODE128 }, - /*129*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 216: Symbology out of range", -1 }, - /*130*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 216: Symbology out of range", BARCODE_CODE128 }, - /*131*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 216: Symbology out of range", -1 }, - /*132*/ { BARCODE_CODE128, -1, "\200", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 245: Invalid UTF-8 in input data", -1 }, - /*133*/ { BARCODE_GS1_128, -1, "[01]12345678901234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, - /*134*/ { BARCODE_GS1_128, -1, "[01]12345678901234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_NONCOMPLIANT, "Error 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, - /*135*/ { BARCODE_QRCODE, -1, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", -1 }, - /*136*/ { BARCODE_QRCODE, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_USES_ECI, "Warning 222: Encoded data includes ECI 13", -1 }, - /*137*/ { BARCODE_QRCODE, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_USES_ECI, "Error 222: Encoded data includes ECI 13", -1 }, - /*138*/ { BARCODE_CODEONE, -1, "[01]12345678901231", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 512: ECI ignored for GS1 mode", -1 }, - /*139*/ { BARCODE_CODEONE, -1, "[01]12345678901231", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 512: ECI ignored for GS1 mode", -1 }, - /*140*/ { BARCODE_CODEONE, -1, "[01]12345678901234", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 512: ECI ignored for GS1 mode", -1 }, /* Warning in encoder overrides library warnings */ - /*141*/ { BARCODE_CODEONE, -1, "[01]12345678901234", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_NONCOMPLIANT, "Error 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, /* But not errors */ - /*142*/ { BARCODE_AZTEC, -1, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, -1, -1, 0, "", -1 }, - /*143*/ { BARCODE_AZTEC, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_USES_ECI, "Warning 222: Encoded data includes ECI 13", -1 }, - /*144*/ { BARCODE_AZTEC, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_USES_ECI, "Error 222: Encoded data includes ECI 13", -1 }, - /*145*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 503: Invalid error correction level - using default instead", -1 }, - /*146*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 503: Invalid error correction level - using default instead", -1 }, - /*147*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, -1, ZINT_WARN_USES_ECI, "Warning 222: Encoded data includes ECI 13", -1 }, /* ECI warning trumps all other warnings */ - /*148*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 503: Invalid error correction level - using default instead", -1 }, /* But not errors */ + /* 0*/ { BARCODE_CODE128, -1, "1234", -1, -1, 3, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 217: Symbology does not support ECI switching", -1 }, + /* 1*/ { BARCODE_CODE128, -1, "1234", -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", -1 }, + /* 2*/ { BARCODE_QRCODE, -1, "1234", -1, -1, 3, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", -1 }, + /* 3*/ { BARCODE_QRCODE, -1, "1234", -1, -1, 999999 + 1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 218: Invalid ECI code 1000000", -1 }, + /* 4*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, 0.009, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 227: Scale out of range (0.01 to 200)", -1 }, + /* 5*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, 200.01, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 227: Scale out of range (0.01 to 200)", -1 }, + /* 6*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, -1, 20.1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 221: Dot size out of range (0.01 to 20)", -1 }, + /* 7*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 0, 0.01, 0.009, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 221: Dot size out of range (0.01 to 20)", -1 }, + /* 8*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, -0.1, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 765: Height out of range (0 to 2000)", -1 }, + /* 9*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 2000.01, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 765: Height out of range (0 to 2000)", -1 }, + /* 10*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, -1, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 766: Whitespace width out of range (0 to 100)", -1 }, + /* 11*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 101, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 766: Whitespace width out of range (0 to 100)", -1 }, + /* 12*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 767: Whitespace height out of range (0 to 100)", -1 }, + /* 13*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 101, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 767: Whitespace height out of range (0 to 100)", -1 }, + /* 14*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 768: Border width out of range (0 to 100)", -1 }, + /* 15*/ { BARCODE_CODE128, -1, "1234", -1, -1, -1, 0, 0, 0, 101, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 768: Border width out of range (0 to 100)", -1 }, + /* 16*/ { BARCODE_CODE128, -1, "1234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 220: Selected symbology does not support GS1 mode", -1 }, + /* 17*/ { BARCODE_EANX, -1, "123456789012", -1, -1, -1, 0, 0, 0, 101, -1, -1, -0.1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 219: Text gap out of range (0 to 5)", -1 }, + /* 18*/ { BARCODE_EANX, -1, "123456789012", -1, -1, -1, 0, 0, 0, 101, -1, -1, 5.1, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 219: Text gap out of range (0 to 5)", -1 }, + /* 19*/ { BARCODE_EANX, -1, "123456789012", -1, -1, -1, 0, 0, 0, 101, -1, -1, 0, -0.5, -1, ZINT_ERROR_INVALID_OPTION, "Error 769: Guard bar descent out of range (0 to 50)", -1 }, + /* 20*/ { BARCODE_EANX, -1, "123456789012", -1, -1, -1, 0, 0, 0, 101, -1, -1, 0, 50.1, -1, ZINT_ERROR_INVALID_OPTION, "Error 769: Guard bar descent out of range (0 to 50)", -1 }, + /* 21*/ { BARCODE_GS1_128, -1, "[21]12\0004", 8, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 262: NUL characters not permitted in GS1 mode", -1 }, + /* 22*/ { BARCODE_GS1_128, -1, "[21]12é4", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 250: Extended ASCII characters are not supported by GS1", -1 }, + /* 23*/ { BARCODE_GS1_128, -1, "[21]12\0074", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 251: Control characters are not supported by GS1", -1 }, + /* 24*/ { BARCODE_GS1_128, -1, "[21]1234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", -1 }, + /* 25*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 206: Symbology out of range", BARCODE_CODE128 }, + /* 26*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /* 27*/ { 0, -1, "1", -1, -1, 1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 217: Symbology does not support ECI switching", BARCODE_CODE128 }, /* Not supporting beats invalid ECI */ + /* 28*/ { 0, -1, "1", -1, -1, 1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /* 29*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, 0.009, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 221: Dot size out of range (0.01 to 20)", BARCODE_CODE128 }, + /* 30*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, 0.009, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /* 31*/ { 0, -1, "1", -1, -1, 1, 0, 0, 0, 0, -1, 0.009, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 217: Symbology does not support ECI switching", BARCODE_CODE128 }, /* Invalid dot size no longer beats invalid ECI */ + /* 32*/ { 0, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, 0.009, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 206: Symbology out of range", -1 }, + /* 33*/ { 5, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_C25STANDARD }, + /* 34*/ { 5, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_C25STANDARD }, + /* 35*/ { 10, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_EANX }, + /* 36*/ { 10, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, + /* 37*/ { 11, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_EANX }, + /* 38*/ { 11, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, + /* 39*/ { 12, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_EANX }, + /* 40*/ { 12, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, + /* 41*/ { 15, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_EANX }, + /* 42*/ { 15, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_EANX }, + /* 43*/ { 17, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_UPCA }, + /* 44*/ { 17, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCA }, + /* 45*/ { 19, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_TOO_LONG, "Error 362: Input too short (3 character minimum)", BARCODE_CODABAR }, + /* 46*/ { 19, -1, "A1B", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 207: Codabar 18 not supported", BARCODE_CODABAR }, + /* 47*/ { 19, -1, "A1B", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 207: Codabar 18 not supported", -1 }, + /* 48*/ { 26, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_UPCA }, + /* 49*/ { 26, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCA }, + /* 50*/ { 27, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_OPTION, "Error 208: UPCD1 not supported", 27 }, + /* 51*/ { 33, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI", BARCODE_GS1_128 }, + /* 52*/ { 33, -1, "[10]23", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_GS1_128 }, + /* 53*/ { 33, -1, "[10]23", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_GS1_128 }, + /* 54*/ { 36, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_UPCA }, + /* 55*/ { 36, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCA }, + /* 56*/ { 39, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_UPCE }, + /* 57*/ { 39, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_UPCE }, + /* 58*/ { 41, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_NONCOMPLIANT, "Warning 479: Input length is not standard (5, 9 or 11 characters)", BARCODE_POSTNET }, + /* 59*/ { 41, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_POSTNET }, + /* 60*/ { 41, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, + /* 61*/ { 42, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_POSTNET }, + /* 62*/ { 42, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, + /* 63*/ { 43, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_POSTNET }, + /* 64*/ { 43, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, + /* 65*/ { 44, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_POSTNET }, + /* 66*/ { 44, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, + /* 67*/ { 45, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_POSTNET }, + /* 68*/ { 45, -1, "12345", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_POSTNET }, + /* 69*/ { 46, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_PLESSEY }, + /* 70*/ { 46, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_PLESSEY }, + /* 71*/ { 48, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_NVE18 }, + /* 72*/ { 48, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_NVE18 }, + /* 73*/ { 59, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_CODE128 }, + /* 74*/ { 59, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_CODE128 }, + /* 75*/ { 61, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_CODE128 }, + /* 76*/ { 61, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_CODE128 }, + /* 77*/ { 62, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_CODE93 }, + /* 78*/ { 62, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_CODE93 }, + /* 79*/ { 64, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_AUSPOST }, + /* 80*/ { 64, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_AUSPOST }, + /* 81*/ { 65, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_AUSPOST }, + /* 82*/ { 65, -1, "12345678", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_AUSPOST }, + /* 83*/ { 78, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_DBAR_OMN }, + /* 84*/ { 78, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_DBAR_OMN }, + /* 85*/ { 83, -1, "12345678901", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_PLANET }, + /* 86*/ { 83, -1, "12345678901", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_PLANET }, + /* 87*/ { 88, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 252: Data does not start with an AI", BARCODE_GS1_128 }, + /* 88*/ { 88, -1, "[10]12", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_GS1_128 }, + /* 89*/ { 88, -1, "[10]12", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_GS1_128 }, + /* 90*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 212: Symbology out of range", BARCODE_CODE128 }, + /* 91*/ { 91, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 212: Symbology out of range", -1 }, + /* 92*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 213: Symbology out of range", BARCODE_CODE128 }, + /* 93*/ { 94, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 213: Symbology out of range", -1 }, + /* 94*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 213: Symbology out of range", BARCODE_CODE128 }, + /* 95*/ { 95, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 213: Symbology out of range", -1 }, + /* 96*/ { 100, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_128 }, + /* 97*/ { 100, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_128 }, + /* 98*/ { 101, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_39 }, + /* 99*/ { 101, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_39 }, + /*100*/ { 103, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_DM }, + /*101*/ { 103, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_DM }, + /*102*/ { 105, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_QR }, + /*103*/ { 105, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_QR }, + /*104*/ { 107, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_PDF }, + /*105*/ { 107, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_PDF }, + /*106*/ { 109, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_MICPDF }, + /*107*/ { 109, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_MICPDF }, + /*108*/ { 111, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", BARCODE_HIBC_BLOCKF }, + /*109*/ { 111, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, 0, "", BARCODE_HIBC_BLOCKF }, + /*110*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 214: Symbology out of range", BARCODE_CODE128 }, + /*111*/ { 113, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 214: Symbology out of range", -1 }, + /*112*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 214: Symbology out of range", BARCODE_CODE128 }, + /*113*/ { 114, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 214: Symbology out of range", -1 }, + /*114*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*115*/ { 117, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*116*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*117*/ { 118, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*118*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*119*/ { 122, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*120*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*121*/ { 123, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*122*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*123*/ { 124, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*124*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*125*/ { 125, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*126*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*127*/ { 126, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*128*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 215: Symbology out of range", BARCODE_CODE128 }, + /*129*/ { 127, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 215: Symbology out of range", -1 }, + /*130*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 216: Symbology out of range", BARCODE_CODE128 }, + /*131*/ { 147, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 216: Symbology out of range", -1 }, + /*132*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 216: Symbology out of range", BARCODE_CODE128 }, + /*133*/ { BARCODE_LAST + 1, -1, "1", -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 216: Symbology out of range", -1 }, + /*134*/ { BARCODE_CODE128, -1, "\200", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_ERROR_INVALID_DATA, "Error 245: Invalid UTF-8 in input data", -1 }, + /*135*/ { BARCODE_GS1_128, -1, "[01]12345678901234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_NONCOMPLIANT, "Warning 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, + /*136*/ { BARCODE_GS1_128, -1, "[01]12345678901234", -1, GS1_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_NONCOMPLIANT, "Error 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, + /*137*/ { BARCODE_QRCODE, -1, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", -1 }, + /*138*/ { BARCODE_QRCODE, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_USES_ECI, "Warning 222: Encoded data includes ECI 13", -1 }, + /*139*/ { BARCODE_QRCODE, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_USES_ECI, "Error 222: Encoded data includes ECI 13", -1 }, + /*140*/ { BARCODE_CODEONE, -1, "[01]12345678901231", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 512: ECI ignored for GS1 mode", -1 }, + /*141*/ { BARCODE_CODEONE, -1, "[01]12345678901231", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 512: ECI ignored for GS1 mode", -1 }, + /*142*/ { BARCODE_CODEONE, -1, "[01]12345678901234", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 512: ECI ignored for GS1 mode", -1 }, /* Warning in encoder overrides library warnings */ + /*143*/ { BARCODE_CODEONE, -1, "[01]12345678901234", -1, GS1_MODE, 3, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_NONCOMPLIANT, "Error 261: AI (01) position 14: Bad checksum '4', expected '1'", -1 }, /* But not errors */ + /*144*/ { BARCODE_AZTEC, -1, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, "", -1 }, + /*145*/ { BARCODE_AZTEC, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_USES_ECI, "Warning 222: Encoded data includes ECI 13", -1 }, + /*146*/ { BARCODE_AZTEC, -1, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_USES_ECI, "Error 222: Encoded data includes ECI 13", -1 }, + /*147*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_INVALID_OPTION, "Warning 503: Invalid error correction level - using default instead", -1 }, + /*148*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, 13, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 503: Invalid error correction level - using default instead", -1 }, + /*149*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, -1, ZINT_WARN_USES_ECI, "Warning 222: Encoded data includes ECI 13", -1 }, /* ECI warning trumps all other warnings */ + /*150*/ { BARCODE_AZTEC, 6, "ก", -1, UNICODE_MODE, -1, 0, 0, 0, 0, -1, -1, 0, -1, WARN_FAIL_ALL, ZINT_ERROR_INVALID_OPTION, "Error 503: Invalid error correction level - using default instead", -1 }, /* But not errors */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -243,6 +246,9 @@ static void test_checks(const testCtx *const p_ctx) { if (data[i].dot_size != -1) { symbol->dot_size = data[i].dot_size; } + if (data[i].text_gap) { + symbol->text_gap = data[i].text_gap; + } if (data[i].guard_descent != -1) { symbol->guard_descent = data[i].guard_descent; } diff --git a/backend/tests/test_output.c b/backend/tests/test_output.c index 2323caac..2cffdfea 100644 --- a/backend/tests/test_output.c +++ b/backend/tests/test_output.c @@ -48,23 +48,23 @@ static void test_check_colour_options(const testCtx *const p_ctx) { /* 0*/ { "FFFFFF", "000000", 0, "" }, /* 1*/ { "ffffff", "ffffff", 0, "" }, /* 2*/ { "77777777", "33333333", 0, "" }, - /* 3*/ { "FFFFF", "000000", ZINT_ERROR_INVALID_OPTION, "690: Malformed foreground RGB colour (6 or 8 characters only)" }, - /* 4*/ { "FFFFFFF", "000000", ZINT_ERROR_INVALID_OPTION, "690: Malformed foreground RGB colour (6 or 8 characters only)" }, - /* 5*/ { "FFFFFG", "000000", ZINT_ERROR_INVALID_OPTION, "691: Malformed foreground RGB colour 'FFFFFG' (hexadecimal only)" }, - /* 6*/ { "FFFFFF", "000000000", ZINT_ERROR_INVALID_OPTION, "690: Malformed background RGB colour (6 or 8 characters only)" }, - /* 7*/ { "FFFFFF", "0000000Z", ZINT_ERROR_INVALID_OPTION, "691: Malformed background RGB colour '0000000Z' (hexadecimal only)" }, + /* 3*/ { "FFFFF", "000000", ZINT_ERROR_INVALID_OPTION, "880: Malformed foreground RGB colour (6 or 8 characters only)" }, + /* 4*/ { "FFFFFFF", "000000", ZINT_ERROR_INVALID_OPTION, "880: Malformed foreground RGB colour (6 or 8 characters only)" }, + /* 5*/ { "FFFFFG", "000000", ZINT_ERROR_INVALID_OPTION, "881: Malformed foreground RGB colour 'FFFFFG' (hexadecimal only)" }, + /* 6*/ { "FFFFFF", "000000000", ZINT_ERROR_INVALID_OPTION, "880: Malformed background RGB colour (6 or 8 characters only)" }, + /* 7*/ { "FFFFFF", "0000000Z", ZINT_ERROR_INVALID_OPTION, "881: Malformed background RGB colour '0000000Z' (hexadecimal only)" }, /* 8*/ { "100,100,100,100", "0,1,2,3", 0, "" }, /* 9*/ { "100,,100,100", ",1,2,", 0, "" }, - /* 10*/ { "100,100,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "692: Malformed foreground CMYK colour (4 decimal numbers, comma-separated)" }, - /* 11*/ { "100,100,99,1001", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "693: Malformed foreground CMYK colour (3 digit maximum per number)" }, - /* 12*/ { "101,100,100,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "694: Malformed foreground CMYK colour C (decimal 0-100 only)" }, - /* 13*/ { "100,101,100,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "695: Malformed foreground CMYK colour M (decimal 0-100 only)" }, - /* 14*/ { "100,100,101,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "696: Malformed foreground CMYK colour Y (decimal 0-100 only)" }, - /* 15*/ { "100,100,100,101", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "697: Malformed foreground CMYK colour K (decimal 0-100 only)" }, - /* 16*/ { "100,100,100,100", "0,1,", ZINT_ERROR_INVALID_OPTION, "692: Malformed background CMYK colour (4 decimal numbers, comma-separated)" }, - /* 17*/ { "100,100,100,100", "0,0123,3,4", ZINT_ERROR_INVALID_OPTION, "693: Malformed background CMYK colour (3 digit maximum per number)" }, - /* 18*/ { "100,100,100,100", "0,1,2,101", ZINT_ERROR_INVALID_OPTION, "697: Malformed background CMYK colour K (decimal 0-100 only)" }, - /* 19*/ { "100,100,100,100", "0,1,2,3,", ZINT_ERROR_INVALID_OPTION, "692: Malformed background CMYK colour (4 decimal numbers, comma-separated)" }, + /* 10*/ { "100,100,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "882: Malformed foreground CMYK colour (4 decimal numbers, comma-separated)" }, + /* 11*/ { "100,100,99,1001", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "883: Malformed foreground CMYK colour (3 digit maximum per number)" }, + /* 12*/ { "101,100,100,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "884: Malformed foreground CMYK colour C (decimal 0-100 only)" }, + /* 13*/ { "100,101,100,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "885: Malformed foreground CMYK colour M (decimal 0-100 only)" }, + /* 14*/ { "100,100,101,100", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "886: Malformed foreground CMYK colour Y (decimal 0-100 only)" }, + /* 15*/ { "100,100,100,101", "0,1,2,3", ZINT_ERROR_INVALID_OPTION, "887: Malformed foreground CMYK colour K (decimal 0-100 only)" }, + /* 16*/ { "100,100,100,100", "0,1,", ZINT_ERROR_INVALID_OPTION, "882: Malformed background CMYK colour (4 decimal numbers, comma-separated)" }, + /* 17*/ { "100,100,100,100", "0,0123,3,4", ZINT_ERROR_INVALID_OPTION, "883: Malformed background CMYK colour (3 digit maximum per number)" }, + /* 18*/ { "100,100,100,100", "0,1,2,101", ZINT_ERROR_INVALID_OPTION, "887: Malformed background CMYK colour K (decimal 0-100 only)" }, + /* 19*/ { "100,100,100,100", "0,1,2,3,", ZINT_ERROR_INVALID_OPTION, "882: Malformed background CMYK colour (4 decimal numbers, comma-separated)" }, }; int data_size = ARRAY_SIZE(data); int i, ret; diff --git a/backend/tests/test_png.c b/backend/tests/test_png.c index 76786753..19c25cb6 100644 --- a/backend/tests/test_png.c +++ b/backend/tests/test_png.c @@ -136,6 +136,7 @@ static void test_print(const testCtx *const p_ctx) { struct zint_structapp structapp; char *fgcolour; char *bgcolour; + float text_gap; char *data; char *composite; int ret; @@ -143,66 +144,66 @@ static void test_print(const testCtx *const p_ctx) { char *comment; }; struct item data[] = { - /* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "Égjpqy", "", 0, "code128_egrave_bold.png", "" }, - /* 1*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "Égjpqy", "", 0, "code128_egrave_bold_box3.png", "" }, - /* 2*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.png", "" }, - /* 3*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, 0, 0, { 0, 0, "" }, "", "", "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.png", "" }, - /* 4*/ { BARCODE_CODABLOCKF, -1, 3, -1, -1, -1, -1, 3, -1, 0, 0, { 0, 0, "" }, "", "", "AAAAAAAAA", "", 0, "codablockf_3rows.png", "" }, - /* 5*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "AAAAAAAAA", "", 0, "codablockf_hvwsp2.png", "" }, - /* 6*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.png", "" }, - /* 7*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.png", "" }, - /* 8*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.png", "" }, - /* 9*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.png", "" }, - /* 10*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.png", "" }, - /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.png", "" }, - /* 12*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.png", "" }, - /* 13*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "614141234417+12345", "", 0, "upca_5addon.png", "" }, - /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, -1, -1, 0, 0, { 0, 0, "" }, "", "", "614141234417+12345", "", 0, "upca_5addon_notext.png", "" }, - /* 15*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "614141234417+12345", "", 0, "upca_5addon_bind3.png", "" }, - /* 16*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.png", "" }, - /* 17*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.png", "" }, - /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.png", "" }, - /* 19*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.png", "" }, - /* 20*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "1234567+12", "", 0, "upce_2addon.png", "" }, - /* 21*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "1234567+12345", "", 0, "upce_5addon.png", "" }, - /* 22*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "1234567+12345", "", 0, "upce_5addon_small.png", "" }, - /* 23*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.png", "" }, - /* 24*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.png", "" }, - /* 25*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.png", "" }, - /* 26*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "1234567+12", "", 0, "ean8_2addon.png", "" }, - /* 27*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "1234567+12345", "", 0, "ean8_5addon.png", "" }, - /* 28*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.png", "" }, - /* 29*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.png", "" }, - /* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "12345", "", 0, "ean5.png", "" }, - /* 31*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "12", "", 0, "ean2.png", "" }, - /* 32*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "123", "", 0, "code39_small.png", "" }, - /* 33*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3.5, { 0, 0, "" }, "", "", "12345", "", 0, "postnet_zip.png", "300 dpi, using 1/43in X, 300 / 43 / 2 = ~3.5 scale" }, - /* 34*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "CFCECDCC", "12345", "", 0, "pdf417_bgalpha.png", "" }, - /* 35*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "30313233", "", "12345", "", 0, "pdf417_fgalpha.png", "" }, - /* 36*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "20212244", "CFCECDCC", "12345", "", 0, "pdf417_bgfgalpha.png", "" }, - /* 37*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF000033", "12345", "", 0, "ultra_bgfgalpha.png", "" }, - /* 38*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "FF000033", "12345", "", 0, "ultra_bgalpha.png", "" }, - /* 39*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF0000", "12345", "", 0, "ultra_fgalpha.png", "" }, - /* 40*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "", "12345", "", 0, "ultra_fgalpha_nobg.png", "" }, - /* 41*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "12345", "", 0, "ultra_hvwsp1_box1.png", "" }, - /* 42*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", "12345", "", 0, "ultra_fgalpha_hvwsp1_box1.png", "" }, - /* 43*/ { BARCODE_ULTRA, -1, 1, BARCODE_BIND_TOP, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", "12345", "", 0, "ultra_fgalpha_hvwsp1_bindtop1.png", "" }, - /* 44*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", "1", "", 0, "ultra_odd.png", "" }, - /* 45*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.5.png", "6 dpmm, 150 dpi" }, - /* 46*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7, { 0, 0, "" }, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" }, - /* 47*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4, { 0, 0, "" }, "1111117F", "EEEEEEEE", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" }, - /* 48*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1, { 0, 0, "" }, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_2.1.png", "24 dpmm, 600 dpi" }, - /* 49*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_hvwsp1_box2.png", "" }, - /* 50*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.png", "" }, - /* 51*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", "1234", "", 0, "datamatrix_2.0_bind1_dotty.png", "" }, - /* 52*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", "1234", "", 0, "datamatrix_2.0_hvwsp1_bind1_dotty.png", "" }, - /* 53*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "12345678909", "", 0, "dbar_ltd.png", "" }, - /* 54*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5.0, 0, { 0, 0, "" }, "", "", "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.png", "" }, - /* 55*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, 0, { 0, 0, "" }, "", "", "12345678901234567890", "", 0, "imail_height7.75.png", "" }, - /* 56*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 4, 7, "Z1.txt" }, "", "", "3456", "", 0, "aztec_z1_seq4of7.png", "" }, - /* 57*/ { BARCODE_PDF417, -1, -1, BARCODE_NO_QUIET_ZONES, -1, -1, -1, 5, 8, 16, 1.5, { 0, 0, "" }, "", "", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "", ZINT_WARN_NONCOMPLIANT, "pdf417_#204.png", "Ticket #204 Blank line in PDF417" }, - /* 58*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", "008182709980000020028101276", "", 0, "dpd_compliant.png", "Now with bind top 3X default" }, - /* 59*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "100,85,0,20", "FFFFFF00", "123", "", 0, "channel_cmyk_nobg.png", "" }, + /* 0*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold.png", "" }, + /* 1*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.png", "" }, + /* 2*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.png", "" }, + /* 3*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, 0, 0, { 0, 0, "" }, "", "", 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.png", "" }, + /* 4*/ { BARCODE_CODABLOCKF, -1, 3, -1, -1, -1, -1, 3, -1, 0, 0, { 0, 0, "" }, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.png", "" }, + /* 5*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.png", "" }, + /* 6*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.png", "" }, + /* 7*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.png", "" }, + /* 8*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.png", "" }, + /* 9*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.png", "" }, + /* 10*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.png", "" }, + /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.png", "" }, + /* 12*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.png", "" }, + /* 13*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.png", "" }, + /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, 0, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_notext.png", "" }, + /* 15*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.png", "" }, + /* 16*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.png", "" }, + /* 17*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.png", "" }, + /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.png", "" }, + /* 19*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.png", "" }, + /* 20*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "upce_2addon.png", "" }, + /* 21*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon.png", "" }, + /* 22*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.png", "" }, + /* 23*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.png", "" }, + /* 24*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.png", "" }, + /* 25*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.png", "" }, + /* 26*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12", "", 0, "ean8_2addon.png", "" }, + /* 27*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.png", "" }, + /* 28*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.png", "" }, + /* 29*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.png", "" }, + /* 30*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ean5.png", "" }, + /* 31*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12", "", 0, "ean2.png", "" }, + /* 32*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "123", "", 0, "code39_small.png", "" }, + /* 33*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3.5, { 0, 0, "" }, "", "", 0, "12345", "", 0, "postnet_zip.png", "300 dpi, using 1/43in X, 300 / 43 / 2 = ~3.5 scale" }, + /* 34*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "CFCECDCC", 0, "12345", "", 0, "pdf417_bgalpha.png", "" }, + /* 35*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "30313233", "", 0, "12345", "", 0, "pdf417_fgalpha.png", "" }, + /* 36*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "20212244", "CFCECDCC", 0, "12345", "", 0, "pdf417_bgfgalpha.png", "" }, + /* 37*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF000033", 0, "12345", "", 0, "ultra_bgfgalpha.png", "" }, + /* 38*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "FF000033", 0, "12345", "", 0, "ultra_bgalpha.png", "" }, + /* 39*/ { BARCODE_ULTRA, -1, -1, -1, 2, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "FF0000", 0, "12345", "", 0, "ultra_fgalpha.png", "" }, + /* 40*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "0000007F", "", 0, "12345", "", 0, "ultra_fgalpha_nobg.png", "" }, + /* 41*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345", "", 0, "ultra_hvwsp1_box1.png", "" }, + /* 42*/ { BARCODE_ULTRA, -1, 1, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", 0, "12345", "", 0, "ultra_fgalpha_hvwsp1_box1.png", "" }, + /* 43*/ { BARCODE_ULTRA, -1, 1, BARCODE_BIND_TOP, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "00FF007F", "BABDB6", 0, "12345", "", 0, "ultra_fgalpha_hvwsp1_bindtop1.png", "" }, + /* 44*/ { BARCODE_ULTRA, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", 0, "1", "", 0, "ultra_odd.png", "" }, + /* 45*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0.5, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.5.png", "6 dpmm, 150 dpi" }, + /* 46*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BOX, 3, -1, -1, -1, -1, 0, 0.7, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_0.7_wsp3_box1.png", "8 dpmm, 200 dpi" }, + /* 47*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1.4, { 0, 0, "" }, "1111117F", "EEEEEEEE", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_1.4_bgfgalpha.png", "16 dpmm, 400 dpi" }, + /* 48*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2.1, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_2.1.png", "24 dpmm, 600 dpi" }, + /* 49*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, 1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_hvwsp1_box2.png", "" }, + /* 50*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.png", "" }, + /* 51*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, -1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", 0, "1234", "", 0, "datamatrix_2.0_bind1_dotty.png", "" }, + /* 52*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, 0, 2.0f, { 0, 0, "" }, "", "", 0, "1234", "", 0, "datamatrix_2.0_hvwsp1_bind1_dotty.png", "" }, + /* 53*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "12345678909", "", 0, "dbar_ltd.png", "" }, + /* 54*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, 5.0, 0, { 0, 0, "" }, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.png", "" }, + /* 55*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, 0, { 0, 0, "" }, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.png", "" }, + /* 56*/ { BARCODE_AZTEC, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, { 4, 7, "Z1.txt" }, "", "", 0, "3456", "", 0, "aztec_z1_seq4of7.png", "" }, + /* 57*/ { BARCODE_PDF417, -1, -1, BARCODE_NO_QUIET_ZONES, -1, -1, -1, 5, 8, 16, 1.5, { 0, 0, "" }, "", "", 0, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", "", ZINT_WARN_NONCOMPLIANT, "pdf417_#204.png", "Ticket #204 Blank line in PDF417" }, + /* 58*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.png", "Now with bind top 3X default" }, + /* 59*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 0, 0, { 0, 0, "" }, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.png", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -264,6 +265,8 @@ static void test_print(const testCtx *const p_ctx) { if (*data[i].bgcolour) { strcpy(symbol->bgcolour, data[i].bgcolour); } + symbol->text_gap = data[i].text_gap; + if (strlen(data[i].composite)) { text = data[i].composite; strcpy(symbol->primary, data[i].data); diff --git a/backend/tests/test_postal.c b/backend/tests/test_postal.c index b3d218f5..c46add4d 100644 --- a/backend/tests/test_postal.c +++ b/backend/tests/test_postal.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2022 Robin Stuart + Copyright (C) 2019-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -74,8 +74,8 @@ static void test_large(const testCtx *const p_ctx) { /* 23*/ { BARCODE_PLANET, "1", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, /* 24*/ { BARCODE_KIX, "1", 18, 0, 3, 143 }, /* 25*/ { BARCODE_KIX, "1", 19, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 26*/ { BARCODE_DAFT, "D", 100, 0, 3, 199 }, - /* 27*/ { BARCODE_DAFT, "D", 101, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 26*/ { BARCODE_DAFT, "D", 250, 0, 3, 499 }, + /* 27*/ { BARCODE_DAFT, "D", 251, ZINT_ERROR_TOO_LONG, -1, -1 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; diff --git a/backend/tests/test_raster.c b/backend/tests/test_raster.c index 6cbab5c9..163c524e 100644 --- a/backend/tests/test_raster.c +++ b/backend/tests/test_raster.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2022 Robin Stuart + Copyright (C) 2019-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -1237,7 +1237,6 @@ static void test_scale(const testCtx *const p_ctx) { symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - testUtilSetSymbol(symbol, data[i].symbology, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, data[i].data, -1, debug); if (data[i].border_width != -1) { symbol->border_width = data[i].border_width; } @@ -1253,7 +1252,7 @@ static void test_scale(const testCtx *const p_ctx) { } else { text = data[i].data; } - length = (int) strlen(text); + length = testUtilSetSymbol(symbol, data[i].symbology, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, text, -1, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) text, length); assert_nonzero(ret < ZINT_ERROR, "i:%d ZBarcode_Encode(%d) ret %d >= ZINT_ERROR (%s)\n", i, data[i].symbology, ret, symbol->errtxt); @@ -1788,6 +1787,161 @@ static void test_quiet_zones(const testCtx *const p_ctx) { testFinish(); } +static void test_text_gap(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + struct item { + int symbology; + int output_options; + int option_2; + int show_hrt; + float text_gap; + float scale; + char *data; + char *composite; + + int ret; + float expected_height; + int expected_rows; + int expected_width; + int expected_bitmap_width; + int expected_bitmap_height; + + int expected_set; + int expected_set_row; + int expected_set_rows; /* Last row no. + 1 */ + int expected_set_col; + int expected_set_len; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { BARCODE_CODE11, -1, -1, -1, 0, 0, "1234", "", 0, 50, 1, 62, 124, 116, 1 /*set*/, 104, 105, 55, 6 }, /* Default */ + /* 1*/ { BARCODE_CODE11, -1, -1, -1, 0, 0, "1234", "", 0, 50, 1, 62, 124, 116, 0 /*set*/, 103, 104, 0, 124 }, /* Default */ + /* 2*/ { BARCODE_CODE11, -1, -1, -1, 0.1, 0, "1234", "", 0, 50, 1, 62, 124, 114, 1 /*set*/, 102, 103, 55, 6 }, + /* 3*/ { BARCODE_CODE11, -1, -1, -1, 0.4, 0, "1234", "", 0, 50, 1, 62, 124, 114, 1 /*set*/, 102, 103, 55, 6 }, + /* 4*/ { BARCODE_CODE11, -1, -1, -1, 0.5, 0, "1234", "", 0, 50, 1, 62, 124, 115, 1 /*set*/, 103, 104, 55, 6 }, + /* 5*/ { BARCODE_CODE11, -1, -1, -1, 0.5, 0, "1234", "", 0, 50, 1, 62, 124, 115, 0 /*set*/, 102, 103, 0, 124 }, + /* 6*/ { BARCODE_CODE11, -1, -1, -1, 0.6, 0, "1234", "", 0, 50, 1, 62, 124, 115, 1 /*set*/, 103, 104, 55, 6 }, + /* 7*/ { BARCODE_CODE11, -1, -1, -1, 1.0, 0, "1234", "", 0, 50, 1, 62, 124, 116, 1 /*set*/, 104, 105, 55, 6 }, /* Same as default */ + /* 8*/ { BARCODE_CODE11, -1, -1, -1, 1.0, 0, "1234", "", 0, 50, 1, 62, 124, 116, 0 /*set*/, 103, 104, 0, 124 }, /* Same as default */ + /* 9*/ { BARCODE_CODE11, -1, -1, -1, 1.5, 0, "1234", "", 0, 50, 1, 62, 124, 117, 1 /*set*/, 105, 106, 55, 6 }, + /* 10*/ { BARCODE_CODE11, -1, -1, -1, 1.5, 0, "1234", "", 0, 50, 1, 62, 124, 117, 0 /*set*/, 104, 105, 0, 124 }, + /* 11*/ { BARCODE_CODE11, -1, -1, -1, 2.0, 0, "1234", "", 0, 50, 1, 62, 124, 118, 1 /*set*/, 106, 107, 55, 6 }, + /* 12*/ { BARCODE_CODE11, -1, -1, -1, 2.0, 0, "1234", "", 0, 50, 1, 62, 124, 118, 0 /*set*/, 105, 106, 0, 124 }, + /* 13*/ { BARCODE_CODE11, -1, -1, -1, 3.0, 0, "1234", "", 0, 50, 1, 62, 124, 120, 1 /*set*/, 108, 109, 55, 6 }, + /* 14*/ { BARCODE_CODE11, -1, -1, -1, 3.0, 0, "1234", "", 0, 50, 1, 62, 124, 120, 0 /*set*/, 107, 108, 0, 124 }, + /* 15*/ { BARCODE_CODE11, -1, -1, -1, 4.0, 0, "1234", "", 0, 50, 1, 62, 124, 122, 1 /*set*/, 110, 111, 55, 6 }, + /* 16*/ { BARCODE_CODE11, -1, -1, -1, 4.0, 0, "1234", "", 0, 50, 1, 62, 124, 122, 0 /*set*/, 109, 110, 0, 124 }, + /* 17*/ { BARCODE_CODE11, -1, -1, -1, 5.0, 0, "1234", "", 0, 50, 1, 62, 124, 124, 1 /*set*/, 112, 113, 55, 6 }, + /* 18*/ { BARCODE_CODE11, -1, -1, -1, 5.0, 0, "1234", "", 0, 50, 1, 62, 124, 124, 0 /*set*/, 111, 112, 0, 124 }, + /* 19*/ { BARCODE_CODE11, -1, -1, -1, 0, 3.0, "1234", "", 0, 50, 1, 62, 372, 348, 1 /*set*/, 312, 315, 165, 18 }, /* Scale default */ + /* 20*/ { BARCODE_CODE11, -1, -1, -1, 0, 3.0, "1234", "", 0, 50, 1, 62, 372, 348, 0 /*set*/, 311, 312, 0, 372 }, /* Scale default */ + /* 21*/ { BARCODE_CODE11, -1, -1, -1, 1.5, 3.0, "1234", "", 0, 50, 1, 62, 372, 351, 1 /*set*/, 315, 318, 165, 18 }, /* Scale */ + /* 22*/ { BARCODE_CODE11, -1, -1, -1, 1.5, 3.0, "1234", "", 0, 50, 1, 62, 372, 351, 0 /*set*/, 314, 315, 0, 372 }, /* Scale */ + /* 23*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763", "", 0, 50, 1, 95, 226, 116, 1 /*set*/, 102, 104, 81, 9 }, /* Default */ + /* 24*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 101, 102, 38, 72 }, /* Default */ + /* 25*/ { BARCODE_UPCA, -1, -1, -1, 0.5, 0, "01457130763", "", 0, 50, 1, 95, 226, 115, 1 /*set*/, 101, 103, 81, 9 }, + /* 26*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763", "", 0, 50, 1, 95, 226, 115, 1 /*set*/, 101, 103, 81, 9 }, + /* 27*/ { BARCODE_UPCA, -1, -1, -1, 1.0, 0, "01457130763", "", 0, 50, 1, 95, 226, 116, 1 /*set*/, 102, 104, 81, 9 }, /* Same as default */ + /* 28*/ { BARCODE_UPCA, -1, -1, -1, 1.0, 0, "01457130763", "", 0, 50, 1, 95, 226, 116, 0 /*set*/, 101, 102, 38, 72 }, /* Same as default */ + /* 29*/ { BARCODE_UPCA, -1, -1, -1, 2.0, 0, "01457130763", "", 0, 50, 1, 95, 226, 118, 1 /*set*/, 104, 106, 81, 9 }, + /* 30*/ { BARCODE_UPCA, -1, -1, -1, 2.0, 2.5, "01457130763", "", 0, 50, 1, 95, 565, 295, 1 /*set*/, 260, 265, 201, 22 }, /* Scale */ + /* 31*/ { BARCODE_UPCA, -1, -1, -1, 2.0, 2.5, "01457130763", "", 0, 50, 1, 95, 565, 295, 0 /*set*/, 259, 260, 95, 180 }, /* Scale */ + /* 32*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116, 0 /*set*/, 14, 16, 208, 68 }, /* Default */ + /* 33*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116, 1 /*set*/, 16, 100, 244, 4 }, /* Default */ + /* 34*/ { BARCODE_UPCA, -1, -1, -1, 0.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 115, 0 /*set*/, 14, 15, 208, 68 }, + /* 35*/ { BARCODE_UPCA, -1, -1, -1, 0.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 115, 1 /*set*/, 16, 100, 244, 4 }, + /* 36*/ { BARCODE_UPCA, -1, -1, -1, 1.0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116, 0 /*set*/, 14, 16, 208, 68 }, /* Same as default */ + /* 37*/ { BARCODE_UPCA, -1, -1, -1, 1.0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116, 1 /*set*/, 16, 100, 244, 4 }, /* Same as default */ + /* 38*/ { BARCODE_UPCA, -1, -1, -1, 1.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117, 0 /*set*/, 14, 17, 208, 68 }, + /* 39*/ { BARCODE_UPCA, -1, -1, -1, 1.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117, 1 /*set*/, 17, 100, 244, 4 }, + /* 40*/ { BARCODE_UPCA, -1, -1, -1, 2.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 119, 0 /*set*/, 14, 19, 208, 68 }, + /* 41*/ { BARCODE_UPCA, -1, -1, -1, 2.5, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 119, 1 /*set*/, 19, 100, 244, 4 }, + /* 42*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 0 /*set*/, 38, 40, 214, 70 }, /* Default */ + /* 43*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 1 /*set*/, 40, 100, 250, 4 }, /* Default */ + /* 44*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 0 /*set*/, 38, 40, 214, 70 }, /* Same as default */ + /* 45*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116, 1 /*set*/, 40, 100, 250, 4 }, + /* 46*/ { BARCODE_UPCA_CC, -1, -1, -1, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 120, 0 /*set*/, 38, 44, 214, 70 }, + /* 47*/ { BARCODE_UPCA_CC, -1, -1, -1, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 120, 1 /*set*/, 44, 100, 250, 4 }, + /* 48*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 0 /*set*/, 38, 40, 214, 70 }, /* Hide text default */ + /* 49*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 1 /*set*/, 40, 100, 250, 4 }, /* Hide text default */ + /* 50*/ { BARCODE_UPCA_CC, -1, -1, 0, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 0 /*set*/, 38, 44, 214, 70 }, /* Hide text */ + /* 51*/ { BARCODE_UPCA_CC, -1, -1, 0, 3.0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 1 /*set*/, 44, 100, 250, 4 }, /* Hide text */ + }; + int data_size = ARRAY_SIZE(data); + int i, length, ret; + struct zint_symbol *symbol; + + const char *text; + + testStart("test_text_gap"); + + for (i = 0; i < data_size; i++) { + int row, column; + + if (testContinue(p_ctx, i)) continue; + + symbol = ZBarcode_Create(); + assert_nonnull(symbol, "Symbol not created\n"); + + if (data[i].show_hrt != -1) { + symbol->show_hrt = data[i].show_hrt; + } + symbol->text_gap = data[i].text_gap; + if (data[i].scale != 0.0f) { + symbol->scale = data[i].scale; + } + + if (strlen(data[i].composite)) { + text = data[i].composite; + strcpy(symbol->primary, data[i].data); + } else { + text = data[i].data; + } + length = testUtilSetSymbol(symbol, data[i].symbology, UNICODE_MODE, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, text, -1, debug); + + ret = ZBarcode_Encode(symbol, (unsigned char *) text, length); + assert_zero(ret, "i:%d ZBarcode_Encode(%d) ret %d != 0 (%s)\n", i, data[i].symbology, ret, symbol->errtxt); + + ret = ZBarcode_Buffer(symbol, 0); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Buffer(%d) ret %d != %d (%s)\n", i, data[i].symbology, ret, data[i].ret, symbol->errtxt); + assert_nonnull(symbol->bitmap, "i:%d (%d) symbol->bitmap NULL\n", i, data[i].symbology); + + if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) testUtilBitmapPrint(symbol, NULL, NULL); /* ZINT_DEBUG_TEST_PRINT 16 */ + + assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); + assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%d) symbol->rows %d != %d\n", i, data[i].symbology, symbol->rows, data[i].expected_rows); + assert_equal(symbol->width, data[i].expected_width, "i:%d (%d) symbol->width %d != %d\n", i, data[i].symbology, symbol->width, data[i].expected_width); + assert_equal(symbol->bitmap_width, data[i].expected_bitmap_width, "i:%d (%d) symbol->bitmap_width %d != %d\n", i, data[i].symbology, symbol->bitmap_width, data[i].expected_bitmap_width); + assert_equal(symbol->bitmap_height, data[i].expected_bitmap_height, "i:%d (%d) symbol->bitmap_height %d != %d\n", i, data[i].symbology, symbol->bitmap_height, data[i].expected_bitmap_height); + + ret = ZBarcode_Print(symbol, 0); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Print(%d) ret %d != %d (%s)\n", i, data[i].symbology, ret, data[i].ret, symbol->errtxt); + assert_zero(remove(symbol->outfile), "i:%d remove(%s) != 0\n", i, symbol->outfile); + + assert_nonzero(symbol->bitmap_height >= data[i].expected_set_rows, "i:%d (%d) symbol->bitmap_height %d < expected_set_rows %d\n", + i, data[i].symbology, symbol->bitmap_height, data[i].expected_set_rows); + assert_nonzero(data[i].expected_set_rows > data[i].expected_set_row, "i:%d (%d) expected_set_rows %d < expected_set_row %d\n", + i, data[i].symbology, data[i].expected_set_rows, data[i].expected_set_row); + for (row = data[i].expected_set_row; row < data[i].expected_set_rows; row++) { + int bits_set = 0; + for (column = data[i].expected_set_col; column < data[i].expected_set_col + data[i].expected_set_len; column++) { + if (is_row_column_black(symbol, row, column)) { + bits_set++; + } + } + if (data[i].expected_set) { + assert_equal(bits_set, data[i].expected_set_len, "i:%d (%d) row %d bits_set %d != expected_set_len %d\n", i, data[i].symbology, row, bits_set, data[i].expected_set_len); + } else { + assert_zero(bits_set, "i:%d (%d) row %d bits_set %d != 0\n", i, data[i].symbology, row, bits_set); + } + } + ZBarcode_Delete(symbol); + } + + testFinish(); +} + static void test_buffer_plot(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -1812,96 +1966,96 @@ static void test_buffer_plot(const testCtx *const p_ctx) { }; struct item data[] = { /* 0*/ { BARCODE_PDF417, 0, 1, -1, -1, 15, "", "", "1", 0, 16, 4, 86, 86, 16, - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" - }, + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111101010111100001111101010111110011101010111000000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000111110101011000001111000001000101011111101010111000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000110101011111000001111011111101011011010101111100000111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + "11111111010101000101011110011110001010000010001000011010111101111100111111101000101001" + }, /* 1*/ { BARCODE_PDF417, 0, 1, -1, -1, 15, "FF0000", "00FF0099", "1", 0, 16, 4, 86, 86, 16, - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" - }, + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRGRGRGRRRRGGGGRRRRRGRGRGRRRRRGGRRRGRGRGRRRGGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRRRRGRGRGRRGGGGGRRRRGGGGGRGGGRGRGRRRRRRGRGRGRRRGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRRGRGRGRRRRRGGGGGRRRRGRRRRRRGRGRRGRRGRGRGRRRRRGGGGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + "RRRRRRRRGRGRGRGGGRGRGRRRRGGRRRRGGGRGRGGGGGRGGGRGGGGRRGRGRRRRGRRRRRGGRRRRRRRGRGGGRGRGGR" + }, /* 2*/ { BARCODE_PDF417, 0, 1, 1, -1, 15, "FFFF0033", "00FF00", "1", 0, 16, 4, 86, 88, 16, - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" - }, + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYGYGYGYYYYGGGGYYYYYGYGYGYYYYYGGYYYGYGYGYYYGGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYYYYGYGYGYYGGGGGYYYYGGGGGYGGGYGYGYYYYYYGYGYGYYYGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYYGYGYGYYYYYGGGGGYYYYGYYYYYYGYGYYGYYGYGYGYYYYYGGGGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + "GYYYYYYYYGYGYGYGGGYGYGYYYYGGYYYYGGGYGYGGGGGYGGGYGGGGYYGYGYYYYGYYYYYGGYYYYYYYGYGGGYGYGGYG" + }, /* 3*/ { BARCODE_ULTRA, -1, -1, -1, -1, 13, "FF00007F", "00FF0000", "1", 0, 13, 13, 13, 13, 13, - "1111111111111" - "10Y10GYCGYYC1" - "11C10MGYCGGG1" - "10G10GYCMCYC1" - "11Y10YMMGYGY1" - "10M10CGGCMYM1" - "1101010101011" - "10G10CYMGCCC1" - "11C10MCGCMMM1" - "10Y10CGCGYCY1" - "11M10GMMMMGC1" - "10C10MYYYGMY1" - "1111111111111" - }, + "1111111111111" + "10Y10GYCGYYC1" + "11C10MGYCGGG1" + "10G10GYCMCYC1" + "11Y10YMMGYGY1" + "10M10CGGCMYM1" + "1101010101011" + "10G10CYMGCCC1" + "11C10MCGCMMM1" + "10Y10CGCGYCY1" + "11M10GMMMMGC1" + "10C10MYYYGMY1" + "1111111111111" + }, /* 4*/ { BARCODE_ULTRA, -1, -1, 1, -1, 13, "", "00FF0000", "1", 0, 13, 13, 13, 15, 13, - "G1111111111111G" - "G10Y10GYCGYYC1G" - "G11C10MGYCGGG1G" - "G10G10GYCMCYC1G" - "G11Y10YMMGYGY1G" - "G10M10CGGCMYM1G" - "G1101010101011G" - "G10G10CYMGCCC1G" - "G11C10MCGCMMM1G" - "G10Y10CGCGYCY1G" - "G11M10GMMMMGC1G" - "G10C10MYYYGMY1G" - "G1111111111111G" - }, + "G1111111111111G" + "G10Y10GYCGYYC1G" + "G11C10MGYCGGG1G" + "G10G10GYCMCYC1G" + "G11Y10YMMGYGY1G" + "G10M10CGGCMYM1G" + "G1101010101011G" + "G10G10CYMGCCC1G" + "G11C10MCGCMMM1G" + "G10Y10CGCGYCY1G" + "G11M10GMMMMGC1G" + "G10C10MYYYGMY1G" + "G1111111111111G" + }, /* 5*/ { BARCODE_CHANNEL, -1, -1, 1, -1, 5, "30313233", "CFCECDCC", "1", 0, 5, 1, 19, 21, 5, - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" - }, + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + "CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132CFCECD303132303132CFCECD303132303132CFCECDCFCECDCFCECD303132CFCECD" + }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -1957,9 +2111,9 @@ static void test_buffer_plot(const testCtx *const p_ctx) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%s) symbol->rows %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d (%s) symbol->width %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->width, data[i].expected_width); assert_equal(symbol->bitmap_width, data[i].expected_bitmap_width, "i:%d (%s) symbol->bitmap_width %d != %d\n", - i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_width, data[i].expected_bitmap_width); + i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_width, data[i].expected_bitmap_width); assert_equal(symbol->bitmap_height, data[i].expected_bitmap_height, "i:%d (%s) symbol->bitmap_height %d != %d\n", - i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_height, data[i].expected_bitmap_height); + i, testUtilBarcodeName(data[i].symbology), symbol->bitmap_height, data[i].expected_bitmap_height); ret = testUtilBitmapCmp(symbol, data[i].expected_bitmap, &row, &column); assert_zero(ret, "i:%d (%s) testUtilBitmapCmp ret %d != 0 column %d row %d (%s)\n", i, testUtilBarcodeName(data[i].symbology), ret, column, row, data[i].data); @@ -2979,6 +3133,7 @@ int main(int argc, char *argv[]) { { "test_scale", test_scale, }, { "test_guard_descent", test_guard_descent, }, { "test_quiet_zones", test_quiet_zones, }, + { "test_text_gap", test_text_gap, }, { "test_buffer_plot", test_buffer_plot, }, { "test_height", test_height, }, { "test_height_per_row", test_height_per_row, }, diff --git a/backend/tests/test_svg.c b/backend/tests/test_svg.c index fd43fac9..4874a663 100644 --- a/backend/tests/test_svg.c +++ b/backend/tests/test_svg.c @@ -54,62 +54,63 @@ static void test_print(const testCtx *const p_ctx) { char *composite; int ret; char *expected_file; + char *comment; }; struct item data[] = { - /* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "<>\"&'", "", 0, "code128_amperands.svg" }, - /* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold.svg" }, - /* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.svg" }, - /* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.svg" }, - /* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp3.svg" }, - /* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.svg" }, - /* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg" }, - /* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg" }, - /* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg" }, - /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg" }, - /* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg" }, - /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg" }, - /* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg" }, - /* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg" }, - /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg" }, - /* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg" }, - /* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg" }, - /* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg" }, - /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg" }, - /* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg" }, - /* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg" }, - /* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg" }, - /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg" }, - /* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg" }, - /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg" }, - /* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg" }, - /* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg" }, - /* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg" }, - /* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg" }, - /* 29*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg" }, - /* 30*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg" }, - /* 31*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg" }, - /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg" }, - /* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg" }, - /* 34*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg" }, - /* 35*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg" }, - /* 36*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg" }, - /* 37*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg" }, - /* 38*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg" }, - /* 39*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg" }, - /* 40*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg" }, - /* 41*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg" }, - /* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg" }, - /* 43*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg" }, - /* 44*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg" }, - /* 45*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg" }, - /* 46*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg" }, - /* 47*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg" }, - /* 48*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg" }, - /* 49*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.4, "", "", 180, "A", "", 0, "telepen_height0.4_rotate_180.svg" }, - /* 50*/ { BARCODE_CODE49, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "FF11157F", "", 0, "A", "", 0, "code49_comph_fgalpha.svg" }, - /* 51*/ { BARCODE_CODABLOCKF, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 2, 0, "00000033", "FFFFFF66", 0, "1234567890123456789012345678901234", "", 0, "codablockf_comph_sep2_fgbgalpha.svg" }, - /* 52*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.svg" }, - /* 53*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.svg" }, + /* 0*/ { BARCODE_CODE128, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "<>\"&'", "", 0, "code128_amperands.svg", "" }, + /* 1*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold.svg", "" }, + /* 2*/ { BARCODE_CODE128, UNICODE_MODE, 3, BOLD_TEXT | BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_box3.svg", "" }, + /* 3*/ { BARCODE_CODE128, UNICODE_MODE, 2, BOLD_TEXT | BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp2_box2.svg", "" }, + /* 4*/ { BARCODE_CODE128, UNICODE_MODE, -1, BOLD_TEXT, 3, 3, -1, -1, -1, -1, 0, "", "", 0, "Égjpqy", "", 0, "code128_egrave_bold_hvwsp3.svg", "" }, + /* 5*/ { BARCODE_GS1_128_CC, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "[00]030123456789012340", "[02]13012345678909[37]24[10]1234567ABCDEFG", 0, "gs1_128_cc_fig12.svg", "" }, + /* 6*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_3rows.svg", "" }, + /* 7*/ { BARCODE_CODABLOCKF, -1, -1, -1, 2, 2, -1, 3, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2.svg", "" }, + /* 8*/ { BARCODE_CODABLOCKF, -1, 2, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "", "", 0, "AAAAAAAAA", "", 0, "codablockf_hvwsp2_box2.svg", "" }, + /* 9*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9771384524017+12", "", 0, "ean13_2addon_ggs_5.2.2.5.1-2.svg", "" }, + /* 10*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "9780877799306+54321", "", 0, "ean13_5addon_ggs_5.2.2.5.2-2.svg", "" }, + /* 11*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "123456789012+12", "[91]123456789012345678901", 0, "ean13_cc_2addon_cca_4x4.svg", "" }, + /* 12*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4.svg", "" }, + /* 13*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "123456789012+54321", "[91]1234567890", 0, "ean13_cc_5addon_ccb_3x4_notext.svg", "" }, + /* 14*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "012345678905+24", "", 0, "upca_2addon_ggs_5.2.6.6-5.svg", "" }, + /* 15*/ { BARCODE_UPCA, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon.svg", "" }, + /* 16*/ { BARCODE_UPCA, -1, 3, BARCODE_BIND, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_bind3.svg", "" }, + /* 17*/ { BARCODE_UPCA, -1, -1, SMALL_TEXT | BOLD_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "614141234417+12345", "", 0, "upca_5addon_small_bold.svg", "Note BOLD_TEXT ignored for UPC/EAN" }, + /* 18*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "12345678901+12", "[91]123456789", 0, "upca_cc_2addon_cca_3x4.svg", "" }, + /* 19*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4.svg", "" }, + /* 20*/ { BARCODE_UPCA_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_notext.svg", "" }, + /* 21*/ { BARCODE_UPCA_CC, -1, 3, BARCODE_BIND, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "12345678901+12121", "[91]1234567890123", 0, "upca_cc_5addon_ccb_4x4_bind3.svg", "" }, + /* 22*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "upce_2addon.svg", "" }, + /* 23*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon.svg", "" }, + /* 24*/ { BARCODE_UPCE, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_small.svg", "" }, + /* 25*/ { BARCODE_UPCE, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "upce_5addon_notext.svg", "" }, + /* 26*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2.svg", "" }, + /* 27*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "FF0000EE", "0000FF11", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_fgbgalpha.svg", "" }, + /* 28*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "FFFFFF00", 0, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_nobg.svg", "" }, + /* 29*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 270, "0654321+89", "[91]1", 0, "upce_cc_2addon_cca_5x2_rotate_270.svg", "" }, + /* 30*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2.svg", "" }, + /* 31*/ { BARCODE_UPCE_CC, -1, -1, -1, -1, -1, 0, 2, -1, -1, 0, "", "", 0, "1876543+56789", "[91]12345", 0, "upce_cc_5addon_ccb_8x2_notext.svg", "" }, + /* 32*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12", "", 0, "ean8_2addon.svg", "" }, + /* 33*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "1234567+12345", "", 0, "ean8_5addon.svg", "" }, + /* 34*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 1, -1, -1, 0, "", "", 0, "9876543+65", "[91]1234567", 0, "ean8_cc_2addon_cca_4x3.svg", "" }, + /* 35*/ { BARCODE_EANX_CC, -1, -1, -1, -1, -1, -1, 2, -1, -1, 0, "", "", 0, "9876543+74083", "[91]123456789012345678", 0, "ean8_cc_5addon_ccb_8x3.svg", "" }, + /* 36*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "ean5.svg", "" }, + /* 37*/ { BARCODE_EANX, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12", "", 0, "ean2.svg", "" }, + /* 38*/ { BARCODE_CODE39, -1, -1, SMALL_TEXT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "123", "", 0, "code39_small.svg", "" }, + /* 39*/ { BARCODE_POSTNET, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345", "", 0, "postnet_zip.svg", "" }, + /* 40*/ { BARCODE_MAXICODE, -1, 2, BARCODE_BOX, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_box2.svg", "" }, + /* 41*/ { BARCODE_MAXICODE, -1, 1, BARCODE_BIND, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_vwsp1_bind1.svg", "" }, + /* 42*/ { BARCODE_MAXICODE, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "121212DD", "EEEEEE22", 90, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "maxicode_fgbg_rotate_90.svg", "" }, + /* 43*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, -1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_vwsp1_bind1_dotty.svg", "" }, + /* 44*/ { BARCODE_DATAMATRIX, -1, 1, BARCODE_BIND | BARCODE_DOTTY_MODE, 1, 1, -1, -1, -1, -1, 0, "", "", 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "", 0, "datamatrix_hvwsp1_bind1_dotty.svg", "" }, + /* 45*/ { BARCODE_DBAR_LTD, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "12345678909", "", 0, "dbar_ltd.svg", "" }, + /* 46*/ { BARCODE_PDF417, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, "", "", 0, "Your Data Here!", "", ZINT_WARN_NONCOMPLIANT, "pdf417_height5.svg", "" }, + /* 47*/ { BARCODE_USPS_IMAIL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7.75, "", "", 0, "12345678901234567890", "", 0, "imail_height7.75.svg", "" }, + /* 48*/ { BARCODE_ULTRA, -1, 3, BARCODE_BOX, 2, 2, -1, -1, -1, -1, 0, "FF0000", "0000FF", 0, "12345678901234567890", "", 0, "ultra_fgbg_hvwsp2_box3.svg", "" }, + /* 49*/ { BARCODE_TELEPEN, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0.4, "", "", 180, "A", "", 0, "telepen_height0.4_rotate_180.svg", "" }, + /* 50*/ { BARCODE_CODE49, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "FF11157F", "", 0, "A", "", 0, "code49_comph_fgalpha.svg", "" }, + /* 51*/ { BARCODE_CODABLOCKF, -1, -1, COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, 2, 0, "00000033", "FFFFFF66", 0, "1234567890123456789012345678901234", "", 0, "codablockf_comph_sep2_fgbgalpha.svg", "" }, + /* 52*/ { BARCODE_DPD, -1, -1, BARCODE_QUIET_ZONES | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "", "", 0, "008182709980000020028101276", "", 0, "dpd_compliant.svg", "" }, + /* 53*/ { BARCODE_CHANNEL, -1, -1, CMYK_COLOUR | COMPLIANT_HEIGHT, -1, -1, -1, -1, -1, -1, 0, "100,85,0,20", "FFFFFF00", 0, "123", "", 0, "channel_cmyk_nobg.svg", "" }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -189,11 +190,11 @@ static void test_print(const testCtx *const p_ctx) { assert_nonzero(testUtilDataPath(expected_file, sizeof(expected_file), data_dir, data[i].expected_file), "i:%d testUtilDataPath == 0\n", i); if (p_ctx->generate) { - printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %d, %.8g, \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\" },\n", + printf(" /*%3d*/ { %s, %s, %d, %s, %d, %d, %d, %d, %d, %d, %.8g, \"%s\", \"%s\", %d, \"%s\", \"%s\", \"%s\", \"%s\" },\n", i, testUtilBarcodeName(data[i].symbology), testUtilInputModeName(data[i].input_mode), data[i].border_width, testUtilOutputOptionsName(data[i].output_options), data[i].whitespace_width, data[i].whitespace_height, data[i].show_hrt, data[i].option_1, data[i].option_2, data[i].option_3, data[i].height, data[i].fgcolour, data[i].bgcolour, data[i].rotate_angle, - testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file); + testUtilEscape(data[i].data, length, escaped, escaped_size), data[i].composite, data[i].expected_file, data[i].comment); ret = testUtilRename(symbol->outfile, expected_file); assert_zero(ret, "i:%d testUtilRename(%s, %s) ret %d != 0\n", i, symbol->outfile, expected_file, ret); if (have_libreoffice) { diff --git a/backend/tests/test_vector.c b/backend/tests/test_vector.c index 55cf9e73..6a56a0f0 100644 --- a/backend/tests/test_vector.c +++ b/backend/tests/test_vector.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2022 Robin Stuart + Copyright (C) 2019-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -29,27 +29,35 @@ */ /* SPDX-License-Identifier: BSD-3-Clause */ +#include #include "testcommon.h" +/* Round to 3 decimal places (avoids rounding differences on various platforms) */ +#define rnd3dpf(m) stripf(roundf((m) * 1000) / 1000) + static struct zint_vector_rect *find_rect(struct zint_symbol *symbol, float x, float y, float width, float height) { struct zint_vector_rect *rect; if (symbol->vector == NULL) { return NULL; } + x = rnd3dpf(x); + y = rnd3dpf(y); + width = rnd3dpf(width); + height = rnd3dpf(height); for (rect = symbol->vector->rectangles; rect != NULL; rect = rect->next) { - /* printf("x %.8g, y %.8g, width %.8g, height %.8g\n", rect->x, rect->y, rect->width, rect->height); */ - if (rect->x == stripf(x) && rect->y == stripf(y)) { + /* printf("x %.9g, y %.9g, width %.9g, height %.9g\n", rect->x, rect->y, rect->width, rect->height); */ + if (rnd3dpf(rect->x) == x && rnd3dpf(rect->y) == y) { if (height && width) { - if (rect->height == stripf(height) && rect->width == stripf(width)) { + if (rnd3dpf(rect->height) == height && rnd3dpf(rect->width) == width) { break; } } else if (height) { - if (rect->height == stripf(height)) { + if (rnd3dpf(rect->height) == height) { break; } } else if (width) { - if (rect->width == stripf(width)) { + if (rnd3dpf(rect->width) == width) { break; } } else { @@ -67,11 +75,14 @@ static struct zint_vector_circle *find_circle(struct zint_symbol *symbol, float if (symbol->vector == NULL) { return NULL; } + x = rnd3dpf(x); + y = rnd3dpf(y); + diameter = rnd3dpf(diameter); for (circle = symbol->vector->circles; circle != NULL; circle = circle->next) { /* printf("x %.8g, y %.8g, diamter %.8g\n", circle->x, circle->y, circle->diameter); */ - if (circle->x == stripf(x) && circle->y == stripf(y)) { + if (rnd3dpf(circle->x) == x && rnd3dpf(circle->y) == y) { if (diameter) { - if (circle->diameter == stripf(diameter)) { + if (rnd3dpf(circle->diameter) == diameter) { break; } } else { @@ -83,6 +94,374 @@ static struct zint_vector_circle *find_circle(struct zint_symbol *symbol, float return circle; } +static struct zint_vector_string *find_string(struct zint_symbol *symbol, float x, float y) { + struct zint_vector_string *string; + + if (symbol->vector == NULL) { + return NULL; + } + x = rnd3dpf(x); + y = rnd3dpf(y); + for (string = symbol->vector->strings; string != NULL; string = string->next) { + /* printf("string->x %.9g, string->y %.9g\n", string->x, string->y); */ + if (rnd3dpf(string->x) == x && rnd3dpf(string->y) == y) { + break; + } + } + + return string; +} + +/* Helper to check string vectors */ +static int check_vector_strings(const struct zint_symbol *symbol, char errmsg[128]) { + const int has_hrt = ZBarcode_Cap(symbol->symbology, ZINT_CAP_HRT) == ZINT_CAP_HRT; + const struct zint_vector *vector = symbol->vector; + const struct zint_vector_string *string; + int i, length; + + if (!vector) { + strcpy(errmsg, "vector NULL"); + return 0; + } + if (symbol->show_hrt && has_hrt) { + if (!symbol->vector->strings) { + strcpy(errmsg, "vector->strings NULL"); + return 0; + } + for (string = symbol->vector->strings, i = 0; string; string = string->next, i++) { + if (string->x < 0.0f) { + sprintf(errmsg, "string[%d]->x %g negative", i, string->x); + return 0; + } + if (string->x >= vector->width) { + sprintf(errmsg, "string[%d]->x %g >= vector->width %g", i, string->x, vector->width); + return 0; + } + if (string->y < 0.0f) { + sprintf(errmsg, "string[%d]->y %g negative", i, string->y); + return 0; + } + if (string->y >= vector->height) { + sprintf(errmsg, "string[%d]->y %g >= vector->height %g", i, string->y, vector->height); + return 0; + } + if (string->fsize < 1.0f) { + sprintf(errmsg, "string[%d]->fsize %g < 1", i, string->fsize); + return 0; + } + if (string->width <= 0.0f) { + sprintf(errmsg, "string[%d]->width %g zero or negative", i, string->width); + return 0; + } + if (string->rotation != 0 && string->rotation != 90 && string->rotation != 180 && string->rotation != 270) { + sprintf(errmsg, "string[%d]->rotation %d not 0, 90, 180, 270", i, string->rotation); + return 0; + } + if (!string->text) { + sprintf(errmsg, "string[%d]->text NULL", i); + return 0; + } + length = (int) ustrlen(string->text); + if (string->length != length) { + sprintf(errmsg, "string[%d]->length != %d", string->length, length); + return 0; + } + } + if (is_extendable(symbol->symbology)) { + const unsigned char *addon = (const unsigned char *) strchr((const char *) symbol->text, '+'); + const int has_addon = addon != NULL; + const int text_len = has_addon ? (int) (addon - symbol->text) : (int) ustrlen(symbol->text); + int num = -1; + switch (symbol->symbology) { + case BARCODE_EANX: + case BARCODE_EANX_CHK: + case BARCODE_ISBNX: + case BARCODE_EANX_CC: + num = text_len <= 8 ? text_len <= 5 ? 1 : 2 : 3; + break; + case BARCODE_UPCA: + case BARCODE_UPCA_CHK: + case BARCODE_UPCA_CC: + num = 4; + break; + case BARCODE_UPCE: + case BARCODE_UPCE_CHK: + case BARCODE_UPCE_CC: + num = 3; + break; + default: + strcpy(errmsg, "unhandled EAN/UPC"); + return 0; + break; + } + if (i != num + has_addon) { + printf("num %d, text_len %d, has_addon %d\n", num, text_len, has_addon); + sprintf(errmsg, "no. of strings %d != %d", i, num + has_addon); + return 0; + } + } else { + if (i > 1) { + sprintf(errmsg, "no. of strings %d > 1", i); + return 0; + } + } + } else { + if (symbol->vector->strings) { + strcpy(errmsg, "vector->strings not NULL"); + return 0; + } + } + return 1; +} + +/* Helper to check rectangle vectors */ +static int check_vector_rectangles(const struct zint_symbol *symbol, char errmsg[128]) { + const struct zint_vector *vector = symbol->vector; + const struct zint_vector_rect *rect; + const int have_border = symbol->border_width && (symbol->output_options & (BARCODE_BIND | BARCODE_BOX | BARCODE_BIND_TOP)); + const int dotty = is_dotty(symbol->symbology) && (symbol->output_options & BARCODE_DOTTY_MODE); + int i; + + if (!vector) { + strcpy(errmsg, "vector NULL"); + return 0; + } + if (have_border) { + if (!vector->rectangles) { + strcpy(errmsg, "rectangles NULL"); + return 0; + } + } else { + if (symbol->symbology == BARCODE_DOTCODE || symbol->symbology == BARCODE_MAXICODE) { + if (vector->rectangles) { + strcpy(errmsg, "rectangles not NULL"); + return 0; + } + } else { + if (!dotty) { + if (!vector->rectangles) { + strcpy(errmsg, "rectangles NULL"); + return 0; + } + } + } + } + for (rect = vector->rectangles, i = 0; rect; rect = rect->next, i++) { + if (rect->x < 0.0f) { + sprintf(errmsg, "rect[%d]->x %g negative", i, rect->x); + return 0; + } + if (rect->x >= vector->width) { + sprintf(errmsg, "rect[%d]->x %g >= vector->width %g", i, rect->x, vector->width); + return 0; + } + if (rect->y < 0.0f) { + sprintf(errmsg, "rect[%d]->y %g negative", i, rect->y); + return 0; + } + if (rect->y >= vector->height) { + sprintf(errmsg, "rect[%d]->y %g >= vector->height %g", i, rect->y, vector->height); + return 0; + } + if (rect->width <= 0.0f) { + sprintf(errmsg, "rect[%d]->width %g <= 0", i, rect->width); + return 0; + } + if (rect->width > vector->width) { + sprintf(errmsg, "rect[%d]->width %g > vector->width %g", i, rect->width, vector->width); + return 0; + } + if (stripf(rect->x + rect->width) > vector->width) { + sprintf(errmsg, "rect[%d]->x + width %g > vector->width %g", i, rect->x + rect->width, vector->width); + return 0; + } + if (rect->height <= 0.0f) { + sprintf(errmsg, "rect[%d]->height %g <= 0", i, rect->height); + return 0; + } + if (rect->height > vector->height) { + sprintf(errmsg, "rect[%d]->height %g > vector->height %g", i, rect->height, vector->height); + return 0; + } + if (stripf(rect->y + rect->height) > vector->height) { + sprintf(errmsg, "rect[%d]->y + height %g > vector->height %g", i, rect->y + rect->height, vector->height); + return 0; + } + + if (symbol->symbology == BARCODE_ULTRA) { + if (rect->colour != -1 && (rect->colour < 1 || rect->colour > 8)) { + sprintf(errmsg, "rect[%d]->colour %d != -1 and not 1-8", i, rect->colour); + return 0; + } + } else { + if (rect->colour != -1) { + sprintf(errmsg, "rect[%d]->colour %d != -1", i, rect->colour); + return 0; + } + } + } + return 1; +} + +/* Helper to check circle vectors */ +static int check_vector_circles(const struct zint_symbol *symbol, char errmsg[128]) { + const struct zint_vector *vector = symbol->vector; + const struct zint_vector_circle *circle; + const int dotty = is_dotty(symbol->symbology) && (symbol->output_options & BARCODE_DOTTY_MODE); + int i; + + if (!vector) { + strcpy(errmsg, "vector NULL"); + return 0; + } + if (symbol->symbology == BARCODE_DOTCODE || symbol->symbology == BARCODE_MAXICODE) { + if (!vector->circles) { + strcpy(errmsg, "circles NULL"); + return 0; + } + } else { + if (vector->circles) { + if (!dotty) { + strcpy(errmsg, "circles not NULL"); + return 0; + } + } else { + if (dotty) { + strcpy(errmsg, "circles NULL"); + return 0; + } + } + } + for (circle = vector->circles, i = 0; circle; circle = circle->next, i++) { + if (circle->x < 0.0f) { + sprintf(errmsg, "circle[%d]->x %g negative", i, circle->x); + return 0; + } + if (circle->x >= vector->width) { + sprintf(errmsg, "circle[%d]->x %g >= vector->width %g", i, circle->x, vector->width); + return 0; + } + if (circle->y < 0.0f) { + sprintf(errmsg, "circle[%d]->y %g negative", i, circle->y); + return 0; + } + if (circle->y >= vector->height) { + sprintf(errmsg, "circle[%d]->y %g >= vector->height %g", i, circle->y, vector->height); + return 0; + } + if (circle->diameter <= 0.0f) { + sprintf(errmsg, "circle[%d]->diameter %g <= 0", i, circle->diameter); + return 0; + } + if (circle->diameter > vector->width) { + sprintf(errmsg, "circle[%d]->diameter %g > vector->diameter %g", i, circle->diameter, vector->width); + return 0; + } + if (circle->diameter > vector->height) { + sprintf(errmsg, "circle[%d]->diameter %g > vector->height %g", i, circle->diameter, vector->height); + return 0; + } + if (stripf(circle->x + circle->diameter / 2) > vector->width) { + sprintf(errmsg, "circle[%d]->x + diameter / 2 %g > vector->width %g", i, circle->x + circle->diameter / 2, vector->width); + return 0; + } + if (stripf(circle->y + circle->diameter / 2) > vector->height) { + sprintf(errmsg, "circle[%d]->y + diameter / 2 %g > vector->height %g", i, circle->y + circle->diameter / 2, vector->height); + return 0; + } + + if (circle->colour != 0) { + sprintf(errmsg, "circle[%d]->colour %d != 0", i, circle->colour); + return 0; + } + } + return 1; +} + +/* Helper to check hexagon vectors */ +static int check_vector_hexagons(const struct zint_symbol *symbol, char errmsg[128]) { + const struct zint_vector *vector = symbol->vector; + const struct zint_vector_hexagon *hex; + int i; + + if (!vector) { + strcpy(errmsg, "vector NULL"); + return 0; + } + if (symbol->symbology == BARCODE_MAXICODE) { + if (!vector->hexagons) { + strcpy(errmsg, "hexagons NULL"); + return 0; + } + } else { + if (vector->hexagons) { + strcpy(errmsg, "hexagons not NULL"); + return 0; + } + } + for (hex = vector->hexagons, i = 0; hex; hex = hex->next, i++) { + if (hex->x < 0.0f) { + sprintf(errmsg, "hex[%d]->x %g negative", i, hex->x); + return 0; + } + if (hex->x >= vector->width) { + sprintf(errmsg, "hex[%d]->x %g >= vector->width %g", i, hex->x, vector->width); + return 0; + } + if (hex->y < 0.0f) { + sprintf(errmsg, "hex[%d]->y %g negative", i, hex->y); + return 0; + } + if (hex->y >= vector->height) { + sprintf(errmsg, "hex[%d]->y %g >= vector->height %g", i, hex->y, vector->height); + return 0; + } + if (hex->diameter <= 0.0f) { + sprintf(errmsg, "hex[%d]->diameter %g <= 0", i, hex->diameter); + return 0; + } + if (hex->diameter > vector->width) { + sprintf(errmsg, "hex[%d]->diameter %g > vector->diameter %g", i, hex->diameter, vector->width); + return 0; + } + if (hex->diameter > vector->height) { + sprintf(errmsg, "hex[%d]->diameter %g > vector->height %g", i, hex->diameter, vector->height); + return 0; + } + if (stripf(hex->x + hex->diameter / 2) > vector->width) { + sprintf(errmsg, "hex[%d]->x + diameter / 2 %g > vector->width %g", i, hex->x + hex->diameter / 2, vector->width); + return 0; + } + if (stripf(hex->y + hex->diameter / 2) > vector->height) { + sprintf(errmsg, "hex[%d]->y + diameter / 2 %g > vector->height %g", i, hex->y + hex->diameter / 2, vector->height); + return 0; + } + + if (hex->rotation != 0 && hex->rotation != 90 && hex->rotation != 180 && hex->rotation != 270) { + sprintf(errmsg, "hex[%d]->rotation %d not 0, 90, 180, 270", i, hex->rotation); + return 0; + } + } + return 1; +} + +/* Helper to check vectors */ +static int check_vectors(const struct zint_symbol *symbol, char errmsg[128]) { + if (!check_vector_strings(symbol, errmsg)) { + return 0; + } + if (!check_vector_rectangles(symbol, errmsg)) { + return 0; + } + if (!check_vector_circles(symbol, errmsg)) { + return 0; + } + if (!check_vector_hexagons(symbol, errmsg)) { + return 0; + } + return 1; +} + static void test_options(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -169,22 +548,22 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /* 5*/ { BARCODE_C25IND, "1234567890", "", 50, 1, 159, 318, 118.900002 }, /* 6*/ { BARCODE_CODE39, "1234567890", "", 50, 1, 155, 310, 118.900002 }, /* 7*/ { BARCODE_EXCODE39, "1234567890", "", 50, 1, 155, 310, 118.900002 }, - /* 8*/ { BARCODE_EANX, "123456789012", "", 50, 1, 95, 226, 116.400002 }, - /* 9*/ { BARCODE_EANX_CHK, "1234567890128", "", 50, 1, 95, 226, 116.400002 }, - /* 10*/ { BARCODE_EANX, "123456789012+12", "", 50, 1, 122, 276, 116.400002 }, - /* 11*/ { BARCODE_EANX_CHK, "1234567890128+12", "", 50, 1, 122, 276, 116.400002 }, - /* 12*/ { BARCODE_EANX, "123456789012+12345", "", 50, 1, 149, 330, 116.400002 }, - /* 13*/ { BARCODE_EANX_CHK, "1234567890128+12345", "", 50, 1, 149, 330, 116.400002 }, - /* 14*/ { BARCODE_EANX, "1234567", "", 50, 1, 67, 162, 116.400002 }, - /* 15*/ { BARCODE_EANX_CHK, "12345670", "", 50, 1, 67, 162, 116.400002 }, - /* 16*/ { BARCODE_EANX, "1234567+12", "", 50, 1, 94, 216, 116.400002 }, - /* 17*/ { BARCODE_EANX_CHK, "12345670+12", "", 50, 1, 94, 216, 116.400002 }, - /* 18*/ { BARCODE_EANX, "1234567+12345", "", 50, 1, 121, 270, 116.400002 }, - /* 19*/ { BARCODE_EANX_CHK, "12345670+12345", "", 50, 1, 121, 270, 116.400002 }, - /* 20*/ { BARCODE_EANX, "1234", "", 50, 1, 47, 118, 116.400002 }, - /* 21*/ { BARCODE_EANX_CHK, "1234", "", 50, 1, 47, 118, 116.400002 }, - /* 22*/ { BARCODE_EANX, "12", "", 50, 1, 20, 64, 116.400002 }, - /* 23*/ { BARCODE_EANX_CHK, "12", "", 50, 1, 20, 64, 116.400002 }, + /* 8*/ { BARCODE_EANX, "123456789012", "", 50, 1, 95, 226, 116.9 }, + /* 9*/ { BARCODE_EANX_CHK, "1234567890128", "", 50, 1, 95, 226, 116.9 }, + /* 10*/ { BARCODE_EANX, "123456789012+12", "", 50, 1, 122, 276, 116.9 }, + /* 11*/ { BARCODE_EANX_CHK, "1234567890128+12", "", 50, 1, 122, 276, 116.9 }, + /* 12*/ { BARCODE_EANX, "123456789012+12345", "", 50, 1, 149, 330, 116.9 }, + /* 13*/ { BARCODE_EANX_CHK, "1234567890128+12345", "", 50, 1, 149, 330, 116.9 }, + /* 14*/ { BARCODE_EANX, "1234567", "", 50, 1, 67, 162, 116.9 }, + /* 15*/ { BARCODE_EANX_CHK, "12345670", "", 50, 1, 67, 162, 116.9 }, + /* 16*/ { BARCODE_EANX, "1234567+12", "", 50, 1, 94, 216, 116.9 }, + /* 17*/ { BARCODE_EANX_CHK, "12345670+12", "", 50, 1, 94, 216, 116.9 }, + /* 18*/ { BARCODE_EANX, "1234567+12345", "", 50, 1, 121, 270, 116.9 }, + /* 19*/ { BARCODE_EANX_CHK, "12345670+12345", "", 50, 1, 121, 270, 116.9 }, + /* 20*/ { BARCODE_EANX, "1234", "", 50, 1, 47, 118, 116.9 }, + /* 21*/ { BARCODE_EANX_CHK, "1234", "", 50, 1, 47, 118, 116.9 }, + /* 22*/ { BARCODE_EANX, "12", "", 50, 1, 20, 64, 116.9 }, + /* 23*/ { BARCODE_EANX_CHK, "12", "", 50, 1, 20, 64, 116.9 }, /* 24*/ { BARCODE_GS1_128, "[01]12345678901231", "", 50, 1, 134, 268, 118.900002 }, /* 25*/ { BARCODE_CODABAR, "A00000000B", "", 50, 1, 102, 204, 118.900002 }, /* 26*/ { BARCODE_CODE128, "1234567890", "", 50, 1, 90, 180, 118.900002 }, @@ -198,18 +577,18 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /* 34*/ { BARCODE_DBAR_LTD, "1234567890123", "", 50, 1, 79, 158, 118.900002 }, /* 35*/ { BARCODE_DBAR_EXP, "[01]12345678901231", "", 34, 1, 134, 268, 86.9000015 }, /* 36*/ { BARCODE_TELEPEN, "1234567890", "", 50, 1, 208, 416, 118.900002 }, - /* 37*/ { BARCODE_UPCA, "12345678901", "", 50, 1, 95, 226, 116.400002 }, - /* 38*/ { BARCODE_UPCA_CHK, "123456789012", "", 50, 1, 95, 226, 116.400002 }, - /* 39*/ { BARCODE_UPCA, "12345678901+12", "", 50, 1, 124, 276, 116.400002 }, - /* 40*/ { BARCODE_UPCA_CHK, "123456789012+12", "", 50, 1, 124, 276, 116.400002 }, - /* 41*/ { BARCODE_UPCA, "12345678901+12345", "", 50, 1, 151, 330, 116.400002 }, - /* 42*/ { BARCODE_UPCA_CHK, "123456789012+12345", "", 50, 1, 151, 330, 116.400002 }, - /* 43*/ { BARCODE_UPCE, "1234567", "", 50, 1, 51, 134, 116.400002 }, - /* 44*/ { BARCODE_UPCE_CHK, "12345670", "", 50, 1, 51, 134, 116.400002 }, - /* 45*/ { BARCODE_UPCE, "1234567+12", "", 50, 1, 78, 184, 116.400002 }, - /* 46*/ { BARCODE_UPCE_CHK, "12345670+12", "", 50, 1, 78, 184, 116.400002 }, - /* 47*/ { BARCODE_UPCE, "1234567+12345", "", 50, 1, 105, 238, 116.400002 }, - /* 48*/ { BARCODE_UPCE_CHK, "12345670+12345", "", 50, 1, 105, 238, 116.400002 }, + /* 37*/ { BARCODE_UPCA, "12345678901", "", 50, 1, 95, 226, 116.9 }, + /* 38*/ { BARCODE_UPCA_CHK, "123456789012", "", 50, 1, 95, 226, 116.9 }, + /* 39*/ { BARCODE_UPCA, "12345678901+12", "", 50, 1, 124, 276, 116.9 }, + /* 40*/ { BARCODE_UPCA_CHK, "123456789012+12", "", 50, 1, 124, 276, 116.9 }, + /* 41*/ { BARCODE_UPCA, "12345678901+12345", "", 50, 1, 151, 330, 116.9 }, + /* 42*/ { BARCODE_UPCA_CHK, "123456789012+12345", "", 50, 1, 151, 330, 116.9 }, + /* 43*/ { BARCODE_UPCE, "1234567", "", 50, 1, 51, 134, 116.9 }, + /* 44*/ { BARCODE_UPCE_CHK, "12345670", "", 50, 1, 51, 134, 116.9 }, + /* 45*/ { BARCODE_UPCE, "1234567+12", "", 50, 1, 78, 184, 116.9 }, + /* 46*/ { BARCODE_UPCE_CHK, "12345670+12", "", 50, 1, 78, 184, 116.9 }, + /* 47*/ { BARCODE_UPCE, "1234567+12345", "", 50, 1, 105, 238, 116.9 }, + /* 48*/ { BARCODE_UPCE_CHK, "12345670+12345", "", 50, 1, 105, 238, 116.9 }, /* 49*/ { BARCODE_POSTNET, "12345678901", "", 12, 2, 123, 246, 24 }, /* 50*/ { BARCODE_MSI_PLESSEY, "1234567890", "", 50, 1, 127, 254, 118.900002 }, /* 51*/ { BARCODE_FIM, "A", "", 50, 1, 17, 34, 100 }, @@ -227,9 +606,9 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /* 63*/ { BARCODE_AUSREPLY, "12345678", "", 8, 3, 73, 146, 16 }, /* 64*/ { BARCODE_AUSROUTE, "12345678", "", 8, 3, 73, 146, 16 }, /* 65*/ { BARCODE_AUSREDIRECT, "12345678", "", 8, 3, 73, 146, 16 }, - /* 66*/ { BARCODE_ISBNX, "123456789", "", 50, 1, 95, 226, 116.400002 }, - /* 67*/ { BARCODE_ISBNX, "123456789+12", "", 50, 1, 122, 276, 116.400002 }, - /* 68*/ { BARCODE_ISBNX, "123456789+12345", "", 50, 1, 149, 330, 116.400002 }, + /* 66*/ { BARCODE_ISBNX, "123456789", "", 50, 1, 95, 226, 116.9 }, + /* 67*/ { BARCODE_ISBNX, "123456789+12", "", 50, 1, 122, 276, 116.9 }, + /* 68*/ { BARCODE_ISBNX, "123456789+12345", "", 50, 1, 149, 330, 116.9 }, /* 69*/ { BARCODE_RM4SCC, "1234567890", "", 8, 3, 91, 182, 16 }, /* 70*/ { BARCODE_DATAMATRIX, "ABC", "", 10, 10, 10, 20, 20 }, /* 71*/ { BARCODE_EAN14, "1234567890123", "", 50, 1, 134, 268, 118.900002 }, @@ -267,22 +646,22 @@ static void test_buffer_vector(const testCtx *const p_ctx) { /*103*/ { BARCODE_MAILMARK_4S, "01000000000000000AA00AA0A", "", 10, 3, 155, 310, 20 }, /*104*/ { BARCODE_AZRUNE, "255", "", 11, 11, 11, 22, 22 }, /*105*/ { BARCODE_CODE32, "12345678", "", 50, 1, 103, 206, 118.900002 }, - /*106*/ { BARCODE_EANX_CC, "123456789012", "[20]01", 50, 7, 99, 234, 116.400002 }, - /*107*/ { BARCODE_EANX_CC, "123456789012+12", "[20]01", 50, 7, 126, 284, 116.400002 }, - /*108*/ { BARCODE_EANX_CC, "123456789012+12345", "[20]01", 50, 7, 153, 338, 116.400002 }, - /*109*/ { BARCODE_EANX_CC, "1234567", "[20]01", 50, 8, 72, 172, 116.400002 }, - /*110*/ { BARCODE_EANX_CC, "1234567+12", "[20]01", 50, 8, 99, 226, 116.400002 }, - /*111*/ { BARCODE_EANX_CC, "1234567+12345", "[20]01", 50, 8, 126, 280, 116.400002 }, + /*106*/ { BARCODE_EANX_CC, "123456789012", "[20]01", 50, 7, 99, 234, 116.9 }, + /*107*/ { BARCODE_EANX_CC, "123456789012+12", "[20]01", 50, 7, 126, 284, 116.9 }, + /*108*/ { BARCODE_EANX_CC, "123456789012+12345", "[20]01", 50, 7, 153, 338, 116.9 }, + /*109*/ { BARCODE_EANX_CC, "1234567", "[20]01", 50, 8, 72, 172, 116.9 }, + /*110*/ { BARCODE_EANX_CC, "1234567+12", "[20]01", 50, 8, 99, 226, 116.9 }, + /*111*/ { BARCODE_EANX_CC, "1234567+12345", "[20]01", 50, 8, 126, 280, 116.9 }, /*112*/ { BARCODE_GS1_128_CC, "[01]12345678901231", "[20]01", 50, 5, 145, 290, 118.900002 }, /*113*/ { BARCODE_DBAR_OMN_CC, "1234567890123", "[20]01", 21, 5, 100, 200, 60.9000015 }, /*114*/ { BARCODE_DBAR_LTD_CC, "1234567890123", "[20]01", 19, 6, 79, 158, 56.9000015 }, /*115*/ { BARCODE_DBAR_EXP_CC, "[01]12345678901231", "[20]01", 41, 5, 134, 268, 100.900002 }, - /*116*/ { BARCODE_UPCA_CC, "12345678901", "[20]01", 50, 7, 99, 234, 116.400002 }, - /*117*/ { BARCODE_UPCA_CC, "12345678901+12", "[20]01", 50, 7, 128, 284, 116.400002 }, - /*118*/ { BARCODE_UPCA_CC, "12345678901+12345", "[20]01", 50, 7, 155, 338, 116.400002 }, - /*119*/ { BARCODE_UPCE_CC, "1234567", "[20]01", 50, 9, 55, 142, 116.400002 }, - /*120*/ { BARCODE_UPCE_CC, "1234567+12", "[20]01", 50, 9, 82, 192, 116.400002 }, - /*121*/ { BARCODE_UPCE_CC, "1234567+12345", "[20]01", 50, 9, 109, 246, 116.400002 }, + /*116*/ { BARCODE_UPCA_CC, "12345678901", "[20]01", 50, 7, 99, 234, 116.9 }, + /*117*/ { BARCODE_UPCA_CC, "12345678901+12", "[20]01", 50, 7, 128, 284, 116.9 }, + /*118*/ { BARCODE_UPCA_CC, "12345678901+12345", "[20]01", 50, 7, 155, 338, 116.9 }, + /*119*/ { BARCODE_UPCE_CC, "1234567", "[20]01", 50, 9, 55, 142, 116.9 }, + /*120*/ { BARCODE_UPCE_CC, "1234567+12", "[20]01", 50, 9, 82, 192, 116.9 }, + /*121*/ { BARCODE_UPCE_CC, "1234567+12345", "[20]01", 50, 9, 109, 246, 116.9 }, /*122*/ { BARCODE_DBAR_STK_CC, "1234567890123", "[20]01", 24, 9, 56, 112, 48 }, /*123*/ { BARCODE_DBAR_OMNSTK_CC, "1234567890123", "[20]01", 80, 11, 56, 112, 160 }, /*124*/ { BARCODE_DBAR_EXPSTK_CC, "[01]12345678901231", "[20]01", 78, 9, 102, 204, 156 }, @@ -299,6 +678,7 @@ static void test_buffer_vector(const testCtx *const p_ctx) { struct zint_symbol *symbol; char *text; + char errmsg[128]; testStart("test_buffer_vector"); @@ -333,13 +713,19 @@ static void test_buffer_vector(const testCtx *const p_ctx) { i, testUtilBarcodeName(data[i].symbology), data[i].data, data[i].composite, symbol->height, symbol->rows, symbol->width, symbol->vector->width, symbol->vector->height); } else { - assert_equal(symbol->height, data[i].expected_height, "i:%d (%s) symbol->height %.8g != %.8g\n", i, testUtilBarcodeName(data[i].symbology), symbol->height, data[i].expected_height); - assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%s) symbol->rows %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->rows, data[i].expected_rows); - assert_equal(symbol->width, data[i].expected_width, "i:%d (%s) symbol->width %d != %d\n", i, testUtilBarcodeName(data[i].symbology), symbol->width, data[i].expected_width); + assert_equal(symbol->height, data[i].expected_height, "i:%d (%s) symbol->height %.8g != %.8g\n", + i, testUtilBarcodeName(data[i].symbology), symbol->height, data[i].expected_height); + assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%s) symbol->rows %d != %d\n", + i, testUtilBarcodeName(data[i].symbology), symbol->rows, data[i].expected_rows); + assert_equal(symbol->width, data[i].expected_width, "i:%d (%s) symbol->width %d != %d\n", + i, testUtilBarcodeName(data[i].symbology), symbol->width, data[i].expected_width); assert_equal(symbol->vector->width, data[i].expected_vector_width, "i:%d (%s) symbol->vector->width %.8g != %.8g\n", i, testUtilBarcodeName(data[i].symbology), symbol->vector->width, data[i].expected_vector_width); assert_equal(symbol->vector->height, data[i].expected_vector_height, "i:%d (%s) symbol->vector->height %.8g != %.8g\n", i, testUtilBarcodeName(data[i].symbology), symbol->vector->height, data[i].expected_vector_height); + + assert_nonzero(check_vectors(symbol, errmsg), "i:%d (%s) %s\n", + i, testUtilBarcodeName(data[i].symbology), errmsg); } ZBarcode_Delete(symbol); @@ -461,7 +847,7 @@ static void test_has_hrt(const testCtx *const p_ctx) { struct zint_symbol *symbol; char *text; - unsigned int has_hrt; + char errmsg[128]; testStart("test_has_hrt"); @@ -488,12 +874,8 @@ static void test_has_hrt(const testCtx *const p_ctx) { assert_zero(ret, "i:%d ZBarcode_Encode_and_Buffer_Vector(%d) ret %d != 0 %s\n", i, data[i].symbology, ret, symbol->errtxt); assert_nonnull(symbol->vector, "i:%d ZBarcode_Encode_and_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); - has_hrt = ZBarcode_Cap(symbol->symbology, ZINT_CAP_HRT) == ZINT_CAP_HRT; - if (has_hrt) { - assert_nonnull(symbol->vector->strings, "i:%d ZBarcode_Encode_and_Buffer_Vector(%d) vector->strings NULL\n", i, data[i].symbology); - } else { - assert_null(symbol->vector->strings, "i:%d ZBarcode_Encode_and_Buffer_Vector(%d) vector->strings not NULL\n", i, data[i].symbology); - } + assert_nonzero(check_vectors(symbol, errmsg), "i:%d ZBarcode_Encode_and_Buffer_Vector(%d) %s\n", + i, data[i].symbology, errmsg); ZBarcode_Delete(symbol); } @@ -520,45 +902,45 @@ static void test_upcean_hrt(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 116.4, 12, -1 }, /* EAN-13 */ + /* 0*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 116.9, 12.2, -1 }, /* EAN-13 */ /* 1*/ { BARCODE_EANX, 0, "123456789012", 0, 50, 1, 95, 226, 110, -1, -1 }, /* EAN-13 */ - /* 2*/ { BARCODE_EANX_CHK, -1, "1234567890128", 0, 50, 1, 95, 226, 116.4, 12, -1 }, /* EAN-13 */ + /* 2*/ { BARCODE_EANX_CHK, -1, "1234567890128", 0, 50, 1, 95, 226, 116.9, 12.2, -1 }, /* EAN-13 */ /* 3*/ { BARCODE_EANX_CHK, 0, "1234567890128", 0, 50, 1, 95, 226, 110, -1, -1 }, /* EAN-13 */ - /* 4*/ { BARCODE_ISBNX, -1, "9784567890120", 0, 50, 1, 95, 226, 116.4, 12, -1 }, + /* 4*/ { BARCODE_ISBNX, -1, "9784567890120", 0, 50, 1, 95, 226, 116.9, 12.2, -1 }, /* 5*/ { BARCODE_ISBNX, 0, "9784567890120", 0, 50, 1, 95, 226, 110, -1, -1 }, - /* 6*/ { BARCODE_EANX, -1, "1234567", 0, 50, 1, 67, 162, 116.4, 48, -1 }, /* EAN-8 */ + /* 6*/ { BARCODE_EANX, -1, "1234567", 0, 50, 1, 67, 162, 116.9, 49, -1 }, /* EAN-8 */ /* 7*/ { BARCODE_EANX, 0, "1234567", 0, 50, 1, 67, 162, 110, -1, -1 }, /* EAN-8 */ - /* 8*/ { BARCODE_EANX, -1, "1234", 0, 50, 1, 47, 118, 116.4, 61, -1 }, /* EAN-5 */ + /* 8*/ { BARCODE_EANX, -1, "1234", 0, 50, 1, 47, 118, 116.9, 61, -1 }, /* EAN-5 */ /* 9*/ { BARCODE_EANX, 0, "1234", 0, 50, 1, 47, 118, 100, -1, -1 }, /* EAN-5 */ - /* 10*/ { BARCODE_EANX, -1, "12", 0, 50, 1, 20, 64, 116.4, 34, -1 }, /* EAN-2 */ + /* 10*/ { BARCODE_EANX, -1, "12", 0, 50, 1, 20, 64, 116.9, 34, -1 }, /* EAN-2 */ /* 11*/ { BARCODE_EANX, 0, "12", 0, 50, 1, 20, 64, 100, -1, -1 }, /* EAN-2 */ - /* 12*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 116.4, 8, -1 }, + /* 12*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 116.9, 8.7, -1 }, /* 13*/ { BARCODE_UPCA, 0, "12345678901", 0, 50, 1, 95, 226, 110, -1, -1 }, - /* 14*/ { BARCODE_UPCA_CHK, -1, "123456789012", 0, 50, 1, 95, 226, 116.4, 8, -1 }, + /* 14*/ { BARCODE_UPCA_CHK, -1, "123456789012", 0, 50, 1, 95, 226, 116.9, 8.7, -1 }, /* 15*/ { BARCODE_UPCA_CHK, 0, "123456789012", 0, 50, 1, 95, 226, 110, -1, -1 }, - /* 16*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 116.4, 8, -1 }, + /* 16*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 116.9, 8.7, -1 }, /* 17*/ { BARCODE_UPCE, 0, "1234567", 0, 50, 1, 51, 134, 110, -1, -1 }, - /* 18*/ { BARCODE_UPCE_CHK, -1, "12345670", 0, 50, 1, 51, 134, 116.4, 8, -1 }, + /* 18*/ { BARCODE_UPCE_CHK, -1, "12345670", 0, 50, 1, 51, 134, 116.9, 8.7, -1 }, /* 19*/ { BARCODE_UPCE_CHK, 0, "12345670", 0, 50, 1, 51, 134, 110, -1, -1 }, - /* 20*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276.0, 116.4, 12, 70 }, /* EAN-13 + EAN-2 */ + /* 20*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276.0, 116.9, 12.2, 71 }, /* EAN-13 + EAN-2 */ /* 21*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276.0, 110, -1, -1 }, /* EAN-13 + EAN-2 */ - /* 22*/ { BARCODE_ISBNX, -1, "9784567890120+12", 0, 50, 1, 122, 276.0, 116.4, 12, 70 }, /* ISBN + EAN-2 */ + /* 22*/ { BARCODE_ISBNX, -1, "9784567890120+12", 0, 50, 1, 122, 276.0, 116.9, 12.2, 71 }, /* ISBN + EAN-2 */ /* 23*/ { BARCODE_ISBNX, 0, "9784567890120+12", 0, 50, 1, 122, 276.0, 110, -1, -1 }, /* ISBN + EAN-2 */ - /* 24*/ { BARCODE_EANX, -1, "123456789012+12345", 0, 50, 1, 149, 330.0, 116.4, 12, 70 }, /* EAN-13 + EAN-5 */ + /* 24*/ { BARCODE_EANX, -1, "123456789012+12345", 0, 50, 1, 149, 330.0, 116.9, 12.2, 71 }, /* EAN-13 + EAN-5 */ /* 25*/ { BARCODE_EANX, 0, "123456789012+12345", 0, 50, 1, 149, 330.0, 110, -1, -1 }, /* EAN-13 + EAN-5 */ - /* 26*/ { BARCODE_ISBNX, -1, "9784567890120+12345", 0, 50, 1, 149, 330.0, 116.4, 12, 70 }, /* ISBN + EAN-5 */ + /* 26*/ { BARCODE_ISBNX, -1, "9784567890120+12345", 0, 50, 1, 149, 330.0, 116.9, 12.2, 71 }, /* ISBN + EAN-5 */ /* 27*/ { BARCODE_ISBNX, 0, "9784567890120+12345", 0, 50, 1, 149, 330.0, 110, -1, -1 }, /* ISBN + EAN-5 */ - /* 28*/ { BARCODE_EANX, -1, "1234567+12", 0, 50, 1, 94, 216.0, 116.4, 48, 114 }, /* EAN-8 + EAN-2 */ + /* 28*/ { BARCODE_EANX, -1, "1234567+12", 0, 50, 1, 94, 216.0, 116.9, 49, 113 }, /* EAN-8 + EAN-2 */ /* 29*/ { BARCODE_EANX, 0, "1234567+12", 0, 50, 1, 94, 216.0, 110, -1, -1 }, /* EAN-8 + EAN-2 */ - /* 30*/ { BARCODE_EANX, -1, "1234567+12345", 0, 50, 1, 121, 270.0, 116.4, 48, 114 }, /* EAN-8 + EAN-5 */ + /* 30*/ { BARCODE_EANX, -1, "1234567+12345", 0, 50, 1, 121, 270.0, 116.9, 49, 113 }, /* EAN-8 + EAN-5 */ /* 31*/ { BARCODE_EANX, 0, "1234567+12345", 0, 50, 1, 121, 270.0, 110, -1, -1 }, /* EAN-8 + EAN-5 */ - /* 32*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.4, 8, 72 }, + /* 32*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 8.7, 74 }, /* 33*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 110, -1, -1 }, - /* 34*/ { BARCODE_UPCA, -1, "12345678901+12345", 0, 50, 1, 151, 330, 116.4, 8, 72 }, + /* 34*/ { BARCODE_UPCA, -1, "12345678901+12345", 0, 50, 1, 151, 330, 116.9, 8.7, 74 }, /* 35*/ { BARCODE_UPCA, 0, "12345678901+12345", 0, 50, 1, 151, 330, 110, -1, -1 }, - /* 36*/ { BARCODE_UPCE, -1, "1234567+12", 0, 50, 1, 78, 184.0, 116.4, 8, 66 }, + /* 36*/ { BARCODE_UPCE, -1, "1234567+12", 0, 50, 1, 78, 184.0, 116.9, 8.7, 67 }, /* 37*/ { BARCODE_UPCE, 0, "1234567+12", 0, 50, 1, 78, 184.0, 110, -1, -1 }, - /* 38*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238.0, 116.4, 8, 66 }, + /* 38*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238.0, 116.9, 8.7, 67 }, /* 39*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238.0, 110, -1, -1 }, }; int data_size = ARRAY_SIZE(data); @@ -1074,9 +1456,9 @@ static void test_scale(const testCtx *const p_ctx) { /* 1*/ { BARCODE_PDF417, -1, -1, -1, 0, 0.1, "1", "", 0, 15, 5, 103, 206 * 0.1, 3, 1, 5.2000003, 0, 8 * 0.1, 6 * 0.1 }, /* 2*/ { BARCODE_PDF417, -1, -1, -1, 0, 0.3, "1", "", 0, 15, 5, 103, 61.8000031, 30 * 0.3, 1, 52 * 0.3, 0, 2.4000001, 1.8000001 }, /* 3*/ { BARCODE_PDF417, -1, -1, -1, 0, 0.6, "1", "", 0, 15, 5, 103, 123.600006, 30 * 0.6, 1, 52 * 0.6, 0, 4.8000002, 3.6000001 }, - /* 4*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142, 116.400002, 1, 34, 36, 2, 64 }, /* With no scaling */ - /* 5*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142 * 0.1, 11.6400003, 1, 34 * 0.1, 3.6000001, 2 * 0.1, 64 * 0.1 }, - /* 6*/ { BARCODE_UPCE_CC, -1, -1, -1, 0.1, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 18.5, 10, 55, 142 * 0.1, 5.34000015, 1, 34 * 0.1, 3.6000001, 2 * 0.1, 0.1 }, /* Height specified */ + /* 4*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142, 116.9, 1, 34, 36, 2, 64 }, /* With no scaling */ + /* 5*/ { BARCODE_UPCE_CC, -1, -1, -1, 0, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 50, 10, 55, 142 * 0.1, 11.6900005, 1, 34 * 0.1, 3.6000001, 2 * 0.1, 64 * 0.1 }, + /* 6*/ { BARCODE_UPCE_CC, -1, -1, -1, 0.1, 0.1, "1234567", "[17]010615[10]A123456\"", 0, 18.5, 10, 55, 142 * 0.1, 5.39000034, 1, 34 * 0.1, 3.6000001, 2 * 0.1, 0.1 }, /* Height specified */ }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -1171,40 +1553,40 @@ static void test_guard_descent(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 110 }, - /* 1*/ { BARCODE_UPCE, 0, "1234567", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 100 }, - /* 2*/ { BARCODE_UPCE, 3, "1234567", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 106 }, - /* 3*/ { BARCODE_UPCE, 8, "1234567", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 116 }, - /* 4*/ { BARCODE_UPCE, 8.2, "1234567", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 116.4 }, - /* 5*/ { BARCODE_UPCE, 8.25, "1234567", 0, 50, 1, 51, 134, 116.5, 18, 0, 2, 116.5 }, - /* 6*/ { BARCODE_UPCE, 8.3, "1234567", 0, 50, 1, 51, 134, 116.6, 18, 0, 2, 116.6 }, + /* 0*/ { BARCODE_UPCE, -1, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, + /* 1*/ { BARCODE_UPCE, 0, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 100 }, + /* 2*/ { BARCODE_UPCE, 3, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 106 }, + /* 3*/ { BARCODE_UPCE, 8, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116 }, + /* 4*/ { BARCODE_UPCE, 8.2, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116.4 }, + /* 5*/ { BARCODE_UPCE, 8.25, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116.5 }, + /* 6*/ { BARCODE_UPCE, 8.3, "1234567", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 116.6 }, /* 7*/ { BARCODE_UPCE, 19.6, "1234567", 0, 50, 1, 51, 134, 139.2, 18, 0, 2, 139.2 }, - /* 8*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 116.4, 118, 0, 2, 110 }, - /* 9*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 116.4, 134, 19, 2, 81 }, - /* 10*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 116.4, 118, 0, 2, 100 }, - /* 11*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 116.4, 134, 19, 2, 81 }, - /* 12*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 116.4, 118, 0, 2, 108 }, - /* 13*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 116.4, 134, 19, 2, 81 }, - /* 14*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 116.4, 188, 0, 4, 110 }, - /* 15*/ { BARCODE_UPCA, 0, "12345678901", 0, 50, 1, 95, 226, 116.4, 188, 0, 4, 100 }, - /* 16*/ { BARCODE_UPCA, 6, "12345678901", 0, 50, 1, 95, 226, 116.4, 188, 0, 4, 112 }, - /* 17*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.4, 188, 0, 4, 110 }, - /* 18*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.4, 262, 19, 4, 81 }, - /* 19*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 116.4, 188, 0, 4, 100 }, - /* 20*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 116.4, 262, 19, 4, 81 }, + /* 8*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 118, 0, 2, 110 }, + /* 9*/ { BARCODE_UPCE, -1, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 134, 16.9, 2, 83.1 }, + /* 10*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 118, 0, 2, 100 }, + /* 11*/ { BARCODE_UPCE, 0, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 134, 16.9, 2, 83.1 }, + /* 12*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 118, 0, 2, 108 }, + /* 13*/ { BARCODE_UPCE, 4, "1234567+12345", 0, 50, 1, 105, 238, 116.9, 134, 16.9, 2, 83.1 }, + /* 14*/ { BARCODE_UPCA, -1, "12345678901", 0, 50, 1, 95, 226, 116.9, 188, 0, 4, 110 }, + /* 15*/ { BARCODE_UPCA, 0, "12345678901", 0, 50, 1, 95, 226, 116.9, 188, 0, 4, 100 }, + /* 16*/ { BARCODE_UPCA, 6, "12345678901", 0, 50, 1, 95, 226, 116.9, 188, 0, 4, 112 }, + /* 17*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 188, 0, 4, 110 }, + /* 18*/ { BARCODE_UPCA, -1, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 262, 16.9, 4, 83.1 }, + /* 19*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 188, 0, 4, 100 }, + /* 20*/ { BARCODE_UPCA, 0, "12345678901+12", 0, 50, 1, 124, 276, 116.9, 262, 16.9, 4, 83.1 }, /* 21*/ { BARCODE_UPCA, 9, "12345678901+12", 0, 50, 1, 124, 276, 118, 188, 0, 4, 118 }, - /* 22*/ { BARCODE_UPCA, 9, "12345678901+12", 0, 50, 1, 124, 276, 118, 262, 19, 4, 81 }, - /* 23*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 110 }, - /* 24*/ { BARCODE_EANX, 0, "123456789012", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 100 }, - /* 25*/ { BARCODE_EANX, 7, "123456789012", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 114 }, - /* 26*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 116.4, 22, 0, 2, 110 }, - /* 27*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 116.4, 262, 19, 4, 91 }, - /* 28*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 116.4, 22, 0, 2, 100 }, - /* 29*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 116.4, 262, 19, 4, 81 }, - /* 30*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 116.42, 22, 0, 2, 116.42 }, - /* 31*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 116.42, 262, 19, 4, 97.42 }, - /* 32*/ { BARCODE_ISBNX, -1, "123456789", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 110 }, - /* 33*/ { BARCODE_ISBNX, 0, "123456789", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 100 }, + /* 22*/ { BARCODE_UPCA, 9, "12345678901+12", 0, 50, 1, 124, 276, 118, 262, 16.9, 4, 83.1 }, + /* 23*/ { BARCODE_EANX, -1, "123456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, + /* 24*/ { BARCODE_EANX, 0, "123456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 100 }, + /* 25*/ { BARCODE_EANX, 7, "123456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 114 }, + /* 26*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 22, 0, 2, 110 }, + /* 27*/ { BARCODE_EANX, -1, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 93.1 }, + /* 28*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 22, 0, 2, 100 }, + /* 29*/ { BARCODE_EANX, 0, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 83.1 }, + /* 30*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 22, 0, 2, 116.42 }, + /* 31*/ { BARCODE_EANX, 8.21, "123456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 99.52 }, + /* 32*/ { BARCODE_ISBNX, -1, "123456789", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, + /* 33*/ { BARCODE_ISBNX, 0, "123456789", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 100 }, }; int data_size = ARRAY_SIZE(data); int i, length, ret; @@ -1300,30 +1682,30 @@ static void test_quiet_zones(const testCtx *const p_ctx) { /* 14*/ { BARCODE_CODE39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 77, 194, 118.9, 20, 0, 2, 100 }, /* 15*/ { BARCODE_EXCODE39, -1, -1, -1, "1234", 0, 50, 1, 77, 154, 118.9, 0, 0, 2, 100 }, /* 16*/ { BARCODE_EXCODE39, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 77, 194, 118.9, 20, 0, 2, 100 }, - /* 17*/ { BARCODE_EANX, -1, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 110 }, - /* 18*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 110 }, - /* 19*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 212, 116.4, 22, 0, 2, 110 }, + /* 17*/ { BARCODE_EANX, -1, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, + /* 18*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, + /* 19*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 1, 95, 212, 116.9, 22, 0, 2, 110 }, /* 20*/ { BARCODE_EANX, -1, -1, 0, "023456789012", 0, 50, 1, 95, 226, 110, 22, 0, 2, 110 }, /* Hide text */ /* 21*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 1, 95, 226, 110, 22, 0, 2, 110 }, /* Hide text */ /* 22*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 1, 95, 190, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 23*/ { BARCODE_EANX, -1, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116.4, 262, 19, 4, 91 }, - /* 24*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116.4, 262, 19, 4, 91 }, - /* 25*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 266, 116.4, 262, 19, 4, 91 }, - /* 26*/ { BARCODE_EANX, -1, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 262, 19, 4, 91 }, /* Hide text */ - /* 27*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 262, 19, 4, 91 }, /* Hide text */ - /* 28*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 244, 110, 240, 19, 4, 91 }, /* Hide text */ - /* 29*/ { BARCODE_EANX_CHK, -1, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116.4, 318, 19, 2, 91 }, - /* 30*/ { BARCODE_EANX_CHK, BARCODE_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116.4, 318, 19, 2, 91 }, - /* 31*/ { BARCODE_EANX_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 320, 116.4, 318, 19, 2, 91 }, - /* 32*/ { BARCODE_EANX, -1, -1, -1, "0234567", 0, 50, 1, 67, 162, 116.4, 14, 0, 2, 110 }, /* EAN-8 */ - /* 33*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 162, 116.4, 14, 0, 2, 110 }, /* EAN-8 */ - /* 34*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 134, 116.4, 0, 0, 2, 110 }, /* EAN-8 */ - /* 35*/ { BARCODE_EANX, -1, -1, -1, "02345", 0, 50, 1, 47, 118, 116.4, 14, 0, 2, 100 }, /* EAN-5 */ - /* 36*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 118, 116.4, 14, 0, 2, 100 }, /* EAN-5 */ - /* 37*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 94, 116.4, 0, 0, 2, 100 }, /* EAN-5 */ - /* 38*/ { BARCODE_EANX, -1, -1, -1, "02", 0, 50, 1, 20, 64, 116.4, 14, 0, 2, 100 }, /* EAN-2 */ - /* 39*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 64, 116.4, 14, 0, 2, 100 }, /* EAN-2 */ - /* 40*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 40, 116.4, 0, 0, 2, 100 }, /* EAN-2 */ + /* 23*/ { BARCODE_EANX, -1, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 93.1 }, + /* 24*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 276, 116.9, 262, 16.9, 4, 93.1 }, + /* 25*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012+12", 0, 50, 1, 122, 266, 116.9, 262, 16.9, 4, 93.1 }, + /* 26*/ { BARCODE_EANX, -1, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 262, 16.9, 4, 93.1 }, /* Hide text */ + /* 27*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 276, 110, 262, 16.9, 4, 93.1 }, /* Hide text */ + /* 28*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012+12", 0, 50, 1, 122, 244, 110, 240, 16.9, 4, 93.1 }, /* Hide text */ + /* 29*/ { BARCODE_EANX_CHK, -1, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116.9, 318, 16.9, 2, 93.1 }, + /* 30*/ { BARCODE_EANX_CHK, BARCODE_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 330, 116.9, 318, 16.9, 2, 93.1 }, + /* 31*/ { BARCODE_EANX_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567890129+12345", 0, 50, 1, 149, 320, 116.9, 318, 16.9, 2, 93.1 }, + /* 32*/ { BARCODE_EANX, -1, -1, -1, "0234567", 0, 50, 1, 67, 162, 116.9, 14, 0, 2, 110 }, /* EAN-8 */ + /* 33*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 162, 116.9, 14, 0, 2, 110 }, /* EAN-8 */ + /* 34*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "0234567", 0, 50, 1, 67, 134, 116.9, 0, 0, 2, 110 }, /* EAN-8 */ + /* 35*/ { BARCODE_EANX, -1, -1, -1, "02345", 0, 50, 1, 47, 118, 116.9, 14, 0, 2, 100 }, /* EAN-5 */ + /* 36*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 118, 116.9, 14, 0, 2, 100 }, /* EAN-5 */ + /* 37*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02345", 0, 50, 1, 47, 94, 116.9, 0, 0, 2, 100 }, /* EAN-5 */ + /* 38*/ { BARCODE_EANX, -1, -1, -1, "02", 0, 50, 1, 20, 64, 116.9, 14, 0, 2, 100 }, /* EAN-2 */ + /* 39*/ { BARCODE_EANX, BARCODE_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 64, 116.9, 14, 0, 2, 100 }, /* EAN-2 */ + /* 40*/ { BARCODE_EANX, BARCODE_NO_QUIET_ZONES, -1, -1, "02", 0, 50, 1, 20, 40, 116.9, 0, 0, 2, 100 }, /* EAN-2 */ /* 41*/ { BARCODE_GS1_128, -1, -1, -1, "[20]02", 0, 50, 1, 68, 136, 118.9, 0, 0, 4, 100 }, /* 42*/ { BARCODE_GS1_128, BARCODE_QUIET_ZONES, -1, -1, "[20]02", 0, 50, 1, 68, 176, 118.9, 20, 0, 4, 100 }, /* 43*/ { BARCODE_CODABAR, -1, -1, -1, "A0B", 0, 50, 1, 32, 64, 118.9, 0, 0, 2, 100 }, @@ -1356,42 +1738,42 @@ static void test_quiet_zones(const testCtx *const p_ctx) { /* 70*/ { BARCODE_DBAR_EXP, BARCODE_NO_QUIET_ZONES, -1, -1, "[20]02", 0, 34, 1, 102, 204, 86.900002, 2, 0, 2, 68 }, /* 71*/ { BARCODE_TELEPEN, -1, -1, -1, "1234", 0, 50, 1, 112, 224, 118.9, 0, 0, 2, 100 }, /* 72*/ { BARCODE_TELEPEN, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 112, 264, 118.9, 20, 0, 2, 100 }, - /* 73*/ { BARCODE_UPCA, -1, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.4, 18, 0, 2, 110 }, - /* 74*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.4, 18, 0, 2, 110 }, - /* 75*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.4, 18, 0, 2, 110 }, + /* 73*/ { BARCODE_UPCA, -1, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.9, 18, 0, 2, 110 }, + /* 74*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.9, 18, 0, 2, 110 }, + /* 75*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 1, 95, 226, 116.9, 18, 0, 2, 110 }, /* 76*/ { BARCODE_UPCA, -1, -1, 0, "01457137763", 0, 50, 1, 95, 226, 110, 18, 0, 2, 110 }, /* Hide text */ /* 77*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 1, 95, 226, 110, 18, 0, 2, 110 }, /* Hide text */ /* 78*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 1, 95, 190, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 79*/ { BARCODE_UPCA, -1, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116.4, 18, 0, 2, 110 }, - /* 80*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116.4, 18, 0, 2, 110 }, - /* 81*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 266, 116.4, 18, 0, 2, 110 }, + /* 79*/ { BARCODE_UPCA, -1, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116.9, 18, 0, 2, 110 }, + /* 80*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 276, 116.9, 18, 0, 2, 110 }, + /* 81*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763+12", 0, 50, 1, 124, 266, 116.9, 18, 0, 2, 110 }, /* 82*/ { BARCODE_UPCA, -1, -1, 0, "01457137763+12", 0, 50, 1, 124, 276, 110, 18, 0, 2, 110 }, /* Hide text */ /* 83*/ { BARCODE_UPCA, BARCODE_QUIET_ZONES, -1, 0, "01457137763+12", 0, 50, 1, 124, 276, 110, 18, 0, 2, 110 }, /* Hide text */ /* 84*/ { BARCODE_UPCA, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763+12", 0, 50, 1, 124, 248, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 85*/ { BARCODE_UPCA_CHK, -1, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116.4, 18, 0, 2, 110 }, - /* 86*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116.4, 18, 0, 2, 110 }, - /* 87*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 320, 116.4, 18, 0, 2, 110 }, + /* 85*/ { BARCODE_UPCA_CHK, -1, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116.9, 18, 0, 2, 110 }, + /* 86*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 330, 116.9, 18, 0, 2, 110 }, + /* 87*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "014571377638+12345", 0, 50, 1, 151, 320, 116.9, 18, 0, 2, 110 }, /* 88*/ { BARCODE_UPCA_CHK, -1, -1, 0, "014571377638+12345", 0, 50, 1, 151, 330, 110, 18, 0, 2, 110 }, /* Hide text */ /* 89*/ { BARCODE_UPCA_CHK, BARCODE_QUIET_ZONES, -1, 0, "014571377638+12345", 0, 50, 1, 151, 330, 110, 18, 0, 2, 110 }, /* Hide text */ /* 90*/ { BARCODE_UPCA_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "014571377638+12345", 0, 50, 1, 151, 302, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 91*/ { BARCODE_UPCE, -1, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 110 }, - /* 92*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 110 }, - /* 93*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.4, 18, 0, 2, 110 }, + /* 91*/ { BARCODE_UPCE, -1, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, + /* 92*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, + /* 93*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 1, 51, 134, 116.9, 18, 0, 2, 110 }, /* 94*/ { BARCODE_UPCE, -1, -1, 0, "8145713", 0, 50, 1, 51, 134, 110, 18, 0, 2, 110 }, /* Hide text */ /* 95*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713", 0, 50, 1, 51, 134, 110, 18, 0, 2, 110 }, /* Hide text */ /* 96*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713", 0, 50, 1, 51, 102, 110, 0, 0, 2, 110 }, /* Hide text */ - /* 97*/ { BARCODE_UPCE_CHK, -1, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116.4, 170, 19, 4, 81 }, - /* 98*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116.4, 170, 19, 4, 81 }, - /* 99*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 174, 116.4, 170, 19, 4, 81 }, - /*100*/ { BARCODE_UPCE_CHK, -1, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 170, 19, 4, 81 }, /* Hide text */ - /*101*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 170, 19, 4, 81 }, /* Hide text */ - /*102*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 156, 110, 152, 19, 4, 81 }, /* Hide text */ - /*103*/ { BARCODE_UPCE, -1, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116.4, 226, 19, 2, 81 }, - /*104*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116.4, 226, 19, 2, 81 }, - /*105*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 228, 116.4, 226, 19, 2, 81 }, - /*106*/ { BARCODE_UPCE, -1, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 226, 19, 2, 81 }, /* Hide text */ - /*107*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 226, 19, 2, 81 }, /* Hide text */ - /*108*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 210, 110, 208, 19, 2, 81 }, /* Hide text */ + /* 97*/ { BARCODE_UPCE_CHK, -1, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116.9, 170, 16.9, 4, 83.1 }, + /* 98*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 184, 116.9, 170, 16.9, 4, 83.1 }, + /* 99*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, -1, "81457132+12", 0, 50, 1, 78, 174, 116.9, 170, 16.9, 4, 83.1 }, + /*100*/ { BARCODE_UPCE_CHK, -1, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 170, 16.9, 4, 83.1 }, /* Hide text */ + /*101*/ { BARCODE_UPCE_CHK, BARCODE_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 184, 110, 170, 16.9, 4, 83.1 }, /* Hide text */ + /*102*/ { BARCODE_UPCE_CHK, BARCODE_NO_QUIET_ZONES, -1, 0, "81457132+12", 0, 50, 1, 78, 156, 110, 152, 16.9, 4, 83.1 }, /* Hide text */ + /*103*/ { BARCODE_UPCE, -1, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116.9, 226, 16.9, 2, 83.1 }, + /*104*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 238, 116.9, 226, 16.9, 2, 83.1 }, + /*105*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713+12345", 0, 50, 1, 105, 228, 116.9, 226, 16.9, 2, 83.1 }, + /*106*/ { BARCODE_UPCE, -1, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 226, 16.9, 2, 83.1 }, /* Hide text */ + /*107*/ { BARCODE_UPCE, BARCODE_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 238, 110, 226, 16.9, 2, 83.1 }, /* Hide text */ + /*108*/ { BARCODE_UPCE, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713+12345", 0, 50, 1, 105, 210, 110, 208, 16.9, 2, 83.1 }, /* Hide text */ /*109*/ { BARCODE_POSTNET, -1, -1, -1, "12345", 0, 12, 2, 63, 126, 24, 0, 0, 2, 24 }, /*110*/ { BARCODE_POSTNET, BARCODE_QUIET_ZONES, -1, -1, "12345", 0, 12, 2, 63, 146, 30.4, 10, 3.2, 2, 24 }, /*111*/ { BARCODE_MSI_PLESSEY, -1, -1, -1, "1234", 0, 50, 1, 55, 110, 118.9, 0, 0, 4, 100 }, @@ -1426,9 +1808,9 @@ static void test_quiet_zones(const testCtx *const p_ctx) { /*140*/ { BARCODE_AUSROUTE, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, /*141*/ { BARCODE_AUSREDIRECT, -1, -1, -1, "1234", 0, 8, 3, 73, 146, 16, 0, 0, 2, 10 }, /*142*/ { BARCODE_AUSREDIRECT, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 73, 186, 29.333332, 20, 6.6666665, 2, 10 }, - /*143*/ { BARCODE_ISBNX, -1, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 110 }, - /*144*/ { BARCODE_ISBNX, BARCODE_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116.4, 22, 0, 2, 110 }, - /*145*/ { BARCODE_ISBNX, BARCODE_NO_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 212, 116.4, 22, 0, 2, 110 }, + /*143*/ { BARCODE_ISBNX, -1, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, + /*144*/ { BARCODE_ISBNX, BARCODE_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 226, 116.9, 22, 0, 2, 110 }, + /*145*/ { BARCODE_ISBNX, BARCODE_NO_QUIET_ZONES, -1, -1, "123456789X", 0, 50, 1, 95, 212, 116.9, 22, 0, 2, 110 }, /*146*/ { BARCODE_RM4SCC, -1, -1, -1, "1234", 0, 8, 3, 43, 86, 16, 0, 0, 2, 10 }, /*147*/ { BARCODE_RM4SCC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 8, 3, 43, 98.283463, 28.283464, 6.1417322, 6.1417322, 2, 10 }, /*148*/ { BARCODE_DATAMATRIX, -1, -1, -1, "1234", 0, 10, 10, 10, 20, 20, 0, 0, 2, 2 }, @@ -1513,9 +1895,9 @@ static void test_quiet_zones(const testCtx *const p_ctx) { /*227*/ { BARCODE_AZRUNE, BARCODE_NO_QUIET_ZONES, -1, -1, "123", 0, 11, 11, 11, 22, 22, 0, 0, 8, 2 }, /*228*/ { BARCODE_CODE32, -1, -1, -1, "1234", 0, 50, 1, 103, 206, 118.9, 0, 0, 2, 100 }, /*229*/ { BARCODE_CODE32, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 50, 1, 103, 246, 118.9, 20, 0, 2, 100 }, - /*230*/ { BARCODE_EANX_CC, -1, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116.4, 32, 24, 2, 86 }, - /*231*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116.4, 32, 24, 2, 86 }, - /*232*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 220, 116.4, 32, 24, 2, 86 }, + /*230*/ { BARCODE_EANX_CC, -1, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116.9, 32, 24, 2, 86 }, + /*231*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 234, 116.9, 32, 24, 2, 86 }, + /*232*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "023456789012", 0, 50, 7, 99, 220, 116.9, 32, 24, 2, 86 }, /*233*/ { BARCODE_EANX_CC, -1, -1, 0, "023456789012", 0, 50, 7, 99, 234, 110, 32, 24, 2, 86 }, /* Hide text */ /*234*/ { BARCODE_EANX_CC, BARCODE_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 7, 99, 234, 110, 32, 24, 2, 86 }, /* Hide text */ /*235*/ { BARCODE_EANX_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "023456789012", 0, 50, 7, 99, 198, 110, 10, 24, 2, 86 }, /* Hide text */ @@ -1527,15 +1909,15 @@ static void test_quiet_zones(const testCtx *const p_ctx) { /*241*/ { BARCODE_DBAR_LTD_CC, BARCODE_QUIET_ZONES, -1, -1, "1234", 0, 19, 6, 79, 162, 56.900002, 4, 18, 2, 20 }, /*242*/ { BARCODE_DBAR_EXP_CC, -1, -1, -1, "[20]12", 0, 41, 5, 102, 204, 100.9, 2, 14, 2, 68 }, /*243*/ { BARCODE_DBAR_EXP_CC, BARCODE_QUIET_ZONES, -1, -1, "[20]12", 0, 41, 5, 102, 208, 100.9, 4, 14, 2, 68 }, - /*244*/ { BARCODE_UPCA_CC, -1, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.4, 24, 20, 2, 90 }, - /*245*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.4, 24, 20, 2, 90 }, - /*246*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.4, 24, 20, 2, 90 }, + /*244*/ { BARCODE_UPCA_CC, -1, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.9, 24, 20, 2, 90 }, + /*245*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.9, 24, 20, 2, 90 }, + /*246*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "01457137763", 0, 50, 7, 99, 234, 116.9, 24, 20, 2, 90 }, /*247*/ { BARCODE_UPCA_CC, -1, -1, 0, "01457137763", 0, 50, 7, 99, 234, 110, 24, 20, 2, 90 }, /* Hide text */ /*248*/ { BARCODE_UPCA_CC, BARCODE_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 7, 99, 234, 110, 24, 20, 2, 90 }, /* Hide text */ /*249*/ { BARCODE_UPCA_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "01457137763", 0, 50, 7, 99, 198, 110, 6, 20, 2, 90 }, /* Hide text */ - /*250*/ { BARCODE_UPCE_CC, -1, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.4, 24, 28, 2, 82 }, - /*251*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.4, 24, 28, 2, 82 }, - /*252*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.4, 24, 28, 2, 82 }, + /*250*/ { BARCODE_UPCE_CC, -1, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.9, 24, 28, 2, 82 }, + /*251*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.9, 24, 28, 2, 82 }, + /*252*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, -1, "8145713", 0, 50, 9, 55, 142, 116.9, 24, 28, 2, 82 }, /*253*/ { BARCODE_UPCE_CC, -1, -1, 0, "8145713", 0, 50, 9, 55, 142, 110, 24, 28, 2, 82 }, /* Hide text */ /*254*/ { BARCODE_UPCE_CC, BARCODE_QUIET_ZONES, -1, 0, "8145713", 0, 50, 9, 55, 142, 110, 24, 28, 2, 82 }, /* Hide text */ /*255*/ { BARCODE_UPCE_CC, BARCODE_NO_QUIET_ZONES, -1, 0, "8145713", 0, 50, 9, 55, 110, 110, 6, 28, 2, 82 }, /* Hide text */ @@ -1636,6 +2018,149 @@ static void test_quiet_zones(const testCtx *const p_ctx) { testFinish(); } +static void test_text_gap(const testCtx *const p_ctx) { + int debug = p_ctx->debug; + + struct item { + int symbology; + int output_options; + int option_2; + int show_hrt; + float text_gap; + float scale; + char *data; + char *composite; + int ret; + + float expected_height; + int expected_rows; + int expected_width; + float expected_vector_width; + float expected_vector_height; + float expected_set_x; + float expected_set_y; + float expected_set_width; + float expected_set_height; + }; + /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ + struct item data[] = { + /* 0*/ { BARCODE_CODE11, -1, -1, -1, 0, 0, "1234", "", 0, 50, 1, 62, 124, 118.9, 62.0, 114.0, -1, -1 }, /* Default */ + /* 1*/ { BARCODE_CODE11, -1, -1, -1, 0.1, 0, "1234", "", 0, 50, 1, 62, 124, 117.7, 62.0, 112.8, -1, -1 }, + /* 2*/ { BARCODE_CODE11, -1, -1, -1, 0.2, 0, "1234", "", 0, 50, 1, 62, 124, 117.9, 62.0, 113, -1, -1 }, + /* 3*/ { BARCODE_CODE11, -1, -1, -1, 0.3, 0, "1234", "", 0, 50, 1, 62, 124, 118.1, 62.0, 113.2, -1, -1 }, + /* 4*/ { BARCODE_CODE11, -1, -1, -1, 0.4, 0, "1234", "", 0, 50, 1, 62, 124, 118.3, 62.0, 113.4, -1, -1 }, + /* 5*/ { BARCODE_CODE11, -1, -1, -1, 0.5, 0, "1234", "", 0, 50, 1, 62, 124, 118.5, 62.0, 113.6, -1, -1 }, + /* 6*/ { BARCODE_CODE11, -1, -1, -1, 0.6, 0, "1234", "", 0, 50, 1, 62, 124, 118.7, 62.0, 113.799995, -1, -1 }, + /* 7*/ { BARCODE_CODE11, -1, -1, -1, 0.7, 0, "1234", "", 0, 50, 1, 62, 124, 118.9, 62.0, 114, -1, -1 }, + /* 8*/ { BARCODE_CODE11, -1, -1, -1, 0.75, 0, "1234", "", 0, 50, 1, 62, 124, 119, 62.0, 114.1, -1, -1 }, /* Same as default */ + /* 9*/ { BARCODE_CODE11, -1, -1, -1, 0.8, 0, "1234", "", 0, 50, 1, 62, 124, 119.1, 62.0, 114.2, -1, -1 }, + /* 10*/ { BARCODE_CODE11, -1, -1, -1, 0.9, 0, "1234", "", 0, 50, 1, 62, 124, 119.3, 62.0, 114.4, -1, -1 }, + /* 11*/ { BARCODE_CODE11, -1, -1, -1, 1.0, 0, "1234", "", 0, 50, 1, 62, 124, 119.5, 62.0, 114.6, -1, -1 }, + /* 12*/ { BARCODE_CODE11, -1, -1, -1, 1.1, 0, "1234", "", 0, 50, 1, 62, 124, 119.7, 62.0, 114.799995, -1, -1 }, + /* 13*/ { BARCODE_CODE11, -1, -1, -1, 1.5, 0, "1234", "", 0, 50, 1, 62, 124, 120.5, 62.0, 115.6, -1, -1 }, + /* 14*/ { BARCODE_CODE11, -1, -1, -1, 2.0, 0, "1234", "", 0, 50, 1, 62, 124, 121.5, 62.0, 116.6, -1, -1 }, + /* 15*/ { BARCODE_CODE11, -1, -1, -1, 3.0, 0, "1234", "", 0, 50, 1, 62, 124, 123.5, 62.0, 118.6, -1, -1 }, + /* 16*/ { BARCODE_CODE11, -1, -1, -1, 4.0, 0, "1234", "", 0, 50, 1, 62, 124, 125.5, 62.0, 120.6, -1, -1 }, + /* 17*/ { BARCODE_CODE11, -1, -1, -1, 5.0, 0, "1234", "", 0, 50, 1, 62, 124, 127.5, 62.0, 122.6, -1, -1 }, + /* 18*/ { BARCODE_CODE11, -1, -1, -1, 0, 3.0, "1234", "", 0, 50, 1, 62, 372, 356.7, 186.0, 342.0, -1, -1 }, /* Scale default */ + /* 19*/ { BARCODE_CODE11, -1, -1, -1, 0.1, 3.0, "1234", "", 0, 50, 1, 62, 372, 353.09998, 186.0, 338.4, -1, -1 }, /* Scale */ + /* 20*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.9, 74.0, 116.1, -1, -1 }, /* Default */ + /* 21*/ { BARCODE_UPCA, -1, -1, -1, 0.1, 0, "01457130763", "", 0, 50, 1, 95, 226, 115.6, 74.0, 114.799995, -1, -1 }, + /* 22*/ { BARCODE_UPCA, -1, -1, -1, 0.6, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.6, 74.0, 115.799995, -1, -1 }, + /* 23*/ { BARCODE_UPCA, -1, -1, -1, 0.7, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.8, 74.0, 116, -1, -1 }, + /* 24*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763", "", 0, 50, 1, 95, 226, 116.9, 74.0, 116.1, -1, -1 }, /* Same as default */ + /* 25*/ { BARCODE_UPCA, -1, -1, -1, 0.8, 0, "01457130763", "", 0, 50, 1, 95, 226, 117, 74.0, 116.2, -1, -1 }, + /* 26*/ { BARCODE_UPCA, -1, -1, -1, 1.6, 0, "01457130763", "", 0, 50, 1, 95, 226, 118.6, 74.0, 117.799995, -1, -1 }, + /* 27*/ { BARCODE_UPCA, -1, -1, -1, 1.6, 2.5, "01457130763", "", 0, 50, 1, 95, 565, 296.5, 185.0, 294.5, -1, -1 }, /* Scale */ + /* 28*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.9, 74.0, 116.1, -1, -1 }, /* Default */ + /* 29*/ { BARCODE_UPCA, -1, -1, -1, 0, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.9, 230.0, 16.9, 4.0, 83.1 }, /* Default */ + /* 30*/ { BARCODE_UPCA, -1, -1, -1, 0.1, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 115.6, 230.0, 15.5999994, 4.0, 84.4 }, + /* 31*/ { BARCODE_UPCA, -1, -1, -1, 0.75, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 116.9, 230.0, 16.9, 4.0, 83.1 }, /* Same as default */ + /* 32*/ { BARCODE_UPCA, -1, -1, -1, 0.9, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 117.2, 230.0, 17.1999989, 4.0, 82.8 }, + /* 33*/ { BARCODE_UPCA, -1, -1, -1, 4.2, 0, "01457130763+10", "", 0, 50, 1, 124, 276, 123.8, 230.0, 23.8, 4.0, 76.2 }, + /* 34*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116.9, 80.0, 116.1, -1, -1 }, /* Default */ + /* 35*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.1, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 115.6, 80.0, 114.799995, -1, -1 }, + /* 36*/ { BARCODE_UPCA_CC, -1, -1, -1, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116.9, 236.0, 40.9, 4.0, 59.1 }, /* Default */ + /* 37*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.1, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 115.6, 236.0, 39.6000023, 4.0, 60.3999977 }, + /* 38*/ { BARCODE_UPCA_CC, -1, -1, -1, 0.75, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 116.9, 236.0, 40.9, 4.0, 59.1 }, /* Same as default */ + /* 39*/ { BARCODE_UPCA_CC, -1, -1, -1, 1.5, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 118.4, 236.0, 42.4, 4.0, 57.6 }, + /* 40*/ { BARCODE_UPCA_CC, -1, -1, 0, 0, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 236.0, 40.9, 4.0, 59.1 }, /* Hide text default */ + /* 41*/ { BARCODE_UPCA_CC, -1, -1, 0, 1.5, 0, "01457130763+10", "[91]12", 0, 50, 7, 128, 284, 110, 236.0, 42.4, 4.0, 57.6 }, /* Hide text */ + }; + int data_size = ARRAY_SIZE(data); + int i, length, ret; + struct zint_symbol *symbol; + + const char *text; + + struct zint_vector_string *string; + struct zint_vector_rect *rect; + + testStart("test_text_gap"); + + for (i = 0; i < data_size; i++) { + + if (testContinue(p_ctx, i)) continue; + + symbol = ZBarcode_Create(); + assert_nonnull(symbol, "Symbol not created\n"); + + if (data[i].show_hrt != -1) { + symbol->show_hrt = data[i].show_hrt; + } + symbol->text_gap = data[i].text_gap; + if (data[i].scale != 0.0f) { + symbol->scale = data[i].scale; + } + + if (strlen(data[i].composite)) { + text = data[i].composite; + strcpy(symbol->primary, data[i].data); + } else { + text = data[i].data; + } + length = testUtilSetSymbol(symbol, data[i].symbology, -1 /*input_mode*/, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, data[i].output_options, text, -1, debug); + + ret = ZBarcode_Encode(symbol, (unsigned char *) text, length); + assert_zero(ret, "i:%d ZBarcode_Encode(%d) ret %d != 0 %s\n", i, data[i].symbology, ret, symbol->errtxt); + + ret = ZBarcode_Buffer_Vector(symbol, 0); + assert_equal(ret, data[i].ret, "i:%d ZBarcode_Buffer_Vector(%d) ret %d != %d\n", i, data[i].symbology, ret, data[i].ret); + + if (ret < ZINT_ERROR) { + assert_nonnull(symbol->vector, "i:%d ZBarcode_Buffer_Vector(%d) vector NULL\n", i, data[i].symbology); + + if (p_ctx->index != -1 && (debug & ZINT_DEBUG_TEST_PRINT)) { /* ZINT_DEBUG_TEST_PRINT 16 */ + sprintf(symbol->outfile, "test_text_gap_%d.svg", i); + ZBarcode_Print(symbol, 0); + } + + assert_equal(symbol->height, data[i].expected_height, "i:%d (%d) symbol->height %.8g != %.8g\n", i, data[i].symbology, symbol->height, data[i].expected_height); + assert_equal(symbol->rows, data[i].expected_rows, "i:%d (%d) symbol->rows %d != %d\n", i, data[i].symbology, symbol->rows, data[i].expected_rows); + assert_equal(symbol->width, data[i].expected_width, "i:%d (%d) symbol->width %d != %d\n", i, data[i].symbology, symbol->width, data[i].expected_width); + + assert_equal(symbol->vector->width, data[i].expected_vector_width, "i:%d (%s) symbol->vector->width %.8g != %.8g\n", + i, testUtilBarcodeName(data[i].symbology), symbol->vector->width, data[i].expected_vector_width); + assert_equal(symbol->vector->height, data[i].expected_vector_height, "i:%d (%s) symbol->vector->height %.8g != %.8g\n", + i, testUtilBarcodeName(data[i].symbology), symbol->vector->height, data[i].expected_vector_height); + + if (data[i].expected_set_width == -1.0f) { + string = find_string(symbol, data[i].expected_set_x, data[i].expected_set_y); + assert_nonnull(string, "i:%d (%d) find_string(%g, %g) NULL\n", + i, data[i].symbology, data[i].expected_set_x, data[i].expected_set_y); + } else { + rect = find_rect(symbol, data[i].expected_set_x, data[i].expected_set_y, data[i].expected_set_width, data[i].expected_set_height); + assert_nonnull(rect, "i:%d (%d) find_rect(%g, %g, %g, %g) NULL\n", + i, data[i].symbology, data[i].expected_set_x, data[i].expected_set_y, data[i].expected_set_width, data[i].expected_set_height); + } + } + + ZBarcode_Delete(symbol); + } + + testFinish(); +} + static void test_height(const testCtx *const p_ctx) { int debug = p_ctx->debug; @@ -2511,6 +3036,7 @@ int main(int argc, char *argv[]) { { "test_scale", test_scale }, { "test_guard_descent", test_guard_descent }, { "test_quiet_zones", test_quiet_zones }, + { "test_text_gap", test_text_gap, }, { "test_height", test_height }, { "test_height_per_row", test_height_per_row }, }; diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 3288841a..1a8d9e25 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -364,7 +364,7 @@ int testContinue(const testCtx *const p_ctx, const int i) { /* Helper to set common symbol fields */ int testUtilSetSymbol(struct zint_symbol *symbol, int symbology, int input_mode, int eci, int option_1, int option_2, - int option_3, int output_options, char *data, int length, int debug) { + int option_3, int output_options, const char *data, int length, int debug) { symbol->symbology = symbology; if (input_mode != -1) { symbol->input_mode = input_mode; diff --git a/backend/tests/testcommon.h b/backend/tests/testcommon.h index 6e7f6327..2ff123dc 100644 --- a/backend/tests/testcommon.h +++ b/backend/tests/testcommon.h @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2019-2022 Robin Stuart + Copyright (C) 2019-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -129,7 +129,7 @@ void assert_notequal(int e1, int e2, const char *fmt, ...); INTERNAL void vector_free(struct zint_symbol *symbol); /* Free vector structures */ int testUtilSetSymbol(struct zint_symbol *symbol, int symbology, int input_mode, int eci, - int option_1, int option_2, int option_3, int output_options, char *data, int length, int debug); + int option_1, int option_2, int option_3, int output_options, const char *data, int length, int debug); const char *testUtilBarcodeName(int symbology); const char *testUtilErrorName(int error_number); diff --git a/backend/vector.c b/backend/vector.c index 012b261e..d572d861 100644 --- a/backend/vector.c +++ b/backend/vector.c @@ -1,7 +1,7 @@ /* vector.c - Creates vector image objects */ /* libzint - the open source barcode library - Copyright (C) 2018-2022 Robin Stuart + Copyright (C) 2018-2023 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -126,7 +126,7 @@ static void vector_plot_add_circle(struct zint_symbol *symbol, struct zint_vecto *last_circle = circle; } -static int vector_plot_add_string(struct zint_symbol *symbol, const unsigned char *text, +static int vector_plot_add_string(struct zint_symbol *symbol, const unsigned char *text, const int length, const float x, const float y, const float fsize, const float width, const int halign, struct zint_vector_string **last_string) { struct zint_vector_string *string; @@ -141,7 +141,7 @@ static int vector_plot_add_string(struct zint_symbol *symbol, const unsigned cha string->y = y; string->width = width; string->fsize = fsize; - string->length = (int) ustrlen(text); + string->length = length == -1 ? (int) ustrlen(text) : length; string->rotation = 0; string->halign = halign; string->text = (unsigned char *) malloc(string->length + 1); @@ -150,7 +150,8 @@ static int vector_plot_add_string(struct zint_symbol *symbol, const unsigned cha strcpy(symbol->errtxt, "695: Insufficient memory for vector string text"); return 0; } - ustrcpy(string->text, text); + memcpy(string->text, text, string->length); + string->text[string->length] = '\0'; if (*last_string) (*last_string)->next = string; @@ -398,7 +399,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ float textoffset; int upceanflag = 0; int addon_latch = 0; - unsigned char textpart1[5], textpart2[7], textpart3[7], textpart4[2]; + unsigned char textparts[4][7]; int hide_text; int i, r; int block_width = 0; @@ -408,13 +409,22 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ const int is_codablockf = symbol->symbology == BARCODE_CODABLOCKF || symbol->symbology == BARCODE_HIBC_BLOCKF; const int no_extend = is_codablockf || symbol->symbology == BARCODE_DPD; - float addon_row_height; float large_bar_height; + const float descent_factor = 0.1f; /* Assuming descent roughly 10% of font size */ + + /* For UPC/EAN only */ + float addon_row_yposn; + float addon_row_height; int upcae_outside_text_height = 0; /* UPC-A/E outside digits font size */ - float digit_ascent_factor = 0.25f; /* Assuming digit ascent roughly 25% less than font size */ + /* Note using "ascender" to mean height above digits as "ascent" usually measured from baseline */ + const float digit_ascender_factor = 0.25f; /* Assuming digit ascender height roughly 25% of font size */ + float digit_ascender = 0.0f; /* Avoid gcc -Wmaybe-uninitialized */ + const float antialias_fudge_factor = 0.02f; + float antialias_fudge = 0.0f; /* Avoid gcc -Wmaybe-uninitialized */ + int rect_count = 0, last_row_start = 0; /* For UPC/EAN guard bars */ + float dot_overspill = 0.0f; float dot_offset = 0.0f; - int rect_count = 0, last_row_start = 0; /* For UPC/EAN guard bars */ float yposn; struct zint_vector *vector; @@ -461,18 +471,21 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ out_set_whitespace_offsets(symbol, hide_text, &xoffset, &yoffset, &roffset, &boffset, 0 /*scaler*/, NULL, NULL, NULL, NULL); + /* Note font sizes scaled by 2 so really twice these values */ if (upceanflag) { /* Note BOLD_TEXT ignored for UPCEAN by svg/emf/ps/qzint */ text_height = symbol->output_options & SMALL_TEXT ? 7 : 10; + digit_ascender = text_height * digit_ascender_factor; /* Digit ascender is unused (empty) */ + antialias_fudge = text_height * antialias_fudge_factor; upcae_outside_text_height = symbol->output_options & SMALL_TEXT ? 6 : 7; - /* Negative to move close to barcode (less digit ascent, then add 0.5X) */ - text_gap = -text_height * digit_ascent_factor + 0.5f; + /* Note default 0.75 was 0.5 (minimum per standard) but that looks too close */ + text_gap = (symbol->text_gap ? symbol->text_gap : 0.75f) - digit_ascender; /* Guard bar height (none for EAN-2 and EAN-5) */ guard_descent = upceanflag != 2 && upceanflag != 5 ? symbol->guard_descent : 0.0f; } else { text_height = symbol->output_options & SMALL_TEXT ? 6 : 7; - text_gap = text_height * 0.1f; + text_gap = symbol->text_gap ? symbol->text_gap : text_height * 0.1f; guard_descent = 0.0f; } @@ -480,10 +493,9 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ textoffset = guard_descent; } else { if (upceanflag) { - /* Add fudge for anti-aliasing of digits */ - if (text_height + 0.2f + text_gap > guard_descent) { - textoffset = text_height + 0.2f + text_gap; - } else { + /* Add fudge for anti-aliasing of digit bottoms */ + textoffset = text_height + text_gap + antialias_fudge; + if (textoffset < guard_descent) { textoffset = guard_descent; } } else { @@ -601,11 +613,12 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ && module_is_set(symbol, r, i + block_width) == fill; block_width++); if ((r == (symbol->rows - 1)) && (i > main_width) && (addon_latch == 0)) { - addon_text_yposn = yposn + text_height - text_height * digit_ascent_factor; + addon_text_yposn = yposn + text_height - digit_ascender; if (addon_text_yposn < 0.0f) { addon_text_yposn = 0.0f; } - addon_row_height = row_height - (addon_text_yposn - yposn) + text_gap; + addon_row_yposn = yposn + text_height + text_gap + antialias_fudge; + addon_row_height = row_height - (addon_row_yposn - yposn); if (upceanflag != 12 && upceanflag != 6) { /* UPC-A/E add-ons don't descend */ addon_row_height += guard_descent; } @@ -617,8 +630,8 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ if (fill) { /* a bar */ if (addon_latch) { - rect = vector_plot_create_rect(symbol, i + xoffset, addon_text_yposn - text_gap, - block_width, addon_row_height); + rect = vector_plot_create_rect(symbol, i + xoffset, addon_row_yposn, block_width, + addon_row_height); } else { rect = vector_plot_create_rect(symbol, i + xoffset, yposn, block_width, row_height); } @@ -730,129 +743,107 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_ xoffset += comp_xoffset; text_yposn = yoffset + symbol->height + text_height + text_gap; /* Calculated to bottom of text */ + if (upceanflag) { /* Allow for anti-aliasing if UPC/EAN */ + text_yposn -= antialias_fudge; + } else { /* Else adjust to baseline */ + text_yposn -= text_height * descent_factor; + } if (symbol->border_width > 0 && (symbol->output_options & (BARCODE_BOX | BARCODE_BIND))) { text_yposn += symbol->border_width; /* Note not needed for BARCODE_BIND_TOP */ } if (upceanflag >= 6) { /* UPC-E, EAN-8, UPC-A, EAN-13 */ + const int addon_len = (int) ustrlen(addon); float textwidth; - out_upcean_split_text(upceanflag, symbol->text, textpart1, textpart2, textpart3, textpart4); + out_upcean_split_text(upceanflag, symbol->text, textparts); if (upceanflag == 6) { /* UPC-E */ - text_xposn = -5.0f + xoffset; + text_xposn = -(5.0f - 0.35f) + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textpart1, text_xposn, text_yposn, upcae_outside_text_height, - textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 24.0f + xoffset; + if (!vector_plot_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, + upcae_outside_text_height, textwidth, 2 /*right align*/, + &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = (24.0f + 0.5f) + xoffset; textwidth = 6.0f * 8.5f; - if (!vector_plot_add_string(symbol, textpart2, text_xposn, text_yposn, text_height, - textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 51.0f + 3.0f + xoffset; + if (!vector_plot_add_string(symbol, textparts[1], 6, text_xposn, text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = (51.0f - 0.35f) + 3.0f + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textpart3, text_xposn, text_yposn, upcae_outside_text_height, - textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; - switch (ustrlen(addon)) { - case 2: - text_xposn = 61.0f + xoffset + addon_gap; - textwidth = 2.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; - case 5: - text_xposn = 75.0f + xoffset + addon_gap; - textwidth = 5.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; + if (!vector_plot_add_string(symbol, textparts[2], 1, text_xposn, text_yposn, + upcae_outside_text_height, textwidth, 1 /*left align*/, + &last_string)) return ZINT_ERROR_MEMORY; + if (addon_len) { + text_xposn = (addon_len == 2 ? 61.0f : 75.0f) + xoffset + addon_gap; + textwidth = addon_len * 8.5f; + if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; } } else if (upceanflag == 8) { /* EAN-8 */ - text_xposn = 17.0f + xoffset; + text_xposn = (17.0f + 0.5f) + xoffset; textwidth = 4.0f * 8.5f; - if (!vector_plot_add_string(symbol, textpart1, text_xposn, text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 50.0f + xoffset; - if (!vector_plot_add_string(symbol, textpart2, text_xposn, text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - switch (ustrlen(addon)) { - case 2: - text_xposn = 77.0f + xoffset + addon_gap; - textwidth = 2.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; - case 5: - text_xposn = 91.0f + xoffset + addon_gap; - textwidth = 5.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; + if (!vector_plot_add_string(symbol, textparts[0], 4, text_xposn, text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = (50.0f - 0.5f) + xoffset; + if (!vector_plot_add_string(symbol, textparts[1], 4, text_xposn, text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (addon_len) { + text_xposn = (addon_len == 2 ? 77.0f : 91.0f) + xoffset + addon_gap; + textwidth = addon_len * 8.5f; + if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; } } else if (upceanflag == 12) { /* UPC-A */ - text_xposn = -5.0f + xoffset; + text_xposn = -(5.0f - 0.35f) + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textpart1, text_xposn, text_yposn, upcae_outside_text_height, - textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 27.0f + xoffset; + if (!vector_plot_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, + upcae_outside_text_height, textwidth, 2 /*right align*/, + &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = (27.0f + 1.0f) + xoffset; textwidth = 5.0f * 8.5f; - if (!vector_plot_add_string(symbol, textpart2, text_xposn, text_yposn, text_height, - textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; + if (!vector_plot_add_string(symbol, textparts[1], 5, text_xposn, text_yposn, text_height, + textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; text_xposn = 67.0f + xoffset; - if (!vector_plot_add_string(symbol, textpart3, text_xposn, text_yposn, text_height, - textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 95.0f + 5.0f + xoffset; + if (!vector_plot_add_string(symbol, textparts[2], 5, text_xposn, text_yposn, text_height, + textwidth, 0 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = (95.0f - 0.35f) + 5.0f + xoffset; textwidth = 6.2f; - if (!vector_plot_add_string(symbol, textpart4, text_xposn, text_yposn, upcae_outside_text_height, - textwidth, 1 /*left align*/, &last_string)) return ZINT_ERROR_MEMORY; - switch (ustrlen(addon)) { - case 2: - text_xposn = 105.0f + xoffset + addon_gap; - textwidth = 2.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; - case 5: - text_xposn = 119.0f + xoffset + addon_gap; - textwidth = 5.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; + if (!vector_plot_add_string(symbol, textparts[3], 1, text_xposn, text_yposn, + upcae_outside_text_height, textwidth, 1 /*left align*/, + &last_string)) return ZINT_ERROR_MEMORY; + if (addon_len) { + text_xposn = (addon_len == 2 ? 105.0f : 119.0f) + xoffset + addon_gap; + textwidth = addon_len * 8.5f; + if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; } } else { /* EAN-13 */ - text_xposn = -5.0f + xoffset; + text_xposn = -(5.0f - 0.1f) + xoffset; textwidth = 8.5f; - if (!vector_plot_add_string(symbol, textpart1, text_xposn, text_yposn, + if (!vector_plot_add_string(symbol, textparts[0], 1, text_xposn, text_yposn, text_height, textwidth, 2 /*right align*/, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 24.0f + xoffset; + text_xposn = (24.0f + 0.5f) + xoffset; textwidth = 6.0f * 8.5f; - if (!vector_plot_add_string(symbol, textpart2, text_xposn, text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - text_xposn = 71.0f + xoffset; - if (!vector_plot_add_string(symbol, textpart3, text_xposn, text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - switch (ustrlen(addon)) { - case 2: - text_xposn = 105.0f + xoffset + addon_gap; - textwidth = 2.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; - case 5: - text_xposn = 119.0f + xoffset + addon_gap; - textwidth = 5.0f * 8.5f; - if (!vector_plot_add_string(symbol, addon, text_xposn, addon_text_yposn, - text_height, textwidth, 0, &last_string)) return ZINT_ERROR_MEMORY; - break; + if (!vector_plot_add_string(symbol, textparts[1], 6, text_xposn, text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + text_xposn = (71.0f - 0.5f) + xoffset; + if (!vector_plot_add_string(symbol, textparts[2], 6, text_xposn, text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; + if (addon_len) { + text_xposn = (addon_len == 2 ? 105.0f : 119.0f) + xoffset + addon_gap; + textwidth = addon_len * 8.5f; + if (!vector_plot_add_string(symbol, addon, addon_len, text_xposn, addon_text_yposn, + text_height, textwidth, 0 /*centre align*/, &last_string)) return ZINT_ERROR_MEMORY; } } } else { /* Put normal human readable text at the bottom (and centered) */ /* calculate start xoffset to center text */ text_xposn = main_width / 2.0f + xoffset; - if (!vector_plot_add_string(symbol, symbol->text, text_xposn, text_yposn, + if (!vector_plot_add_string(symbol, symbol->text, -1, text_xposn, text_yposn, text_height, symbol->width, 0, &last_string)) return ZINT_ERROR_MEMORY; } diff --git a/backend/zint.h b/backend/zint.h index 4f52c7a3..14bb38db 100644 --- a/backend/zint.h +++ b/backend/zint.h @@ -58,7 +58,7 @@ extern "C" { }; struct zint_vector_string { - float x, y; /* Top with x relative to halign (i.e. centre, left, right) */ + float x, y; /* x is relative to halign (i.e. centre, left, right), y is relative to baseline */ float fsize; /* Font size */ float width; /* Suggested string width, may be 0 if none recommended */ int length; /* Number of characters (bytes) */ @@ -116,6 +116,7 @@ extern "C" { int eci; /* Extended Channel Interpretation. Default 0 (none) */ float dpmm; /* Resolution of output in dots per mm (BMP/EMF/PCX/PNG/TIF only). Default 0 (none) */ float dot_size; /* Size of dots used in BARCODE_DOTTY_MODE. Default 0.8 */ + float text_gap; /* Gap between barcode and text (HRT). 0 means use default (font-specific) */ float guard_descent; /* Height in X-dimensions that EAN/UPC guard bars descend. Default 5 */ struct zint_structapp structapp; /* Structured Append info. Default structapp.count 0 (none) */ int warn_level; /* Affects error/warning value returned by Zint API (see WARN_XXX below) */ diff --git a/backend_qt/qzint.cpp b/backend_qt/qzint.cpp index 298803fc..5cdc57a5 100644 --- a/backend_qt/qzint.cpp +++ b/backend_qt/qzint.cpp @@ -35,8 +35,8 @@ #define QSL QStringLiteral namespace Zint { - static const char fontStyle[] = "Helvetica"; - static const char fontStyleError[] = "Helvetica"; + static const QString fontFamily = QSL("Helvetica"); + static const QString fontFamilyError = QSL("Helvetica"); static const int fontSizeError = 14; /* Point size */ static const int maxSegs = 256; @@ -130,6 +130,7 @@ namespace Zint { maxBottom = circle->y + circle->diameter + circle->width; } } + // TODO: Strings? } @@ -145,6 +146,7 @@ namespace Zint { m_scale(1.0f), m_dotty(false), m_dot_size(4.0f / 5.0f), m_guardDescent(5.0f), + m_textGap(0.0f), m_fgStr(QSL("000000")), m_bgStr(QSL("FFFFFF")), m_cmyk(false), m_borderType(0), m_borderWidth(0), m_whitespace(0), m_vwhitespace(0), @@ -229,6 +231,7 @@ namespace Zint { m_zintSymbol->dpmm = m_dpmm; m_zintSymbol->dot_size = m_dot_size; m_zintSymbol->guard_descent = m_guardDescent; + m_zintSymbol->text_gap = m_textGap; m_zintSymbol->structapp = m_structapp; m_zintSymbol->warn_level = m_warn_level; m_zintSymbol->debug = m_debug ? ZINT_DEBUG_PRINT : 0; @@ -566,6 +569,15 @@ namespace Zint { } } + /* Text gap */ + float QZint::textGap() const { + return m_textGap; + } + + void QZint::setTextGap(float textGap) { + m_textGap = textGap; + } + /* Show (true) or hide (false) Human Readable Text */ bool QZint::showText() const { return m_show_hrt; @@ -913,7 +925,7 @@ namespace Zint { if (m_error >= ZINT_ERROR) { painter.setRenderHint(QPainter::Antialiasing); - QFont font(fontStyleError, fontSizeError); + QFont font(fontFamilyError, fontSizeError); painter.setFont(font); painter.drawText(paintRect, Qt::AlignCenter | Qt::TextWordWrap, m_lastError); painter.restore(); @@ -1043,9 +1055,8 @@ namespace Zint { QPen p; p.setColor(fgColor); painter.setPen(p); - bool bold = (m_zintSymbol->output_options & BOLD_TEXT) - && (!isExtendable() || (m_zintSymbol->output_options & SMALL_TEXT)); - QFont font(fontStyle, -1 /*pointSize*/, bold ? QFont::Bold : -1); + bool bold = (m_zintSymbol->output_options & BOLD_TEXT) && !isExtendable(); + QFont font(fontFamily, -1 /*pointSize*/, bold ? QFont::Bold : -1); while (string) { font.setPixelSize(string->fsize); painter.setFont(font); @@ -1055,7 +1066,7 @@ namespace Zint { painter.drawText(QPointF(string->x, string->y), content); } else { QFontMetrics fm(painter.fontMetrics()); - int width = fm.boundingRect(content).width(); + int width = fm.horizontalAdvance(content); if (string->halign == 2) { /* Right align */ painter.drawText(QPointF(string->x - width, string->y), content); } else { /* Centre align */ @@ -1140,7 +1151,8 @@ namespace Zint { const bool autoHeight, const float heightPerRow, const QString& outfile, const QZintXdimDpVars *xdimdpVars) const { QString cmd(win && !noEXE ? QSL("zint.exe") : QSL("zint")); - bool nobackground = bgColor().alpha() == 0; + const bool nobackground = bgColor().alpha() == 0; + const bool notext = hasHRT() && !showText(); char name_buf[32]; if (barcodeNames && ZBarcode_BarcodeName(m_symbol, name_buf) == 0) { @@ -1181,7 +1193,7 @@ namespace Zint { if (!default_bind_top) { arg_bool(cmd, "--bindtop", borderType() & BARCODE_BIND_TOP); } - arg_bool(cmd, "--bold", fontSetting() & BOLD_TEXT); + arg_bool(cmd, "--bold", !notext && (fontSetting() & BOLD_TEXT) && !isExtendable()); if (!default_border) { arg_int(cmd, "--border=", borderWidth()); } @@ -1265,7 +1277,7 @@ namespace Zint { arg_bool(cmd, "--nobackground", nobackground); arg_bool(cmd, "--noquietzones", hasDefaultQuietZones() && noQuietZones()); - arg_bool(cmd, "--notext", hasHRT() && !showText()); + arg_bool(cmd, "--notext", notext); arg_data(cmd, longOptOnly ? "--output=" : "-o ", outfile, win); if (m_symbol == BARCODE_MAXICODE || isComposite()) { @@ -1306,7 +1318,7 @@ namespace Zint { arg_int(cmd, "--separator=", option3()); } - arg_bool(cmd, "--small", fontSetting() & SMALL_TEXT); + arg_bool(cmd, "--small", !notext && (fontSetting() & SMALL_TEXT)); if (m_symbol == BARCODE_DATAMATRIX || m_symbol == BARCODE_HIBC_DM) { arg_bool(cmd, "--square", option3() == DM_SQUARE); @@ -1316,6 +1328,10 @@ namespace Zint { arg_structapp(cmd, "--structapp=", structAppCount(), structAppIndex(), structAppID(), win); } + if (!notext && textGap() != 0.0f) { + arg_float(cmd, "--textgap=", textGap(), true /*allowZero*/); + } + arg_bool(cmd, "--verbose", debug()); if (m_symbol == BARCODE_AZTEC || m_symbol == BARCODE_HIBC_AZTEC diff --git a/backend_qt/qzint.h b/backend_qt/qzint.h index d8c0ba3f..4c209ef4 100644 --- a/backend_qt/qzint.h +++ b/backend_qt/qzint.h @@ -165,6 +165,10 @@ public: void setFontSetting(int fontSettingIndex); // Sets from comboBox index void setFontSettingValue(int fontSetting); // Sets literal value + /* Text gap */ + float textGap() const; // `symbol->text_gap` + void setTextGap(float textGap); + /* Show (true) or hide (false) Human Readable Text */ bool showText() const; // `symbol->show_hrt` void setShowText(bool showText); @@ -355,6 +359,7 @@ private: bool m_dotty; float m_dot_size; float m_guardDescent; + float m_textGap; struct zint_structapp m_structapp; QString m_fgStr; QString m_bgStr; diff --git a/backend_qt/tests/test_qzint.cpp b/backend_qt/tests/test_qzint.cpp index d6029831..079c5547 100644 --- a/backend_qt/tests/test_qzint.cpp +++ b/backend_qt/tests/test_qzint.cpp @@ -127,6 +127,10 @@ private slots: bc.setDotSize(dotSize); QCOMPARE(bc.dotSize(), dotSize); + float textGap = 4.321f; + bc.setTextGap(textGap); + QCOMPARE(bc.textGap(), textGap); + float guardDescent = 0.678f; bc.setGuardDescent(guardDescent); QCOMPARE(bc.guardDescent(), guardDescent); @@ -526,6 +530,7 @@ private slots: QTest::addColumn("dpmm"); QTest::addColumn("dotty"); QTest::addColumn("dotSize"); + QTest::addColumn("textGap"); QTest::addColumn("guardDescent"); QTest::addColumn("structAppCount"); @@ -558,8 +563,8 @@ private slots: QTest::addColumn("warnLevel"); QTest::addColumn("debug"); - QTest::addColumn("xdimdp_xdim"); - QTest::addColumn("xdimdp_xdim_units"); + QTest::addColumn("xdimdp_x_dim"); + QTest::addColumn("xdimdp_x_dim_units"); QTest::addColumn("xdimdp_resolution"); QTest::addColumn("xdimdp_resolution_units"); QTest::addColumn("xdimdp_filetype"); @@ -575,7 +580,7 @@ private slots: QTest::newRow("BARCODE_AUSPOST") << true << 0.0f << "" << BARCODE_AUSPOST << DATA_MODE // symbology-inputMode << "12345678" << "" // text-primary - << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -592,7 +597,7 @@ private slots: QTest::newRow("BARCODE_AZTEC") << false << 0.0f << "" << BARCODE_AZTEC << UNICODE_MODE // symbology-inputMode << "12345678Ж0%var%" << "" // text-primary - << 0.0f << 1 << 0 << 0 << 4.0f << 0.0f << true << 0.9f // height-dotSize + << 0.0f << 1 << 0 << 0 << 4.0f << 0.0f << true << 0.9f << 0.0f // height-textGap << 5.0f << 2 << 1 << "as\"dfa'sdf" // guardDescent-structAppID << "" << "" << QColor(Qt::blue) << QColor(Qt::white) << true // fgStr-cmyk << 0 << 0 << 2 << 3 << 0 // borderTypeIndex-fontSetting @@ -608,7 +613,7 @@ private slots: QTest::newRow("BARCODE_AZTEC") << false << 0.0f << "" << BARCODE_AZTEC << UNICODE_MODE // symbology-inputMode << "12345678Ж0%var%" << "" // text-primary - << 0.0f << 1 << 0 << 0 << 4.0f << 0.0f << true << 0.9f // height-dotSize + << 0.0f << 1 << 0 << 0 << 4.0f << 0.0f << true << 0.9f << 0.0f // height-textGap << 5.0f << 2 << 1 << "as\"dfa'sdf" // guardDescent-structAppID << "71,0,40,44" << "0,0,0,0" << QColor(Qt::black) << QColor(Qt::white) << true // fgStr-cmyk << 0 << 0 << 2 << 3 << 0 // borderTypeIndex-fontSetting @@ -624,7 +629,7 @@ private slots: QTest::newRow("BARCODE_C25INTER") << true << 0.0f << "" << BARCODE_C25INTER << UNICODE_MODE // symbology-inputMode << "12345" << "" // text-primary - << 0.0f << -1 << 2 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << -1 << 2 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << SMALL_TEXT // borderTypeIndex-fontSetting @@ -638,7 +643,7 @@ private slots: QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << "" << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode << "453678" << "" // text-primary - << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(255, 255, 255, 0) << false // fgStr-cmyk << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting @@ -654,7 +659,7 @@ private slots: QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << "" << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode << "453678" << "" // text-primary - << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "FFFFFF00" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting @@ -670,7 +675,7 @@ private slots: QTest::newRow("BARCODE_CHANNEL") << false << 0.0f << "" << BARCODE_CHANNEL << UNICODE_MODE // symbology-inputMode << "453678" << "" // text-primary - << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 19.7f << -1 << 7 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "12345600" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 1 << 2 << 0 << 0 << BOLD_TEXT // borderTypeIndex-fontSetting @@ -686,7 +691,7 @@ private slots: QTest::newRow("BARCODE_CODE128") << false << 0.0f << "" << BARCODE_CODE128 << (UNICODE_MODE | EXTRA_ESCAPE_MODE) // symbology-inputMode << "1234\\^A56" << "" // text-primary - << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -700,7 +705,7 @@ private slots: QTest::newRow("BARCODE_GS1_128_CC") << false << 0.0f << "" << BARCODE_GS1_128_CC << UNICODE_MODE // symbology-inputMode << "[01]12345678901231[15]121212" << "[11]901222[99]ABCDE" // text-primary - << 71.142f << 3 << 0 << 0 << 3.5f << 0.0f << false << 0.8f // height-dotSize + << 71.142f << 3 << 0 << 0 << 3.5f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -716,7 +721,7 @@ private slots: QTest::newRow("BARCODE_CODE16K") << false << 11.7f << "" << BARCODE_CODE16K << (UNICODE_MODE | HEIGHTPERROW_MODE) // symbology-inputMode << "12345678901234567890123456789012" << "" // text-primary - << 0.0f << 4 << 0 << 2 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << 4 << 0 << 2 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 1 << 1 << 0 << 0 << SMALL_TEXT // borderTypeIndex-fontSetting @@ -732,7 +737,7 @@ private slots: QTest::newRow("BARCODE_CODE49") << true << 0.0f << "" << BARCODE_CODE49 << UNICODE_MODE // symbology-inputMode << "12345678901234567890" << "" // text-primary - << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -746,7 +751,7 @@ private slots: QTest::newRow("BARCODE_CODABLOCKF") << true << 0.0f << "" << BARCODE_CODABLOCKF << (DATA_MODE | ESCAPE_MODE) // symbology-inputMode << "T\\n\\xA0t\\\"" << "" // text-primary - << 0.0f << 2 << 5 << 3 << 3.0f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << 2 << 5 << 3 << 3.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 2 << 4 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -762,7 +767,7 @@ private slots: QTest::newRow("BARCODE_DAFT") << false << 0.0f << "" << BARCODE_DAFT << UNICODE_MODE // symbology-inputMode << "daft" << "" // text-primary - << 9.2f << -1 << 251 << 0 << 1.0f << 0.0f << false << 0.7f // height-dotSize + << 9.2f << -1 << 251 << 0 << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(0x30, 0x31, 0x32, 0x33) << QColor(0xBF, 0xBE, 0xBD, 0xBC) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -776,7 +781,7 @@ private slots: QTest::newRow("BARCODE_DATAMATRIX") << true << 0.0f << "" << BARCODE_DATAMATRIX << GS1_MODE // symbology-inputMode << "[20]12" << "" // text-primary - << 0.0f << -1 << 0 << DM_SQUARE << 1.0f << 0.0f << false << 0.7f // height-dotSize + << 0.0f << -1 << 0 << DM_SQUARE << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -790,7 +795,7 @@ private slots: QTest::newRow("BARCODE_DATAMATRIX") << false << 0.0f << "" << BARCODE_DATAMATRIX << (DATA_MODE | ESCAPE_MODE | FAST_MODE) // symbology-inputMode << "ABCDEFGH\\x01I" << "" // text-primary - << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.7f // height-dotSize + << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -804,7 +809,7 @@ private slots: QTest::newRow("BARCODE_DBAR_EXPSTK_CC") << false << 40.8f << "" << BARCODE_DBAR_EXPSTK_CC << (DATA_MODE | HEIGHTPERROW_MODE) // symbology-inputMode << "[91]ABCDEFGHIJKL" << "[11]901222[99]ABCDE" // text-primary - << 0.0f << -1 << 0 << 2 << 1.0f << 0.0f << true << 0.9f // height-dotSize + << 0.0f << -1 << 0 << 2 << 1.0f << 0.0f << true << 0.9f << 0.0f // height-textGap << 3.0f << 2 << 1 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -820,7 +825,7 @@ private slots: QTest::newRow("BARCODE_DOTCODE") << false << 1.0f << "" << BARCODE_DOTCODE << GS1_MODE // symbology-inputMode << "[20]01" << "" // text-primary - << 30.0f << -1 << 8 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.7f // height-dotSize + << 30.0f << -1 << 8 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap << 0.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -834,7 +839,7 @@ private slots: QTest::newRow("BARCODE_DOTCODE") << false << 1.0f << "" << BARCODE_DOTCODE << GS1_MODE // symbology-inputMode << "[20]01" << "" // text-primary - << 30.0f << -1 << 8 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.7f // height-dotSize + << 30.0f << -1 << 8 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap << 0.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -848,7 +853,7 @@ private slots: QTest::newRow("BARCODE_DPD") << true << 0.0f << "" << BARCODE_DPD << UNICODE_MODE // symbology-inputMode << "1234567890123456789012345678" << "" // text-primary - << 0.0f << -1 << 0 << 0 << 4.5f << 24.0f << true << 0.8f // height-dotSize + << 0.0f << -1 << 0 << 0 << 4.5f << 24.0f << true << 0.8f << 0.0f // height-textGap << 0.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -863,7 +868,7 @@ private slots: QTest::newRow("BARCODE_EANX") << true << 0.0f << "" << BARCODE_EANX << UNICODE_MODE // symbology-inputMode << "123456789012+12" << "" // text-primary - << 0.0f << -1 << 8 << 0 << 1.0f << 0.0f << true << 0.8f // height-dotSize + << 0.0f << -1 << 8 << 0 << 1.0f << 0.0f << true << 0.8f << 0.0f // height-textGap << 0.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -877,7 +882,7 @@ private slots: QTest::newRow("BARCODE_GRIDMATRIX") << false << 0.0f << "" << BARCODE_GRIDMATRIX << UNICODE_MODE // symbology-inputMode << "Your Data Here!" << "" // text-primary - << 0.0f << 1 << 5 << 0 << 0.5f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << 1 << 5 << 0 << 0.5f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -891,7 +896,7 @@ private slots: QTest::newRow("BARCODE_HANXIN") << false << 0.0f << "" << BARCODE_HANXIN << (UNICODE_MODE | ESCAPE_MODE) // symbology-inputMode << "éβÿ啊\\e\"'" << "" // text-primary - << 30.0f << 2 << 5 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << 2 << 5 << ((0 + 1) << 8) << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -905,7 +910,7 @@ private slots: QTest::newRow("BARCODE_HIBC_DM") << false << 10.0f << "" << BARCODE_HIBC_DM << UNICODE_MODE // symbology-inputMode << "1234" << "" // text-primary - << 0.0f << -1 << 8 << DM_DMRE << 1.0f << 0.0f << false << 0.7f // height-dotSize + << 0.0f << -1 << 8 << DM_DMRE << 1.0f << 0.0f << false << 0.7f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -919,7 +924,7 @@ private slots: QTest::newRow("BARCODE_HIBC_PDF") << false << 0.0f << "" << BARCODE_HIBC_PDF << (DATA_MODE | HEIGHTPERROW_MODE) // symbology-inputMode << "TEXT" << "" // text-primary - << 3.5f << 3 << 4 << 10 << 10.0f << 0.0f << false << 0.8f // height-dotSize + << 3.5f << 3 << 4 << 10 << 10.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 2 << 1 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -935,7 +940,7 @@ private slots: QTest::newRow("BARCODE_ITF14") << true << 0.0f << "" << BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode << "9212320967145" << "" // text-primary - << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -949,7 +954,7 @@ private slots: QTest::newRow("BARCODE_ITF14") << true << 0.0f << "" << BARCODE_ITF14 << UNICODE_MODE // symbology-inputMode << "9212320967145" << "" // text-primary - << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 1 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -964,7 +969,7 @@ private slots: << BARCODE_MAXICODE << (UNICODE_MODE | ESCAPE_MODE) // symbology-inputMode << "152382802840001" << "1Z00004951\\GUPSN\\G06X610\\G159\\G1234567\\G1/1\\G\\GY\\G1 MAIN ST\\GTOWN\\GNY\\R\\E" // text-primary - << 0.0f << -1 << (96 + 1) << 0 << 2.5f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << -1 << (96 + 1) << 0 << 2.5f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -980,7 +985,7 @@ private slots: QTest::newRow("BARCODE_MICROQR") << false << 0.0f << "" << BARCODE_MICROQR << UNICODE_MODE // symbology-inputMode << "1234" << "" // text-primary - << 30.0f << 2 << 3 << (ZINT_FULL_MULTIBYTE | (3 + 1) << 8) << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << 2 << 3 << (ZINT_FULL_MULTIBYTE | (3 + 1) << 8) << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -994,7 +999,7 @@ private slots: QTest::newRow("BARCODE_QRCODE") << true << 0.0f << "" << BARCODE_QRCODE << GS1_MODE // symbology-inputMode << "(01)12" << "" // text-primary - << 0.0f << 1 << 5 << (ZINT_FULL_MULTIBYTE | (0 + 1) << 8) << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << 1 << 5 << (ZINT_FULL_MULTIBYTE | (0 + 1) << 8) << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -1010,7 +1015,7 @@ private slots: QTest::newRow("BARCODE_RMQR") << true << 0.0f << "" << BARCODE_RMQR << UNICODE_MODE // symbology-inputMode << "テ" << "" // text-primary - << 30.0f << -1 << 8 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 30.0f << -1 << 8 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -1024,7 +1029,7 @@ private slots: QTest::newRow("BARCODE_ULTRA") << false << 0.0f << "" << BARCODE_ULTRA << (GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE) // symbology-inputMode << "(01)1" << "" // text-primary - << 0.0f << 6 << 2 << 0 << 1.0f << 0.0f << true << 0.8f // height-dotSize + << 0.0f << 6 << 2 << 0 << 1.0f << 0.0f << true << 0.8f << 0.0f // height-textGap << 5.0f << 2 << 1 << "4" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting @@ -1038,37 +1043,51 @@ private slots: QTest::newRow("BARCODE_UPCE_CC") << true << 0.0f << "out.svg" << BARCODE_UPCE_CC << UNICODE_MODE // symbology-inputMode << "12345670+1234" << "[11]901222[99]ABCDE" // text-primary - << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 0.0f << -1 << 0 << 0 << 1.0f << 0.0f << false << 0.8f << 0.0f // height-textGap << 6.5f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(0xEF, 0x29, 0x29) << QColor(Qt::white) << false // fgStr-cmyk << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting << true << false << false << true << true << 0 // showText-rotateAngle << 0 << false << false << false << WARN_FAIL_ALL << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp - << "zint -b 136 --bold --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5" + << "zint -b 136 --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5" " --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror" - << "zint.exe -b 136 --bold --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5" + << "zint.exe -b 136 --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5" " --noquietzones -o \"out.svg\" --primary=\"12345670+1234\" --small --werror" - << "zint --barcode=136 --bold --compliantheight --data='[11]901222[99]ABCDE' --fg=EF2929" + << "zint --barcode=136 --compliantheight --data='[11]901222[99]ABCDE' --fg=EF2929" " --guarddescent=6.5 --noquietzones --output='out.svg' --primary='12345670+1234' --small --werror" - << "zint -b UPCE_CC --bold --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5" + << "zint -b UPCE_CC --compliantheight -d '[11]901222[99]ABCDE' --fg=EF2929 --guarddescent=6.5" " --noquietzones -o 'out.svg' --primary='12345670+1234' --small --werror" - << "zint -b 136 --bold --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5" + << "zint -b 136 --compliantheight -d \"[11]901222[99]ABCDE\" --fg=EF2929 --guarddescent=6.5" " --noquietzones -o \"out.svg\" --primary=\"12345670+1234\" --small --werror" << ""; QTest::newRow("BARCODE_VIN") << false << 2.0f << "" << BARCODE_VIN << UNICODE_MODE // symbology-inputMode << "12345678701234567" << "" // text-primary - << 20.0f << -1 << 1 << 0 << 1.0f << 0.0f << false << 0.8f // height-dotSize + << 20.0f << -1 << 1 << 0 << 1.0f << 0.0f << false << 0.8f << 1.2f // height-textGap << 5.0f << 0 << 0 << "" // guardDescent-structAppID << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk - << 0 << 0 << 0 << 0 << 0 // borderTypeIndex-fontSetting + << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting << true << false << false << false << true << 0 // showText-rotateAngle << 0 << false << false << false << WARN_DEFAULT << false // eci-debug << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp - << "zint -b 73 -d '12345678701234567' --height=20 --vers=1" - << "zint.exe -b 73 -d \"12345678701234567\" --height=20 --vers=1" + << "zint -b 73 --bold -d '12345678701234567' --height=20 --small --textgap=1.2 --vers=1" + << "zint.exe -b 73 --bold -d \"12345678701234567\" --height=20 --small --textgap=1.2 --vers=1" + << "" << "" << "" << ""; + + QTest::newRow("BARCODE_VIN") << false << 2.0f << "" + << BARCODE_VIN << UNICODE_MODE // symbology-inputMode + << "12345678701234567" << "" // text-primary + << 20.0f << -1 << 1 << 0 << 1.0f << 0.0f << false << 0.8f << 1.2f // height-textGap + << 5.0f << 0 << 0 << "" // guardDescent-structAppID + << "" << "" << QColor(Qt::black) << QColor(Qt::white) << false // fgStr-cmyk + << 0 << 0 << 0 << 0 << (BOLD_TEXT | SMALL_TEXT) // borderTypeIndex-fontSetting + << false << false << false << false << true << 0 // showText-rotateAngle + << 0 << false << false << false << WARN_DEFAULT << false // eci-debug + << 0.0 << 0 << 0 << 0 << 0 << 0 // xdimdp + << "zint -b 73 -d '12345678701234567' --height=20 --notext --vers=1" + << "zint.exe -b 73 -d \"12345678701234567\" --height=20 --notext --vers=1" << "" << "" << "" << ""; } @@ -1094,6 +1113,7 @@ private slots: QFETCH(float, dpmm); QFETCH(bool, dotty); QFETCH(float, dotSize); + QFETCH(float, textGap); QFETCH(float, guardDescent); QFETCH(int, structAppCount); QFETCH(int, structAppIndex); @@ -1121,8 +1141,8 @@ private slots: QFETCH(int, warnLevel); QFETCH(bool, debug); - QFETCH(double, xdimdp_xdim); - QFETCH(int, xdimdp_xdim_units); + QFETCH(double, xdimdp_x_dim); + QFETCH(int, xdimdp_x_dim_units); QFETCH(int, xdimdp_resolution); QFETCH(int, xdimdp_resolution_units); QFETCH(int, xdimdp_filetype); @@ -1151,6 +1171,7 @@ private slots: bc.setDPMM(dpmm); bc.setDotty(dotty); bc.setDotSize(dotSize); + bc.setTextGap(textGap); bc.setGuardDescent(guardDescent); bc.setStructApp(structAppCount, structAppIndex, structAppID); if (fgStr.isEmpty()) { @@ -1208,11 +1229,16 @@ private slots: QCOMPARE(cmd, expected_noexe); } - if (xdimdp_xdim) { - struct Zint::QZintXdimDpVars vars = { - xdimdp_xdim, xdimdp_xdim_units, xdimdp_resolution, xdimdp_resolution_units, xdimdp_filetype, - xdimdp_filetype_maxicode, 1 /*set*/ - }; + if (xdimdp_x_dim) { + /* Avoid clang 14 error "no matching constructor for initialization" by initializing field-wise */ + struct Zint::QZintXdimDpVars vars; + vars.x_dim = xdimdp_x_dim; + vars.x_dim_units = xdimdp_x_dim_units; + vars.resolution = xdimdp_resolution; + vars.resolution_units = xdimdp_resolution_units; + vars.filetype = xdimdp_filetype; + vars.filetype_maxicode = xdimdp_filetype_maxicode; + vars.set = 1; cmd = bc.getAsCLI(false /*win*/, false /*longOptOnly*/, false /*barcodeNames*/, false /*noEXE*/, autoHeight, heightPerRow, outfile, &vars); QCOMPARE(cmd, expected_xdimdp); diff --git a/backend_tcl/zint.c b/backend_tcl/zint.c index 494d1fc3..916f47de 100644 --- a/backend_tcl/zint.c +++ b/backend_tcl/zint.c @@ -166,6 +166,8 @@ - Added UPU_S10 2023-01-15 GL - Added -esc and -extraesc options +2023-02-10 GL +- Added -textgap option */ #if defined(__WIN32__) || defined(_WIN32) || defined(WIN32) @@ -502,7 +504,7 @@ static const char help_message[] = "zint tcl(stub,obj) dll\n" " -bindtop bool: bar above the code, size set by -border\n" " -bold bool: use bold text\n" " -border integer: width of a border around the symbol. Use with -bind/-box/-bindtop 1\n" - " -box bool: box around bar code, size set be -border\n" + " -box bool: box around bar code, size set by -border\n" /* cli option --cmyk not supported as no corresponding output */ " -cols integer: Codablock F, DotCode, PDF417: number of columns\n" " -compliantheight bool: warn if height not compliant, and use standard default\n" @@ -551,6 +553,7 @@ static const char help_message[] = "zint tcl(stub,obj) dll\n" " -smalltext bool: tiny interpretation line font\n" " -square bool: force Data Matrix symbols to be square\n" " -structapp {index count ?id?}: set Structured Append info\n" + " -textgap double: gap between barcode and text\n" /* cli option --types not supported */ " -vers integer: Symbology option\n" /* cli option --version not supported */ @@ -791,7 +794,7 @@ static int Encode(Tcl_Interp *interp, int objc, "-reverse", "-rotate", "-rows", "-scale", "-scalexdimdp", "-scmvv", "-secure", "-seg1", "-seg2", "-seg3", "-seg4", "-seg5", "-seg6", "-seg7", "-seg8", "-seg9", "-separator", "-smalltext", "-square", "-structapp", - "-to", "-vers", "-vwhitesp", "-werror", "-whitesp", + "-textgap", "-to", "-vers", "-vwhitesp", "-werror", "-whitesp", NULL}; enum iOption { iAddonGap, iBarcode, iBG, iBind, iBindTop, iBold, iBorder, iBox, @@ -803,7 +806,7 @@ static int Encode(Tcl_Interp *interp, int objc, iReverse, iRotate, iRows, iScale, iScaleXdimDp, iSCMvv, iSecure, iSeg1, iSeg2, iSeg3, iSeg4, iSeg5, iSeg6, iSeg7, iSeg8, iSeg9, iSeparator, iSmallText, iSquare, iStructApp, - iTo, iVers, iVWhiteSp, iWError, iWhiteSp + iTextGap, iTo, iVers, iVWhiteSp, iWError, iWhiteSp }; int optionIndex; int intValue; @@ -865,6 +868,7 @@ static int Encode(Tcl_Interp *interp, int objc, case iGuardDescent: case iDotSize: case iScale: + case iTextGap: /* >> Float */ if (TCL_OK != Tcl_GetDoubleFromObj(interp, objv[optionPos+1], &doubleValue)) @@ -1138,6 +1142,15 @@ static int Encode(Tcl_Interp *interp, int objc, my_symbol->scale = (float)doubleValue; } break; + case iTextGap: + if (doubleValue < 0.0 || doubleValue > 5.0) { + Tcl_SetObjResult(interp, + Tcl_NewStringObj("Text Gap out of range", -1)); + fError = 1; + } else { + my_symbol->text_gap = (float)doubleValue; + } + break; case iScaleXdimDp: /* >> Decode the -scalexdimdp parameter as list of xdim ?resolution? */ { diff --git a/docs/images/bc412.svg b/docs/images/bc412.svg index f8aae4e9..cae5391e 100644 --- a/docs/images/bc412.svg +++ b/docs/images/bc412.svg @@ -43,7 +43,7 @@ - AQQ45670 diff --git a/docs/images/c25iata.svg b/docs/images/c25iata.svg index 76e3b041..9944ce41 100644 --- a/docs/images/c25iata.svg +++ b/docs/images/c25iata.svg @@ -62,7 +62,7 @@ - 9212320967 diff --git a/docs/images/c25ind.svg b/docs/images/c25ind.svg index 407238c2..77899bf5 100644 --- a/docs/images/c25ind.svg +++ b/docs/images/c25ind.svg @@ -64,7 +64,7 @@ - 9212320967 diff --git a/docs/images/c25inter.svg b/docs/images/c25inter.svg index 825b1396..ded456b4 100644 --- a/docs/images/c25inter.svg +++ b/docs/images/c25inter.svg @@ -37,7 +37,7 @@ - 9212320967 diff --git a/docs/images/c25logic.svg b/docs/images/c25logic.svg index 06c60188..f9dc7843 100644 --- a/docs/images/c25logic.svg +++ b/docs/images/c25logic.svg @@ -42,7 +42,7 @@ - 9212320967 diff --git a/docs/images/c25standard.svg b/docs/images/c25standard.svg index d051ab0e..ea03c870 100644 --- a/docs/images/c25standard.svg +++ b/docs/images/c25standard.svg @@ -44,7 +44,7 @@ - 9212320967 diff --git a/docs/images/channel.svg b/docs/images/channel.svg index 51bf8693..c4e45f5b 100644 --- a/docs/images/channel.svg +++ b/docs/images/channel.svg @@ -20,7 +20,7 @@ - 453678 diff --git a/docs/images/codabar.svg b/docs/images/codabar.svg index b445f146..ec8f65d8 100644 --- a/docs/images/codabar.svg +++ b/docs/images/codabar.svg @@ -36,7 +36,7 @@ - A37859B diff --git a/docs/images/code11.svg b/docs/images/code11.svg index 09187d34..d345b175 100644 --- a/docs/images/code11.svg +++ b/docs/images/code11.svg @@ -50,7 +50,7 @@ - 921232096769 diff --git a/docs/images/code128.svg b/docs/images/code128.svg index c63c4a06..f11b23f5 100644 --- a/docs/images/code128.svg +++ b/docs/images/code128.svg @@ -42,7 +42,7 @@ - 130170X178 diff --git a/docs/images/code128_box.svg b/docs/images/code128_box.svg index 79e053af..19a075c8 100644 --- a/docs/images/code128_box.svg +++ b/docs/images/code128_box.svg @@ -49,7 +49,7 @@ - This Text diff --git a/docs/images/code128_green.svg b/docs/images/code128_green.svg index 42af4166..bbf71277 100644 --- a/docs/images/code128_green.svg +++ b/docs/images/code128_green.svg @@ -45,7 +45,7 @@ - This Text diff --git a/docs/images/code128_green_alpha.svg b/docs/images/code128_green_alpha.svg index f6309f39..451e13e4 100644 --- a/docs/images/code128_green_alpha.svg +++ b/docs/images/code128_green_alpha.svg @@ -45,7 +45,7 @@ - This Text diff --git a/docs/images/code128_rotate90.svg b/docs/images/code128_rotate90.svg index 00617992..c7752eea 100644 --- a/docs/images/code128_rotate90.svg +++ b/docs/images/code128_rotate90.svg @@ -45,8 +45,8 @@ - + This Text diff --git a/docs/images/code128_small_bold.svg b/docs/images/code128_small_bold.svg index 8679db53..b4b46301 100644 --- a/docs/images/code128_small_bold.svg +++ b/docs/images/code128_small_bold.svg @@ -45,7 +45,7 @@ - This Text diff --git a/docs/images/code128_stacked.svg b/docs/images/code128_stacked.svg index 7438924b..a29945db 100644 --- a/docs/images/code128_stacked.svg +++ b/docs/images/code128_stacked.svg @@ -34,7 +34,7 @@ - That diff --git a/docs/images/code128_textgap.svg b/docs/images/code128_textgap.svg new file mode 100644 index 00000000..57ecc716 --- /dev/null +++ b/docs/images/code128_textgap.svg @@ -0,0 +1,47 @@ + + + + Zint Generated Symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Áccent + + + diff --git a/docs/images/code128ab.svg b/docs/images/code128ab.svg index 5c08c387..b4fbbba6 100644 --- a/docs/images/code128ab.svg +++ b/docs/images/code128ab.svg @@ -48,7 +48,7 @@ - 130170X178 diff --git a/docs/images/code32.svg b/docs/images/code32.svg index 1d992dc5..789a547a 100644 --- a/docs/images/code32.svg +++ b/docs/images/code32.svg @@ -48,7 +48,7 @@ - A143523126 diff --git a/docs/images/code39.svg b/docs/images/code39.svg index 40ce608b..662c4e77 100644 --- a/docs/images/code39.svg +++ b/docs/images/code39.svg @@ -33,7 +33,7 @@ - *1AB* diff --git a/docs/images/code93.svg b/docs/images/code93.svg index a70637c9..41e2cfff 100644 --- a/docs/images/code93.svg +++ b/docs/images/code93.svg @@ -30,7 +30,7 @@ - C93 diff --git a/docs/images/dbar_exp.svg b/docs/images/dbar_exp.svg index b5bbe347..9bf8bf72 100644 --- a/docs/images/dbar_exp.svg +++ b/docs/images/dbar_exp.svg @@ -52,7 +52,7 @@ - (01)98898765432106(3202)012345(15)991231 diff --git a/docs/images/dbar_ltd.svg b/docs/images/dbar_ltd.svg index edd3ffbf..64329f5b 100644 --- a/docs/images/dbar_ltd.svg +++ b/docs/images/dbar_ltd.svg @@ -31,7 +31,7 @@ - (01)09501101530010 diff --git a/docs/images/dbar_omn.svg b/docs/images/dbar_omn.svg index 34ed0acc..cd9ae514 100644 --- a/docs/images/dbar_omn.svg +++ b/docs/images/dbar_omn.svg @@ -31,7 +31,7 @@ - (01)09501101530010 diff --git a/docs/images/dbar_truncated.svg b/docs/images/dbar_truncated.svg index a05b1dcc..f4328436 100644 --- a/docs/images/dbar_truncated.svg +++ b/docs/images/dbar_truncated.svg @@ -31,7 +31,7 @@ - (01)09501101530010 diff --git a/docs/images/dpd.svg b/docs/images/dpd.svg index 22fc1009..67a25365 100644 --- a/docs/images/dpd.svg +++ b/docs/images/dpd.svg @@ -67,7 +67,7 @@ - 0003 932 0621 9912 3456 78 101 040 9 diff --git a/docs/images/dpident.svg b/docs/images/dpident.svg index 4dd360ce..ab1d233d 100644 --- a/docs/images/dpident.svg +++ b/docs/images/dpident.svg @@ -42,7 +42,7 @@ - 91.23 2.096.712 7 diff --git a/docs/images/dpleit.svg b/docs/images/dpleit.svg index 6f74ba3f..87604033 100644 --- a/docs/images/dpleit.svg +++ b/docs/images/dpleit.svg @@ -47,7 +47,7 @@ - 92123.209.671.456 diff --git a/docs/images/ean14.svg b/docs/images/ean14.svg index ca810b9c..faf3f000 100644 --- a/docs/images/ean14.svg +++ b/docs/images/ean14.svg @@ -45,7 +45,7 @@ - (01)98898765432106 diff --git a/docs/images/eanx13.svg b/docs/images/eanx13.svg index 46d470e5..e210ef2f 100644 --- a/docs/images/eanx13.svg +++ b/docs/images/eanx13.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -38,15 +38,15 @@ - 4 - 512345 - 678906 diff --git a/docs/images/eanx5.svg b/docs/images/eanx5.svg index 887d69fa..a0d19308 100644 --- a/docs/images/eanx5.svg +++ b/docs/images/eanx5.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -24,7 +24,7 @@ - 54321 diff --git a/docs/images/eanx8_5.svg b/docs/images/eanx8_5.svg index 0c342c73..b91cb7c9 100644 --- a/docs/images/eanx8_5.svg +++ b/docs/images/eanx8_5.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -30,27 +30,27 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 7432 - 3654 diff --git a/docs/images/eanx_cc_a.svg b/docs/images/eanx_cc_a.svg index cc9a9bed..1945d2a5 100644 --- a/docs/images/eanx_cc_a.svg +++ b/docs/images/eanx_cc_a.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -103,15 +103,15 @@ - 3 - 312345 - 678903 diff --git a/docs/images/eanx_cc_b.svg b/docs/images/eanx_cc_b.svg index 4b37d503..ce5060ef 100644 --- a/docs/images/eanx_cc_b.svg +++ b/docs/images/eanx_cc_b.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -152,15 +152,15 @@ - 3 - 312345 - 678903 diff --git a/docs/images/excode39.svg b/docs/images/excode39.svg index 4021ea29..25a7d8a2 100644 --- a/docs/images/excode39.svg +++ b/docs/images/excode39.svg @@ -68,7 +68,7 @@ - 123.45fd diff --git a/docs/images/gs1_128.svg b/docs/images/gs1_128.svg index cfe308aa..9009fbce 100644 --- a/docs/images/gs1_128.svg +++ b/docs/images/gs1_128.svg @@ -72,7 +72,7 @@ - (01)98898765432106(3202)012345(15)991231 diff --git a/docs/images/gs1_128_cc_c.svg b/docs/images/gs1_128_cc_c.svg index 2de251e5..068a0588 100644 --- a/docs/images/gs1_128_cc_c.svg +++ b/docs/images/gs1_128_cc_c.svg @@ -199,7 +199,7 @@ - (01)03312345678903 diff --git a/docs/images/gui_appearance.png b/docs/images/gui_appearance.png index 7bd475a8df0cf06924cfdb087acfd037d0ad2284..a65caa5f84bbcaab0402eca7e974be4ab2c568c8 100644 GIT binary patch literal 294589 zcmY(q1yEc;vo^d~kPzJ6J-9mr*WeDpgS#%00Kp~5;uc^71QuU33ju-!cZa|tK^AxY zd2iMI?)z7rQ(HA>wojj#?w;v>o{4*}rThkq0t)~DyirwA&;j`y05CHBKj^e77ih;V5;6Z06+&&RglvUTsmA`Os8%E z@!t3Vw*0T5R|SdHWA{zOt)qS$h(hpGs2UmZdH`dSMaec|8|@F}+NsS;|ah9)=R45dhl zo)ZUYYfuQye{$`dM@4zW=rZvHiIO^zJQ zn3Kc9-pO5Pmbzi)yHNzs(Dl7S=2hs=o-=h~E>)4ibj)6%_^$zacr#&biTwtEjgOB@ z7)y{kr|ZJLJq_0SJzdGB`=?uh7{cVlUaH~(PQjk$MftB!=)IwwR?s102Y<20M|wvG zV7DhzYIfu6N5xlV?^vzLNOd#I=L5gYql?@3qW_!Q=+nmOn1oy^mRGa6cQ8vL#YE<} z!vt!Tyx7Z#=D8(5{)ltlucn-Op8us|2wkiS`w&@+n*{PK!atR7z>Cb*=Bv#+mp5gf zV^#7hS^vB5Cydxne?4J@Qn604Z1JB4 (NRaIZKkpFMH2=P?WBT_PTnXgavqKhw4 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�clQ$+S(c z-b?t>6bgkxp?HhE8vsBESzBA1nwpBo6ym0vbU1)5+93zdZ>aVbl!h z3>aV(NHv`P-|F7+PD?_#ZUp$tSPQ#pUF@2L`HJ;`fJJ%gKx?Qge^B^Ribp<xfqdb_Khz!e-jxUlV}XFC0e{+$BLISUD$o?_$@aCp>wDtS&muqw6HawQ z(-1?iIaLWKnptaW z#6y9OkGmR9H~AniBU(_?v4#y4Y-l){N+0##mlzo5rmi!LWt~xX^6+QJdOeVcQmz{T z!k#~Bn*Y56P;m@gD9PY_E5 zn?t?1LoKfKoE16yS;4A;gErty#)yzw>?!c;RN+Vi_-F<_JGX5_KylO+I9qS1gB2t3=fYf#OI zXixYR5};-v`q=GS5&>vb*FyR$yg_O=ibA1KDBc{u#;da~FvhW1Y-(!i#*G^Qkjv#5 zV^8`mgpljHlarG-Zrmu9N{x+;c$-U=h+sXW>#+Tydp+tCG{UrS?78n5AOd=X=@5I! z{2*M9aQ*c)<%?MtyJlhTh8_^ZoEaQmCP)Ag&cmDogq}xG5>dp1ItTr=KF+(K0nhU) zm5S@S4^4AwM<}k9tcqt90RXIuS6nM`u02}&SW3wlGfk7y?JWjBXUobLx9Sl9C!B|Q z=+R!|!50W%gBu2a<~dtkNRuTY!aAI=P1ali52k8tgh>w zot;ZdOF#eo^WflMFc^GF(k_IM=Xu3qu~aH$v)RthPF>fxwFd#7%kF*I5&Vs|V_w3# z*aZu7SM;z0HxVAUi)gP{;JcuKQmORgk3UXKOgz@vWL2$&g@sC`3IO(yy}Y!f8;_aI z2_f?N{Har?B9X{WU)S6GjPJRA0O`8c+ew=X=AnJ|(1>+&(7rL~&CZKTRXXlQRVhH6 zVbh@Ll(xT1-`A21HSpL&A%rL>_5z;gl}aVYakei4DJ5e(6bf$F)2vV^6bi*J4^7kB z+S&kMaBy&GY03Bf%~GIGA`}WWHa2#4cDA*(J#)i?=Xs@4(Q(}8HRGg|ob%e$S~b&K zqlaCv0F{28iEilmLVm|vs#q*O8YiNx^gRH<$TX;FkWi3CBD}87>FIPAm%K{JckSBF zB7_lP8Vv+lJkB#|-cV0-X{7O;exfCS?^jC|$CqHc^H+v`{_+ww1P(<*vE-@${ZJ+J zX*uoHLEKbN_hV4EV{cF_7XR(v{%v4OXqfQU>SfLS_pe_4db9a_(#9FP8bRw018l@v z0t_VHynG2fd8+Q2%C~*0J{^e?b3Uj0CC4SOgg^cfy$0fP1_cS8d3Lo`v-{eXTPZ|5 zn7RAR{QXO>T>jf;_ivWl=g6q(S8V-%?Gt%am&P69?bOM=&& z>p#=i!+R#oYu%RvlM>e7I(<|-{_I*G{eL1h(x3R>zW;YNe@fky?BxE%X1_s$+)f)G zZ;tf6TvoF;w)cS-znA@bZYK}j)vL2KkAAlO*Tb0n#PpR5(}f8W-)5isW;(a(k9&)Q zS89Li^X~ntzD!=9)WOTvJiqqa&GmI(S3kcsA&A?hX5+IJPuGUN1s>BT(q*0)wB3De zx487d@)Vi+J?w%Cyo&xWcu1DfS>^CU; zf4RMUzHH8&xrMn2J=uxX(cV{9rI)VP_VJ4BKDowp<1StB0#M&6r3=?^FJ*+o#$2cJ zSATd8f3P{fNymv}>6WrOuj1;ETnevwi}TRspJu=OtZUxUeV}ZW>tS;T61^Fh7B9{-*L; zI_OF-%;R9y8_NR&rO{MDSM$I`kIrLXJps+NA}s=I|30m}=ltGNbN-jD%lCX0iF*?b z(*dzfNngzSBs{Ne* z6g;H>3)@H24?CB7%M}&dyxM%DrttOa{@T>f`z4YYe*9+?Hv?{(s#pd*Ns@uV)78&q Iol`;+0QL9@DgXcg literal 283869 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

9^(O<#XrG{ncOn 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 diff --git a/docs/images/hibc_128.svg b/docs/images/hibc_128.svg index bea29626..dd2cc5aa 100644 --- a/docs/images/hibc_128.svg +++ b/docs/images/hibc_128.svg @@ -63,7 +63,7 @@ - *+A123BJC5D6E71G* diff --git a/docs/images/hibc_39.svg b/docs/images/hibc_39.svg index f58c17b1..8779ba48 100644 --- a/docs/images/hibc_39.svg +++ b/docs/images/hibc_39.svg @@ -68,7 +68,7 @@ - *+14352312J* diff --git a/docs/images/isbnx.svg b/docs/images/isbnx.svg index bb498a6e..2f4b42dd 100644 --- a/docs/images/isbnx.svg +++ b/docs/images/isbnx.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -38,15 +38,15 @@ - 9 - 789295 - 055124 diff --git a/docs/images/itf14.svg b/docs/images/itf14.svg index ed2de626..6bf9e21b 100644 --- a/docs/images/itf14.svg +++ b/docs/images/itf14.svg @@ -51,7 +51,7 @@ - 92123209671459 diff --git a/docs/images/itf14_border0.svg b/docs/images/itf14_border0.svg index 260e19a8..4f0f5a7b 100644 --- a/docs/images/itf14_border0.svg +++ b/docs/images/itf14_border0.svg @@ -47,7 +47,7 @@ - 92123209671459 diff --git a/docs/images/koreapost.svg b/docs/images/koreapost.svg index 443fd370..59ee108b 100644 --- a/docs/images/koreapost.svg +++ b/docs/images/koreapost.svg @@ -36,7 +36,7 @@ - 9234570 diff --git a/docs/images/logmars.svg b/docs/images/logmars.svg index edd33616..754f22ca 100644 --- a/docs/images/logmars.svg +++ b/docs/images/logmars.svg @@ -78,7 +78,7 @@ - 12345/ABCDET diff --git a/docs/images/msi_plessey.svg b/docs/images/msi_plessey.svg index d83dfa03..72bc8b7e 100644 --- a/docs/images/msi_plessey.svg +++ b/docs/images/msi_plessey.svg @@ -35,7 +35,7 @@ - 650291 diff --git a/docs/images/nve18.svg b/docs/images/nve18.svg index 8fc1c858..5252437b 100644 --- a/docs/images/nve18.svg +++ b/docs/images/nve18.svg @@ -51,7 +51,7 @@ - (00)376123450000010039 diff --git a/docs/images/plessey.svg b/docs/images/plessey.svg index 4c640ed8..01c351d1 100644 --- a/docs/images/plessey.svg +++ b/docs/images/plessey.svg @@ -37,7 +37,7 @@ - C64 diff --git a/docs/images/pzn.svg b/docs/images/pzn.svg index 0b46f64e..5be7acb3 100644 --- a/docs/images/pzn.svg +++ b/docs/images/pzn.svg @@ -63,7 +63,7 @@ - PZN - 27580899 diff --git a/docs/images/telepen.svg b/docs/images/telepen.svg index c8d8ad3a..4b44244e 100644 --- a/docs/images/telepen.svg +++ b/docs/images/telepen.svg @@ -40,7 +40,7 @@ - Z80 diff --git a/docs/images/telepen_num.svg b/docs/images/telepen_num.svg index f0885beb..22e49947 100644 --- a/docs/images/telepen_num.svg +++ b/docs/images/telepen_num.svg @@ -42,7 +42,7 @@ - 466X33 diff --git a/docs/images/upca.svg b/docs/images/upca.svg index bc7010f4..82f2c888 100644 --- a/docs/images/upca.svg +++ b/docs/images/upca.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -38,19 +38,19 @@ - 7 - 25272 - 70270 - 3 diff --git a/docs/images/upca_5.svg b/docs/images/upca_5.svg index 92a2f9ab..5ad2411b 100644 --- a/docs/images/upca_5.svg +++ b/docs/images/upca_5.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -38,35 +38,35 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + 7 - 25272 - 70270 - 3 diff --git a/docs/images/upce.svg b/docs/images/upce.svg index 77d077ff..46a89233 100644 --- a/docs/images/upce.svg +++ b/docs/images/upce.svg @@ -1,13 +1,13 @@ - Zint Generated Symbol - + @@ -25,15 +25,15 @@ - 1 - 123456 - 2 diff --git a/docs/images/upu_s10.svg b/docs/images/upu_s10.svg index 35540ad1..8ff4d3bf 100644 --- a/docs/images/upu_s10.svg +++ b/docs/images/upu_s10.svg @@ -51,7 +51,7 @@ - EE 876 543 216 CA diff --git a/docs/images/vin.svg b/docs/images/vin.svg index 9dfa5d70..cb6b78aa 100644 --- a/docs/images/vin.svg +++ b/docs/images/vin.svg @@ -108,7 +108,7 @@ - 2FTPX28L0XCA15511 diff --git a/docs/manual.pmd b/docs/manual.pmd index a22276b8..fe7a4d3c 100644 --- a/docs/manual.pmd +++ b/docs/manual.pmd @@ -1,6 +1,6 @@ % Zint Barcode Generator and Zint Barcode Studio User Manual % Version 2.12.0.9 -% January 2023 +% February 2023 # 1. Introduction @@ -531,9 +531,11 @@ alternative mode is selected. This command replaces the use of the `-d` switch. zint -i somefile.txt ``` +To read from stdin specify a single hyphen `"-"` as the input file. + Note that except when batch processing (see [4.11 Batch Processing] below), the -file should not end with a newline (`LF` on Unix, `CR+LF` on Windows) unless you -want the newline to be encoded in the symbol. +file (or stdin) should not end with a newline (`LF` on Unix, `CR+LF` on Windows) +unless you want the newline to be encoded in the symbol. ## 4.2 Directing Output @@ -651,7 +653,7 @@ Value 52 `BARCODE_PZN` PZN 53 `BARCODE_PHARMA_TWO` Pharmacode Two-Track - + 54 `BARCODE_CEPNET` Brazilian CEPNet 55 `BARCODE_PDF417` PDF417 @@ -1371,7 +1373,7 @@ This command will output the symbol as a PCX file to stdout. The currently supported output file formats are shown in the following table. Abbreviation File format ------------- --------------------------- +------------ ------------------------------------ BMP Windows Bitmap EMF Enhanced Metafile Format EPS Encapsulated PostScript @@ -1380,7 +1382,7 @@ PCX ZSoft Paintbrush image PNG Portable Network Graphic SVG Scalable Vector Graphic TIF Tagged Image File Format -TXT Text file (see [4.18 Other Output Options]) +TXT Text file (see [4.19 Other Options]) Table: {#tbl:output_file_formats tag=": Output File Formats"} @@ -1469,7 +1471,24 @@ is the same for all symbols belonging to the same sequence. The index is 1-based and goes from 1 to count. Count must be 2 or more. See the individual symbologies for further details. -## 4.17 Help Options +## 4.17 Human Readable Text (HRT) Options + +For linear barcodes the text present in the output image can be removed by +using the `--notext` option. + +Text can be set to bold using the `--bold` option, or a smaller font can be +substituted using the `--small` option. The `--bold` and `--small` options can +be used together if required, but only for vector output. + +![`zint --bold -d "This Text" --small`](images/code128_small_bold.svg) + +The gap between the barcode and the text can be adjusted using the `--textgap` +option, where the gap is given as a multiple of the X-dimension (maximum 5X). A +zero value uses the default gap. + +![`zint -d "Áccent" --textgap=0.1`](images/code128_textgap.svg) + +## 4.18 Help Options There are three help options which give information about how to use the command line. The `-h` or `--help` option will display a list of all of the @@ -1481,16 +1500,7 @@ symbol ID numbers and names. The `-e` or `--ecinos` option gives a list of the ECI codes. -## 4.18 Other Output Options - -For linear barcodes the text present in the output image can be removed by -using the `--notext` option. - -The text can be set to bold using the `--bold` option, or a smaller font -can be substituted using the `--small` option. The `--bold` and `--small` -options can be used together if required, but only for vector output. - -![`zint --bold -d "This Text" --small`](images/code128_small_bold.svg) +## 4.19 Other Options Zint can output a representation of the symbol data as a set of hexadecimal values if asked to output to a text file (`"*.txt"`) or if given the option @@ -1615,7 +1625,8 @@ values are 0, 90, 180 and 270. The `ZBarcode_Encode_File()` and `ZBarcode_Encode_File_and_Print()` functions can be used to encode data read directly from a text file where the filename is -given in the `NUL`-terminated `filename` string. +given in the `NUL`-terminated `filename` string. The special filename `"-"` +(single hyphen) can be used to read from stdin. If printing more than one barcode, the `zint_symbol` structure may be re-used by calling the `ZBarcode_Clear()` function after each barcode to free any output @@ -1749,37 +1760,41 @@ Variable Name Type Meaning Default Value `symbology` integer Symbol to use (see [5.8 `BARCODE_CODE128` Specifying a Symbology]). -`height` float Symbol height, excluding Symbol dependent +`height` float Symbol height in Symbol dependent + X-dimensions, excluding fixed width-to-height symbols.[^7] `scale` float Scale factor for adjusting 1.0 - size of image. + size of image (sets + X-dimension). -`whitespace_width` integer Horizontal whitespace width. 0 +`whitespace_width` integer Horizontal whitespace width 0 + in X-dimensions. -`whitespace_height` integer Vertical whitespace height. 0 +`whitespace_height` integer Vertical whitespace height 0 + in X-dimensions. -`border_width` integer Border width. 0 +`border_width` integer Border width in 0 + X-dimensions. -`output_options` integer Set various output file 0 (none) +`output_options` integer Set various output 0 (none) parameters (see [5.9 - Adjusting Other Output - Options]). + Adjusting Output Options]). `fgcolour` character Foreground (ink) `"000000"` string colour as RGB/RGBA hexadecimal string or - `"C,M,Y,K"` decimal - percentages string, with a - terminating `NUL`. + `"C,M,Y,K"` decimal + percentages string, with a + terminating `NUL`. `bgcolour` character Background (paper) `"ffffff"` string colour as RGB/RGBA hexadecimal string or - `"C,M,Y,K"` decimal - percentages string, with a - terminating `NUL`. + `"C,M,Y,K"` decimal + percentages string, with a + terminating `NUL`. `fgcolor` pointer Points to fgcolour allowing alternate spelling. @@ -1806,7 +1821,8 @@ Variable Name Type Meaning Default Value `option_3` integer Symbol specific options. 0 -`show_hrt` integer Set to 0 to hide text. 1 +`show_hrt` integer Set to 0 to hide Human 1 + Readable Text (HRT). `input_mode` integer Set encoding of input `DATA_MODE` data (see [5.10 Setting the @@ -1820,10 +1836,15 @@ Variable Name Type Meaning Default Value only). `dot_size` float Diameter of dots used in 0.8 - dotty mode. + dotty mode (in + X-dimensions). + +`text_gap` float Gap between barcode and 0 (font-specific + text (HRT) in X-dimensions. default) `guard_descent` float Height of guard bar 5.0 - descent (EAN/UPC only). + descent (EAN/UPC only) in + X-dimensions. `structapp` Structured Mark a symbol as part of a count 0 Append sequence of symbols. (disabled) @@ -1852,7 +1873,7 @@ Variable Name Type Meaning Default Value arrays `row_height` array of Representation of the (output only) - floats height of a row. + floats height of rows. `errtxt` character Error message in the event (output only) string that an error occurred, @@ -2031,7 +2052,7 @@ means the same as symbol->symbology = 50; ``` -## 5.9 Adjusting Other Output Options +## 5.9 Adjusting Output Options The `output_options` variable can be used to adjust various aspects of the output file. To select more than one option from the table below simply `OR` diff --git a/docs/manual.txt b/docs/manual.txt index 77eaf397..df6f6c3c 100644 --- a/docs/manual.txt +++ b/docs/manual.txt @@ -1,6 +1,6 @@ Zint Barcode Generator and Zint Barcode Studio User Manual Version 2.12.0.9 -January 2023 +February 2023 ******************************************************************************* * For reference the following is a text-only version of the Zint manual, * @@ -51,8 +51,9 @@ January 2023 - 4.14 Working with Dots - 4.15 Multiple Segments - 4.16 Structured Append - - 4.17 Help Options - - 4.18 Other Output Options + - 4.17 Human Readable Text (HRT) Options + - 4.18 Help Options + - 4.19 Other Options - 5. Using the API - 5.1 Creating and Deleting Symbols - 5.2 Encoding and Saving to File @@ -62,7 +63,7 @@ January 2023 - 5.6 Setting Options - 5.7 Handling Errors - 5.8 Specifying a Symbology - - 5.9 Adjusting Other Output Options + - 5.9 Adjusting Output Options - 5.10 Setting the Input Mode - 5.11 Multiple Segments - 5.12 Scaling Helpers @@ -676,9 +677,11 @@ alternative mode is selected. This command replaces the use of the -d switch. zint -i somefile.txt +To read from stdin specify a single hyphen "-" as the input file. + Note that except when batch processing (see 4.11 Batch Processing below), the -file should not end with a newline (LF on Unix, CR+LF on Windows) unless you -want the newline to be encoded in the symbol. +file (or stdin) should not end with a newline (LF on Unix, CR+LF on Windows) +unless you want the newline to be encoded in the symbol. 4.2 Directing Output @@ -1430,7 +1433,7 @@ This command will output the symbol as a PCX file to stdout. The currently supported output file formats are shown in the following table. Abbreviation File format - -------------- ------------------------------------------- + -------------- ------------------------------------ BMP Windows Bitmap EMF Enhanced Metafile Format EPS Encapsulated PostScript @@ -1439,7 +1442,7 @@ supported output file formats are shown in the following table. PNG Portable Network Graphic SVG Scalable Vector Graphic TIF Tagged Image File Format - TXT Text file (see 4.18 Other Output Options) + TXT Text file (see 4.19 Other Options) : Table : Output File Formats: @@ -1522,7 +1525,24 @@ for all symbols belonging to the same sequence. The index is 1-based and goes from 1 to count. Count must be 2 or more. See the individual symbologies for further details. -4.17 Help Options +4.17 Human Readable Text (HRT) Options + +For linear barcodes the text present in the output image can be removed by using +the --notext option. + +Text can be set to bold using the --bold option, or a smaller font can be +substituted using the --small option. The --bold and --small options can be used +together if required, but only for vector output. + +[zint --bold -d "This Text" --small] + +The gap between the barcode and the text can be adjusted using the --textgap +option, where the gap is given as a multiple of the X-dimension (maximum 5X). A +zero value uses the default gap. + +[zint -d "Áccent" --textgap=0.1] + +4.18 Help Options There are three help options which give information about how to use the command line. The -h or --help option will display a list of all of the valid options @@ -1534,16 +1554,7 @@ numbers and names. The -e or --ecinos option gives a list of the ECI codes. -4.18 Other Output Options - -For linear barcodes the text present in the output image can be removed by using -the --notext option. - -The text can be set to bold using the --bold option, or a smaller font can be -substituted using the --small option. The --bold and --small options can be used -together if required, but only for vector output. - -[zint --bold -d "This Text" --small] +4.19 Other Options Zint can output a representation of the symbol data as a set of hexadecimal values if asked to output to a text file ("*.txt") or if given the option @@ -1656,7 +1667,8 @@ values are 0, 90, 180 and 270. The ZBarcode_Encode_File() and ZBarcode_Encode_File_and_Print() functions can be used to encode data read directly from a text file where the filename is given -in the NUL-terminated filename string. +in the NUL-terminated filename string. The special filename "-" (single hyphen) +can be used to read from stdin. If printing more than one barcode, the zint_symbol structure may be re-used by calling the ZBarcode_Clear() function after each barcode to free any output @@ -1778,23 +1790,27 @@ encoding stages. The zint_symbol structure consists of the following variables: symbology integer Symbol to use (see 5.8 BARCODE_CODE128 Specifying a Symbology). - height float Symbol height, excluding Symbol dependent + height float Symbol height in Symbol dependent + X-dimensions, excluding fixed width-to-height symbols.[7] scale float Scale factor for adjusting 1.0 - size of image. + size of image (sets + X-dimension). - whitespace_width integer Horizontal whitespace width. 0 + whitespace_width integer Horizontal whitespace width 0 + in X-dimensions. - whitespace_height integer Vertical whitespace height. 0 + whitespace_height integer Vertical whitespace height 0 + in X-dimensions. - border_width integer Border width. 0 + border_width integer Border width in 0 + X-dimensions. - output_options integer Set various output file 0 (none) + output_options integer Set various output 0 (none) parameters (see 5.9 - Adjusting Other Output - Options). + Adjusting Output Options). fgcolour character Foreground (ink) colour as "000000" string RGB/RGBA hexadecimal string @@ -1832,7 +1848,8 @@ encoding stages. The zint_symbol structure consists of the following variables: option_3 integer Symbol specific options. 0 - show_hrt integer Set to 0 to hide text. 1 + show_hrt integer Set to 0 to hide Human 1 + Readable Text (HRT). input_mode integer Set encoding of input data DATA_MODE (see 5.10 Setting the Input @@ -1846,10 +1863,15 @@ encoding stages. The zint_symbol structure consists of the following variables: only). dot_size float Diameter of dots used in 0.8 - dotty mode. + dotty mode (in + X-dimensions). + + text_gap float Gap between barcode and text 0 (font-specific + (HRT) in X-dimensions. default) guard_descent float Height of guard bar descent 5.0 - (EAN/UPC only). + (EAN/UPC only) in + X-dimensions. structapp Structured Mark a symbol as part of a count 0 Append sequence of symbols. (disabled) @@ -1878,7 +1900,7 @@ encoding stages. The zint_symbol structure consists of the following variables: arrays row_height array of Representation of the height (output only) - floats of a row. + floats of rows. errtxt character Error message in the event (output only) string that an error occurred, with @@ -2042,7 +2064,7 @@ means the same as symbol->symbology = 50; -5.9 Adjusting Other Output Options +5.9 Adjusting Output Options The output_options variable can be used to adjust various aspects of the output file. To select more than one option from the table below simply OR them @@ -4384,7 +4406,7 @@ defined. Annex B. Man Page ZINT(1) -% ZINT(1) Version 2.12.0.9 % % January 2023 +% ZINT(1) Version 2.12.0.9 % % February 2023 NAME @@ -4615,7 +4637,8 @@ OPTIONS -i, --input=FILE - Read the input data from FILE. + Read the input data from FILE. Specify a single hyphen (-) for FILE to read + from stdin. --init @@ -4778,6 +4801,12 @@ OPTIONS Display the table of barcode types (symbologies). The numbers or names can be used with -b | --barcode. +--textgap=NUMBER + + Adjust the gap between the barcode and the Human Readable Text (HRT). NUMBER + is in multiples of the X-dimension, and may be floating-point. Maximum is 5; + zero results in the default being used. + --vers=INTEGER Set the symbol version (size, check digits, other options) to INTEGER. The diff --git a/docs/zint.1 b/docs/zint.1 index 7e272e25..c948d9a2 100644 --- a/docs/zint.1 +++ b/docs/zint.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pandoc 2.19.2 +.\" Automatically generated by Pandoc 3.0.1 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "ZINT" "1" "January 2023" "Version 2.12.0.9" "" +.TH "ZINT" "1" "February 2023" "Version 2.12.0.9" "" .hy .SH NAME .PP @@ -259,6 +259,8 @@ Affects Codablock-F, Code 16K, Code 49, GS1 DataBar Expanded Stacked .TP \f[V]-i\f[R], \f[V]--input=FILE\f[R] Read the input data from \f[I]FILE\f[R]. +Specify a single hyphen (\f[V]-\f[R]) for \f[I]FILE\f[R] to read from +stdin. .TP \f[V]--init\f[R] Create a Reader Initialisation (Programming) symbol. @@ -444,6 +446,12 @@ Display the table of barcode types (symbologies). The numbers or names can be used with \f[V]-b\f[R] | \f[V]--barcode\f[R]. .TP +\f[V]--textgap=NUMBER\f[R] +Adjust the gap between the barcode and the Human Readable Text (HRT). +\f[I]NUMBER\f[R] is in multiples of the X-dimension, and may be +floating-point. +Maximum is 5; zero results in the default being used. +.TP \f[V]--vers=INTEGER\f[R] Set the symbol version (size, check digits, other options) to \f[I]INTEGER\f[R]. @@ -636,7 +644,7 @@ ISO/IEC 16390:2007, ISO/IEC 16023:2000, ISO/IEC 24728:2006, ISO/IEC (2022) .SH COPYRIGHT .PP -Copyright \[co] 2023 Robin Stuart. +Copyright © 2023 Robin Stuart. Released under GNU GPL 3.0 or later. .SH AUTHOR .PP diff --git a/docs/zint.1.pmd b/docs/zint.1.pmd index 0809a636..97984afa 100644 --- a/docs/zint.1.pmd +++ b/docs/zint.1.pmd @@ -1,6 +1,6 @@ % ZINT(1) Version 2.12.0.9 % -% January 2023 +% February 2023 # NAME @@ -206,7 +206,7 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S `-i`, `--input=FILE` -: Read the input data from *FILE*. +: Read the input data from *FILE*. Specify a single hyphen (`-`) for *FILE* to read from stdin. `--init` @@ -353,6 +353,11 @@ Paintbrush (`PCX`), Portable Network Format (`PNG`), Scalable Vector Graphic (`S : Display the table of barcode types (symbologies). The numbers or names can be used with `-b` | `--barcode`. +`--textgap=NUMBER` + +: Adjust the gap between the barcode and the Human Readable Text (HRT). *NUMBER* is in multiples of the X-dimension, + and may be floating-point. Maximum is 5; zero results in the default being used. + `--vers=INTEGER` : Set the symbol version (size, check digits, other options) to *INTEGER*. The meaning is symbol-specific. diff --git a/docs/zint_images.sh b/docs/zint_images.sh index 02f0c2fd..2e4020c2 100755 --- a/docs/zint_images.sh +++ b/docs/zint_images.sh @@ -34,6 +34,7 @@ zint -b CODEONE -d "123456789012345678" --dotty --vers=9 --scale=$SCALE_DOTTY -o zint -b AZTEC --eci=9 -d "Κείμενο" --seg1=7,"Текст" --seg2=20,"文章" --scale=$SCALE_2D -o images/aztec_segs.svg zint -b DATAMATRIX -d "2nd of 3" --structapp="2,3,5006" --scale=$SCALE_2D -o images/datamatrix_structapp.svg zint --bold -d "This Text" --small --scale=$SCALE_LINEAR -o images/code128_small_bold.svg +zint -d "Áccent" --textgap=0.1 --scale=$SCALE_LINEAR -o images/code128_textgap.svg zint -b CODE11 -d "9212320967" --scale=$SCALE_LINEAR -o images/code11.svg zint -b C25STANDARD -d "9212320967" --scale=$SCALE_LINEAR -o images/c25standard.svg zint -b C25IATA -d "9212320967" --scale=$SCALE_LINEAR -o images/c25iata.svg diff --git a/frontend/main.c b/frontend/main.c index 361b9cb6..764d9d60 100644 --- a/frontend/main.c +++ b/frontend/main.c @@ -115,7 +115,7 @@ static void types(void) { } /* Output version information */ -static void version(int no_png) { +static void version(const int no_png) { const char *no_png_lib = no_png ? " (no libpng)" : ""; const int zint_version = ZBarcode_Version(); const int version_major = zint_version / 10000; @@ -136,7 +136,7 @@ static void version(int no_png) { } /* Output usage information */ -static void usage(int no_png) { +static void usage(const int no_png) { const char *no_png_type = no_png ? "" : "/PNG"; const char *no_png_ext = no_png ? "gif" : "png"; @@ -202,11 +202,12 @@ static void usage(int no_png) { " --square Force Data Matrix symbols to be square\n" " --structapp=I,C[,ID] Set Structured Append info (I index, C count)\n" " -t, --types Display table of barcode types\n", stdout); - fputs( " --vers=NUMBER Set symbol version (size, check digits, other options)\n" + fputs( " --textgap=NUMBER Adjust gap between barcode and HRT in multiples of X-dim\n" + " --vers=NUMBER Set symbol version (size, check digits, other options)\n" " -v, --version Display Zint version\n" " --vwhitesp=NUMBER Set height of vertical whitespace in multiples of X-dim\n" - " -w, --whitesp=NUMBER Set width of horizontal whitespace in multiples of X-dim\n" - " --werror Convert all warnings into errors\n", stdout); + " -w, --whitesp=NUMBER Set width of horizontal whitespace in multiples of X-dim\n", stdout); + fputs( " --werror Convert all warnings into errors\n", stdout); } /* Display supported ECI codes */ @@ -880,7 +881,7 @@ static int batch_process(struct zint_symbol *symbol, const char *filename, const } } - if (!strcmp(filename, "-")) { + if (strcmp(filename, "-") == 0) { file = stdin; } else { file = fopen(filename, "rb"); @@ -1087,6 +1088,8 @@ static void win_free_args(void) { } /* For Windows replace args with UTF-8 versions */ +/* TODO: using `CommandLineToArgvW()` causes shell32.dll to be loaded - replace with own version, see + https://news.ycombinator.com/item?id=18596841 */ static void win_args(int *p_argc, char ***p_argv) { int i; LPWSTR *szArgList = CommandLineToArgvW(GetCommandLineW(), &win_argc); @@ -1148,7 +1151,6 @@ int main(int argc, char **argv) { int rows = 0; char filetype[4] = {0}; int output_given = 0; - int no_png; int png_refused; int val; int i; @@ -1162,18 +1164,18 @@ int main(int argc, char **argv) { arg_opt *arg_opts = (arg_opt *) z_alloca(sizeof(arg_opt) * argc); int no_getopt_error = 1; + const int no_png = ZBarcode_NoPng(); + + if (argc == 1) { + usage(no_png); + exit(ZINT_ERROR_INVALID_DATA); + } + my_symbol = ZBarcode_Create(); if (!my_symbol) { fprintf(stderr, "Error 151: Memory failure\n"); exit(ZINT_ERROR_MEMORY); } - no_png = ZBarcode_NoPng(); - - if (argc == 1) { - ZBarcode_Delete(my_symbol); - usage(no_png); - exit(ZINT_ERROR_INVALID_DATA); - } my_symbol->input_mode = UNICODE_MODE; #ifdef _WIN32 @@ -1191,7 +1193,7 @@ int main(int argc, char **argv) { OPT_NOBACKGROUND, OPT_NOQUIETZONES, OPT_NOTEXT, OPT_PRIMARY, OPT_QUIETZONES, OPT_ROTATE, OPT_ROWS, OPT_SCALE, OPT_SCALEXDIM, OPT_SCMVV, OPT_SECURE, OPT_SEG1, OPT_SEG2, OPT_SEG3, OPT_SEG4, OPT_SEG5, OPT_SEG6, OPT_SEG7, OPT_SEG8, OPT_SEG9, - OPT_SEPARATOR, OPT_SMALL, OPT_SQUARE, OPT_STRUCTAPP, + OPT_SEPARATOR, OPT_SMALL, OPT_SQUARE, OPT_STRUCTAPP, OPT_TEXTGAP, OPT_VERBOSE, OPT_VERS, OPT_VWHITESP, OPT_WERROR }; int option_index = 0; @@ -1267,6 +1269,7 @@ int main(int argc, char **argv) { {"small", 0, NULL, OPT_SMALL}, {"square", 0, NULL, OPT_SQUARE}, {"structapp", 1, NULL, OPT_STRUCTAPP}, + {"textgap", 1, NULL, OPT_TEXTGAP}, {"types", 0, NULL, 't'}, {"verbose", 0, NULL, OPT_VERBOSE}, /* Currently undocumented, output some debug info */ {"vers", 1, NULL, OPT_VERS}, @@ -1682,6 +1685,19 @@ int main(int argc, char **argv) { return do_exit(ZINT_ERROR_INVALID_OPTION); } break; + case OPT_TEXTGAP: + if (!validate_float(optarg, &float_opt, errbuf)) { + fprintf(stderr, "Error 194: Invalid text gap floating point (%s)\n", errbuf); + return do_exit(ZINT_ERROR_INVALID_OPTION); + } + if (float_opt >= 0.0f && float_opt <= 5.0f) { + my_symbol->text_gap = float_opt; + } else { + fprintf(stderr, "Warning 195: Text gap '%g' out of range (0 to 5), ignoring\n", float_opt); + fflush(stderr); + warn_number = ZINT_WARN_INVALID_OPTION; + } + break; case OPT_VERBOSE: my_symbol->debug = 1; break; @@ -1842,6 +1858,12 @@ int main(int argc, char **argv) { } } + if (output_given && (my_symbol->output_options & BARCODE_STDOUT)) { + my_symbol->output_options &= ~BARCODE_STDOUT; + fprintf(stderr, "Warning 193: Output file given, ignoring '--direct' option\n"); + fflush(stderr); + warn_number = ZINT_WARN_INVALID_OPTION; + } if (batch_mode) { /* Take each line of text as a separate data set */ if (data_arg_num > 1) { diff --git a/frontend/tests/test_args.c b/frontend/tests/test_args.c index 6da7ea16..b76a1adc 100644 --- a/frontend/tests/test_args.c +++ b/frontend/tests/test_args.c @@ -774,6 +774,7 @@ static void test_checks(const testCtx *const p_ctx) { int border; int cols; double dotsize; + double textgap; int eci; char *filetype; double height; @@ -794,44 +795,46 @@ static void test_checks(const testCtx *const p_ctx) { }; /* s/\/\*[ 0-9]*\*\//\=printf("\/\*%3d*\/", line(".") - line("'<")): */ struct item data[] = { - /* 0*/ { -2, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 139: Invalid add-on gap value (digits only)" }, - /* 1*/ { 6, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Add-on gap out of range (7 to 12), ignoring" }, - /* 2*/ { 13, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Add-on gap out of range (7 to 12), ignoring" }, - /* 3*/ { -1, -2, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 107: Invalid border width value (digits only)" }, - /* 4*/ { -1, 1001, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 108: Border width out of range (0 to 1000), ignoring" }, - /* 5*/ { -1, -1, -1, 12345678, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 181: Invalid dot radius floating point (integer part must be 7 digits maximum)" }, - /* 6*/ { -1, -1, -1, 0.009, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 106: Invalid dot radius value (less than 0.01), ignoring" }, - /* 7*/ { -1, -1, -2, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 131: Invalid columns value (digits only)" }, - /* 8*/ { -1, -1, 201, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 111: Number of columns out of range (1 to 200), ignoring" }, - /* 9*/ { -1, -1, -1, -1, -2, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 138: Invalid ECI value (digits only)" }, - /* 10*/ { -1, -1, -1, -1, 1000000, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 118: ECI code out of range (0 to 999999), ignoring" }, - /* 11*/ { -1, -1, -1, -1, -1, "jpg", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 142: File type 'jpg' not supported, ignoring" }, - /* 12*/ { -1, -1, -1, -1, -1, NULL, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 183: Invalid symbol height floating point (integer part must be digits only)" }, - /* 13*/ { -1, -1, -1, -1, -1, NULL, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 110: Symbol height '0' out of range (0.5 to 2000), ignoring" }, - /* 14*/ { -1, -1, -1, -1, -1, NULL, 2001, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 110: Symbol height '2001' out of range (0.5 to 2000), ignoring" }, - /* 15*/ { -1, -1, -1, -1, -1, NULL, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 182: Invalid guard bar descent floating point (integer part must be digits only)" }, - /* 16*/ { -1, -1, -1, -1, -1, NULL, -1, 50.1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 135: Guard bar descent '50.1' out of range (0 to 50), ignoring" }, - /* 17*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 148: Invalid mask value (digits only)" }, - /* 18*/ { -1, -1, -1, -1, -1, NULL, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 147: Mask value out of range (0 to 7), ignoring" }, - /* 19*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 116: Mode value out of range (0 to 6), ignoring" }, - /* 20*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, "Error 117: Invalid rotation value (digits only)" }, - /* 21*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 137: Invalid rotation parameter (0, 90, 180 or 270 only), ignoring" }, - /* 22*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, "Error 132: Invalid rows value (digits only)" }, - /* 23*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, "Warning 112: Number of rows out of range (1 to 90), ignoring" }, - /* 24*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, "Error 184: Invalid scale floating point (integer part must be digits only)" }, - /* 25*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, 0.49, -1, -1, -1, -1, -1, -1, "Warning 146: Scaling less than 0.5 will be set to 0.5 for 'gif' output" }, - /* 26*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, "Error 149: Invalid Structured Carrier Message version value (digits only)" }, - /* 27*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, "Warning 150: Structured Carrier Message version out of range (0 to 99), ignoring" }, - /* 28*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, "Error 134: Invalid ECC value (digits only)" }, - /* 29*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, "Warning 114: ECC level out of range (0 to 8), ignoring" }, - /* 30*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, "Error 128: Invalid separator value (digits only)" }, - /* 31*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, "Warning 127: Separator value out of range (0 to 4), ignoring" }, - /* 32*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, "Error 133: Invalid version value (digits only)" }, - /* 33*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1000, -1, -1, "Warning 113: Version value out of range (1 to 999), ignoring" }, - /* 34*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, "Error 153: Invalid vertical whitespace value '-2' (digits only)" }, - /* 35*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, -1, "Warning 154: Vertical whitespace value out of range (0 to 1000), ignoring" }, - /* 36*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, "Error 120: Invalid horizontal whitespace value '-2' (digits only)" }, - /* 37*/ { -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, "Warning 121: Horizontal whitespace value out of range (0 to 1000), ignoring" }, + /* 0*/ { -2, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 139: Invalid add-on gap value (digits only)" }, + /* 1*/ { 6, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Add-on gap out of range (7 to 12), ignoring" }, + /* 2*/ { 13, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 140: Add-on gap out of range (7 to 12), ignoring" }, + /* 3*/ { -1, -2, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 107: Invalid border width value (digits only)" }, + /* 4*/ { -1, 1001, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 108: Border width out of range (0 to 1000), ignoring" }, + /* 5*/ { -1, -1, -1, -1, -0.5, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 194: Invalid text gap floating point (integer part must be digits only)" }, + /* 6*/ { -1, -1, -1, -1, 5.01, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 195: Text gap '5.01' out of range (0 to 5), ignoring" }, + /* 7*/ { -1, -1, -1, 12345678, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 181: Invalid dot radius floating point (integer part must be 7 digits maximum)" }, + /* 8*/ { -1, -1, -1, 0.009, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 106: Invalid dot radius value (less than 0.01), ignoring" }, + /* 9*/ { -1, -1, -2, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 131: Invalid columns value (digits only)" }, + /* 10*/ { -1, -1, 201, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 111: Number of columns out of range (1 to 200), ignoring" }, + /* 11*/ { -1, -1, -1, -1, -1, -2, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 138: Invalid ECI value (digits only)" }, + /* 12*/ { -1, -1, -1, -1, -1, 1000000, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 118: ECI code out of range (0 to 999999), ignoring" }, + /* 13*/ { -1, -1, -1, -1, -1, -1, "jpg", -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 142: File type 'jpg' not supported, ignoring" }, + /* 14*/ { -1, -1, -1, -1, -1, -1, NULL, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 183: Invalid symbol height floating point (integer part must be digits only)" }, + /* 15*/ { -1, -1, -1, -1, -1, -1, NULL, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 110: Symbol height '0' out of range (0.5 to 2000), ignoring" }, + /* 16*/ { -1, -1, -1, -1, -1, -1, NULL, 2001, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 110: Symbol height '2001' out of range (0.5 to 2000), ignoring" }, + /* 17*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 182: Invalid guard bar descent floating point (integer part must be digits only)" }, + /* 18*/ { -1, -1, -1, -1, -1, -1, NULL, -1, 50.1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 135: Guard bar descent '50.1' out of range (0 to 50), ignoring" }, + /* 19*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Error 148: Invalid mask value (digits only)" }, + /* 20*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 147: Mask value out of range (0 to 7), ignoring" }, + /* 21*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 116: Mode value out of range (0 to 6), ignoring" }, + /* 22*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, "Error 117: Invalid rotation value (digits only)" }, + /* 23*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, "Warning 137: Invalid rotation parameter (0, 90, 180 or 270 only), ignoring" }, + /* 24*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, "Error 132: Invalid rows value (digits only)" }, + /* 25*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, "Warning 112: Number of rows out of range (1 to 90), ignoring" }, + /* 26*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, "Error 184: Invalid scale floating point (integer part must be digits only)" }, + /* 27*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, 0.49, -1, -1, -1, -1, -1, -1, "Warning 146: Scaling less than 0.5 will be set to 0.5 for 'gif' output" }, + /* 28*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, "Error 149: Invalid Structured Carrier Message version value (digits only)" }, + /* 29*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, "Warning 150: Structured Carrier Message version out of range (0 to 99), ignoring" }, + /* 30*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, "Error 134: Invalid ECC value (digits only)" }, + /* 31*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, "Warning 114: ECC level out of range (0 to 8), ignoring" }, + /* 32*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, "Error 128: Invalid separator value (digits only)" }, + /* 33*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, "Warning 127: Separator value out of range (0 to 4), ignoring" }, + /* 34*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, "Error 133: Invalid version value (digits only)" }, + /* 35*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1000, -1, -1, "Warning 113: Version value out of range (1 to 999), ignoring" }, + /* 36*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, "Error 153: Invalid vertical whitespace value '-2' (digits only)" }, + /* 37*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, -1, "Warning 154: Vertical whitespace value out of range (0 to 1000), ignoring" }, + /* 38*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, "Error 120: Invalid horizontal whitespace value '-2' (digits only)" }, + /* 39*/ { -1, -1, -1, -1, -1, -1, NULL, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1001, "Warning 121: Horizontal whitespace value out of range (0 to 1000), ignoring" }, }; int data_size = ARRAY_SIZE(data); int i; @@ -855,6 +858,7 @@ static void test_checks(const testCtx *const p_ctx) { arg_int(cmd, "--border=", data[i].border); arg_int(cmd, "--cols=", data[i].cols); arg_double(cmd, "--dotsize=", data[i].dotsize); + arg_double(cmd, "--textgap=", data[i].textgap); arg_int(cmd, "--eci=", data[i].eci); arg_data(cmd, "--filetype=", data[i].filetype); arg_double(cmd, "--height=", data[i].height); @@ -1150,13 +1154,13 @@ static void test_other_opts(const testCtx *const p_ctx) { /* 0*/ { BARCODE_CODE128, "1", -1, " --bg=", "EF9900", "", 0 }, /* 1*/ { BARCODE_CODE128, "1", -1, " -bg=", "EF9900", "", 0 }, /* 2*/ { BARCODE_CODE128, "1", -1, " --bg=", "EF9900AA", "", 0 }, - /* 3*/ { BARCODE_CODE128, "1", -1, " --bg=", "GF9900", "Error 691: Malformed background RGB colour 'GF9900' (hexadecimal only)", 0 }, + /* 3*/ { BARCODE_CODE128, "1", -1, " --bg=", "GF9900", "Error 881: Malformed background RGB colour 'GF9900' (hexadecimal only)", 0 }, /* 4*/ { BARCODE_CODE128, "1", -1, " --bgcolor=", "EF9900", "", 0 }, /* 5*/ { BARCODE_CODE128, "1", -1, " --bgcolour=", "EF9900", "", 0 }, /* 6*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000", "", 0 }, /* 7*/ { BARCODE_CODE128, "1", -1, " --fg=", "00000000", "", 0 }, - /* 8*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000F", "Error 690: Malformed foreground RGB colour (6 or 8 characters only)", 0 }, - /* 9*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000FG", "Error 691: Malformed foreground RGB colour '000000FG' (hexadecimal only)", 0 }, + /* 8*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000F", "Error 880: Malformed foreground RGB colour (6 or 8 characters only)", 0 }, + /* 9*/ { BARCODE_CODE128, "1", -1, " --fg=", "000000FG", "Error 881: Malformed foreground RGB colour '000000FG' (hexadecimal only)", 0 }, /* 10*/ { BARCODE_CODE128, "1", -1, " --fg=", "0,0,0,100", "", 0 }, /* 11*/ { BARCODE_CODE128, "1", -1, " --fgcolor=", "111111", "", 0 }, /* 12*/ { BARCODE_CODE128, "1", -1, " --fgcolour=", "111111", "", 0 }, diff --git a/frontend_qt/mainWindow.ui b/frontend_qt/mainWindow.ui index b597d01d..46ec9818 100644 --- a/frontend_qt/mainWindow.ui +++ b/frontend_qt/mainWindow.ui @@ -1881,6 +1881,69 @@ the barcode in X-dimensions + + + Gap between barcode and text +(ignored if disabled) + + + Text Gap: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + spnTextGap + + + + + + + Gap between barcode and text +(ignored if disabled) + + + X + + + + 2 + + + 0.000000000000000 + + + 5.000000000000000 + + + 0.100000000000000 + + + 0.000000000000000 + + + Default + + + + + + + + 22 + 26 + + + + Set text gap to zero (default) + + + + + + + Image scale when output to file @@ -1897,7 +1960,7 @@ the barcode in X-dimensions - + Image scale when output to file @@ -1923,7 +1986,7 @@ the barcode in X-dimensions - + @@ -1939,7 +2002,7 @@ the barcode in X-dimensions - + Image size (width x height) of barcode @@ -1953,7 +2016,7 @@ at given dot density - + Image size (width x height) of barcode diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index 8e0c8bfb..d75bce81 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -316,6 +316,7 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags fl) btnClearDataSeg2->setIcon(clearIcon); btnClearDataSeg3->setIcon(clearIcon); btnClearComposite->setIcon(clearIcon); + btnClearTextGap->setIcon(clearIcon); btnZap->setIcon(QIcon(QSL(":res/zap.svg"))); change_options(); @@ -329,6 +330,9 @@ MainWindow::MainWindow(QWidget *parent, Qt::WindowFlags fl) connect(bwidth, SIGNAL(valueChanged( int )), SLOT(update_preview())); connect(btype, SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); connect(cmbFontSetting, SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); + connect(spnTextGap, SIGNAL(valueChanged( double )), SLOT(text_gap_zero())); + connect(spnTextGap, SIGNAL(valueChanged( double )), SLOT(update_preview())); + connect(btnClearTextGap, SIGNAL(clicked( bool )), SLOT(clear_text_gap())); connect(txtData, SIGNAL(textChanged( const QString& )), SLOT(data_ui_set())); connect(txtData, SIGNAL(textChanged( const QString& )), SLOT(update_preview())); connect(txtDataSeg1, SIGNAL(textChanged( const QString& )), SLOT(data_ui_set())); @@ -463,6 +467,7 @@ MainWindow::~MainWindow() settings.setValue(QSL("studio/appearance/scale"), spnScale->value()); settings.setValue(QSL("studio/appearance/border_type"), btype->currentIndex()); settings.setValue(QSL("studio/appearance/font_setting"), cmbFontSetting->currentIndex()); + settings.setValue(QSL("studio/appearance/text_gap"), spnTextGap->value()); settings.setValue(QSL("studio/appearance/chk_hrt_show"), chkHRTShow->isChecked() ? 1 : 0); settings.setValue(QSL("studio/appearance/chk_cmyk"), chkCMYK->isChecked() ? 1 : 0); settings.setValue(QSL("studio/appearance/chk_quiet_zones"), chkQuietZones->isChecked() ? 1 : 0); @@ -528,6 +533,7 @@ void MainWindow::load_settings(QSettings &settings) spnScale->setValue(settings.value(QSL("studio/appearance/scale"), 1.0).toFloat()); btype->setCurrentIndex(settings.value(QSL("studio/appearance/border_type"), 0).toInt()); cmbFontSetting->setCurrentIndex(settings.value(QSL("studio/appearance/font_setting"), 0).toInt()); + spnTextGap->setValue(settings.value(QSL("studio/appearance/text_gap"), 0.0).toFloat()); chkHRTShow->setChecked(settings.value(QSL("studio/appearance/chk_hrt_show"), 1).toInt() ? true : false); chkCMYK->setChecked(settings.value(QSL("studio/appearance/chk_cmyk"), 0).toInt() ? true : false); chkQuietZones->setChecked(settings.value(QSL("studio/appearance/chk_quiet_zones"), 0).toInt() ? true : false); @@ -1141,6 +1147,15 @@ void MainWindow::HRTShow_ui_set() bool enabled = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); lblFontSetting->setEnabled(enabled); cmbFontSetting->setEnabled(enabled); + lblTextGap->setEnabled(enabled); + spnTextGap->setEnabled(enabled); + text_gap_ui_set(); +} + +void MainWindow::text_gap_ui_set() +{ + bool hrtEnabled = chkHRTShow->isEnabled() && chkHRTShow->isChecked(); + btnClearTextGap->setEnabled(hrtEnabled && spnTextGap->value() != 0.0); } void MainWindow::dotty_ui_set() @@ -1244,6 +1259,23 @@ void MainWindow::structapp_ui_set() } } +void MainWindow::text_gap_zero() +{ + // Make sure special text "Default" triggered as QDoubleSpinBox can return values almost but not quite zero + double val = spnTextGap->value(); + if (val != 0.0 && val < 0.0001) { + spnTextGap->setValue(0.0); + } + text_gap_ui_set(); +} + +void MainWindow::clear_text_gap() +{ + spnTextGap->setValue(0.0); + spnTextGap->setFocus(); + update_preview(); +} + void MainWindow::on_encoded() { // Protect against encode in Sequence Export popup dialog @@ -2130,9 +2162,10 @@ void MainWindow::change_options() file.close(); load_sub_settings(settings, symbology); tabMain->insertTab(1, m_optionWidget, tr("UPC-&A")); - combobox_item_enabled(cmbFontSetting, 1, false); - if (cmbFontSetting->currentIndex() == 1) { - cmbFontSetting->setCurrentIndex(0); + combobox_item_enabled(cmbFontSetting, 1, false); // Disable bold options + combobox_item_enabled(cmbFontSetting, 3, false); + if (cmbFontSetting->currentIndex() == 1 || cmbFontSetting->currentIndex() == 3) { + cmbFontSetting->setCurrentIndex(cmbFontSetting->currentIndex() - 1); } connect(get_widget(QSL("cmbUPCAAddonGap")), SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); connect(get_widget(QSL("spnUPCAGuardDescent")), SIGNAL(valueChanged( double )), SLOT(update_preview())); @@ -2155,9 +2188,10 @@ void MainWindow::change_options() } else { tabMain->insertTab(1, m_optionWidget, tr("&EAN")); } - combobox_item_enabled(cmbFontSetting, 1, false); - if (cmbFontSetting->currentIndex() == 1) { - cmbFontSetting->setCurrentIndex(0); + combobox_item_enabled(cmbFontSetting, 1, false); // Disable bold options + combobox_item_enabled(cmbFontSetting, 3, false); + if (cmbFontSetting->currentIndex() == 1 || cmbFontSetting->currentIndex() == 3) { + cmbFontSetting->setCurrentIndex(cmbFontSetting->currentIndex() - 1); } connect(get_widget(QSL("cmbUPCEANAddonGap")), SIGNAL(currentIndexChanged( int )), SLOT(update_preview())); connect(get_widget(QSL("spnUPCEANGuardDescent")), SIGNAL(valueChanged( double )), SLOT(update_preview())); @@ -3166,6 +3200,7 @@ void MainWindow::update_preview() m_bc.bc.setVWhitespace(spnVWhitespace->value()); m_bc.bc.setQuietZones(chkQuietZones->isEnabled() && chkQuietZones->isChecked()); m_bc.bc.setFontSetting(cmbFontSetting->currentIndex()); + m_bc.bc.setTextGap(spnTextGap->value()); m_bc.bc.setRotateAngle(cmbRotate->currentIndex()); m_bc.bc.setDotty(chkDotty->isEnabled() && chkDotty->isChecked()); if (m_symbology == BARCODE_DOTCODE || (chkDotty->isEnabled() && chkDotty->isChecked())) { @@ -3940,6 +3975,7 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) settings.setValue(QSL("studio/bc/%1/appearance/border_type").arg(name), btype->currentIndex()); if (chkHRTShow->isEnabled()) { settings.setValue(QSL("studio/bc/%1/appearance/font_setting").arg(name), cmbFontSetting->currentIndex()); + settings.setValue(QSL("studio/bc/%1/appearance/text_gap").arg(name), spnTextGap->value()); settings.setValue(QSL("studio/bc/%1/appearance/chk_hrt_show").arg(name), chkHRTShow->isChecked() ? 1 : 0); } settings.setValue(QSL("studio/bc/%1/appearance/chk_cmyk").arg(name), chkCMYK->isChecked() ? 1 : 0); @@ -4334,6 +4370,7 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) if (chkHRTShow->isEnabled()) { cmbFontSetting->setCurrentIndex(settings.value( QSL("studio/bc/%1/appearance/font_setting").arg(name), 0).toInt()); + spnTextGap->setValue(settings.value(QSL("studio/bc/%1/appearance/text_gap").arg(name), 0.0).toFloat()); chkHRTShow->setChecked(settings.value( QSL("studio/bc/%1/appearance/chk_hrt_show").arg(name), 1).toInt() ? true : false); } diff --git a/frontend_qt/mainwindow.h b/frontend_qt/mainwindow.h index 7dda1fed..af5c70f0 100644 --- a/frontend_qt/mainwindow.h +++ b/frontend_qt/mainwindow.h @@ -69,9 +69,12 @@ public slots: void change_cmyk(); void autoheight_ui_set(); void HRTShow_ui_set(); + void text_gap_ui_set(); void dotty_ui_set(); void codeone_ui_set(); void structapp_ui_set(); + void text_gap_zero(); + void clear_text_gap(); void on_encoded(); void on_errored(); void on_dataChanged(const QString& text, bool escaped, int seg_no);