资源简介
此源码包中含有libqr库的源码,以及zlib库和对应头文件。此libqr生成的库文件见https://download.csdn.net/download/u013919153/10308342
代码片段和文件信息
/*
* QR Code Generator Library
*
* Core routines were originally written by Junn Ohta.
* based on qr.c Version 0.1: 2004/4/3 (Public Domain)
*
* @package libqr
* @author Ryusuke SEKIYAMA
* @copyright 2006-2013 Ryusuke SEKIYAMA
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
#ifdef HAVE_CONFIG_H
#include “config.h“
#endif
#include “qr.h“
#include “qr_util.h“
#include “qr_private.h“
#include “qr_dwtable.h“
#define qrIsData(qr i j) (((qr)->symbol[i][j] & QR_MM_DATA) != 0)
#define qrIsFunc(qr i j) (((qr)->symbol[i][j] & QR_MM_FUNC) != 0)
QR_API const char *(*qrGetCurrentFunctionName)(void) = NULL;
/*
* ライブラリのバージョンを返す
*/
QR_API const char *
qrVersion(void)
{
return LIBQR_VERSION;
}
/*
* QRCodeオブジェクトを生成する
*/
QR_API QRCode *
qrInit(int version int mode int eclevel int masktype int *errcode)
{
QRCode *qr = NULL;
/*
* メモリを確保する
*/
qr = (QRCode *)calloc(1 sizeof(QRCode));
if (qr == NULL) {
*errcode = QR_ERR_MEMORY_EXHAUSTED;
return NULL;
}
qr->dataword = (qr_byte_t *)calloc(1 QR_DWD_MAX);
qr->ecword = (qr_byte_t *)calloc(1 QR_ECW_MAX);
qr->codeword = (qr_byte_t *)calloc(1 QR_CWD_MAX);
if (qr->dataword == NULL || qr->ecword == NULL || qr->codeword == NULL) {
*errcode = QR_ERR_MEMORY_EXHAUSTED;
qrDestroy(qr);
return NULL;
}
/*
* 内部状態を初期化する
*/
qr->_symbol = NULL;
qr->symbol = NULL;
qr->source = NULL;
qr->srcmax = 0;
qr->srclen = 0;
qr->enclen = 0;
qr->delta1 = 0;
qr->delta2 = 0;
qr->errcode = QR_ERR_NONE;
qr->state = QR_STATE_BEGIN;
/*
* 型番を設定する
*/
if (version == -1 || (version >= 1 && version <= QR_VER_MAX)) {
qr->param.version = version;
} else {
*errcode = QR_ERR_INVALID_VERSION;
qrDestroy(qr);
return NULL;
}
/*
* 符号化モードを設定する
*/
if (mode == QR_EM_AUTO || (mode >= QR_EM_NUMERIC && mode < QR_EM_COUNT)) {
qr->param.mode = mode;
} else {
*errcode = QR_ERR_INVALID_MODE;
qrDestroy(qr);
return NULL;
}
/*
* 誤り訂正レベルを設定する
*/
if (eclevel >= QR_ECL_L && eclevel < QR_EM_COUNT) {
qr->param.eclevel = eclevel;
} else {
*errcode = QR_ERR_INVALID_ECL;
qrDestroy(qr);
return NULL;
}
/*
* マスクパターンを設定する
*/
if (masktype == -1 || (masktype >= 0 && masktype < QR_MPT_MAX)) {
qr->param.masktype = masktype;
} else {
*errcode = QR_ERR_INVALID_MPT;
qrDestroy(qr);
return NULL;
}
return qr;
}
/*
* QRStructuredオブジェクトを生成する
*/
QR_API QRStructured *
qrsInit(int version int mode int eclevel int masktype int maxnum int *errcode)
{
QRStructured *st = NULL;
/*
* メモリを確保する
*/
st = (QRStructured *)calloc(1 sizeof(QRStructured));
if (st == NULL) {
*errcode = QR_ERR_MEMORY_EXHAUSTED;
return NULL;
}
/*
* 内部状態を初期化する
*/
st->parity = 0;
st->state = QR_STATE_BEGIN;
/*
* 最大シンボル数を設定する
*/
if (maxnum >= 2 && masktype <= QR_STA_MAX) {
st->max = maxnum;
} else {
*errcode = QR_ERR_INVALID_MAXNUM;
qrsDestroy(st);
return NULL;
}
/*
* 型番を設定する
*/
if (version
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1367 2013-08-10 02:27 crc.h
文件 1045 2013-08-10 02:27 LICENSE
文件 58387 2018-03-23 09:38 qr.c
文件 12677 2018-03-23 10:28 qr.h
文件 18213 2018-03-23 09:38 qrcmd.c
文件 2553 2013-08-10 02:27 qrcmd.h
文件 14068 2018-03-23 09:38 qrcnv.c
文件 3631 2013-08-10 02:27 qrcnv.h
文件 7214 2013-08-10 02:27 qrcnv_bmp.c
文件 13309 2018-03-23 09:38 qrcnv_png.c
文件 5996 2018-03-23 09:38 qrcnv_svg.c
文件 16943 2018-03-23 09:38 qrcnv_tiff.c
文件 37899 2013-08-10 02:27 qr_dwtable.h
文件 27803 2013-08-10 02:27 qr_private.h
文件 2531 2013-08-10 02:27 qr_util.h
文件 63 2013-08-10 02:27 README
文件 215 2013-08-10 02:27 TODO
文件 8141 2018-01-12 09:10 zconf.h
文件 41815 2018-03-23 09:30 zlib.h
文件 483912 2018-01-12 09:10 zlib.lib
评论
共有 条评论