#ifndef ZINT_H
#define ZINT_H
#ifdef __cplusplus
extern "C" {
#endif
struct zint_vector_rect {
float x, y;
float height, width;
int colour;
struct zint_vector_rect *next;
};
struct zint_vector_hexagon {
float x, y;
float diameter;
int rotation;
struct zint_vector_hexagon *next;
};
struct zint_vector_string {
float x, y;
float fsize;
float width;
int length;
int rotation;
int halign;
unsigned char *text;
struct zint_vector_string *next;
};
struct zint_vector_circle {
float x, y;
float diameter;
float width;
int colour;
struct zint_vector_circle *next;
};
struct zint_vector {
float width, height;
struct zint_vector_rect *rectangles;
struct zint_vector_hexagon *hexagons;
struct zint_vector_string *strings;
struct zint_vector_circle *circles;
};
struct zint_structapp {
int index;
int count;
char id[32];
};
struct zint_seg {
unsigned char *source;
int length;
int eci;
};
struct zint_symbol {
int symbology;
float height;
float scale;
int whitespace_width;
int whitespace_height;
int border_width;
int output_options;
char fgcolour[16];
char bgcolour[16];
char *fgcolor;
char *bgcolor;
char outfile[256];
char primary[128];
int option_1;
int option_2;
int option_3;
int show_hrt;
int input_mode;
int eci;
float dpmm;
float dot_size;
float text_gap;
float guard_descent;
struct zint_structapp structapp;
int warn_level;
int debug;
unsigned char text[256];
int text_length;
int rows;
int width;
char errtxt[160];
unsigned char *bitmap;
int bitmap_width;
int bitmap_height;
unsigned char *alphamap;
struct zint_vector *vector;
unsigned char *memfile;
int memfile_size;
struct zint_seg *content_segs;
int content_seg_count;
unsigned char encoded_data[200][144];
float row_height[200];
};
#define BARCODE_CODE11 1
#define BARCODE_C25STANDARD 2
#define BARCODE_C25MATRIX 2
#define BARCODE_C25INTER 3
#define BARCODE_C25IATA 4
#define BARCODE_C25LOGIC 6
#define BARCODE_C25IND 7
#define BARCODE_CODE39 8
#define BARCODE_EXCODE39 9
#define BARCODE_EAN8 10
#define BARCODE_EAN_2ADDON 11
#define BARCODE_EAN_5ADDON 12
#define BARCODE_EANX 13
#define BARCODE_EANX_CHK 14
#define BARCODE_EAN13 15
#define BARCODE_GS1_128 16
#define BARCODE_EAN128 16
#define BARCODE_CODABAR 18
#define BARCODE_CODE128 20
#define BARCODE_DPLEIT 21
#define BARCODE_DPIDENT 22
#define BARCODE_CODE16K 23
#define BARCODE_CODE49 24
#define BARCODE_CODE93 25
#define BARCODE_FLAT 28
#define BARCODE_DBAR_OMN 29
#define BARCODE_RSS14 29
#define BARCODE_DBAR_LTD 30
#define BARCODE_RSS_LTD 30
#define BARCODE_DBAR_EXP 31
#define BARCODE_RSS_EXP 31
#define BARCODE_TELEPEN 32
#define BARCODE_UPCA 34
#define BARCODE_UPCA_CHK 35
#define BARCODE_UPCE 37
#define BARCODE_UPCE_CHK 38
#define BARCODE_POSTNET 40
#define BARCODE_MSI_PLESSEY 47
#define BARCODE_FIM 49
#define BARCODE_LOGMARS 50
#define BARCODE_PHARMA 51
#define BARCODE_PZN 52
#define BARCODE_PHARMA_TWO 53
#define BARCODE_CEPNET 54
#define BARCODE_PDF417 55
#define BARCODE_PDF417COMP 56
#define BARCODE_PDF417TRUNC 56
#define BARCODE_MAXICODE 57
#define BARCODE_QRCODE 58
#define BARCODE_CODE128AB 60
#define BARCODE_CODE128B 60
#define BARCODE_AUSPOST 63
#define BARCODE_AUSREPLY 66
#define BARCODE_AUSROUTE 67
#define BARCODE_AUSREDIRECT 68
#define BARCODE_ISBNX 69
#define BARCODE_RM4SCC 70
#define BARCODE_DATAMATRIX 71
#define BARCODE_EAN14 72
#define BARCODE_VIN 73
#define BARCODE_CODABLOCKF 74
#define BARCODE_NVE18 75
#define BARCODE_JAPANPOST 76
#define BARCODE_KOREAPOST 77
#define BARCODE_DBAR_STK 79
#define BARCODE_RSS14STACK 79
#define BARCODE_DBAR_OMNSTK 80
#define BARCODE_RSS14STACK_OMNI 80
#define BARCODE_DBAR_EXPSTK 81
#define BARCODE_RSS_EXPSTACK 81
#define BARCODE_PLANET 82
#define BARCODE_MICROPDF417 84
#define BARCODE_USPS_IMAIL 85
#define BARCODE_ONECODE 85
#define BARCODE_PLESSEY 86
#define BARCODE_TELEPEN_NUM 87
#define BARCODE_ITF14 89
#define BARCODE_KIX 90
#define BARCODE_AZTEC 92
#define BARCODE_DAFT 93
#define BARCODE_DPD 96
#define BARCODE_MICROQR 97
#define BARCODE_HIBC_128 98
#define BARCODE_HIBC_39 99
#define BARCODE_HIBC_DM 102
#define BARCODE_HIBC_QR 104
#define BARCODE_HIBC_PDF 106
#define BARCODE_HIBC_MICPDF 108
#define BARCODE_HIBC_BLOCKF 110
#define BARCODE_HIBC_AZTEC 112
#define BARCODE_DOTCODE 115
#define BARCODE_HANXIN 116
#define BARCODE_MAILMARK_2D 119
#define BARCODE_UPU_S10 120
#define BARCODE_MAILMARK_4S 121
#define BARCODE_MAILMARK 121
#define BARCODE_AZRUNE 128
#define BARCODE_CODE32 129
#define BARCODE_EANX_CC 130
#define BARCODE_GS1_128_CC 131
#define BARCODE_EAN128_CC 131
#define BARCODE_DBAR_OMN_CC 132
#define BARCODE_RSS14_CC 132
#define BARCODE_DBAR_LTD_CC 133
#define BARCODE_RSS_LTD_CC 133
#define BARCODE_DBAR_EXP_CC 134
#define BARCODE_RSS_EXP_CC 134
#define BARCODE_UPCA_CC 135
#define BARCODE_UPCE_CC 136
#define BARCODE_DBAR_STK_CC 137
#define BARCODE_RSS14STACK_CC 137
#define BARCODE_DBAR_OMNSTK_CC 138
#define BARCODE_RSS14_OMNI_CC 138
#define BARCODE_DBAR_EXPSTK_CC 139
#define BARCODE_RSS_EXPSTACK_CC 139
#define BARCODE_CHANNEL 140
#define BARCODE_CODEONE 141
#define BARCODE_GRIDMATRIX 142
#define BARCODE_UPNQR 143
#define BARCODE_ULTRA 144
#define BARCODE_RMQR 145
#define BARCODE_BC412 146
#define BARCODE_DXFILMEDGE 147
#define BARCODE_EAN8_CC 148
#define BARCODE_EAN13_CC 149
#define BARCODE_LAST 149
#define BARCODE_BIND_TOP 0x00001
#define BARCODE_BIND 0x00002
#define BARCODE_BOX 0x00004
#define BARCODE_STDOUT 0x00008
#define READER_INIT 0x00010
#define SMALL_TEXT 0x00020
#define BOLD_TEXT 0x00040
#define CMYK_COLOUR 0x00080
#define BARCODE_DOTTY_MODE 0x00100
#define GS1_GS_SEPARATOR 0x00200
#define OUT_BUFFER_INTERMEDIATE 0x00400
#define BARCODE_QUIET_ZONES 0x00800
#define BARCODE_NO_QUIET_ZONES 0x01000
#define COMPLIANT_HEIGHT 0x02000
#define EANUPC_GUARD_WHITESPACE 0x04000
#define EMBED_VECTOR_FONT 0x08000
#define BARCODE_MEMORY_FILE 0x10000
#define BARCODE_CONTENT_SEGS 0x20000
#define DATA_MODE 0
#define UNICODE_MODE 1
#define GS1_MODE 2
#define ESCAPE_MODE 0x0008
#define GS1PARENS_MODE 0x0010
#define GS1NOCHECK_MODE 0x0020
#define HEIGHTPERROW_MODE 0x0040
#define FAST_MODE 0x0080
#define EXTRA_ESCAPE_MODE 0x0100
#define GS1SYNTAXENGINE_MODE 0x0200
#define DM_SQUARE 100
#define DM_DMRE 101
#define DM_ISO_144 128
#define ZINT_FULL_MULTIBYTE 200
#define ULTRA_COMPRESSION 128
#define ZINT_WARN_HRT_TRUNCATED 1
#define ZINT_WARN_INVALID_OPTION 2
#define ZINT_WARN_USES_ECI 3
#define ZINT_WARN_NONCOMPLIANT 4
#define ZINT_ERROR 5
#define ZINT_ERROR_TOO_LONG 5
#define ZINT_ERROR_INVALID_DATA 6
#define ZINT_ERROR_INVALID_CHECK 7
#define ZINT_ERROR_INVALID_OPTION 8
#define ZINT_ERROR_ENCODING_PROBLEM 9
#define ZINT_ERROR_FILE_ACCESS 10
#define ZINT_ERROR_MEMORY 11
#define ZINT_ERROR_FILE_WRITE 12
#define ZINT_ERROR_USES_ECI 13
#define ZINT_ERROR_NONCOMPLIANT 14
#define ZINT_ERROR_HRT_TRUNCATED 15
#define WARN_DEFAULT 0
#define WARN_FAIL_ALL 2
#define ZINT_CAP_HRT 0x0001
#define ZINT_CAP_STACKABLE 0x0002
#define ZINT_CAP_EANUPC 0x0004
#define ZINT_CAP_EXTENDABLE 0x0004
#define ZINT_CAP_COMPOSITE 0x0008
#define ZINT_CAP_ECI 0x0010
#define ZINT_CAP_GS1 0x0020
#define ZINT_CAP_DOTTY 0x0040
#define ZINT_CAP_QUIET_ZONES 0x0080
#define ZINT_CAP_FIXED_RATIO 0x0100
#define ZINT_CAP_READER_INIT 0x0200
#define ZINT_CAP_FULL_MULTIBYTE 0x0400
#define ZINT_CAP_MASK 0x0800
#define ZINT_CAP_STRUCTAPP 0x1000
#define ZINT_CAP_COMPLIANT_HEIGHT 0x2000
#define ZINT_CAP_BINDABLE 0x4000
#define ZINT_MAX_DATA_LEN 17400
#define ZINT_MAX_SEG_COUNT 256
#define ZINT_DEBUG_PRINT 0x0001
#define ZINT_DEBUG_TEST 0x0002
#ifdef _WIN32
# if defined(DLL_EXPORT) || defined(PIC) || defined(_USRDLL)
# define ZINT_EXTERN __declspec(dllexport)
# elif defined(ZINT_DLL)
# define ZINT_EXTERN __declspec(dllimport)
# else
# define ZINT_EXTERN extern
# endif
#elif defined(__GNUC__) && __GNUC__ >= 4
# define ZINT_EXTERN extern __attribute__((__visibility__("default")))
#else
# define ZINT_EXTERN extern
#endif
ZINT_EXTERN struct zint_symbol *ZBarcode_Create(void);
ZINT_EXTERN void ZBarcode_Clear(struct zint_symbol *symbol);
ZINT_EXTERN void ZBarcode_Reset(struct zint_symbol *symbol);
ZINT_EXTERN void ZBarcode_Delete(struct zint_symbol *symbol);
ZINT_EXTERN int ZBarcode_Encode(struct zint_symbol *symbol, const unsigned char *source, int length);
ZINT_EXTERN int ZBarcode_Encode_Segs(struct zint_symbol *symbol, const struct zint_seg segs[],
const int seg_count);
ZINT_EXTERN int ZBarcode_Encode_File(struct zint_symbol *symbol, const char *filename);
ZINT_EXTERN int ZBarcode_Print(struct zint_symbol *symbol, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_and_Print(struct zint_symbol *symbol, const unsigned char *source, int length,
int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_Segs_and_Print(struct zint_symbol *symbol, const struct zint_seg segs[],
const int seg_count, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_File_and_Print(struct zint_symbol *symbol, const char *filename,
int rotate_angle);
ZINT_EXTERN int ZBarcode_Buffer(struct zint_symbol *symbol, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_and_Buffer(struct zint_symbol *symbol, const unsigned char *source, int length,
int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_Segs_and_Buffer(struct zint_symbol *symbol, const struct zint_seg segs[],
const int seg_count, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_File_and_Buffer(struct zint_symbol *symbol, const char *filename,
int rotate_angle);
ZINT_EXTERN int ZBarcode_Buffer_Vector(struct zint_symbol *symbol, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_and_Buffer_Vector(struct zint_symbol *symbol, const unsigned char *source,
int length, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_Segs_and_Buffer_Vector(struct zint_symbol *symbol, const struct zint_seg segs[],
const int seg_count, int rotate_angle);
ZINT_EXTERN int ZBarcode_Encode_File_and_Buffer_Vector(struct zint_symbol *symbol, const char *filename,
int rotate_angle);
ZINT_EXTERN int ZBarcode_ValidID(int symbol_id);
ZINT_EXTERN int ZBarcode_BarcodeName(int symbol_id, char name[32]);
ZINT_EXTERN unsigned int ZBarcode_Cap(int symbol_id, unsigned int cap_flag);
ZINT_EXTERN float ZBarcode_Default_Xdim(int symbol_id);
ZINT_EXTERN float ZBarcode_Scale_From_XdimDp(int symbol_id, float x_dim_mm, float dpmm, const char *filetype);
ZINT_EXTERN float ZBarcode_XdimDp_From_Scale(int symbol_id, float scale, float x_dim_mm_or_dpmm,
const char *filetype);
ZINT_EXTERN int ZBarcode_UTF8_To_ECI(int eci, const unsigned char *source, int length, unsigned char dest[],
int *p_dest_length);
ZINT_EXTERN int ZBarcode_Dest_Len_ECI(int eci, const unsigned char *source, int length, int *p_dest_length);
ZINT_EXTERN int ZBarcode_NoPng(void);
ZINT_EXTERN int ZBarcode_HaveGS1SyntaxEngine(void);
ZINT_EXTERN int ZBarcode_Version(void);
#ifdef __cplusplus
}
#endif
#endif