summaryrefslogtreecommitdiff
path: root/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp')
-rw-r--r--mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp150
1 files changed, 140 insertions, 10 deletions
diff --git a/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp b/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
index 444ceb3a..558300bd 100644
--- a/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
+++ b/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
@@ -221,17 +221,71 @@ int mv_barcode_generate_source_open(
unsigned int imageChannels = 0u;
int showText = 0;
- error = mv_engine_config_get_int_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_TEXT", &showText);
- if (error != MEDIA_VISION_ERROR_NONE) {
- LOGW("mv_engine_config_get_int_attribute failed");
- return error;
- }
+ char value;
+ char *fgcolour = NULL;
+ char *bgcolour = NULL;
+
+ if (engine_cfg != NULL) {
+ error = mv_engine_config_get_int_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_TEXT", &showText);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ LOGW("mv_engine_config_get_int_attribute failed");
+ return error;
+ }
+
+ if (showText == BARCODE_GEN_TEXT_VISIBLE && type == MV_BARCODE_QR) {
+ LOGW("QR code generation with visible text is not supported");
+ return MEDIA_VISION_ERROR_INVALID_OPERATION;
+ }
+
+ /* set color value */
+ error = mv_engine_config_get_string_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_COLOR_FRONT", &fgcolour);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ if (fgcolour) {
+ delete [] fgcolour;
+ fgcolour = NULL;
+ }
- if (showText == BARCODE_GEN_TEXT_VISIBLE && type == MV_BARCODE_QR) {
- LOGW("QR code generation with visible text is not supported");
- return MEDIA_VISION_ERROR_INVALID_OPERATION;
+ LOGW("mv_engine_config_get_string_attribute failed");
+ return error;
+ }
+
+ error = mv_engine_config_get_string_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_COLOR_BACK", &bgcolour);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ if (bgcolour) {
+ delete [] bgcolour;
+ bgcolour = NULL;
+ }
+
+ if (fgcolour) {
+ delete [] fgcolour;
+ fgcolour = NULL;
+ }
+
+ LOGW("mv_engine_config_get_string_attribute failed");
+ return error;
+ }
}
+ /*
+ The input colorspace is RGB but the generators' is BGR.
+ Replace the value of R with that of B
+ */
+ value = fgcolour[0];
+ fgcolour[0] = fgcolour[4];
+ fgcolour[4] = value;
+
+ value = fgcolour[1];
+ fgcolour[1] = fgcolour[5];
+ fgcolour[5] = value;
+
+ value = bgcolour[0];
+ bgcolour[0] = bgcolour[4];
+ bgcolour[4] = value;
+
+ value = bgcolour[1];
+ bgcolour[1] = bgcolour[5];
+ bgcolour[5] = value;
+
error = BarcodeGenerator::generateBarcodeToBuffer(
&imageBuffer,
&imageWidth,
@@ -242,7 +296,19 @@ int mv_barcode_generate_source_open(
convertEncodingMode(qr_enc_mode),
convertECC(qr_ecc),
qr_version,
- showText);
+ showText,
+ fgcolour,
+ bgcolour);
+
+ if (fgcolour != NULL) {
+ delete [] fgcolour;
+ fgcolour = NULL;
+ }
+
+ if (bgcolour != NULL) {
+ delete [] bgcolour;
+ bgcolour = NULL;
+ }
if (error != BARCODE_ERROR_NONE) {
LOGE("Barcode generation to the buffer failed");
@@ -316,8 +382,12 @@ int mv_barcode_generate_image_open(
}
int showText = 0;
+ char value;
+ char *fgcolour = NULL;
+ char *bgcolour = NULL;
if (engine_cfg != NULL) {
+ /* set visible text attribute */
error = mv_engine_config_get_int_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_TEXT", &showText);
if (error != MEDIA_VISION_ERROR_NONE) {
LOGW("mv_engine_config_get_int_attribute failed");
@@ -328,8 +398,56 @@ int mv_barcode_generate_image_open(
LOGW("QR code generation with visible text is not supported");
return MEDIA_VISION_ERROR_INVALID_OPERATION;
}
+
+ /* set color value */
+ error = mv_engine_config_get_string_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_COLOR_FRONT", &fgcolour);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ if (fgcolour) {
+ delete [] fgcolour;
+ fgcolour = NULL;
+ }
+
+ LOGW("mv_engine_config_get_string_attribute failed");
+ return error;
+ }
+
+ error = mv_engine_config_get_string_attribute(engine_cfg, "MV_BARCODE_GENERATE_ATTR_COLOR_BACK", &bgcolour);
+ if (error != MEDIA_VISION_ERROR_NONE) {
+ if (bgcolour) {
+ delete [] bgcolour;
+ bgcolour = NULL;
+ }
+
+ if (fgcolour) {
+ delete [] fgcolour;
+ fgcolour = NULL;
+ }
+
+ LOGW("mv_engine_config_get_string_attribute failed");
+ return error;
+ }
}
+ /*
+ The input colorspace is RGB but the generators' is BGR.
+ Replace the value of R with that of B
+ */
+ value = fgcolour[0];
+ fgcolour[0] = fgcolour[4];
+ fgcolour[4] = value;
+
+ value = fgcolour[1];
+ fgcolour[1] = fgcolour[5];
+ fgcolour[5] = value;
+
+ value = bgcolour[0];
+ bgcolour[0] = bgcolour[4];
+ bgcolour[4] = value;
+
+ value = bgcolour[1];
+ bgcolour[1] = bgcolour[5];
+ bgcolour[5] = value;
+
error = BarcodeGenerator::generateBarcodeToImage(
std::string(image_path),
convertImageFormat(image_format),
@@ -340,7 +458,19 @@ int mv_barcode_generate_image_open(
convertEncodingMode(qr_enc_mode),
convertECC(qr_ecc),
qr_version,
- showText);
+ showText,
+ fgcolour,
+ bgcolour);
+
+ if (fgcolour != NULL) {
+ delete [] fgcolour;
+ fgcolour = NULL;
+ }
+
+ if (bgcolour != NULL) {
+ delete [] bgcolour;
+ bgcolour = NULL;
+ }
if (error != BARCODE_ERROR_NONE) {
LOGE("Barcode generation to the image file failed");