int BarcodeConfig::update(mv_engine_config_h engine_cfg)
{
+ switch (qr_enc_mode) {
+ case MV_BARCODE_QR_MODE_NUMERIC:
+ if (message.find_first_not_of("0123456789") != std::string::npos) {
+ LOGE("Barcode message can't be used according to support "
+ "numeric (0..9) mode: %s",
+ message.c_str());
+ return MEDIA_VISION_ERROR_INVALID_PARAMETER;
+ }
+ break;
+ case MV_BARCODE_QR_MODE_ALPHANUMERIC:
+ if (type == MV_BARCODE_QR) {
+ std::transform(message.begin(), message.end(), message.begin(), ::toupper);
+ if (std::string::npos != message.find_first_not_of("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:")) {
+ LOGE("Barcode message can't be converted according to support "
+ "alphanumeric (0..9, A..Z, space, $, %%, *, +, -, ., /, :) "
+ "mode: %s",
+ message.c_str());
+ return MEDIA_VISION_ERROR_INVALID_DATA;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
if (!engine_cfg)
return MEDIA_VISION_ERROR_NONE;
- int showText;
- int error = mv_engine_config_get_int_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_TEXT, &showText);
+ int value;
+ int error = mv_engine_config_get_int_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_TEXT, &value);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ LOGE("mv_engine_config_get_int_attribute failed");
+ return error;
+ }
+ if (value == BARCODE_GEN_TEXT_VISIBLE && type == MV_BARCODE_QR) {
+ LOGE("QR code generation with visible text is not supported");
+ return MEDIA_VISION_ERROR_INVALID_OPERATION;
+ }
+ text_opt = value;
+
+ error = mv_engine_config_get_int_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_DATA_SHAPE, &value);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ LOGE("mv_engine_config_get_int_attribute failed");
+ return error;
+ }
+ data_shape = (mv_barcode_generate_attr_shape_e) value;
+ switch (data_shape) {
+ case MV_BARCODE_GENERATE_ATTR_SHAPE_RECT:
+ case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
+ break;
+
+ default:
+ LOGE("Invalid data shape");
+ return MEDIA_VISION_ERROR_INVALID_PARAMETER;
+ }
+
+ error = mv_engine_config_get_int_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_FINDER_SHAPE, &value);
if (error != MEDIA_VISION_ERROR_NONE) {
LOGE("mv_engine_config_get_int_attribute failed");
return error;
}
+ finder_shape = (mv_barcode_generate_attr_shape_e) value;
+ switch (finder_shape) {
+ case MV_BARCODE_GENERATE_ATTR_SHAPE_RECT:
+ case MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT:
+ case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
+ break;
+
+ default:
+ LOGE("Invalid finder shape");
+ return MEDIA_VISION_ERROR_INVALID_PARAMETER;
+ }
/* get color value */
char *fgcolor;
swapBR((uint16_t *) fgcolor);
swapBR((uint16_t *) bgcolor);
- text_opt = showText;
this->fgcolor = fgcolor;
this->bgcolor = bgcolor;