QRencode
QR Code encoder
|
Go to the source code of this file.
Data Structures | |
struct | QRcode |
QRcode class. More... | |
struct | QRcode_List |
Singly-linked list of QRcode. More... | |
Macros | |
#define | QRSPEC_VERSION_MAX 40 |
Maximum version (size) of QR-code symbol. More... | |
#define | MQRSPEC_VERSION_MAX 4 |
Maximum version (size) of QR-code symbol. More... | |
Typedefs | |
typedef struct _QRinput | QRinput |
Singly linked list to contain input strings. More... | |
typedef struct _QRinput_Struct | QRinput_Struct |
Set of QRinput for structured symbols. More... | |
Enumerations | |
enum | QRencodeMode { QR_MODE_NUL = -1, QR_MODE_NUM = 0, QR_MODE_AN, QR_MODE_8, QR_MODE_KANJI, QR_MODE_STRUCTURE, QR_MODE_ECI, QR_MODE_FNC1FIRST, QR_MODE_FNC1SECOND } |
Encoding mode. More... | |
enum | QRecLevel { QR_ECLEVEL_L = 0, QR_ECLEVEL_M, QR_ECLEVEL_Q, QR_ECLEVEL_H } |
Level of error correction. More... | |
Functions | |
QRinput * | QRinput_new (void) |
Instantiate an input data object. More... | |
QRinput * | QRinput_new2 (int version, QRecLevel level) |
Instantiate an input data object. More... | |
QRinput * | QRinput_newMQR (int version, QRecLevel level) |
Instantiate an input data object. More... | |
int | QRinput_append (QRinput *input, QRencodeMode mode, int size, const unsigned char *data) |
Append data to an input object. More... | |
int | QRinput_appendECIheader (QRinput *input, unsigned int ecinum) |
Append ECI header. More... | |
int | QRinput_getVersion (QRinput *input) |
Get current version. More... | |
int | QRinput_setVersion (QRinput *input, int version) |
Set version of the QR code that is to be encoded. More... | |
QRecLevel | QRinput_getErrorCorrectionLevel (QRinput *input) |
Get current error correction level. More... | |
int | QRinput_setErrorCorrectionLevel (QRinput *input, QRecLevel level) |
Set error correction level of the QR code that is to be encoded. More... | |
int | QRinput_setVersionAndErrorCorrectionLevel (QRinput *input, int version, QRecLevel level) |
Set version and error correction level of the QR code at once. More... | |
void | QRinput_free (QRinput *input) |
Free the input object. More... | |
int | QRinput_check (QRencodeMode mode, int size, const unsigned char *data) |
Validate the input data. More... | |
QRinput_Struct * | QRinput_Struct_new (void) |
Instantiate a set of input data object. More... | |
void | QRinput_Struct_setParity (QRinput_Struct *s, unsigned char parity) |
Set parity of structured symbols. More... | |
int | QRinput_Struct_appendInput (QRinput_Struct *s, QRinput *input) |
Append a QRinput object to the set. More... | |
void | QRinput_Struct_free (QRinput_Struct *s) |
Free all of QRinput in the set. More... | |
QRinput_Struct * | QRinput_splitQRinputToStruct (QRinput *input) |
Split a QRinput to QRinput_Struct. More... | |
int | QRinput_Struct_insertStructuredAppendHeaders (QRinput_Struct *s) |
Insert structured-append headers to the input structure. More... | |
int | QRinput_setFNC1First (QRinput *input) |
Set FNC1-1st position flag. More... | |
int | QRinput_setFNC1Second (QRinput *input, unsigned char appid) |
Set FNC1-2nd position flag and application identifier. More... | |
QRcode * | QRcode_encodeInput (QRinput *input) |
Create a symbol from the input data. More... | |
QRcode * | QRcode_encodeString (const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive) |
Create a symbol from the string. More... | |
QRcode * | QRcode_encodeString8bit (const char *string, int version, QRecLevel level) |
Same to QRcode_encodeString(), but encode whole data in 8-bit mode. More... | |
QRcode * | QRcode_encodeStringMQR (const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive) |
Micro QR Code version of QRcode_encodeString(). More... | |
QRcode * | QRcode_encodeString8bitMQR (const char *string, int version, QRecLevel level) |
Micro QR Code version of QRcode_encodeString8bit(). More... | |
QRcode * | QRcode_encodeData (int size, const unsigned char *data, int version, QRecLevel level) |
Encode byte stream (may include '\0') in 8-bit mode. More... | |
QRcode * | QRcode_encodeDataMQR (int size, const unsigned char *data, int version, QRecLevel level) |
Micro QR Code version of QRcode_encodeData(). More... | |
void | QRcode_free (QRcode *qrcode) |
Free the instance of QRcode class. More... | |
QRcode_List * | QRcode_encodeInputStructured (QRinput_Struct *s) |
Create structured symbols from the input data. More... | |
QRcode_List * | QRcode_encodeStringStructured (const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive) |
Create structured symbols from the string. More... | |
QRcode_List * | QRcode_encodeString8bitStructured (const char *string, int version, QRecLevel level) |
Same to QRcode_encodeStringStructured(), but encode whole data in 8-bit mode. More... | |
QRcode_List * | QRcode_encodeDataStructured (int size, const unsigned char *data, int version, QRecLevel level) |
Create structured symbols from byte stream (may include '\0'). More... | |
int | QRcode_List_size (QRcode_List *qrlist) |
Return the number of symbols included in a QRcode_List. More... | |
void | QRcode_List_free (QRcode_List *qrlist) |
Free the QRcode_List. More... | |
void | QRcode_APIVersion (int *major_version, int *minor_version, int *micro_version) |
Return a string that identifies the library version. More... | |
char * | QRcode_APIVersionString (void) |
Return a string that identifies the library version. More... | |
void | QRcode_clearCache (void) __attribute__((deprecated)) |
#define QRSPEC_VERSION_MAX 40 |
Maximum version (size) of QR-code symbol.
#define MQRSPEC_VERSION_MAX 4 |
Maximum version (size) of QR-code symbol.
typedef struct _QRinput QRinput |
Singly linked list to contain input strings.
An instance of this class contains its version and error correction level too. It is required to set them by QRinput_setVersion() and QRinput_setErrorCorrectionLevel(), or use QRinput_new2() to instantiate an object.
typedef struct _QRinput_Struct QRinput_Struct |
Set of QRinput for structured symbols.
enum QRencodeMode |
Encoding mode.
enum QRecLevel |
QRinput* QRinput_new | ( | void | ) |
Instantiate an input data object.
The version is set to 0 (auto-select) and the error correction level is set to QR_ECLEVEL_L.
ENOMEM | unable to allocate memory. |
Instantiate an input data object.
version | version number. |
level | Error correction level. |
ENOMEM | unable to allocate memory for input objects. |
EINVAL | invalid arguments. |
Instantiate an input data object.
Object's Micro QR Code flag is set. Unlike with full-sized QR Code, version number must be specified (>0).
version | version number (1–4). |
level | Error correction level. |
ENOMEM | unable to allocate memory for input objects. |
EINVAL | invalid arguments. |
int QRinput_append | ( | QRinput * | input, |
QRencodeMode | mode, | ||
int | size, | ||
const unsigned char * | data | ||
) |
Append data to an input object.
The data is copied and appended to the input object.
input | input object. |
mode | encoding mode. |
size | size of data (byte). |
data | a pointer to the memory area of the input data. |
0 | success. |
-1 | an error occurred and errno is set to indeicate the error. See Execptions for the details. |
ENOMEM | unable to allocate memory. |
EINVAL | input data is invalid. |
int QRinput_appendECIheader | ( | QRinput * | input, |
unsigned int | ecinum | ||
) |
Append ECI header.
input | input object. |
ecinum | ECI indicator number (0 - 999999) |
0 | success. |
-1 | an error occurred and errno is set to indeicate the error. See Execptions for the details. |
ENOMEM | unable to allocate memory. |
EINVAL | input data is invalid. |
int QRinput_getVersion | ( | QRinput * | input | ) |
Get current version.
input | input object. |
int QRinput_setVersion | ( | QRinput * | input, |
int | version | ||
) |
Set version of the QR code that is to be encoded.
This function cannot be applied to Micro QR Code.
input | input object. |
version | version number (0 = auto) |
0 | success. |
-1 | invalid argument. |
Get current error correction level.
input | input object. |
Set error correction level of the QR code that is to be encoded.
This function cannot be applied to Micro QR Code.
input | input object. |
level | Error correction level. |
0 | success. |
-1 | invalid argument. |
Set version and error correction level of the QR code at once.
This function is recommened for Micro QR Code.
input | input object. |
version | version number (0 = auto) |
level | Error correction level. |
0 | success. |
-1 | invalid argument. |
void QRinput_free | ( | QRinput * | input | ) |
Free the input object.
All of data chunks in the input object are freed too.
input | input object. |
int QRinput_check | ( | QRencodeMode | mode, |
int | size, | ||
const unsigned char * | data | ||
) |
Validate the input data.
mode | encoding mode. |
size | size of data (byte). |
data | a pointer to the memory area of the input data. |
0 | success. |
-1 | invalid arguments. |
QRinput_Struct* QRinput_Struct_new | ( | void | ) |
Instantiate a set of input data object.
ENOMEM | unable to allocate memory. |
void QRinput_Struct_setParity | ( | QRinput_Struct * | s, |
unsigned char | parity | ||
) |
Set parity of structured symbols.
s | structured input object. |
parity | parity of s. |
int QRinput_Struct_appendInput | ( | QRinput_Struct * | s, |
QRinput * | input | ||
) |
Append a QRinput object to the set.
QRinput created by QRinput_newMQR() will be rejected.
s | structured input object. |
input | an input object. |
>0 | number of input objects in the structure. |
-1 | an error occurred. See Exceptions for the details. |
ENOMEM | unable to allocate memory. |
EINVAL | invalid arguments. |
void QRinput_Struct_free | ( | QRinput_Struct * | s | ) |
Free all of QRinput in the set.
s | a structured input object. |
QRinput_Struct* QRinput_splitQRinputToStruct | ( | QRinput * | input | ) |
Split a QRinput to QRinput_Struct.
It calculates a parity, set it, then insert structured-append headers. QRinput created by QRinput_newMQR() will be rejected.
input | input object. Version number and error correction level must be set. |
ERANGE | input data is too large. |
EINVAL | invalid input data. |
ENOMEM | unable to allocate memory. |
int QRinput_Struct_insertStructuredAppendHeaders | ( | QRinput_Struct * | s | ) |
Insert structured-append headers to the input structure.
It calculates a parity and set it if the parity is not set yet.
s | input structure |
0 | success. |
-1 | an error occurred and errno is set to indeicate the error. See Execptions for the details. |
EINVAL | invalid input object. |
ENOMEM | unable to allocate memory. |
int QRinput_setFNC1First | ( | QRinput * | input | ) |
Set FNC1-1st position flag.
int QRinput_setFNC1Second | ( | QRinput * | input, |
unsigned char | appid | ||
) |
Set FNC1-2nd position flag and application identifier.
Create a symbol from the input data.
input | input data. |
EINVAL | invalid input object. |
ENOMEM | unable to allocate memory for input objects. |
QRcode* QRcode_encodeString | ( | const char * | string, |
int | version, | ||
QRecLevel | level, | ||
QRencodeMode | hint, | ||
int | casesensitive | ||
) |
Create a symbol from the string.
The library automatically parses the input string and encodes in a QR Code symbol.
string | input string. It must be NUL terminated. |
version | version of the symbol. If 0, the library chooses the minimum version for the given input data. |
level | error correction level. |
hint | tell the library how Japanese Kanji characters should be encoded. If QR_MODE_KANJI is given, the library assumes that the given string contains Shift-JIS characters and encodes them in Kanji-mode. If QR_MODE_8 is given, all of non-alphanumerical characters will be encoded as is. If you want to embed UTF-8 string, choose this. Other mode will cause EINVAL error. |
casesensitive | case-sensitive(1) or not(0). |
EINVAL | invalid input object. |
ENOMEM | unable to allocate memory for input objects. |
ERANGE | input data is too large. |
Same to QRcode_encodeString(), but encode whole data in 8-bit mode.
QRcode* QRcode_encodeStringMQR | ( | const char * | string, |
int | version, | ||
QRecLevel | level, | ||
QRencodeMode | hint, | ||
int | casesensitive | ||
) |
Micro QR Code version of QRcode_encodeString().
Micro QR Code version of QRcode_encodeString8bit().
Encode byte stream (may include '\0') in 8-bit mode.
size | size of the input data. |
data | input data. |
version | version of the symbol. If 0, the library chooses the minimum version for the given input data. |
level | error correction level. |
EINVAL | invalid input object. |
ENOMEM | unable to allocate memory for input objects. |
ERANGE | input data is too large. |
Micro QR Code version of QRcode_encodeData().
void QRcode_free | ( | QRcode * | qrcode | ) |
QRcode_List* QRcode_encodeInputStructured | ( | QRinput_Struct * | s | ) |
Create structured symbols from the input data.
s | input data, structured. |
QRcode_List* QRcode_encodeStringStructured | ( | const char * | string, |
int | version, | ||
QRecLevel | level, | ||
QRencodeMode | hint, | ||
int | casesensitive | ||
) |
Create structured symbols from the string.
The library automatically parses the input string and encodes in a QR Code symbol.
string | input string. It must be NUL terminated. |
version | version of the symbol. |
level | error correction level. |
hint | tell the library how Japanese Kanji characters should be encoded. If QR_MODE_KANJI is given, the library assumes that the given string contains Shift-JIS characters and encodes them in Kanji-mode. If QR_MODE_8 is given, all of non-alphanumerical characters will be encoded as is. If you want to embed UTF-8 string, choose this. Other mode will cause EINVAL error. |
casesensitive | case-sensitive(1) or not(0). |
EINVAL | invalid input object. |
ENOMEM | unable to allocate memory for input objects. |
QRcode_List* QRcode_encodeString8bitStructured | ( | const char * | string, |
int | version, | ||
QRecLevel | level | ||
) |
Same to QRcode_encodeStringStructured(), but encode whole data in 8-bit mode.
QRcode_List* QRcode_encodeDataStructured | ( | int | size, |
const unsigned char * | data, | ||
int | version, | ||
QRecLevel | level | ||
) |
Create structured symbols from byte stream (may include '\0').
Wholde data are encoded in 8-bit mode.
size | size of the input data. |
data | input dat. |
version | version of the symbol. |
level | error correction level. |
EINVAL | invalid input object. |
ENOMEM | unable to allocate memory for input objects. |
int QRcode_List_size | ( | QRcode_List * | qrlist | ) |
Return the number of symbols included in a QRcode_List.
qrlist | a head entry of a QRcode_List. |
void QRcode_List_free | ( | QRcode_List * | qrlist | ) |
Free the QRcode_List.
qrlist | a head entry of a QRcode_List. |
void QRcode_APIVersion | ( | int * | major_version, |
int * | minor_version, | ||
int * | micro_version | ||
) |
Return a string that identifies the library version.
major_version | major version number |
minor_version | minor version number |
micro_version | micro version number |
char* QRcode_APIVersionString | ( | void | ) |
Return a string that identifies the library version.
void QRcode_clearCache | ( | void | ) |