barcode_gen: Change parameter to config
authorKwanghoon Son <k.son@samsung.com>
Fri, 5 Jul 2024 03:20:53 +0000 (12:20 +0900)
committerKwanghoon Son <k.son@samsung.com>
Fri, 26 Jul 2024 03:49:18 +0000 (12:49 +0900)
- Clean up using BarcodeConfig
- Remove _open.{h,cpp}

Change-Id: I9bd1314c995543c2ec89af728973ea7e87c8bfa2
Signed-off-by: Kwanghoon Son <k.son@samsung.com>
mv_barcode/barcode_generator/include/BarcodeGenerator.h
mv_barcode/barcode_generator/include/mv_barcode_generate_open.h [deleted file]
mv_barcode/barcode_generator/src/BarcodeGenerator.cpp
mv_barcode/barcode_generator/src/mv_barcode_generate.cpp
mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp [deleted file]

index 1d11babb96bae86160476343c18bb92d40207d61..5118bd43c8dc40ce78f26fd724a14cda711f9741 100644 (file)
@@ -55,10 +55,6 @@ struct BarcodeConfig {
        mv_barcode_generate_attr_shape_e finder_shape { MV_BARCODE_GENERATE_ATTR_SHAPE_RECT };
 };
 
-int createBarcode(const std::string &message, BarcodeType type, BarcodeQREncodingMode encodingMode,
-                                 BarcodeQRErrorCorrectionLevel correctionLevel, int qrVersion, int showText, char *fgcolour,
-                                 char *bgcolour, zint_symbol *symbol, Common::EngineConfig *engineCfg);
-
 int write_buffer_to_img(zint_symbol *symbol, const std::string &imageFileName, mv_barcode_image_format_e image_format,
                                                const int imageWidth, const int imageHeight, mv_engine_config_h engine_cfg);
 
@@ -66,6 +62,8 @@ BarcodeImageFormat convertImageFormat(mv_barcode_image_format_e format);
 
 void swapBR(uint16_t *color);
 
+int mv_barcode_generate_symbol(zint_symbol *symbol, const BarcodeConfig &config);
+
 } /* Barcode */
 } /* MediaVision */
 
diff --git a/mv_barcode/barcode_generator/include/mv_barcode_generate_open.h b/mv_barcode/barcode_generator/include/mv_barcode_generate_open.h
deleted file mode 100644 (file)
index 45336d9..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __MEDIA_VISION_BARCODE_GENERATE_OPEN_H__
-#define __MEDIA_VISION_BARCODE_GENERATE_OPEN_H__
-
-#include "BarcodeGenerator.h"
-#include "mv_barcode_generate.h"
-#include <zint.h>
-
-/**
- * @file  mv_barcode_generate_open.h
- * @brief This file contains the Media Vision barcode generate module API for
- *        the open module.
- */
-
-/**
- * @brief Generates @ref mv_source_h with barcode image.
- *
- * @since_tizen 2.4
- * @param [in]  engine_cfg      The handle to the configuration of the engine
- * @param [in]  message         The message to be encoded in the barcode
- * @param [in]  type            Type of the barcode to be generated
- * @param [in]  qr_enc_mode     Encoding mode for the message (only for QR codes;
- *                              for 1D barcodes set this parameter to
- *                              @ref MV_BARCODE_QR_MODE_UNAVAILABLE)
- * @param [in]  qr_ecc          Error correction level (only for QR codes; for
- *                              1D barcodes set this parameter to
- *                              @ref MV_BARCODE_QR_ECC_UNAVAILABLE)
- * @param [in]  qr_version      QR code version (for 1D barcodes set this
- *                              parameter to 0)
- * @param [out] symbol       The media source handle which will be used to
- *                              fill by the buffer with generated symbol
- * @return @c 0 on success, otherwise a negative error value
- * @retval #MEDIA_VISION_ERROR_NONE Successful
- * @retval #MEDIA_VISION_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MEDIA_VISION_ERROR_MSG_TOO_LONG Too long or short message
- * @retval #MEDIA_VISION_ERROR_PERMISSION_DENIED Permission denied
- *
- * @see mv_barcode_generate_image_open()
- */
-int mv_barcode_generate_symbol(mv_engine_config_h engine_cfg, const char *message, mv_barcode_type_e type,
-                                                          mv_barcode_qr_mode_e qr_enc_mode, mv_barcode_qr_ecc_e qr_ecc, int qr_version,
-                                                          zint_symbol *symbol);
-
-#endif /* __MEDIA_VISION_BARCODE_GENERATE_OPEN_H__ */
index 103ad0f27119244de7a283b977a62e9a18250583..054b38e10ca6dff47b003edcc4b439de6c2b0da8 100644 (file)
@@ -86,78 +86,188 @@ int getFormatEncodingInfo(BarcodeImageFormat imageFormat, std::vector<std::strin
        return BARCODE_ERROR_NONE;
 }
 
-int createBarcode(const std::string &message, BarcodeType type, BarcodeQREncodingMode encodingMode,
-                                 BarcodeQRErrorCorrectionLevel correctionLevel, int qrVersion, int showText, char *fgcolour,
-                                 char *bgcolour, zint_symbol *symbol, Common::EngineConfig *engineCfg)
+BarcodeType convertBarcodeType(mv_barcode_type_e type)
 {
-       /* set input values */
-       symbol->symbology = type;
-       symbol->input_mode = encodingMode;
-       symbol->option_1 = correctionLevel;
-       symbol->option_2 = qrVersion;
-       symbol->scale = 1;
-       symbol->show_hrt = showText;
+       BarcodeType barcodeType = ZINT_BARCODE_QR;
+       switch (type) {
+       case MV_BARCODE_UPC_A:
+               barcodeType = ZINT_BARCODE_UPCA;
+               break;
+       case MV_BARCODE_UPC_E:
+               barcodeType = ZINT_BARCODE_UPCE;
+               break;
+       case MV_BARCODE_EAN_8:
+               barcodeType = ZINT_BARCODE_EAN8;
+               break;
+       case MV_BARCODE_EAN_13:
+               barcodeType = ZINT_BARCODE_EAN13;
+               break;
+       case MV_BARCODE_CODE128:
+               barcodeType = ZINT_BARCODE_CODE128;
+               break;
+       case MV_BARCODE_CODE39:
+               barcodeType = ZINT_BARCODE_CODE39;
+               break;
+       case MV_BARCODE_I2_5:
+               barcodeType = ZINT_BARCODE_INTERLEAVE_2_5;
+               break;
+       case MV_BARCODE_EAN_2:
+               barcodeType = ZINT_BARCODE_EAN2;
+               break;
+       case MV_BARCODE_EAN_5:
+               barcodeType = ZINT_BARCODE_EAN5;
+               break;
+       case MV_BARCODE_CODE93:
+               barcodeType = ZINT_BARCODE_CODE93;
+               break;
+       case MV_BARCODE_DATABAR:
+               barcodeType = ZINT_BARCODE_DATABAR;
+               break;
+       case MV_BARCODE_DATABAR_EXPAND:
+               barcodeType = ZINT_BARCODE_DATABAR_EXPAND;
+               break;
+       case MV_BARCODE_CODABAR:
+               barcodeType = ZINT_BARCODE_CODABAR;
+               break;
+       default:
+               break;
+       }
 
-       /* set default values */
-       if (fgcolour) {
-               std::strncpy(symbol->fgcolour, fgcolour, ZINT_COLOUR_SIZE - 1);
-               if (strlen(fgcolour) > 9) {
-                       symbol->fgcolour[9] = '\0';
-               }
-       } else {
-               std::strncpy(symbol->fgcolour, "000000", ZINT_COLOUR_SIZE - 1);
+       LOGI("Media vision barcode type has been converted to ZInt barcode type "
+                "(%i -> %i)",
+                type, barcodeType);
+       return barcodeType;
+}
+
+BarcodeQREncodingMode convertEncodingMode(mv_barcode_qr_mode_e mode)
+{
+       BarcodeQREncodingMode encodingMode = BARCODE_QR_MODE_ALPHANUMERIC;
+
+       switch (mode) {
+       case MV_BARCODE_QR_MODE_NUMERIC:
+               encodingMode = BARCODE_QR_MODE_NUMERIC;
+               break;
+       case MV_BARCODE_QR_MODE_BYTE:
+               encodingMode = BARCODE_QR_MODE_BYTE;
+               break;
+       case MV_BARCODE_QR_MODE_UTF8:
+               encodingMode = BARCODE_QR_MODE_UTF8;
+               break;
+       default:
+               break;
        }
 
-       if (bgcolour) {
-               std::strncpy(symbol->bgcolour, bgcolour, ZINT_COLOUR_SIZE - 1);
-               if (strlen(bgcolour) > 9) {
-                       symbol->bgcolour[9] = '\0';
-               }
-       } else {
-               std::strncpy(symbol->bgcolour, "ffffff", ZINT_COLOUR_SIZE - 1);
+       LOGI("Media vision QRCode encoding mode has been converted to "
+                "ZInt encoding mode (%i -> %i)",
+                mode, encodingMode);
+       return encodingMode;
+}
+
+BarcodeQRErrorCorrectionLevel convertECC(mv_barcode_qr_ecc_e ecc)
+{
+       BarcodeQRErrorCorrectionLevel ecclevel = BARCODE_QR_ECC_LOW;
+
+       switch (ecc) {
+       case MV_BARCODE_QR_ECC_MEDIUM:
+               ecclevel = BARCODE_QR_ECC_MEDIUM;
+               break;
+       case MV_BARCODE_QR_ECC_QUARTILE:
+               ecclevel = BARCODE_QR_ECC_QUARTILE;
+               break;
+       case MV_BARCODE_QR_ECC_HIGH:
+               ecclevel = BARCODE_QR_ECC_HIGH;
+               break;
+       default:
+               break;
        }
 
-       LOGI("Check colors: front %s, back %s", symbol->fgcolour, symbol->bgcolour);
+       LOGI("Media vision ECC level has been converted to "
+                "ZInt ECC level (%i -> %i)",
+                ecc, ecclevel);
+       return ecclevel;
+}
 
-       symbol->border_width = 1;
-       symbol->height = 50;
+int convertBarcodeError(int barcodeError)
+{
+       int mvError;
 
-       if (engineCfg) {
-               int value;
-               int ret = engineCfg->getIntegerAttribute(MV_BARCODE_GENERATE_ATTR_DATA_SHAPE, &value);
+       switch (barcodeError) {
+       case BARCODE_ERROR_NONE:
+               mvError = MEDIA_VISION_ERROR_NONE;
+               break;
+       case BARCODE_WARNING_INVALID_OPTION:
+               mvError = MEDIA_VISION_ERROR_INVALID_PARAMETER;
+               break;
+       case BARCODE_ERROR_TOO_LONG:
+               mvError = MEDIA_VISION_ERROR_MSG_TOO_LONG;
+               break;
+       case BARCODE_ERROR_INVALID_DATA:
+               mvError = MEDIA_VISION_ERROR_INVALID_DATA;
+               break;
+       case BARCODE_ERROR_INVALID_CHECK:
+               mvError = MEDIA_VISION_ERROR_INVALID_PARAMETER;
+               break;
+       case BARCODE_ERROR_INVALID_OPTION:
+               mvError = MEDIA_VISION_ERROR_INVALID_PARAMETER;
+               break;
+       case BARCODE_ERROR_ENCODING_PROBLEM:
+               mvError = MEDIA_VISION_ERROR_INTERNAL;
+               break;
+       case BARCODE_ERROR_FILE_ACCESS:
+               mvError = MEDIA_VISION_ERROR_PERMISSION_DENIED;
+               break;
+       case BARCODE_ERROR_MEMORY:
+               mvError = MEDIA_VISION_ERROR_OUT_OF_MEMORY;
+               break;
+       case BARCODE_ERROR_INVALID_PATH:
+               mvError = MEDIA_VISION_ERROR_INVALID_PATH;
+               break;
+       default:
+               mvError = MEDIA_VISION_ERROR_INTERNAL;
+       }
 
-               if (ret == MEDIA_VISION_ERROR_NONE) {
-                       switch (value) {
-                       case MV_BARCODE_GENERATE_ATTR_SHAPE_RECT:
-                               break;
-                       case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
-                               symbol->output_options |= BARCODE_DATA_CIRCLE;
-                               break;
+       LOGI("ZInt error code has been converted to the media vision error code "
+                "(%i -> (0x%08x))",
+                barcodeError, mvError);
+       return mvError;
+}
 
-                       default:
-                               LOGE("Invalid data shape");
-                               return BARCODE_WARNING_INVALID_OPTION;
-                       }
-               }
+static int createBarcode(zint_symbol *symbol, const BarcodeConfig &config)
+{
+       /* set input values */
+       BarcodeType type = convertBarcodeType(config.type);
+       symbol->symbology = type;
+       symbol->input_mode = convertEncodingMode(config.qr_enc_mode);
+       symbol->option_1 = convertECC(config.qr_ecc);
+       symbol->option_2 = config.qr_version;
+       symbol->scale = 1;
+       symbol->show_hrt = config.text_opt;
 
-               ret = engineCfg->getIntegerAttribute(MV_BARCODE_GENERATE_ATTR_FINDER_SHAPE, &value);
+       std::strncpy(symbol->fgcolour, config.fgcolor.c_str(), ZINT_COLOUR_SIZE - 1);
+       std::strncpy(symbol->bgcolour, config.bgcolor.c_str(), ZINT_COLOUR_SIZE - 1);
 
-               if (ret == MEDIA_VISION_ERROR_NONE) {
-                       switch (value) {
-                       case MV_BARCODE_GENERATE_ATTR_SHAPE_RECT:
-                               break;
-                       case MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT:
-                               symbol->output_options |= BARCODE_FINDER_ROUNDRECT;
-                               break;
-                       case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
-                               symbol->output_options |= BARCODE_FINDER_CIRCLE;
-                               break;
+       LOGI("Check colors: front %s, back %s", symbol->fgcolour, symbol->bgcolour);
 
-                       default:
-                               LOGE("Invalid finder shape");
-                               return BARCODE_WARNING_INVALID_OPTION;
-                       }
-               }
+       symbol->border_width = 1;
+       symbol->height = 50;
+
+       switch (config.data_shape) {
+       case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
+               symbol->output_options |= BARCODE_DATA_CIRCLE;
+               break;
+       default:
+               break;
+       }
+
+       switch (config.finder_shape) {
+       case MV_BARCODE_GENERATE_ATTR_SHAPE_ROUND_RECT:
+               symbol->output_options |= BARCODE_FINDER_ROUNDRECT;
+               break;
+       case MV_BARCODE_GENERATE_ATTR_SHAPE_CIRCLE:
+               symbol->output_options |= BARCODE_FINDER_CIRCLE;
+               break;
+       default:
+               break;
        }
 
        if (type == ZINT_BARCODE_QR) {
@@ -167,13 +277,24 @@ int createBarcode(const std::string &message, BarcodeType type, BarcodeQREncodin
        }
 
        /* create barcode */
-       const int rotationAngle = 0;
        int error =
-                       ZBarcode_Encode_and_Buffer(symbol, (unsigned char *) (message.c_str()), message.length(), rotationAngle);
+                       ZBarcode_Encode_and_Buffer(symbol, (unsigned char *) (config.message.c_str()), config.message.length(), 0);
 
        return error;
 }
 
+int mv_barcode_generate_symbol(zint_symbol *symbol, const BarcodeConfig &config)
+{
+       int error = createBarcode(symbol, config);
+
+       if (error != BARCODE_ERROR_NONE) {
+               const auto channel = 3;
+               LOGI("Barcode has been generated to the buffer: Buffer size = %ui x %ui; Channels = %ui; Message = %s",
+                        symbol->bitmap_width, symbol->bitmap_height, channel, config.message.c_str());
+       }
+       return convertBarcodeError(error);
+}
+
 static void __round_rect(cv::Mat &inOutImg, cv::Rect &rect, cv::Scalar &color)
 {
        auto gapW = rect.width / 4;
index f50add9281b79a308668baeba1a5ee1c4ff9d3a4..4d6d0a75ab37f39d5b5cb6745f62821fec6957ab 100644 (file)
@@ -21,7 +21,7 @@
 #include <zint.h>
 
 /* Include headers of open barcode generate module here. */
-#include "mv_barcode_generate_open.h"
+#include "BarcodeGenerator.h"
 
 using namespace std;
 using namespace MediaVision::Barcode;
@@ -82,7 +82,7 @@ int mv_barcode_generate_source(mv_engine_config_h engine_cfg, const char *messag
                return MEDIA_VISION_ERROR_INTERNAL;
        }
 
-       ret = mv_barcode_generate_symbol(engine_cfg, message, type, qr_enc_mode, qr_ecc, qr_version, symbol);
+       ret = mv_barcode_generate_symbol(symbol, config);
        if (ret != MEDIA_VISION_ERROR_NONE) {
                ZBarcode_Delete(symbol);
                return ret;
@@ -130,7 +130,7 @@ int mv_barcode_generate_image(mv_engine_config_h engine_cfg, const char *message
                return MEDIA_VISION_ERROR_INTERNAL;
        }
 
-       ret = mv_barcode_generate_symbol(engine_cfg, message, type, qr_enc_mode, qr_ecc, qr_version, symbol);
+       ret = mv_barcode_generate_symbol(symbol, config);
        if (ret != MEDIA_VISION_ERROR_NONE) {
                ZBarcode_Delete(symbol);
                return ret;
diff --git a/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp b/mv_barcode/barcode_generator/src/mv_barcode_generate_open.cpp
deleted file mode 100644 (file)
index 0ba5eb4..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/**
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "mv_barcode_generate_open.h"
-
-#include "BarcodeGenerator.h"
-#include "mv_common.h"
-
-#include <mv_private.h>
-
-#include <algorithm>
-#include <cstring>
-
-using namespace MediaVision::Barcode;
-
-int alphanumToUpper(std::string &strToTransform)
-{
-       std::string tempString = strToTransform;
-       std::transform(tempString.begin(), tempString.end(), tempString.begin(), ::toupper);
-
-       if (std::string::npos != tempString.find_first_not_of("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:")) {
-               LOGE("Barcode message can't be converted according to support "
-                        "alphanumeric (0..9, A..Z, space, $, %%, *, +, -, ., /, :) "
-                        "mode: %s",
-                        strToTransform.c_str());
-               return BARCODE_ERROR_INVALID_DATA;
-       }
-
-       LOGI("Barcode message was converted according to support alphanumeric "
-                "mode: %s -> %s",
-                strToTransform.c_str(), tempString.c_str());
-       strToTransform = tempString;
-       return BARCODE_ERROR_NONE;
-}
-
-BarcodeType convertBarcodeType(mv_barcode_type_e type)
-{
-       BarcodeType barcodeType = ZINT_BARCODE_QR;
-       switch (type) {
-       case MV_BARCODE_UPC_A:
-               barcodeType = ZINT_BARCODE_UPCA;
-               break;
-       case MV_BARCODE_UPC_E:
-               barcodeType = ZINT_BARCODE_UPCE;
-               break;
-       case MV_BARCODE_EAN_8:
-               barcodeType = ZINT_BARCODE_EAN8;
-               break;
-       case MV_BARCODE_EAN_13:
-               barcodeType = ZINT_BARCODE_EAN13;
-               break;
-       case MV_BARCODE_CODE128:
-               barcodeType = ZINT_BARCODE_CODE128;
-               break;
-       case MV_BARCODE_CODE39:
-               barcodeType = ZINT_BARCODE_CODE39;
-               break;
-       case MV_BARCODE_I2_5:
-               barcodeType = ZINT_BARCODE_INTERLEAVE_2_5;
-               break;
-       case MV_BARCODE_EAN_2:
-               barcodeType = ZINT_BARCODE_EAN2;
-               break;
-       case MV_BARCODE_EAN_5:
-               barcodeType = ZINT_BARCODE_EAN5;
-               break;
-       case MV_BARCODE_CODE93:
-               barcodeType = ZINT_BARCODE_CODE93;
-               break;
-       case MV_BARCODE_DATABAR:
-               barcodeType = ZINT_BARCODE_DATABAR;
-               break;
-       case MV_BARCODE_DATABAR_EXPAND:
-               barcodeType = ZINT_BARCODE_DATABAR_EXPAND;
-               break;
-       case MV_BARCODE_CODABAR:
-               barcodeType = ZINT_BARCODE_CODABAR;
-               break;
-       default:
-               break;
-       }
-
-       LOGI("Media vision barcode type has been converted to ZInt barcode type "
-                "(%i -> %i)",
-                type, barcodeType);
-       return barcodeType;
-}
-
-BarcodeQREncodingMode convertEncodingMode(mv_barcode_qr_mode_e mode)
-{
-       BarcodeQREncodingMode encodingMode = BARCODE_QR_MODE_ALPHANUMERIC;
-
-       switch (mode) {
-       case MV_BARCODE_QR_MODE_NUMERIC:
-               encodingMode = BARCODE_QR_MODE_NUMERIC;
-               break;
-       case MV_BARCODE_QR_MODE_BYTE:
-               encodingMode = BARCODE_QR_MODE_BYTE;
-               break;
-       case MV_BARCODE_QR_MODE_UTF8:
-               encodingMode = BARCODE_QR_MODE_UTF8;
-               break;
-       default:
-               break;
-       }
-
-       LOGI("Media vision QRCode encoding mode has been converted to "
-                "ZInt encoding mode (%i -> %i)",
-                mode, encodingMode);
-       return encodingMode;
-}
-
-BarcodeQRErrorCorrectionLevel convertECC(mv_barcode_qr_ecc_e ecc)
-{
-       BarcodeQRErrorCorrectionLevel ecclevel = BARCODE_QR_ECC_LOW;
-
-       switch (ecc) {
-       case MV_BARCODE_QR_ECC_MEDIUM:
-               ecclevel = BARCODE_QR_ECC_MEDIUM;
-               break;
-       case MV_BARCODE_QR_ECC_QUARTILE:
-               ecclevel = BARCODE_QR_ECC_QUARTILE;
-               break;
-       case MV_BARCODE_QR_ECC_HIGH:
-               ecclevel = BARCODE_QR_ECC_HIGH;
-               break;
-       default:
-               break;
-       }
-
-       LOGI("Media vision ECC level has been converted to "
-                "ZInt ECC level (%i -> %i)",
-                ecc, ecclevel);
-       return ecclevel;
-}
-
-int convertBarcodeError(int barcodeError)
-{
-       int mvError;
-
-       switch (barcodeError) {
-       case BARCODE_ERROR_NONE:
-               mvError = MEDIA_VISION_ERROR_NONE;
-               break;
-       case BARCODE_WARNING_INVALID_OPTION:
-               mvError = MEDIA_VISION_ERROR_INVALID_PARAMETER;
-               break;
-       case BARCODE_ERROR_TOO_LONG:
-               mvError = MEDIA_VISION_ERROR_MSG_TOO_LONG;
-               break;
-       case BARCODE_ERROR_INVALID_DATA:
-               mvError = MEDIA_VISION_ERROR_INVALID_DATA;
-               break;
-       case BARCODE_ERROR_INVALID_CHECK:
-               mvError = MEDIA_VISION_ERROR_INVALID_PARAMETER;
-               break;
-       case BARCODE_ERROR_INVALID_OPTION:
-               mvError = MEDIA_VISION_ERROR_INVALID_PARAMETER;
-               break;
-       case BARCODE_ERROR_ENCODING_PROBLEM:
-               mvError = MEDIA_VISION_ERROR_INTERNAL;
-               break;
-       case BARCODE_ERROR_FILE_ACCESS:
-               mvError = MEDIA_VISION_ERROR_PERMISSION_DENIED;
-               break;
-       case BARCODE_ERROR_MEMORY:
-               mvError = MEDIA_VISION_ERROR_OUT_OF_MEMORY;
-               break;
-       case BARCODE_ERROR_INVALID_PATH:
-               mvError = MEDIA_VISION_ERROR_INVALID_PATH;
-               break;
-       default:
-               mvError = MEDIA_VISION_ERROR_INTERNAL;
-       }
-
-       LOGI("ZInt error code has been converted to the media vision error code "
-                "(%i -> (0x%08x))",
-                barcodeError, mvError);
-       return mvError;
-}
-
-static int prepareMessageToGenerate(const char *message, mv_barcode_type_e type, mv_barcode_qr_mode_e qr_enc_mode,
-                                                                       std::string &messageStr)
-{
-       messageStr = message;
-       switch (qr_enc_mode) {
-       case MV_BARCODE_QR_MODE_NUMERIC:
-               if (messageStr.find_first_not_of("0123456789") != std::string::npos) {
-                       LOGE("Barcode message can't be used according to support "
-                                "numeric (0..9) mode: %s",
-                                messageStr.c_str());
-                       return MEDIA_VISION_ERROR_INVALID_PARAMETER;
-               }
-               break;
-       case MV_BARCODE_QR_MODE_ALPHANUMERIC:
-               if (type == MV_BARCODE_QR) {
-                       int error = alphanumToUpper(messageStr);
-                       if (error != BARCODE_ERROR_NONE)
-                               return convertBarcodeError(error);
-               }
-               break;
-       default:
-               break;
-       }
-       return MEDIA_VISION_ERROR_NONE;
-}
-
-static int getColorFromEngine(mv_engine_config_h engine_cfg, mv_barcode_type_e type, int &showText, char **fgcolour,
-                                                         char **bgcolour)
-{
-       if (!engine_cfg)
-               return MEDIA_VISION_ERROR_NONE;
-
-       int error = mv_engine_config_get_int_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_TEXT, &showText);
-       if (error != MEDIA_VISION_ERROR_NONE) {
-               LOGE("mv_engine_config_get_int_attribute failed");
-               return error;
-       }
-
-       if (showText == BARCODE_GEN_TEXT_VISIBLE && type == MV_BARCODE_QR) {
-               LOGE("QR code generation with visible text is not supported");
-               return MEDIA_VISION_ERROR_INVALID_OPERATION;
-       }
-
-       /* get color value */
-       error = mv_engine_config_get_string_attribute(engine_cfg, MV_BARCODE_GENERATE_ATTR_COLOR_FRONT, fgcolour);
-       if (error != MEDIA_VISION_ERROR_NONE) {
-               LOGE("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) {
-               free(*fgcolour);
-               LOGE("mv_engine_config_get_string_attribute failed");
-               return error;
-       }
-
-       swapBR((uint16_t *) *fgcolour);
-       swapBR((uint16_t *) *bgcolour);
-
-       return MEDIA_VISION_ERROR_NONE;
-}
-
-int mv_barcode_generate_symbol(mv_engine_config_h engine_cfg, const char *message, mv_barcode_type_e type,
-                                                          mv_barcode_qr_mode_e qr_enc_mode, mv_barcode_qr_ecc_e qr_ecc, int qr_version,
-                                                          zint_symbol *symbol)
-{
-       std::string messageStr;
-       int error = prepareMessageToGenerate(message, type, qr_enc_mode, messageStr);
-       if (error != MEDIA_VISION_ERROR_NONE) {
-               LOGE("prepareMessageToGenerate failed");
-               return error;
-       }
-
-       int showText = 0;
-       char *fgcolour = NULL;
-       char *bgcolour = NULL;
-
-       auto engineCfg = static_cast<MediaVision::Common::EngineConfig *>(engine_cfg);
-
-       error = getColorFromEngine(engine_cfg, type, showText, &fgcolour, &bgcolour);
-       if (error != MEDIA_VISION_ERROR_NONE) {
-               LOGE("getColorFromEngine failed");
-               return error;
-       }
-       error = createBarcode(message, convertBarcodeType(type), convertEncodingMode(qr_enc_mode), convertECC(qr_ecc),
-                                                 qr_version, showText, fgcolour, bgcolour, symbol, engineCfg);
-
-       free(fgcolour);
-       free(bgcolour);
-       if (error != BARCODE_ERROR_NONE) {
-               const auto channel = 3;
-               LOGI("Barcode has been generated to the buffer: Buffer size = %ui x %ui; Channels = %ui; Message = %s",
-                        symbol->bitmap_width, symbol->bitmap_height, channel, messageStr.c_str());
-       }
-       return convertBarcodeError(error);
-}