libdmtx 0.7.8.7
libdmtx is a software library that enables programs to read and write Data Matrix barcodes of the modern ECC200 variety.
Loading...
Searching...
No Matches
dmtx.h
Go to the documentation of this file.
1
18#ifndef __DMTX_H__
19#define __DMTX_H__
20
21#ifdef __cplusplus
22extern "C"
23{
24#endif
25
26/* Time headers required for DmtxTime struct below */
27#include <time.h>
28#ifdef HAVE_SYS_TIME_H
29# include <sys/time.h>
30#endif
31
32#ifndef M_PI
33# define M_PI 3.14159265358979323846
34#endif
35
36#ifndef M_PI_2
37# define M_PI_2 1.57079632679489661923
38#endif
39
40#define DmtxUndefined (-1)
41
42#define DmtxPassFail unsigned int
43#define DmtxPass 1
44#define DmtxFail 0
45
46#define DmtxBoolean unsigned int
47#define DmtxTrue 1
48#define DmtxFalse 0
49
50#define DmtxFormatMatrix 0
51#define DmtxFormatMosaic 1
52
53#define DmtxSymbolSquareCount 24
54#define DmtxSymbolRectCount 6
56#define DmtxModuleOff 0x00
57#define DmtxModuleOnRed 0x01
58#define DmtxModuleOnGreen 0x02
59#define DmtxModuleOnBlue 0x04
60#define DmtxModuleOnRGB 0x07
61#define DmtxModuleOn DmtxModuleOnRGB
62#define DmtxModuleUnsure 0x08
63#define DmtxModuleAssigned 0x10
64#define DmtxModuleVisited 0x20
65#define DmtxModuleData 0x40
66
67#define dmtxLogTrace(...) dmtxLog(DmtxLogTrace, __FILE__, __LINE__, __VA_ARGS__)
68#define dmtxLogDebug(...) dmtxLog(DmtxLogDebug, __FILE__, __LINE__, __VA_ARGS__)
69#define dmtxLogInfo(...) dmtxLog(DmtxLogInfo, __FILE__, __LINE__, __VA_ARGS__)
70#define dmtxLogWarn(...) dmtxLog(DmtxLogWarn, __FILE__, __LINE__, __VA_ARGS__)
71#define dmtxLogError(...) dmtxLog(DmtxLogError, __FILE__, __LINE__, __VA_ARGS__)
72#define dmtxLogFatal(...) dmtxLog(DmtxLogFatal, __FILE__, __LINE__, __VA_ARGS__)
73
74#define IN /* 表示输入参数,指针指向的值不会修改 */
75#define OUT /* 表示输出参数,指针指向的值会修改,且不会读 */
76#define INOUT /* 表示输入输出参数,指针指向的值会修改,且会读取 */
77
78 typedef enum DmtxStatus_enum
79 {
80 DmtxStatusEncoding, /* Encoding is currently underway */
81 DmtxStatusComplete, /* Encoding is done and everything went well */
82 DmtxStatusInvalid, /* Something bad happened that sometimes happens */
83 DmtxStatusFatal /* Something happened that should never happen */
85
97
138
151
169
171 {
172 DmtxCorner00 = 0x01 << 0,
173 DmtxCorner10 = 0x01 << 1,
174 DmtxCorner11 = 0x01 << 2,
175 DmtxCorner01 = 0x01 << 3
177
213
241
242 typedef enum DmtxFlip_enum
243 {
245 DmtxFlipX = 0x01 << 0,
246 DmtxFlipY = 0x01 << 1
248
258
262 typedef double DmtxMatrix3[3][3];
263
267 typedef struct DmtxPixelLoc_struct
268 {
269 int x;
270 int y;
272
276 typedef struct DmtxVector2_struct
277 {
278 double x;
279 double y;
281
292
293 typedef unsigned char DmtxByte;
294
307
309 {
310 int currentScheme; /* Current encodation scheme */
311 int inputNext; /* Index of next unprocessed input word in queue */
312 int outputChainValueCount; /* Count of output values pushed within current scheme chain */
313 int outputChainWordCount; /* Count of output words pushed within current scheme chain */
314 char *reason; /* Reason for status */
315 int sizeIdx; /* Symbol size of completed stream */
316 int fnc1; /* Character to represent FNC1, or DmtxUndefined */
321
337
349
364
416
420 typedef struct DmtxMessage_struct
421 {
422 size_t arraySize;
423 size_t codeSize;
424 size_t outputSize;
427 int fnc1;
428 unsigned char *array;
429 unsigned char *code;
430 unsigned char *output;
432
437 typedef struct DmtxScanGrid_struct
438 {
439 /* set once */
440 int minExtent; /* Smallest cross size used in scan */
441 int maxExtent; /* Size of bounding grid region (2^N - 1) */
442 int xOffset; /* Offset to obtain image X coordinate */
443 int yOffset; /* Offset to obtain image Y coordinate */
444 int xMin;
445 int xMax;
446 int yMin;
447 int yMax;
449 /* reset for each level */
450 int total; /* Total number of crosses at this size */
451 int extent; /* Length/width of cross in pixels */
452 int jumpSize; /* Distance in pixels between cross centers */
453 int pixelTotal; /* Total pixel count within an individual cross path */
454 int startPos; /* X and Y coordinate of first cross center in pattern */
455
456 /* reset for each cross */
457 int pixelCount; /* Progress (pixel count) within current cross pattern */
458 int xCenter; /* X center of current cross pattern */
459 int yCenter; /* Y center of current cross pattern */
461
466 typedef struct DmtxTime_struct
467 {
468 time_t sec;
469 unsigned long usec;
471
476 typedef struct DmtxDecode_struct
477 {
478 /* Options */
482 int fnc1;
486
487 /* Image modifiers */
488 int xMin;
489 int xMax;
490 int yMin;
491 int yMax;
492 int scale;
493
494 /* Internals */
495 /* int cacheComplete; */
496 unsigned char *cache;
500
522
527 typedef struct DmtxChannel_struct
528 {
529 int encScheme; /* current encodation scheme */
530 int invalid; /* channel status (invalid if non-zero) */
531 unsigned char *inputPtr; /* pointer to current input character */
532 unsigned char *inputStop; /* pointer to position after final input character */
533 int encodedLength; /* encoded length (units of 2/3 bits) */
534 int currentLength; /* current length (units of 2/3 bits) */
535 int firstCodeWord; /* */
536 unsigned char encodedWords[1558];
538
539 /* Wrap in a struct for fast copies */
548
553 typedef struct DmtxTriplet_struct
554 {
555 unsigned char value[3];
557
563 {
564 unsigned char value[4];
566
567 /* dmtxtime.c */
568 extern DmtxTime dmtxTimeNow(void);
569 extern DmtxTime dmtxTimeAdd(DmtxTime t, long msec);
570 extern int dmtxTimeExceeded(DmtxTime timeout);
571
572 /* dmtxencode.c */
573 extern DmtxEncode *dmtxEncodeCreate(void);
575 extern DmtxPassFail dmtxEncodeSetProp(DmtxEncode *enc, int prop, int value);
576 extern int dmtxEncodeGetProp(DmtxEncode *enc, int prop);
577 extern DmtxPassFail dmtxEncodeDataMatrix(DmtxEncode *enc, int inputSize, unsigned char *inputString);
578 extern DmtxPassFail dmtxEncodeDataMosaic(DmtxEncode *enc, int inputSize, unsigned char *inputString);
579
580 /* dmtxdecode.c */
581 extern DmtxDecode *dmtxDecodeCreate(DmtxImage *img, int scale);
583 extern DmtxPassFail dmtxDecodeSetProp(DmtxDecode *dec, int prop, int value);
584 extern int dmtxDecodeGetProp(DmtxDecode *dec, int prop);
585 extern /*@exposed@*/ unsigned char *dmtxDecodeGetCache(DmtxDecode *dec, int x, int y);
586 extern DmtxPassFail dmtxDecodeGetPixelValue(DmtxDecode *dec, int x, int y, int channel, OUT int *value);
587 extern DmtxMessage *dmtxDecodeMatrixRegion(DmtxDecode *dec, DmtxRegion *reg, int fix);
588 extern DmtxMessage *dmtxDecodePopulatedArray(int sizeIdx, INOUT DmtxMessage *msg, int fix);
589 extern DmtxMessage *dmtxDecodeMosaicRegion(DmtxDecode *dec, DmtxRegion *reg, int fix);
590 extern unsigned char *dmtxDecodeCreateDiagnostic(DmtxDecode *dec, OUT int *totalBytes, OUT int *headerBytes,
591 int style);
592
593 /* dmtxregion.c */
596 extern DmtxRegion *dmtxRegionFindNext(DmtxDecode *dec, DmtxTime *timeout);
597 extern DmtxRegion *dmtxRegionScanPixel(DmtxDecode *dec, int x, int y);
599 DmtxVector2 p11, DmtxVector2 p01);
601
602 /* dmtxmessage.c */
603 extern DmtxMessage *dmtxMessageCreate(int sizeIdx, int symbolFormat);
605
606 /* dmtximage.c */
607 extern DmtxImage *dmtxImageCreate(unsigned char *pxl, int width, int height, int pack);
609 extern DmtxPassFail dmtxImageSetChannel(DmtxImage *img, int channelStart, int bitsPerChannel);
610 extern DmtxPassFail dmtxImageSetProp(DmtxImage *img, int prop, int value);
611 extern int dmtxImageGetProp(DmtxImage *img, int prop);
612 extern int dmtxImageGetByteOffset(DmtxImage *img, int x, int y);
613 extern DmtxPassFail dmtxImageGetPixelValue(DmtxImage *img, int x, int y, int channel, OUT int *value);
614 extern DmtxPassFail dmtxImageSetPixelValue(DmtxImage *img, int x, int y, int channel, int value);
615 extern DmtxBoolean dmtxImageContainsInt(DmtxImage *img, int margin, int x, int y);
616 extern DmtxBoolean dmtxImageContainsFloat(DmtxImage *img, double x, double y);
617
618 /* dmtxvector2.c */
620 extern DmtxVector2 *dmtxVector2Add(OUT DmtxVector2 *vOut, const DmtxVector2 *v1, const DmtxVector2 *v2);
622 extern DmtxVector2 *dmtxVector2Sub(OUT DmtxVector2 *vOut, const DmtxVector2 *v1, const DmtxVector2 *v2);
624 extern DmtxVector2 *dmtxVector2Scale(OUT DmtxVector2 *vOut, const DmtxVector2 *v, double s);
625 extern double dmtxVector2Cross(const DmtxVector2 *v1, const DmtxVector2 *v2);
626 extern double dmtxVector2Norm(DmtxVector2 *v);
627 extern double dmtxVector2Dot(const DmtxVector2 *v1, const DmtxVector2 *v2);
628 extern double dmtxVector2Mag(const DmtxVector2 *v);
629 extern double dmtxDistanceFromRay2(const DmtxRay2 *r, const DmtxVector2 *q);
630 extern double dmtxDistanceAlongRay2(const DmtxRay2 *r, const DmtxVector2 *q);
631 extern DmtxPassFail dmtxRay2Intersect(OUT DmtxVector2 *point, const DmtxRay2 *p0, const DmtxRay2 *p1);
632 extern DmtxPassFail dmtxPointAlongRay2(OUT DmtxVector2 *point, const DmtxRay2 *r, double t);
633
634 /* dmtxmatrix3.c */
635 extern void dmtxMatrix3Copy(OUT DmtxMatrix3 m0, DmtxMatrix3 m1);
636 extern void dmtxMatrix3Identity(OUT DmtxMatrix3 m);
637 extern void dmtxMatrix3Translate(OUT DmtxMatrix3 m, double tx, double ty);
638 extern void dmtxMatrix3Rotate(OUT DmtxMatrix3 m, double angle);
639 extern void dmtxMatrix3Scale(OUT DmtxMatrix3 m, double sx, double sy);
640 extern void dmtxMatrix3Shear(OUT DmtxMatrix3 m, double shx, double shy);
641 extern void dmtxMatrix3LineSkewTop(OUT DmtxMatrix3 m, double b0, double b1, double sz);
642 extern void dmtxMatrix3LineSkewTopInv(OUT DmtxMatrix3 m, double b0, double b1, double sz);
643 extern void dmtxMatrix3LineSkewSide(OUT DmtxMatrix3 m, double b0, double b1, double sz);
644 extern void dmtxMatrix3LineSkewSideInv(OUT DmtxMatrix3 m, double b0, double b1, double sz);
649 extern void dmtxMatrix3Print(DmtxMatrix3 m);
650
651 /* dmtxsymbol.c */
652 extern int dmtxSymbolModuleStatus(DmtxMessage *message, int sizeIdx, int symbolRow, int symbolCol);
653 extern int dmtxGetSymbolAttribute(int attribute, int sizeIdx);
654 extern int dmtxGetBlockDataSize(int sizeIdx, int blockIdx);
655 extern int getSizeIdxFromSymbolDimension(int rows, int cols);
656
657 /* dmtxbytelist.c */
658 extern DmtxByteList dmtxByteListBuild(DmtxByte *storage, int capacity);
659 extern void dmtxByteListInit(DmtxByteList *list, int length, DmtxByte value, DmtxPassFail *passFail);
660 extern void dmtxByteListClear(DmtxByteList *list);
662 extern void dmtxByteListCopy(DmtxByteList *dst, const DmtxByteList *src, DmtxPassFail *passFail);
663 extern void dmtxByteListPush(DmtxByteList *list, DmtxByte value, DmtxPassFail *passFail);
664 extern DmtxByte dmtxByteListPop(DmtxByteList *list, DmtxPassFail *passFail);
665 extern void dmtxByteListPrint(DmtxByteList *list, char *prefix);
666
667 /* dmtxlog.c */
668 extern void dmtxLog(int level, const char *file, int line, const char *fmt, ...);
669 extern void dmtxLogSetLevel(int level);
670 extern void dmtxLogSetQuiet(DmtxBoolean enable);
671
672 /* dmtxcallback.c */
674 typedef void (*DmtxCallbackBuildMatrix)(DmtxMatrix3 matrix);
675 typedef void (*DmtxCallbackPlotPoint)(DmtxPixelLoc loc, float colorHue, int paneNbr, int dispType);
676 typedef void (*DmtxCallbackXfrmPlotPoint)(DmtxVector2 point, DmtxMatrix3 xfrm, int paneNbr, int dispType);
677 typedef void (*DmtxCallbackPlotModule)(DmtxDecode *info, DmtxRegion *region, int row, int col, float colorHue);
678 typedef void (*DmtxCallbackFinal)(DmtxDecode *decode, DmtxRegion *region);
679
685 extern void dmtxCallbackFinal(DmtxCallbackFinal cb);
686
687 extern char *dmtxVersion(void);
688
689#ifdef __cplusplus
690}
691#endif
692
693#endif
DmtxPassFail dmtxMatrix3VMultiply(OUT DmtxVector2 *vOut, DmtxVector2 *vIn, DmtxMatrix3 m)
将向量与矩阵相乘
void dmtxCallbackBuildMatrix(DmtxCallbackBuildMatrix cb)
Definition dmtxcallback.c:9
void dmtxCallbackPlotModule(DmtxCallbackPlotModule cb)
#define DmtxPassFail
Definition dmtx.h:42
int getSizeIdxFromSymbolDimension(int rows, int cols)
Retrieve symbol index from rows and columns.
Definition dmtxsymbol.c:26
struct DmtxTime_struct DmtxTime
void dmtxLogSetQuiet(DmtxBoolean enable)
Definition dmtxlog.c:116
DmtxLogLevel_enum
Definition dmtx.h:250
@ DmtxLogError
Definition dmtx.h:255
@ DmtxLogFatal
Definition dmtx.h:256
@ DmtxLogDebug
Definition dmtx.h:252
@ DmtxLogInfo
Definition dmtx.h:253
@ DmtxLogTrace
Definition dmtx.h:251
@ DmtxLogWarn
Definition dmtx.h:254
DmtxBoolean dmtxByteListHasCapacity(DmtxByteList *list)
struct DmtxPointFlow_struct DmtxPointFlow
图像像素点及其梯度流动方向
DmtxRegion * dmtxRegionScanPixel(DmtxDecode *dec, int x, int y)
将坐标点(x,y)作为二维码L型框的边缘点去匹配二维码包围框
Definition dmtxregion.c:100
double dmtxVector2Cross(const DmtxVector2 *v1, const DmtxVector2 *v2)
二维向量叉积
Definition dmtxvector2.c:89
unsigned char * dmtxDecodeCreateDiagnostic(DmtxDecode *dec, OUT int *totalBytes, OUT int *headerBytes, int style)
void(* DmtxCallbackBuildMatrixRegion)(DmtxRegion *region)
Definition dmtx.h:673
DmtxPassFail dmtxRegionUpdateXfrms(DmtxDecode *dec, DmtxRegion *reg)
Definition dmtxregion.c:528
DmtxProperty_enum
Definition dmtx.h:179
@ DmtxPropEdgeThresh
Definition dmtx.h:193
@ DmtxPropXmax
ROI X坐标最大值(如果未设置则为图像宽度-1)
Definition dmtx.h:208
@ DmtxPropSquareDevn
Definition dmtx.h:191
@ DmtxPropEdgeMin
Definition dmtx.h:188
@ DmtxPropBytesPerPixel
每像素所需要的byte数
Definition dmtx.h:200
@ DmtxPropXmin
ROI X坐标最小值(如果未设置则为0)
Definition dmtx.h:207
@ DmtxPropEdgeMax
Definition dmtx.h:189
@ DmtxPropRowSizeBytes
每一行(包括填充)在内存中的总字节数
Definition dmtx.h:202
@ DmtxPropImageFlip
图像是否需要翻转,通常用于处理上下颠倒的图像 DmtxFlip
Definition dmtx.h:203
@ DmtxPropScheme
Definition dmtx.h:181
@ DmtxPropYmin
ROI Y坐标最小值(如果未设置则为0)
Definition dmtx.h:209
@ DmtxPropPixelPacking
图像格式类型,像素打包方式 DmtxPackOrder
Definition dmtx.h:198
@ DmtxPropWidth
图像宽度
Definition dmtx.h:196
@ DmtxPropRowPadBytes
每行像素在内存中的填充或对齐字节数
Definition dmtx.h:201
@ DmtxPropMarginSize
Definition dmtx.h:183
@ DmtxPropSymbolSize
Definition dmtx.h:192
@ DmtxPropChannelCount
图像通道数
Definition dmtx.h:204
@ DmtxPropBitsPerPixel
每像素所需要的bit数
Definition dmtx.h:199
@ DmtxPropHeight
图像高度
Definition dmtx.h:197
@ DmtxPropModuleSize
Definition dmtx.h:184
@ DmtxPropFnc1
Definition dmtx.h:185
@ DmtxPropScale
图像缩放比例
Definition dmtx.h:211
@ DmtxPropSizeRequest
Definition dmtx.h:182
@ DmtxPropYmax
ROI Y坐标最大值(如果未设置则为图像高度-1)
Definition dmtx.h:210
@ DmtxPropScanGap
Definition dmtx.h:190
void dmtxMatrix3LineSkewSide(OUT DmtxMatrix3 m, double b0, double b1, double sz)
Generate side line skew transformation.
int dmtxGetSymbolAttribute(int attribute, int sizeIdx)
根据规格索引返回二维码规格各个参数
Definition dmtxsymbol.c:45
DmtxTime dmtxTimeNow(void)
Generic 1 second resolution version.
Definition dmtxtime.c:86
DmtxEncode * dmtxEncodeCreate(void)
Initialize encode struct with default values.
Definition dmtxencode.c:32
DmtxVector2 * dmtxVector2Scale(OUT DmtxVector2 *vOut, const DmtxVector2 *v, double s)
向量数乘
Definition dmtxvector2.c:79
DmtxRegion * dmtxRegionFindNext(DmtxDecode *dec, DmtxTime *timeout)
寻找下一个二维码区域
Definition dmtxregion.c:69
struct DmtxByteList_struct DmtxByteList
enum DmtxDirection_enum DmtxDirection
int dmtxSymbolModuleStatus(DmtxMessage *message, int sizeIdx, int symbolRow, int symbolCol)
receives symbol row and col and returns status DmtxModuleOn / !DmtxModuleOn (DmtxModuleOff) DmtxModul...
struct DmtxRay2_struct DmtxRay2
向量表示的直线(线段)
DmtxPassFail dmtxMessageDestroy(DmtxMessage **msg)
Free memory previously allocated for message.
Definition dmtxmessage.c:87
DmtxPassFail dmtxImageSetProp(DmtxImage *img, int prop, int value)
设置图像属性
Definition dmtximage.c:203
int dmtxTimeExceeded(DmtxTime timeout)
Determine whether the received timeout has been exceeded.
Definition dmtxtime.c:139
double DmtxMatrix3[3][3]
DmtxMatrix3 类型定义,表示一个3x3的双精度浮点数矩阵
Definition dmtx.h:262
void dmtxMatrix3Multiply(OUT DmtxMatrix3 mOut, DmtxMatrix3 m0, DmtxMatrix3 m1)
矩阵相乘
DmtxCornerLoc_enum
Definition dmtx.h:171
@ DmtxCorner10
Definition dmtx.h:173
@ DmtxCorner00
Definition dmtx.h:172
@ DmtxCorner01
Definition dmtx.h:175
@ DmtxCorner11
Definition dmtx.h:174
struct DmtxTriplet_struct DmtxTriplet
DmtxPassFail dmtxRegionDestroy(DmtxRegion **reg)
Destroy region struct.
Definition dmtxregion.c:51
DmtxByteList dmtxByteListBuild(DmtxByte *storage, int capacity)
DmtxVector2 * dmtxVector2AddTo(DmtxVector2 *v1, const DmtxVector2 *v2)
DmtxPassFail dmtxImageSetChannel(DmtxImage *img, int channelStart, int bitsPerChannel)
设置图像的颜色通道信息,包括每个通道的起始位和位数。
Definition dmtximage.c:183
DmtxPackOrder_enum
Definition dmtx.h:215
@ DmtxPack32bppBGRX
Definition dmtx.h:237
@ DmtxPack24bppRGB
Definition dmtx.h:231
@ DmtxPack24bppYCbCr
Definition dmtx.h:233
@ DmtxPack16bppXRGB
Definition dmtx.h:225
@ DmtxPack16bppRGB
Definition dmtx.h:223
@ DmtxPack16bppXBGR
Definition dmtx.h:228
@ DmtxPack32bppCMYK
Definition dmtx.h:239
@ DmtxPackCustom
Definition dmtx.h:217
@ DmtxPack24bppBGR
Definition dmtx.h:232
@ DmtxPack16bppBGRX
Definition dmtx.h:227
@ DmtxPack8bppK
Definition dmtx.h:221
@ DmtxPack32bppRGBX
Definition dmtx.h:235
@ DmtxPack16bppRGBX
Definition dmtx.h:224
@ DmtxPack16bppYCbCr
Definition dmtx.h:229
@ DmtxPack1bppK
Definition dmtx.h:219
@ DmtxPack32bppXRGB
Definition dmtx.h:236
@ DmtxPack32bppXBGR
Definition dmtx.h:238
@ DmtxPack16bppBGR
Definition dmtx.h:226
void dmtxByteListPush(DmtxByteList *list, DmtxByte value, DmtxPassFail *passFail)
int dmtxGetBlockDataSize(int sizeIdx, int blockIdx)
Retrieve data size for a specific symbol size and block number.
Definition dmtxsymbol.c:118
DmtxSymAttribute_enum
Definition dmtx.h:153
@ DmtxSymAttribHorizDataRegions
水平方向区块个数
Definition dmtx.h:158
@ DmtxSymAttribBlockMaxCorrectable
Definition dmtx.h:164
@ DmtxSymAttribBlockErrorWords
Definition dmtx.h:163
@ DmtxSymAttribSymbolErrorWords
Definition dmtx.h:166
@ DmtxSymAttribSymbolRows
二维码码元总行数(包括L形框和点线)
Definition dmtx.h:154
@ DmtxSymAttribVertDataRegions
垂直方向区块个数
Definition dmtx.h:159
@ DmtxSymAttribSymbolDataWords
Definition dmtx.h:165
@ DmtxSymAttribDataRegionCols
单区块二维码数据区码元列数(不包括L形框和点线)
Definition dmtx.h:157
@ DmtxSymAttribSymbolCols
二维码码元总列数(包括L形框和点线)
Definition dmtx.h:155
@ DmtxSymAttribMappingMatrixRows
二维码数据区码元总行数(不包括L形框和点线)
Definition dmtx.h:160
@ DmtxSymAttribDataRegionRows
单区块二维码数据区码元行数(不包括L形框和点线)
Definition dmtx.h:156
@ DmtxSymAttribMappingMatrixCols
二维码数据区码元总列数(不包括L形框和点线)
Definition dmtx.h:161
@ DmtxSymAttribSymbolMaxCorrectable
Definition dmtx.h:167
@ DmtxSymAttribInterleavedBlocks
Definition dmtx.h:162
unsigned char * dmtxDecodeGetCache(DmtxDecode *dec, int x, int y)
Returns xxx.
Definition dmtxdecode.c:211
void dmtxMatrix3LineSkewTop(OUT DmtxMatrix3 m, double b0, double b1, double sz)
生成顶部线倾斜变换矩阵
#define DmtxBoolean
Definition dmtx.h:46
void dmtxCallbackBuildMatrixRegion(DmtxCallbackBuildMatrixRegion cb)
Definition dmtxcallback.c:4
enum DmtxLogLevel_enum DmtxLogLevel
DmtxFlip_enum
Definition dmtx.h:243
@ DmtxFlipY
Definition dmtx.h:246
@ DmtxFlipX
Definition dmtx.h:245
@ DmtxFlipNone
Definition dmtx.h:244
struct DmtxBestLine_struct DmtxBestLine
DmtxTime dmtxTimeAdd(DmtxTime t, long msec)
Add milliseconds to time t.
Definition dmtxtime.c:110
enum DmtxScheme_enum DmtxScheme
DmtxPassFail dmtxImageDestroy(DmtxImage **img)
Free libdmtx image memory.
Definition dmtximage.c:167
DmtxDecode * dmtxDecodeCreate(DmtxImage *img, int scale)
Initialize decode struct with default values.
Definition dmtxdecode.c:32
DmtxVector2 * dmtxVector2ScaleBy(DmtxVector2 *v, double s)
enum DmtxStatus_enum DmtxStatus
void(* DmtxCallbackBuildMatrix)(DmtxMatrix3 matrix)
Definition dmtx.h:674
void dmtxCallbackXfrmPlotPoint(DmtxCallbackXfrmPlotPoint cb)
struct DmtxImage_struct DmtxImage
DmtxPassFail dmtxEncodeSetProp(DmtxEncode *enc, int prop, int value)
Set encoding behavior property.
Definition dmtxencode.c:99
DmtxPassFail dmtxPointAlongRay2(OUT DmtxVector2 *point, const DmtxRay2 *r, double t)
计算直线上特定位置的点
void dmtxMatrix3Copy(OUT DmtxMatrix3 m0, DmtxMatrix3 m1)
复制3x3矩阵
Definition dmtxmatrix3.c:34
void(* DmtxCallbackXfrmPlotPoint)(DmtxVector2 point, DmtxMatrix3 xfrm, int paneNbr, int dispType)
Definition dmtx.h:676
double dmtxVector2Mag(const DmtxVector2 *v)
二维向量的模
#define INOUT
Definition dmtx.h:76
void dmtxMatrix3Rotate(OUT DmtxMatrix3 m, double angle)
生成旋转变换矩阵
DmtxDirection_enum
Definition dmtx.h:140
@ DmtxDirDown
Definition dmtx.h:144
@ DmtxDirRight
Definition dmtx.h:145
@ DmtxDirLeftDown
Definition dmtx.h:149
@ DmtxDirUp
Definition dmtx.h:142
@ DmtxDirHorizontal
Definition dmtx.h:146
@ DmtxDirLeft
Definition dmtx.h:143
@ DmtxDirVertical
Definition dmtx.h:147
@ DmtxDirRightUp
Definition dmtx.h:148
@ DmtxDirNone
Definition dmtx.h:141
DmtxScheme_enum
Definition dmtx.h:87
@ DmtxSchemeText
Definition dmtx.h:92
@ DmtxSchemeC40
Definition dmtx.h:91
@ DmtxSchemeBase256
Definition dmtx.h:95
@ DmtxSchemeEdifact
Definition dmtx.h:94
@ DmtxSchemeAutoBest
Definition dmtx.h:89
@ DmtxSchemeAutoFast
Definition dmtx.h:88
@ DmtxSchemeX12
Definition dmtx.h:93
@ DmtxSchemeAscii
Definition dmtx.h:90
struct DmtxMessage_struct DmtxMessage
DataMatrix编码内容
DmtxMessage * dmtxDecodeMosaicRegion(DmtxDecode *dec, DmtxRegion *reg, int fix)
Convert fitted Data Mosaic region into a decoded message.
Definition dmtxdecode.c:436
char * dmtxVersion(void)
Use #include to merge the individual .c source files into a single combined file during preprocessing...
Definition dmtx.c:65
double dmtxDistanceFromRay2(const DmtxRay2 *r, const DmtxVector2 *q)
计算点到直线的垂直距离
enum DmtxSymbolSize_enum DmtxSymbolSize
DmtxBoolean dmtxImageContainsInt(DmtxImage *img, int margin, int x, int y)
判断坐标 (x, y) 是否在图像范围内
Definition dmtximage.c:386
DmtxPassFail dmtxEncodeDataMosaic(DmtxEncode *enc, int inputSize, unsigned char *inputString)
Convert message into Data Mosaic image.
Definition dmtxencode.c:259
void dmtxCallbackPlotPoint(DmtxCallbackPlotPoint cb)
DmtxByte dmtxByteListPop(DmtxByteList *list, DmtxPassFail *passFail)
enum DmtxPackOrder_enum DmtxPackOrder
void dmtxByteListCopy(DmtxByteList *dst, const DmtxByteList *src, DmtxPassFail *passFail)
struct DmtxChannelGroup_struct DmtxChannelGroup
struct DmtxVector2_struct DmtxVector2
二维向量
DmtxPassFail dmtxMatrix3VMultiplyBy(INOUT DmtxVector2 *v, DmtxMatrix3 m)
将向量与矩阵相乘
DmtxPassFail dmtxRay2Intersect(OUT DmtxVector2 *point, const DmtxRay2 *p0, const DmtxRay2 *p1)
判断两条直线是否相交,并计算交点。
void dmtxLogSetLevel(int level)
Definition dmtxlog.c:111
void dmtxMatrix3Translate(OUT DmtxMatrix3 m, double tx, double ty)
生成平移变换矩阵
Definition dmtxmatrix3.c:82
struct DmtxDecode_struct DmtxDecode
enum DmtxProperty_enum DmtxProperty
enum DmtxSymAttribute_enum DmtxSymAttribute
DmtxRegion * dmtxRegionCreate(DmtxRegion *reg)
Create copy of existing region struct.
Definition dmtxregion.c:32
void dmtxByteListClear(DmtxByteList *list)
DmtxMessage * dmtxMessageCreate(int sizeIdx, int symbolFormat)
Allocate memory for message.
Definition dmtxmessage.c:30
struct DmtxPixelLoc_struct DmtxPixelLoc
像素坐标
DmtxPassFail dmtxDecodeGetPixelValue(DmtxDecode *dec, int x, int y, int channel, OUT int *value)
获取图像像素
Definition dmtxdecode.c:233
double dmtxVector2Norm(DmtxVector2 *v)
DmtxImage * dmtxImageCreate(unsigned char *pxl, int width, int height, int pack)
libdmtx stores image data as a large one-dimensional array of packed pixels, reading from the array w...
Definition dmtximage.c:78
DmtxPassFail dmtxDecodeDestroy(DmtxDecode **dec)
Deinitialize decode struct.
Definition dmtxdecode.c:77
DmtxVector2 * dmtxVector2Add(OUT DmtxVector2 *vOut, const DmtxVector2 *v1, const DmtxVector2 *v2)
向量相加
Definition dmtxvector2.c:37
DmtxMessage * dmtxDecodePopulatedArray(int sizeIdx, INOUT DmtxMessage *msg, int fix)
从DataMatrix数据区二进制矩阵解码,并将结果写入msg->output
Definition dmtxdecode.c:390
void dmtxMatrix3Identity(OUT DmtxMatrix3 m)
生成单位变换矩阵
Definition dmtxmatrix3.c:56
struct DmtxScanGrid_struct DmtxScanGrid
int dmtxImageGetByteOffset(DmtxImage *img, int x, int y)
根据给定的坐标 (x, y) 计算并返回图像中对应像素的字节偏移量
Definition dmtximage.c:263
int dmtxImageGetProp(DmtxImage *img, int prop)
获取图像属性
Definition dmtximage.c:228
enum DmtxCornerLoc_enum DmtxCornerLoc
struct DmtxRegion_struct DmtxRegion
二维码区域(包围框)
void(* DmtxCallbackFinal)(DmtxDecode *decode, DmtxRegion *region)
Definition dmtx.h:678
unsigned char DmtxByte
Definition dmtx.h:293
void dmtxMatrix3LineSkewSideInv(OUT DmtxMatrix3 m, double b0, double b1, double sz)
Generate side line skew transformation (inverse)
DmtxPassFail dmtxImageGetPixelValue(DmtxImage *img, int x, int y, int channel, OUT int *value)
DmtxPassFail dmtxDecodeSetProp(DmtxDecode *dec, int prop, int value)
Set decoding behavior property.
Definition dmtxdecode.c:101
void dmtxMatrix3Shear(OUT DmtxMatrix3 m, double shx, double shy)
生成剪切变换矩阵
DmtxPassFail dmtxRegionUpdateCorners(DmtxDecode *dec, DmtxRegion *reg, DmtxVector2 p00, DmtxVector2 p10, DmtxVector2 p11, DmtxVector2 p01)
Definition dmtxregion.c:421
void(* DmtxCallbackPlotModule)(DmtxDecode *info, DmtxRegion *region, int row, int col, float colorHue)
Definition dmtx.h:677
DmtxVector2 * dmtxVector2SubFrom(DmtxVector2 *v1, const DmtxVector2 *v2)
int dmtxDecodeGetProp(DmtxDecode *dec, int prop)
Get decoding behavior property.
Definition dmtxdecode.c:166
struct DmtxChannel_struct DmtxChannel
void(* DmtxCallbackPlotPoint)(DmtxPixelLoc loc, float colorHue, int paneNbr, int dispType)
Definition dmtx.h:675
DmtxVector2 * dmtxVector2Sub(OUT DmtxVector2 *vOut, const DmtxVector2 *v1, const DmtxVector2 *v2)
向量相减
Definition dmtxvector2.c:58
void dmtxMatrix3Print(DmtxMatrix3 m)
Print matrix contents to STDOUT.
DmtxPassFail dmtxEncodeDestroy(DmtxEncode **enc)
Deinitialize encode struct.
Definition dmtxencode.c:70
struct DmtxEncodeStream_struct DmtxEncodeStream
void dmtxCallbackFinal(DmtxCallbackFinal cb)
void dmtxMatrix3MultiplyBy(INOUT DmtxMatrix3 m0, DmtxMatrix3 m1)
矩阵相乘
double dmtxDistanceAlongRay2(const DmtxRay2 *r, const DmtxVector2 *q)
double dmtxVector2Dot(const DmtxVector2 *v1, const DmtxVector2 *v2)
二维向量点积
DmtxPassFail dmtxImageSetPixelValue(DmtxImage *img, int x, int y, int channel, int value)
设置指定坐标、通道的像素值
Definition dmtximage.c:337
DmtxBoolean dmtxImageContainsFloat(DmtxImage *img, double x, double y)
判断坐标 (x, y) 是否在图像范围内
Definition dmtximage.c:404
struct DmtxEncode_struct DmtxEncode
DmtxMessage * dmtxDecodeMatrixRegion(DmtxDecode *dec, DmtxRegion *reg, int fix)
解码拟合的二维码区域
Definition dmtxdecode.c:336
struct DmtxQuadruplet_struct DmtxQuadruplet
void dmtxMatrix3Scale(OUT DmtxMatrix3 m, double sx, double sy)
生成缩放变换矩阵
void dmtxByteListPrint(DmtxByteList *list, char *prefix)
void dmtxByteListInit(DmtxByteList *list, int length, DmtxByte value, DmtxPassFail *passFail)
#define OUT
Definition dmtx.h:75
int dmtxEncodeGetProp(DmtxEncode *enc, int prop)
Get encoding behavior property.
Definition dmtxencode.c:146
DmtxStatus_enum
Definition dmtx.h:79
@ DmtxStatusComplete
Definition dmtx.h:81
@ DmtxStatusEncoding
Definition dmtx.h:80
@ DmtxStatusInvalid
Definition dmtx.h:82
@ DmtxStatusFatal
Definition dmtx.h:83
void dmtxLog(int level, const char *file, int line, const char *fmt,...)
Definition dmtxlog.c:154
DmtxPassFail dmtxEncodeDataMatrix(DmtxEncode *enc, int inputSize, unsigned char *inputString)
Convert message into Data Matrix image.
Definition dmtxencode.c:171
enum DmtxFlip_enum DmtxFlip
void dmtxMatrix3LineSkewTopInv(OUT DmtxMatrix3 m, double b0, double b1, double sz)
Generate top line skew transformation (inverse)
DmtxSymbolSize_enum
Definition dmtx.h:99
@ DmtxSymbol64x64
Definition dmtx.h:120
@ DmtxSymbol120x120
Definition dmtx.h:126
@ DmtxSymbol10x10
Definition dmtx.h:105
@ DmtxSymbol8x32
Definition dmtx.h:132
@ DmtxSymbol144x144
Definition dmtx.h:128
@ DmtxSymbol80x80
Definition dmtx.h:122
@ DmtxSymbolRectAuto
Definition dmtx.h:100
@ DmtxSymbol44x44
Definition dmtx.h:117
@ DmtxSymbol8x18
Definition dmtx.h:131
@ DmtxSymbol52x52
Definition dmtx.h:119
@ DmtxSymbol40x40
Definition dmtx.h:116
@ DmtxSymbol20x20
Definition dmtx.h:110
@ DmtxSymbolShapeAuto
Definition dmtx.h:102
@ DmtxSymbolSquareAuto
Definition dmtx.h:101
@ DmtxSymbol12x36
Definition dmtx.h:134
@ DmtxSymbol14x14
Definition dmtx.h:107
@ DmtxSymbol16x36
Definition dmtx.h:135
@ DmtxSymbol16x16
Definition dmtx.h:108
@ DmtxSymbol16x48
Definition dmtx.h:136
@ DmtxSymbol24x24
Definition dmtx.h:112
@ DmtxSymbol132x132
Definition dmtx.h:127
@ DmtxSymbol72x72
Definition dmtx.h:121
@ DmtxSymbol104x104
Definition dmtx.h:125
@ DmtxSymbol96x96
Definition dmtx.h:124
@ DmtxSymbol48x48
Definition dmtx.h:118
@ DmtxSymbol12x26
Definition dmtx.h:133
@ DmtxSymbol36x36
Definition dmtx.h:115
@ DmtxSymbol26x26
Definition dmtx.h:113
@ DmtxSymbol22x22
Definition dmtx.h:111
@ DmtxSymbol32x32
Definition dmtx.h:114
@ DmtxSymbol88x88
Definition dmtx.h:123
@ DmtxSymbol12x12
Definition dmtx.h:106
@ DmtxSymbol18x18
Definition dmtx.h:109
int level
Definition dmtxlog.c:50
DmtxPixelLoc locPos
正方向点(线段端点)
Definition dmtx.h:361
DmtxPixelLoc locBeg
起始位置点
Definition dmtx.h:360
int mag
幅值
Definition dmtx.h:354
int stepPos
正方向步进位置
Definition dmtx.h:356
DmtxPixelLoc locNeg
负方向点(线段端点)
Definition dmtx.h:362
int angle
线条的角度,单位:度
Definition dmtx.h:352
int stepNeg
负方向步进位置
Definition dmtx.h:357
DmtxByte * b
Definition dmtx.h:305
DmtxByteList Use signed int for length fields instead of size_t to play nicely with RS arithmetic.
DmtxChannel channel[6]
Definition dmtx.h:546
unsigned char encodedWords[1558]
Definition dmtx.h:536
unsigned char * inputPtr
Definition dmtx.h:531
unsigned char * inputStop
Definition dmtx.h:532
DmtxImage * image
Definition dmtx.h:497
double squareDevn
Definition dmtx.h:483
DmtxScanGrid grid
Definition dmtx.h:498
int sizeIdxExpected
Definition dmtx.h:484
unsigned char * cache
Definition dmtx.h:496
DmtxDecode.
DmtxByteList * input
Definition dmtx.h:318
DmtxByteList * output
Definition dmtx.h:319
DmtxStatus status
Definition dmtx.h:317
int sizeIdxRequest
Definition dmtx.h:509
DmtxRegion region
Definition dmtx.h:518
DmtxMatrix3 rxfrm
Definition dmtx.h:520
DmtxImage * image
Definition dmtx.h:517
DmtxMessage * message
Definition dmtx.h:516
DmtxMatrix3 xfrm
Definition dmtx.h:519
DmtxEncode.
int imageFlip
图像是否需要翻转,通常用于处理上下颠倒的图像 DmtxFlip
Definition dmtx.h:331
int pixelPacking
图像格式类型,像素打包方式 DmtxPackOrder
Definition dmtx.h:326
int height
图像的高度,以像素为单位
Definition dmtx.h:325
int width
图像的宽度,以像素为单位
Definition dmtx.h:324
int channelStart[4]
每个通道在像素数据中的起始位置(位偏移)
Definition dmtx.h:333
unsigned char * pxl
实际的像素数据缓冲区
Definition dmtx.h:335
int bytesPerPixel
每个像素的字节数
Definition dmtx.h:328
int rowPadBytes
每行像素在内存中的填充或对齐字节数
Definition dmtx.h:329
int bitsPerChannel[4]
每个通道的位数,描述每个颜色分量的精度
Definition dmtx.h:334
int channelCount
图像的通道数量,如RGB图像为3,CMYK图像为4
Definition dmtx.h:332
int rowSizeBytes
每一行(包括填充)在内存中的总字节数
Definition dmtx.h:330
int bitsPerPixel
每个像素的位数
Definition dmtx.h:327
DataMatrix编码内容
Definition dmtx.h:421
unsigned char * code
指向码字(数据字和纠错字)的指针
Definition dmtx.h:429
size_t outputSize
Size of buffer used to hold decoded data.
Definition dmtx.h:424
size_t codeSize
编码数据的总大小,包括数据字和纠错字
Definition dmtx.h:423
int outputIdx
Internal index used to store output progress.
Definition dmtx.h:425
unsigned char * array
指向DataMatrix数据区二进制矩阵的指针
Definition dmtx.h:428
int fnc1
表示FNC1或DmtxUndefined的字符
Definition dmtx.h:427
size_t arraySize
二维码数据区码元行数x列数(mappingRows * mappingCols)
Definition dmtx.h:422
unsigned char * output
指向二维码码值的指针
Definition dmtx.h:430
像素坐标
Definition dmtx.h:268
图像像素点及其梯度流动方向
Definition dmtx.h:342
int mag
梯度幅值
Definition dmtx.h:346
int arrive
梯度方向起点
Definition dmtx.h:344
int plane
多通道平面索引
Definition dmtx.h:343
DmtxPixelLoc loc
像素的坐标
Definition dmtx.h:347
int depart
梯度方向终点
Definition dmtx.h:345
unsigned char value[4]
Definition dmtx.h:564
向量表示的直线(线段)
Definition dmtx.h:286
DmtxVector2 p
Definition dmtx.h:289
double tMin
Definition dmtx.h:287
double tMax
Definition dmtx.h:288
DmtxVector2 v
Definition dmtx.h:290
二维码区域(包围框)
Definition dmtx.h:369
int leftAngle
hough angle of left edge
Definition dmtx.h:389
int bottomKnown
known == 1; unknown == 0
Definition dmtx.h:392
int offColor
代表bit0的颜色值
Definition dmtx.h:405
int bottomAngle
hough angle of bottom edge
Definition dmtx.h:393
DmtxPixelLoc finalNeg
Definition dmtx.h:375
int rightKnown
known == 1; unknown == 0
Definition dmtx.h:399
DmtxPixelLoc rightLoc
known (arbitrary) location on right edge
Definition dmtx.h:401
DmtxMatrix3 raw2fit
3x3 变换矩阵,从图像坐标系到二维码坐标系
Definition dmtx.h:413
DmtxBestLine bottomLine
Definition dmtx.h:395
int mappingCols
二维码数据区码元列数
Definition dmtx.h:410
int sizeIdx
二维码类型索引,总共有 DmtxSymbolSquareCount + DmtxSymbolRectCount 种
Definition dmtx.h:406
DmtxPixelLoc finalPos
Definition dmtx.h:374
int mappingRows
二维码数据区码元行数
Definition dmtx.h:409
int leftKnown
known == 1; unknown == 0
Definition dmtx.h:388
DmtxPointFlow flowBegin
搜索起点,十字搜索抛出的点
Definition dmtx.h:378
int symbolRows
二维码码元行数(包括L形框和点线)
Definition dmtx.h:407
int symbolCols
二维码码元列数(包括L形框和点线)
Definition dmtx.h:408
DmtxPixelLoc boundMax
Definition dmtx.h:377
DmtxPixelLoc boundMin
Definition dmtx.h:376
int onColor
代表bit1的颜色值
Definition dmtx.h:404
DmtxPixelLoc bottomLoc
known (arbitrary) location on bottom edge
Definition dmtx.h:394
int topKnown
known == 1; unknown == 0
Definition dmtx.h:396
int rightAngle
hough angle of right edge
Definition dmtx.h:400
DmtxBestLine leftLine
Definition dmtx.h:391
DmtxPixelLoc leftLoc
known (arbitrary) location on left edge
Definition dmtx.h:390
DmtxPixelLoc locT
remove if stepT works above
Definition dmtx.h:385
DmtxPixelLoc topLoc
known (arbitrary) location on top edge
Definition dmtx.h:398
int topAngle
hough angle of top edge
Definition dmtx.h:397
DmtxPixelLoc locR
remove if stepR works above
Definition dmtx.h:384
DmtxMatrix3 fit2raw
3x3 变换矩阵,从二维码坐标系到图像坐标系
Definition dmtx.h:414
int yMax
ROI Y坐标最大值(如果未设置则为图像高度-1)
Definition dmtx.h:447
int xMin
ROI X坐标最小值(如果未设置则为0)
Definition dmtx.h:444
int yMin
ROI Y坐标最小值(如果未设置则为0)
Definition dmtx.h:446
int xMax
ROI X坐标最大值(如果未设置则为图像宽度-1)
Definition dmtx.h:445
time_t sec
Definition dmtx.h:468
unsigned long usec
Definition dmtx.h:469
DmtxTime.
unsigned char value[3]
Definition dmtx.h:555
二维向量
Definition dmtx.h:277