zbar文件夹下的symbol.h,symbol.c定义了解码的条形码符号结果对象。存储解码符号的类型、数据和图像位置。定义了符号引用计数操作。
symbol.h分析
在zbar.h中定义了不透明解码符号对象:zbar_symbol_t,是由结构体zbar_symbol_s实例化而来
symbol.h中对zbar_symbol_s进行了定义:
struct zbar_symbol_s {
zbar_symbol_type_t type;
unsigned int configs;
unsigned int modifiers;
unsigned int data_alloc;
unsigned int datalen;
char *data;
unsigned pts_alloc;
unsigned npts;
point_t *pts;
zbar_orientation_t orient;
refcnt_t refcnt;
zbar_symbol_t *next;
zbar_symbol_set_t *syms;
unsigned long time;
int cache_count;
int quality;
};
zbar_symbol_type_t type;
/*符号类型*/
unsigned int configs; /*符号布尔配置位掩码*/
unsigned int modifiers; /*符号修饰符位掩码*/
unsigned int data_alloc; /*数据的分配大小*/
unsigned int datalen; /*二进制符号数据的长度*/
char *data; /*符号数据*/
unsigned pts_alloc; /*pts的分配规模*/
unsigned npts; /*多边形位置中的点数*/
point_t *pts; /*多边形位置中的点列表*/
zbar_orientation_t orient; /*粗取向*/
refcnt_t refcnt; /*参考计数*/
zbar_symbol_t *next; /*结果(或同级)的链接列表*/
zbar_symbol_set_t *syms; /*合成结果的组成部分*/
unsigned long time; /*相对符号捕获时间*/
int cache_count; /*缓存状态*/
int quality; /*相对符号可靠性度量*/
同时定义了zbar_symbol_set_s
struct zbar_symbol_set_s {
refcnt_t refcnt;
int nsyms;
zbar_symbol_t *head;
zbar_symbol_t *tail;
};
int nsyms; /*过滤符号数*/
zbar_symbol_t *head; /*第一个解码符号结果*/
zbar_symbol_t *tail; /*最后一个未过滤的符号结果*/