]> git.sur5r.net Git - glabels/commitdiff
Adding Robin's changes for latest Zint
authorSam Lown <me@samlown.com>
Tue, 6 Jul 2010 13:50:29 +0000 (15:50 +0200)
committerJim Evins <evins@snaught.com>
Sat, 10 Jul 2010 04:17:46 +0000 (00:17 -0400)
src/bc-zint.c
src/bc.c

index 8db2c132324483c5edad01e59ff9107bde8a8485..c50160fc6b57ba5fafd29d04ceaba7dd420fb63a 100644 (file)
@@ -59,31 +59,86 @@ gl_barcode_zint_new (const gchar          *id,
 {
        glBarcode           *gbc;
        struct zint_symbol  *symbol;
-       gint                type;
-       gint                result;
-       gchar               errtxt[100];
+       gint                 type;
+       gint                 result;
 
        symbol = ZBarcode_Create();
 
-       /* Auto set to default size */
-       if ( (w == 0) && (h == 0) )
-       {
-               w = DEFAULT_W;
-               h = DEFAULT_H;
-       }
+        /* Auto set to default size */
+        if ( (w == 0) && (h == 0) )
+        {
+                w = DEFAULT_W;
+                h = DEFAULT_H;
+        }
 
        /* Assign type flag.  Pre-filter by length for subtypes. */
-       if (g_ascii_strcasecmp (id, "GS1-128") == 0) {
-               symbol->symbology = BARCODE_EAN128;
-       } else if (g_ascii_strcasecmp (id, "GTIN-13") == 0) {
-               symbol->symbology = BARCODE_EANX;
-       } else if (g_ascii_strcasecmp (id, "GTIN-14") == 0) {
-               symbol->symbology = BARCODE_EAN14;
-       } else {
-               g_message( "Illegal barcode id %s", id );
-               ZBarcode_Delete (symbol);
-               return NULL;
-       }
+       if (g_ascii_strcasecmp (id, "AUSP") == 0) { symbol->symbology = BARCODE_AUSPOST; }
+       if (g_ascii_strcasecmp (id, "AUSRP") == 0) { symbol->symbology = BARCODE_AUSREPLY; }
+       if (g_ascii_strcasecmp (id, "AUSRT") == 0) { symbol->symbology = BARCODE_AUSROUTE; }
+       if (g_ascii_strcasecmp (id, "AUSRD") == 0) { symbol->symbology = BARCODE_AUSREDIRECT; }
+       if (g_ascii_strcasecmp (id, "AZTEC") == 0) { symbol->symbology = BARCODE_AZTEC; }
+       if (g_ascii_strcasecmp (id, "AZRUN") == 0) { symbol->symbology = BARCODE_AZRUNE; }
+       if (g_ascii_strcasecmp (id, "CBR") == 0) { symbol->symbology = BARCODE_CODABAR; }
+       if (g_ascii_strcasecmp (id, "Code1") == 0) { symbol->symbology = BARCODE_CODEONE; }
+       if (g_ascii_strcasecmp (id, "Code11") == 0) { symbol->symbology = BARCODE_CODE11; }
+       if (g_ascii_strcasecmp (id, "C16K") == 0) { symbol->symbology = BARCODE_CODE16K; }
+       if (g_ascii_strcasecmp (id, "C25M") == 0) { symbol->symbology = BARCODE_C25MATRIX; }
+       if (g_ascii_strcasecmp (id, "C25I") == 0) { symbol->symbology = BARCODE_C25IATA; }
+       if (g_ascii_strcasecmp (id, "C25DL") == 0) { symbol->symbology = BARCODE_C25LOGIC; }
+       if (g_ascii_strcasecmp (id, "Code32") == 0) { symbol->symbology = BARCODE_CODE32; }
+       if (g_ascii_strcasecmp (id, "Code39") == 0) { symbol->symbology = BARCODE_CODE39; }
+       if (g_ascii_strcasecmp (id, "Code39E") == 0) { symbol->symbology = BARCODE_EXCODE39; }
+       if (g_ascii_strcasecmp (id, "Code49") == 0) { symbol->symbology = BARCODE_CODE49; }
+       if (g_ascii_strcasecmp (id, "Code93") == 0) { symbol->symbology = BARCODE_CODE93; }
+       if (g_ascii_strcasecmp (id, "Code128") == 0) { symbol->symbology = BARCODE_CODE128; }
+       if (g_ascii_strcasecmp (id, "Code128B") == 0) { symbol->symbology = BARCODE_CODE128B; }
+       if (g_ascii_strcasecmp (id, "DAFT") == 0) { symbol->symbology = BARCODE_DAFT; }
+       if (g_ascii_strcasecmp (id, "DMTX") == 0) { symbol->symbology = BARCODE_DATAMATRIX; }
+       if (g_ascii_strcasecmp (id, "DPL") == 0) { symbol->symbology = BARCODE_DPLEIT; }
+       if (g_ascii_strcasecmp (id, "DPI") == 0) { symbol->symbology = BARCODE_DPIDENT; }
+       if (g_ascii_strcasecmp (id, "KIX") == 0) { symbol->symbology = BARCODE_KIX; }
+       if (g_ascii_strcasecmp (id, "EAN") == 0) { symbol->symbology = BARCODE_EANX; }
+       if (g_ascii_strcasecmp (id, "HIBC128") == 0) { symbol->symbology = BARCODE_HIBC_128; }
+       if (g_ascii_strcasecmp (id, "HIBC39") == 0) { symbol->symbology = BARCODE_HIBC_39; }
+       if (g_ascii_strcasecmp (id, "HIBCDM") == 0) { symbol->symbology = BARCODE_HIBC_DM; }
+       if (g_ascii_strcasecmp (id, "HIBCQR") == 0) { symbol->symbology = BARCODE_HIBC_QR; }
+       if (g_ascii_strcasecmp (id, "HIBCPDF") == 0) { symbol->symbology = BARCODE_HIBC_MICPDF; }
+       if (g_ascii_strcasecmp (id, "HIBCMPDF") == 0) { symbol->symbology = BARCODE_HIBC_AZTEC; }
+       if (g_ascii_strcasecmp (id, "HIBCAZ") == 0) { symbol->symbology = BARCODE_C25INTER; }
+       if (g_ascii_strcasecmp (id, "I25") == 0) { symbol->symbology = BARCODE_C25INTER; }
+       if (g_ascii_strcasecmp (id, "ISBN") == 0) { symbol->symbology = BARCODE_ISBNX; }
+       if (g_ascii_strcasecmp (id, "ITF14") == 0) { symbol->symbology = BARCODE_ITF14; }
+       if (g_ascii_strcasecmp (id, "GMTX") == 0) { symbol->symbology = BARCODE_GRIDMATRIX; }
+       if (g_ascii_strcasecmp (id, "GS1-128") == 0) { symbol->symbology = BARCODE_EAN128; }
+       if (g_ascii_strcasecmp (id, "LOGM") == 0) { symbol->symbology = BARCODE_LOGMARS; }
+       if (g_ascii_strcasecmp (id, "RSS14") == 0) { symbol->symbology = BARCODE_RSS14; }
+       if (g_ascii_strcasecmp (id, "RSSLTD") == 0) { symbol->symbology = BARCODE_RSS_LTD; }
+       if (g_ascii_strcasecmp (id, "RSSEXP") == 0) { symbol->symbology = BARCODE_RSS_EXP; }
+       if (g_ascii_strcasecmp (id, "RSSS") == 0) { symbol->symbology = BARCODE_RSS14STACK; }
+       if (g_ascii_strcasecmp (id, "RSSSO") == 0) { symbol->symbology = BARCODE_RSS14STACK_OMNI; }
+       if (g_ascii_strcasecmp (id, "RSSSE") == 0) { symbol->symbology = BARCODE_RSS_EXPSTACK; }
+       if (g_ascii_strcasecmp (id, "PHARMA") == 0) { symbol->symbology = BARCODE_PHARMA; }
+       if (g_ascii_strcasecmp (id, "PHARMA2") == 0) { symbol->symbology = BARCODE_PHARMA_TWO; }
+       if (g_ascii_strcasecmp (id, "PZN") == 0) { symbol->symbology = BARCODE_PZN; }
+       if (g_ascii_strcasecmp (id, "TELE") == 0) { symbol->symbology = BARCODE_TELEPEN; }
+       if (g_ascii_strcasecmp (id, "TELEX") == 0) { symbol->symbology = BARCODE_TELEPEN_NUM; }
+       if (g_ascii_strcasecmp (id, "JAPAN") == 0) { symbol->symbology = BARCODE_JAPANPOST; }
+       if (g_ascii_strcasecmp (id, "KOREA") == 0) { symbol->symbology = BARCODE_KOREAPOST; }
+       if (g_ascii_strcasecmp (id, "MPDF") == 0) { symbol->symbology = BARCODE_MICROPDF417; }
+       if (g_ascii_strcasecmp (id, "MSI") == 0) { symbol->symbology = BARCODE_MSI_PLESSEY; }
+       if (g_ascii_strcasecmp (id, "MQR") == 0) { symbol->symbology = BARCODE_MICROQR; }
+       if (g_ascii_strcasecmp (id, "NVE") == 0) { symbol->symbology = BARCODE_NVE18; }
+       if (g_ascii_strcasecmp (id, "PLAN") == 0) { symbol->symbology = BARCODE_PLANET; }
+       if (g_ascii_strcasecmp (id, "POSTNET") == 0) { symbol->symbology = BARCODE_POSTNET; }
+       if (g_ascii_strcasecmp (id, "PDF") == 0) { symbol->symbology = BARCODE_PDF417; }
+       if (g_ascii_strcasecmp (id, "PDFT") == 0) { symbol->symbology = BARCODE_PDF417TRUNC; }
+       if (g_ascii_strcasecmp (id, "QR") == 0) { symbol->symbology = BARCODE_QRCODE; }
+       if (g_ascii_strcasecmp (id, "RM4") == 0) { symbol->symbology = BARCODE_RM4SCC; }
+       if (g_ascii_strcasecmp (id, "UPC-A") == 0) { symbol->symbology = BARCODE_UPCA; }
+       if (g_ascii_strcasecmp (id, "UPC-E") == 0) { symbol->symbology = BARCODE_UPCE; }
+       if (g_ascii_strcasecmp (id, "USPS") == 0) { symbol->symbology = BARCODE_ONECODE; }
+       if (g_ascii_strcasecmp (id, "PLS") == 0) { symbol->symbology = BARCODE_PLESSEY; }
+
 
        /* Checksum not supported yet!! 
        if (!checksum_flag) {
@@ -94,29 +149,17 @@ gl_barcode_zint_new (const gchar          *id,
        result = ZBarcode_Encode(symbol, (unsigned char *)digits, 0);
        if (result) {
                gl_debug (DEBUG_BARCODE, "Zint Error: %s", symbol->errtxt);
-               strcpy(errtxt, symbol->errtxt);
                ZBarcode_Delete (symbol);
-               // Invalid! Print out a Code128 barcode instead with message
-               symbol = ZBarcode_Create();
-               symbol->symbology = BARCODE_CODE128;
-               result = ZBarcode_Encode(symbol, (unsigned char *)errtxt, 0);
-               if (result) {
-                       gl_debug (DEBUG_BARCODE, "Zint Error: %s", symbol->errtxt);
-                       ZBarcode_Delete (symbol);
-                 return NULL;
-               }
+               return NULL;
+       }
+       
+       if(!text_flag) {
+               symbol->show_hrt = 0;
        }
 
-       /* Scale calculated after height, always maintain aspect ratio */
-       symbol->scale = (w / symbol->width);
-       symbol->height = h / symbol->scale; // height always in standard size
-
-  /*
-        * With the size and scale set, send a request to Zint renderer
-        */
-       if (!ZBarcode_Render(symbol, (unsigned int) !text_flag, (float) w, (float) h)) {
+       if (!ZBarcode_Render(symbol, (float) w, (float) h)) {
+               g_message("Zint Rendering Error: %s", symbol->errtxt);
                ZBarcode_Delete(symbol);
-               gl_debug(DEBUG_BARCODE, "Zint Rendering Error: %s", symbol->errtxt);
                return NULL;
        }
 
@@ -130,91 +173,64 @@ gl_barcode_zint_new (const gchar          *id,
 
 
 /*--------------------------------------------------------------------------
- * PRIVATE. Render to glBarcode the provided Zint Rendered Plot
+ * PRIVATE. Render to glBarcode the provided Zint symbol.
  *
- * Takes the special zint_render structure and converts to glBarcode.
+ * Based on the SVG output from Zint library, handles lots of otherwise
+ * internal  Zint code to convert directly to glBarcode representation.
  *
  *--------------------------------------------------------------------------*/
 static glBarcode *render_zint(struct zint_symbol *symbol, gboolean text_flag) {
+       
+       int i;
+       double string_offset;
 
-       glBarcode     *gbc;
-       glBarcodeLine *line;
-       glBarcodeChar *bchar;
-
-       struct zint_render        *render;
-       struct zint_render_line   *zline;
+        glBarcode           *gbc;
+        glBarcodeShapeLine  *line;
+        glBarcodeShapeAlpha *bchar;
+       
+       struct zint_render      *render;
+       struct zint_render_line *zline;
        struct zint_render_string *zstring;
 
-  gchar *p;
-  gint length;
-  gdouble xoffset, width, char_width;
-
        render = symbol->rendered;
        gbc = g_new0(glBarcode, 1);
+       
+       
+       for ( zline = render->lines; zline != NULL; zline = zline->next ) {
+               line = gl_barcode_shape_line_new ();
 
-       /*
-        * Go through each line, alter the x position for centering, and add.
-        * Zint already applies the scaling factor.
-        */
-       zline = render->lines;
-  while (zline) {
-         line = g_new0 (glBarcodeLine, 1);
-
-               line->width = (gdouble) zline->width;
-               line->length = (gdouble) zline->length;
+               line->width = (double) zline->width;
+               line->length = (double) zline->length;
                /* glBarcodeLine centers based on width, counter-act!!! */
-               line->x = (gdouble) (zline->x + (zline->width / 2.0));
-               line->y = (gdouble) zline->y;
+               line->x = (double) (zline->x + (zline->width / 2.0));
+               line->y = (double) zline->y;
 
-               gbc->lines = g_list_append (gbc->lines, line);
-
-               // g_message ("Zint Adding Line at: %f x %f dim: %f x %f", line->x, line->y, line->width, line->length);
-               zline = zline->next;
+               gl_barcode_add_shape (gbc, (glBarcodeShape *)line);
        }
 
        /*
         * Repeat loop for characters
         */
-       zstring = render->strings;
-       if (text_flag) {
-               while (zstring) {
-
-      // Guess the first position based on width or number of characters
-      length = strlen(zstring->text);
-      width = zstring->width;
-      if (width > 0) {
-        char_width = width / length;
-      } else {
-        // No width, set our own by removing 30% of height
-        char_width = zstring->fsize - (zstring->fsize * 0.3);
-        width = char_width * length;
-      }
-      xoffset = zstring->x - (width / 2.0);
-
-      for (p = (gchar *) zstring->text; *p != 0; p++) {
-
-        bchar = g_new0 (glBarcodeChar, 1);
-        bchar->x = xoffset;
-        bchar->y = (gdouble) zstring->y;
-        bchar->fsize = (gdouble) zstring->fsize;
-        bchar->c = (gchar) *p;
-
-        gbc->chars = g_list_append (gbc->chars, bchar);
-
-        xoffset += char_width;
-      }
-
-                       zstring = zstring->next;
+       if(text_flag) {
+               for ( zstring = render->strings; zstring != NULL; zstring = zstring->next ) {
+                       string_offset = (double) zstring->x - (((6.0 / 9.0) * zstring->length * zstring->fsize) / 2);
+                       for(i = 0; i < zstring->length; i++) {
+                               bchar = gl_barcode_shape_alpha_new();
+                               bchar->x = (double) string_offset + ((6.0 / 9.0) * i * zstring->fsize);
+                               bchar->y = (double) zstring->y;
+                               bchar->fsize = (double) zstring->fsize;
+                               bchar->c = (char) zstring->text[i];
+                               gl_barcode_add_shape (gbc, (glBarcodeShape *)bchar);
+                       }
                }
        }
 
        /*
         * Finally add complete sizes
         */
-  //gbc->width = (gdouble) render->width;
-       //gbc->height = (gdouble) render->height;
+       gbc->width = (gdouble) render->width;
+       gbc->height = (gdouble) render->height;
 
-       
        return gbc;
 }
 
index c4455a45ff4e32e8b9e562cf375ac63567d06aba..3d9fe6e79bea3fda23922bbe33d9bf498574f7c8 100644 (file)
--- a/src/bc.c
+++ b/src/bc.c
@@ -159,14 +159,203 @@ static const Backend backends[] = {
 
 #ifdef HAVE_LIBZINT
 
-       { "GS1-128", N_("GS1-128"), gl_barcode_zint_new,
-         TRUE, TRUE, FALSE, FALSE, "[00]001234560000000018", TRUE, 22},
+       { "AUSP", N_("Australia Post Standard"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "AUSRP", N_("Australia Post Reply Paid"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "AUSRT", N_("Australia Post Route Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "AUSRD", N_("Australia Post Redirect"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "AZTEC", N_("Aztec Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "AZRUN", N_("Aztec Rune"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "CBR", N_("Codabar"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code1", N_("Code One"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code11", N_("Code 11"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "C16K", N_("Code 16K"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "C25M", N_("Code 2 of 5 Matrix"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "C25I", N_("Code 2 of 5 IATA"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "C25DL", N_("Code 2 of 5 Data Logic"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code32", N_("Code 32 (Italian Pharmacode)"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code39", N_("Code 39"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "Code39E", N_("Code 39 Extended"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code49", N_("Code 49"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code93", N_("Code 93"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "Code128", N_("Code 128"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "Code128B", N_("Code 128 (Mode C supression)"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "DAFT", N_("DAFT Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "DMTX", N_("Data Matrix"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "DPL", N_("Deutsche Post Leitcode"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "DPI", N_("Deutsche Post Identcode"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "KIX", N_("Dutch Post KIX Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "EAN", N_("European Article Number (EAN)"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "000000000000 00000", FALSE, 13},
+
+       { "GMTX", N_("Grid Matrix"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
 
-       { "GTIN-13", N_("GTIN-13"), gl_barcode_zint_new,
-         TRUE, TRUE, FALSE, FALSE, "000000000000", FALSE, 13},
+        { "GS1-128", N_("GS1-128"), gl_barcode_zint_new,
+         TRUE, TRUE, FALSE, FALSE, "[00]001234560000000018", TRUE, 16},
 
-       { "GTIN-14", N_("GTIN-14"), gl_barcode_zint_new,
-         TRUE, TRUE, FALSE, FALSE, "000000000000", FALSE, 14},
+       { "RSS14", N_("GS1 DataBar-14"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "RSSLTD", "GS1 DataBar-14 Limited",  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "RSSEXP", "GS1 DataBar Extended",  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+         
+       { "RSSS", N_("GS1 DataBar-14 Stacked"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "RSSSO", N_("GS1 DataBar-14 Stacked Omnidirectional"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "RSSSE", N_("GS1 DataBar Extended Stacked"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBC128", N_("HIBC Code 128"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBC39", N_("HIBC Code 39"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBCDM", N_("HIBC Data Matrix"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBCQR", N_("HIBC QR Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBCPDF", N_("HIBC PDF417"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBCMPDF", N_("HIBC Micro PDF417"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "HIBCAZ", N_("HIBC Aztec Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "I25", N_("Interleaved 2 of 5"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "ISBN", N_("ISBN"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "ITF14", N_("ITF-14"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "JAPAN", N_("Japanese Postal"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "KOREA", N_("Korean Postal"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "LOGM", N_("LOGMARS"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "MPDF", N_("Micro PDF417"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "MQR", N_("Micro QR Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "MSI", N_("MSI Plessey"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "NVE", N_("NVE-18"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "PDF", N_("PDF417"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "PDFT", N_("PDF417 Truncated"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "PLAN", N_("PLANET"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "POSTNET", N_("PostNet"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "PHARMA", N_("Pharmacode"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "00000", TRUE, 5},
+
+       { "PHARMA2", N_("Pharmacode 2-track"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "PZN", N_("Pharmazentral Nummer (PZN)"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "QR", N_("QR Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "RM4", N_("Royal Mail 4-State"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "TELE", N_("Telepen"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "TELEX", N_("Telepen Numeric"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "UPC-A", N_("UPC-A"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "00000000000", FALSE, 11},
+         
+       { "UPC-E", N_("UPC-E"),  gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "000000", FALSE, 6},
+         
+       { "USPS", N_("USPS One Code"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
+
+       { "PLS", N_("UK Plessey"), gl_barcode_zint_new,
+         TRUE, TRUE, TRUE, FALSE, "0000000000", TRUE, 10},
 
 #endif /* HAVE_LIBZINT */