From 5fa9f45fa911b709d3d49e61ecece34cf342184b Mon Sep 17 00:00:00 2001 From: intel-x86-64 <192.cpp@gmail.com> Date: Mon, 1 Dec 2025 17:29:30 +0300 Subject: [PATCH 1/2] Add support DataBar Expanded --- include/BarcodeFactory.h | 1 + include/DataBarExpandedGenerator.h | 21 +++++++++++++++++++++ src/BarcodeFactory.cpp | 2 ++ src/DataBarExpandedGenerator.cpp | 10 ++++++++++ 4 files changed, 34 insertions(+) create mode 100644 include/DataBarExpandedGenerator.h create mode 100644 src/DataBarExpandedGenerator.cpp diff --git a/include/BarcodeFactory.h b/include/BarcodeFactory.h index df841af..195bf85 100644 --- a/include/BarcodeFactory.h +++ b/include/BarcodeFactory.h @@ -1,5 +1,6 @@ #pragma once +#include "DataBarExpandedGenerator.h" #include "DataBarGenerator.h" #include "DataMatrixGenerator.h" #include "IBarcodeGenerator.h" diff --git a/include/DataBarExpandedGenerator.h b/include/DataBarExpandedGenerator.h new file mode 100644 index 0000000..7458761 --- /dev/null +++ b/include/DataBarExpandedGenerator.h @@ -0,0 +1,21 @@ +#pragma once +#include "IBarcodeGenerator.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class DataBarExpandedGenerator : public virtual IBarcodeGenerator { +private: + ZXing::MultiFormatWriter writer{ZXing::BarcodeFormat::DataBarExpanded}; + +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 1468d7d..68a5053 100644 --- a/src/BarcodeFactory.cpp +++ b/src/BarcodeFactory.cpp @@ -13,6 +13,8 @@ BarcodeFactory::create(const std::string type) { return std::make_unique(); } else if (type == "DataBar") { return std::make_unique(); + } else if (type == "DataBarExpanded") { + return std::make_unique(); } return std::make_unique(); diff --git a/src/DataBarExpandedGenerator.cpp b/src/DataBarExpandedGenerator.cpp new file mode 100644 index 0000000..7321be9 --- /dev/null +++ b/src/DataBarExpandedGenerator.cpp @@ -0,0 +1,10 @@ +#include "../include/DataBarExpandedGenerator.h" + +std::string DataBarExpandedGenerator::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 From 2a806ed59f9eca6e6c65694131323c271c22f5c4 Mon Sep 17 00:00:00 2001 From: intel-x86-64 <192.cpp@gmail.com> Date: Mon, 1 Dec 2025 17:40:28 +0300 Subject: [PATCH 2/2] Add support Code 39 --- include/BarcodeFactory.h | 1 + include/Code39Generator.h | 21 +++++++++++++++++++++ src/BarcodeFactory.cpp | 2 ++ src/Code39Generator.cpp | 10 ++++++++++ 4 files changed, 34 insertions(+) create mode 100644 include/Code39Generator.h create mode 100644 src/Code39Generator.cpp diff --git a/include/BarcodeFactory.h b/include/BarcodeFactory.h index 195bf85..45463c5 100644 --- a/include/BarcodeFactory.h +++ b/include/BarcodeFactory.h @@ -1,5 +1,6 @@ #pragma once +#include "Code39Generator.h" #include "DataBarExpandedGenerator.h" #include "DataBarGenerator.h" #include "DataMatrixGenerator.h" diff --git a/include/Code39Generator.h b/include/Code39Generator.h new file mode 100644 index 0000000..e4f3576 --- /dev/null +++ b/include/Code39Generator.h @@ -0,0 +1,21 @@ +#pragma once +#include "IBarcodeGenerator.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class Code39Generator : public virtual IBarcodeGenerator { +private: + ZXing::MultiFormatWriter writer{ZXing::BarcodeFormat::Code39}; + +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 68a5053..7e2a9a0 100644 --- a/src/BarcodeFactory.cpp +++ b/src/BarcodeFactory.cpp @@ -15,6 +15,8 @@ BarcodeFactory::create(const std::string type) { return std::make_unique(); } else if (type == "DataBarExpanded") { return std::make_unique(); + } else if (type == "Code39") { + return std::make_unique(); } return std::make_unique(); diff --git a/src/Code39Generator.cpp b/src/Code39Generator.cpp new file mode 100644 index 0000000..a4d95ac --- /dev/null +++ b/src/Code39Generator.cpp @@ -0,0 +1,10 @@ +#include "../include/Code39Generator.h" + +std::string Code39Generator::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