From 9dce9f85950fcbc4f2c6370f3720fe7f2e332e16 Mon Sep 17 00:00:00 2001 From: intel-x86-64 <192.cpp@gmail.com> Date: Mon, 1 Dec 2025 16:12:12 +0300 Subject: [PATCH] Add support for DataBar --- include/BarcodeFactory.h | 1 + include/DataBarGenerator.h | 21 +++++++++++++++++++++ src/BarcodeFactory.cpp | 3 +++ src/DataBarGenerator.cpp | 10 ++++++++++ 4 files changed, 35 insertions(+) create mode 100644 include/DataBarGenerator.h create mode 100644 src/DataBarGenerator.cpp diff --git a/include/BarcodeFactory.h b/include/BarcodeFactory.h index 52c6ff1..df841af 100644 --- a/include/BarcodeFactory.h +++ b/include/BarcodeFactory.h @@ -1,5 +1,6 @@ #pragma once +#include "DataBarGenerator.h" #include "DataMatrixGenerator.h" #include "IBarcodeGenerator.h" #include "ItfGenerator.h" diff --git a/include/DataBarGenerator.h b/include/DataBarGenerator.h new file mode 100644 index 0000000..3d92229 --- /dev/null +++ b/include/DataBarGenerator.h @@ -0,0 +1,21 @@ +#pragma once +#include "IBarcodeGenerator.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class DataBarGenerator : public virtual IBarcodeGenerator { +private: + ZXing::MultiFormatWriter writer{ZXing::BarcodeFormat::DataBar}; + +public: + std::string generate(const std::string &text, int margin, int size); +}; \ No newline at end of file diff --git a/src/BarcodeFactory.cpp b/src/BarcodeFactory.cpp index 674c1cb..1468d7d 100644 --- a/src/BarcodeFactory.cpp +++ b/src/BarcodeFactory.cpp @@ -1,4 +1,5 @@ #include "../include/BarcodeFactory.h" +#include std::unique_ptr BarcodeFactory::create(const std::string type) { @@ -10,6 +11,8 @@ BarcodeFactory::create(const std::string type) { return std::make_unique(); } else if (type == "ITF") { return std::make_unique(); + } else if (type == "DataBar") { + return std::make_unique(); } return std::make_unique(); diff --git a/src/DataBarGenerator.cpp b/src/DataBarGenerator.cpp new file mode 100644 index 0000000..7634b4c --- /dev/null +++ b/src/DataBarGenerator.cpp @@ -0,0 +1,10 @@ +#include "../include/DataBarGenerator.h" + +std::string DataBarGenerator::generate(const std::string &text, int margin, + int size) { + writer.setMargin(margin); + writer.setEncoding(ZXing::CharacterSet::UTF8); + ZXing::BitMatrix matrix = writer.encode(text, size, size); + + return ZXing::ToSVG(matrix); +} \ No newline at end of file