QRencode
QR Code encoder
qrencode.h
Go to the documentation of this file.
1 
99 #ifndef QRENCODE_H
100 #define QRENCODE_H
101 
102 #if defined(__cplusplus)
103 extern "C" {
104 #endif
105 
109 typedef enum {
110  QR_MODE_NUL = -1,
119 } QRencodeMode;
120 
124 typedef enum {
129 } QRecLevel;
130 
134 #define QRSPEC_VERSION_MAX 40
135 
139 #define MQRSPEC_VERSION_MAX 4
140 
141 
142 /******************************************************************************
143  * Input data (qrinput.c)
144  *****************************************************************************/
145 
152 typedef struct _QRinput QRinput;
153 
161 extern QRinput *QRinput_new(void);
162 
172 extern QRinput *QRinput_new2(int version, QRecLevel level);
173 
184 extern QRinput *QRinput_newMQR(int version, QRecLevel level);
185 
200 extern int QRinput_append(QRinput *input, QRencodeMode mode, int size, const unsigned char *data);
201 
213 extern int QRinput_appendECIheader(QRinput *input, unsigned int ecinum);
214 
220 extern int QRinput_getVersion(QRinput *input);
221 
230 extern int QRinput_setVersion(QRinput *input, int version);
231 
237 extern QRecLevel QRinput_getErrorCorrectionLevel(QRinput *input);
238 
247 extern int QRinput_setErrorCorrectionLevel(QRinput *input, QRecLevel level);
248 
258 extern int QRinput_setVersionAndErrorCorrectionLevel(QRinput *input, int version, QRecLevel level);
259 
265 extern void QRinput_free(QRinput *input);
266 
275 extern int QRinput_check(QRencodeMode mode, int size, const unsigned char *data);
276 
280 typedef struct _QRinput_Struct QRinput_Struct;
281 
288 extern QRinput_Struct *QRinput_Struct_new(void);
289 
295 extern void QRinput_Struct_setParity(QRinput_Struct *s, unsigned char parity);
296 
308 extern int QRinput_Struct_appendInput(QRinput_Struct *s, QRinput *input);
309 
314 extern void QRinput_Struct_free(QRinput_Struct *s);
315 
329 
341 
345 extern int QRinput_setFNC1First(QRinput *input);
346 
350 extern int QRinput_setFNC1Second(QRinput *input, unsigned char appid);
351 
352 /******************************************************************************
353  * QRcode output (qrencode.c)
354  *****************************************************************************/
355 
375 typedef struct {
376  int version;
377  int width;
378  unsigned char *data;
379 } QRcode;
380 
385 typedef struct _QRcode_List {
387  struct _QRcode_List *next;
388 } QRcode_List;
389 
401 extern QRcode *QRcode_encodeInput(QRinput *input);
402 
426 extern QRcode *QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
427 
432 extern QRcode *QRcode_encodeString8bit(const char *string, int version, QRecLevel level);
433 
438 extern QRcode *QRcode_encodeStringMQR(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
439 
444 extern QRcode *QRcode_encodeString8bitMQR(const char *string, int version, QRecLevel level);
445 
458 extern QRcode *QRcode_encodeData(int size, const unsigned char *data, int version, QRecLevel level);
459 
464 extern QRcode *QRcode_encodeDataMQR(int size, const unsigned char *data, int version, QRecLevel level);
465 
470 extern void QRcode_free(QRcode *qrcode);
471 
479 
499 extern QRcode_List *QRcode_encodeStringStructured(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
500 
505 extern QRcode_List *QRcode_encodeString8bitStructured(const char *string, int version, QRecLevel level);
506 
520 extern QRcode_List *QRcode_encodeDataStructured(int size, const unsigned char *data, int version, QRecLevel level);
521 
527 extern int QRcode_List_size(QRcode_List *qrlist);
528 
533 extern void QRcode_List_free(QRcode_List *qrlist);
534 
535 
536 /******************************************************************************
537  * System utilities
538  *****************************************************************************/
539 
546 extern void QRcode_APIVersion(int *major_version, int *minor_version, int *micro_version);
547 
553 extern char *QRcode_APIVersionString(void);
554 
558 #ifndef _MSC_VER
559 extern void QRcode_clearCache(void) __attribute__ ((deprecated));
560 #else
561 extern void QRcode_clearCache(void);
562 #endif
563 
564 #if defined(__cplusplus)
565 }
566 #endif
567 
568 #endif /* QRENCODE_H */
QRinput_Struct * QRinput_Struct_new(void)
Instantiate a set of input data object.
int version
version of the symbol
Definition: qrencode.h:376
QRinput * QRinput_new(void)
Instantiate an input data object.
ECI mode.
Definition: qrencode.h:116
void QRinput_Struct_setParity(QRinput_Struct *s, unsigned char parity)
Set parity of structured symbols.
QRcode_List * QRcode_encodeInputStructured(QRinput_Struct *s)
Create structured symbols from the input data.
QRcode class.
Definition: qrencode.h:375
highest
Definition: qrencode.h:128
FNC1, first position.
Definition: qrencode.h:117
QRcode * QRcode_encodeInput(QRinput *input)
Create a symbol from the input data.
QRinput_Struct * QRinput_splitQRinputToStruct(QRinput *input)
Split a QRinput to QRinput_Struct.
Numeric mode.
Definition: qrencode.h:111
QRecLevel QRinput_getErrorCorrectionLevel(QRinput *input)
Get current error correction level.
void QRinput_free(QRinput *input)
Free the input object.
QRcode * code
Definition: qrencode.h:386
void QRinput_Struct_free(QRinput_Struct *s)
Free all of QRinput in the set.
char * QRcode_APIVersionString(void)
Return a string that identifies the library version.
FNC1, second position.
Definition: qrencode.h:118
struct _QRcode_List * next
Definition: qrencode.h:387
QRecLevel
Level of error correction.
Definition: qrencode.h:124
8-bit data mode
Definition: qrencode.h:113
QRcode * QRcode_encodeStringMQR(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive)
Micro QR Code version of QRcode_encodeString().
Definition: qrencode.h:126
void QRcode_clearCache(void) __attribute__((deprecated))
QRcode * QRcode_encodeString8bit(const char *string, int version, QRecLevel level)
Same to QRcode_encodeString(), but encode whole data in 8-bit mode.
Singly-linked list of QRcode.
Definition: qrencode.h:385
QRcode * QRcode_encodeString8bitMQR(const char *string, int version, QRecLevel level)
Micro QR Code version of QRcode_encodeString8bit().
QRcode_List * QRcode_encodeStringStructured(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive)
Create structured symbols from the string.
QRcode_List * QRcode_encodeDataStructured(int size, const unsigned char *data, int version, QRecLevel level)
Create structured symbols from byte stream (may include '\0').
unsigned char * data
symbol data
Definition: qrencode.h:378
QRencodeMode
Encoding mode.
Definition: qrencode.h:109
int QRinput_setFNC1Second(QRinput *input, unsigned char appid)
Set FNC1-2nd position flag and application identifier.
QRcode * QRcode_encodeDataMQR(int size, const unsigned char *data, int version, QRecLevel level)
Micro QR Code version of QRcode_encodeData().
int QRinput_setErrorCorrectionLevel(QRinput *input, QRecLevel level)
Set error correction level of the QR code that is to be encoded.
struct _QRinput QRinput
Singly linked list to contain input strings.
Definition: qrencode.h:152
QRcode_List * QRcode_encodeString8bitStructured(const char *string, int version, QRecLevel level)
Same to QRcode_encodeStringStructured(), but encode whole data in 8-bit mode.
int QRinput_setVersion(QRinput *input, int version)
Set version of the QR code that is to be encoded.
QRinput * QRinput_new2(int version, QRecLevel level)
Instantiate an input data object.
void QRcode_free(QRcode *qrcode)
Free the instance of QRcode class.
Kanji (shift-jis) mode.
Definition: qrencode.h:114
int QRcode_List_size(QRcode_List *qrlist)
Return the number of symbols included in a QRcode_List.
int QRinput_setVersionAndErrorCorrectionLevel(QRinput *input, int version, QRecLevel level)
Set version and error correction level of the QR code at once.
lowest
Definition: qrencode.h:125
Alphabet-numeric mode.
Definition: qrencode.h:112
struct _QRinput_Struct QRinput_Struct
Set of QRinput for structured symbols.
Definition: qrencode.h:280
void QRcode_List_free(QRcode_List *qrlist)
Free the QRcode_List.
int width
width of the symbol
Definition: qrencode.h:377
int QRinput_Struct_insertStructuredAppendHeaders(QRinput_Struct *s)
Insert structured-append headers to the input structure.
int QRinput_append(QRinput *input, QRencodeMode mode, int size, const unsigned char *data)
Append data to an input object.
int QRinput_appendECIheader(QRinput *input, unsigned int ecinum)
Append ECI header.
int QRinput_check(QRencodeMode mode, int size, const unsigned char *data)
Validate the input data.
void QRcode_APIVersion(int *major_version, int *minor_version, int *micro_version)
Return a string that identifies the library version.
QRcode * QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive)
Create a symbol from the string.
int QRinput_Struct_appendInput(QRinput_Struct *s, QRinput *input)
Append a QRinput object to the set.
QRcode * QRcode_encodeData(int size, const unsigned char *data, int version, QRecLevel level)
Encode byte stream (may include '\0') in 8-bit mode.
Internal use only.
Definition: qrencode.h:115
QRinput * QRinput_newMQR(int version, QRecLevel level)
Instantiate an input data object.
Terminator (NUL character). Internal use only.
Definition: qrencode.h:110
int QRinput_setFNC1First(QRinput *input)
Set FNC1-1st position flag.
Definition: qrencode.h:127
int QRinput_getVersion(QRinput *input)
Get current version.