QRencode
qrencode.h
Go to the documentation of this file.
00001 
00099 #ifndef __QRENCODE_H__
00100 #define __QRENCODE_H__
00101 
00102 #if defined(__cplusplus)
00103 extern "C" {
00104 #endif
00105 
00109 typedef enum {
00110         QR_MODE_NUL = -1,  
00111         QR_MODE_NUM = 0,   
00112         QR_MODE_AN,        
00113         QR_MODE_8,         
00114         QR_MODE_KANJI,     
00115         QR_MODE_STRUCTURE, 
00116         QR_MODE_ECI,       
00117         QR_MODE_FNC1FIRST,  
00118         QR_MODE_FNC1SECOND, 
00119 } QRencodeMode;
00120 
00124 typedef enum {
00125         QR_ECLEVEL_L = 0, 
00126         QR_ECLEVEL_M,
00127         QR_ECLEVEL_Q,
00128         QR_ECLEVEL_H      
00129 } QRecLevel;
00130 
00134 #define QRSPEC_VERSION_MAX 40
00135 
00139 #define MQRSPEC_VERSION_MAX 4
00140 
00141 
00142 /******************************************************************************
00143  * Input data (qrinput.c)
00144  *****************************************************************************/
00145 
00152 typedef struct _QRinput QRinput;
00153 
00161 extern QRinput *QRinput_new(void);
00162 
00172 extern QRinput *QRinput_new2(int version, QRecLevel level);
00173 
00184 extern QRinput *QRinput_newMQR(int version, QRecLevel level);
00185 
00200 extern int QRinput_append(QRinput *input, QRencodeMode mode, int size, const unsigned char *data);
00201 
00213 extern int QRinput_appendECIheader(QRinput *input, unsigned int ecinum);
00214 
00220 extern int QRinput_getVersion(QRinput *input);
00221 
00230 extern int QRinput_setVersion(QRinput *input, int version);
00231 
00237 extern QRecLevel QRinput_getErrorCorrectionLevel(QRinput *input);
00238 
00247 extern int QRinput_setErrorCorrectionLevel(QRinput *input, QRecLevel level);
00248 
00258 extern int QRinput_setVersionAndErrorCorrectionLevel(QRinput *input, int version, QRecLevel level);
00259 
00265 extern void QRinput_free(QRinput *input);
00266 
00275 extern int QRinput_check(QRencodeMode mode, int size, const unsigned char *data);
00276 
00280 typedef struct _QRinput_Struct QRinput_Struct;
00281 
00288 extern QRinput_Struct *QRinput_Struct_new(void);
00289 
00295 extern void QRinput_Struct_setParity(QRinput_Struct *s, unsigned char parity);
00296 
00308 extern int QRinput_Struct_appendInput(QRinput_Struct *s, QRinput *input);
00309 
00314 extern void QRinput_Struct_free(QRinput_Struct *s);
00315 
00328 extern QRinput_Struct *QRinput_splitQRinputToStruct(QRinput *input);
00329 
00340 extern int QRinput_Struct_insertStructuredAppendHeaders(QRinput_Struct *s);
00341 
00345 extern int QRinput_setFNC1First(QRinput *input);
00346 
00350 extern int QRinput_setFNC1Second(QRinput *input, unsigned char appid);
00351 
00352 /******************************************************************************
00353  * QRcode output (qrencode.c)
00354  *****************************************************************************/
00355 
00375 typedef struct {
00376         int version;         
00377         int width;           
00378         unsigned char *data; 
00379 } QRcode;
00380 
00385 typedef struct _QRcode_List QRcode_List;
00386 
00387 struct _QRcode_List {
00388         QRcode *code;
00389         QRcode_List *next;
00390 };
00391 
00403 extern QRcode *QRcode_encodeInput(QRinput *input);
00404 
00427 extern QRcode *QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
00428 
00433 extern QRcode *QRcode_encodeString8bit(const char *string, int version, QRecLevel level);
00434 
00439 extern QRcode *QRcode_encodeStringMQR(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
00440 
00445 extern QRcode *QRcode_encodeString8bitMQR(const char *string, int version, QRecLevel level);
00446 
00459 extern QRcode *QRcode_encodeData(int size, const unsigned char *data, int version, QRecLevel level);
00460 
00465 extern QRcode *QRcode_encodeDataMQR(int size, const unsigned char *data, int version, QRecLevel level);
00466 
00471 extern void QRcode_free(QRcode *qrcode);
00472 
00479 extern QRcode_List *QRcode_encodeInputStructured(QRinput_Struct *s);
00480 
00499 extern QRcode_List *QRcode_encodeStringStructured(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
00500 
00505 extern QRcode_List *QRcode_encodeString8bitStructured(const char *string, int version, QRecLevel level);
00506 
00520 extern QRcode_List *QRcode_encodeDataStructured(int size, const unsigned char *data, int version, QRecLevel level);
00521 
00527 extern int QRcode_List_size(QRcode_List *qrlist);
00528 
00533 extern void QRcode_List_free(QRcode_List *qrlist);
00534 
00535 
00536 /******************************************************************************
00537  * System utilities
00538  *****************************************************************************/
00539 
00546 extern void QRcode_APIVersion(int *major_version, int *minor_version, int *micro_version);
00547 
00553 extern char *QRcode_APIVersionString(void);
00554 
00559 extern void QRcode_clearCache(void);
00560 
00561 #if defined(__cplusplus)
00562 }
00563 #endif
00564 
00565 #endif /* __QRENCODE_H__ */