2021SC@SDUSC
目录
一、Decoder C++ wrapper分析
zbar的decoder为低电平条宽流解码器接口,负责识别符号并提取编码数据。
class Handler {
public:
virtual ~Handler() { }
virtual void decode_callback(Decoder &decoder) = 0;
};
Handler类是解码器结果处理程序,应用程序应该对此进行子类型化,并将实例传递给set_handler()以实现结果处理。decode_callback()在解码结果可用时由解码器调用。
void reset ()
{
zbar_decoder_reset(_decoder);
}
清除所有解码器状态。
void new_scan ()
{
zbar_decoder_new_scan(_decoder);
}
标记新扫描过程的开始。
zbar_symbol_type_t decode_width (unsigned width)
{
return(zbar_decode_width(_decoder, width));
}
Decoder& operator<< (unsigned width)
{
zbar_decode_width(_decoder, width);
return(*this);
}
处理输入流中的下一个条/空间宽度。
zbar_color_t get_color () const
{
return(zbar_decoder_get_color(_decoder));
}
检索传递给解码器的@em下一个元素的颜色。
zbar_symbol_type_t get_type () const
{
return(zbar_decoder_get_type(_decoder));
}
检索上次解码的符号类型。
const char *get_symbol_name () const
{
return(zbar_get_symbol_name(zbar_decoder_get_type(_decoder)));
}
检索上次解码的符号类型的字符串名称。
const char *get_addon_name () const
{
return(zbar_get_addon_name(zbar_decoder_get_type(_decoder)));
}
检索上次解码加载项的字符串名称。
const char *get_data_chars() const
{
return(zbar_decoder_get_data(_decoder));
}
以ASCII格式作为字符数组检索最后解码的数据。
const std::string get_data_string() const
{
return(std::string(zbar_decoder_get_data(_decoder),
zbar_decoder_get_data_length(_decoder)));
}
const std::string get_data() const
{
return(get_data_string());
}
以std::字符串形式检索最后解码的数据。
int get_data_length() const
{
return(zbar_decoder_get_data_length(_decoder));
}
检索已解码二进制数据的长度。
int get_direction() const
{
return(zbar_decoder_get_direction(_decoder));
}
检索最后一个解码方向。
void set_handler (Handler &handler)
{
_handler = &handler;
zbar_decoder_set_handler(_decoder, _cb);
zbar_decoder_set_userdata(_decoder, this);
}
设置回调以处理结果数据。
int set_config (zbar_symbol_type_t symbology,
zbar_config_t config,
int value)
{
return(zbar_decoder_set_config(_decoder, symbology, config, value));
}
将指示符号的配置(0表示全部)设置为指定值。
int set_config (std::string cfgstr)
{
return(zbar_decoder_parse_config(_decoder, cfgstr.c_str()));
}
设置从配置字符串解析的配置。