Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit 9dce9f8

Browse files
committed
Add support for DataBar
1 parent 3f58f43 commit 9dce9f8

4 files changed

Lines changed: 35 additions & 0 deletions

File tree

include/BarcodeFactory.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22

3+
#include "DataBarGenerator.h"
34
#include "DataMatrixGenerator.h"
45
#include "IBarcodeGenerator.h"
56
#include "ItfGenerator.h"

include/DataBarGenerator.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
#include "IBarcodeGenerator.h"
3+
#include <ZXing/Barcode.h>
4+
#include <ZXing/BarcodeFormat.h>
5+
#include <ZXing/BitMatrix.h>
6+
#include <ZXing/BitMatrixIO.h>
7+
#include <ZXing/CharacterSet.h>
8+
#include <ZXing/Matrix.h>
9+
#include <ZXing/MultiFormatWriter.h>
10+
#include <memory>
11+
#include <stdexcept>
12+
#include <string>
13+
#include <utility>
14+
15+
class DataBarGenerator : public virtual IBarcodeGenerator {
16+
private:
17+
ZXing::MultiFormatWriter writer{ZXing::BarcodeFormat::DataBar};
18+
19+
public:
20+
std::string generate(const std::string &text, int margin, int size);
21+
};

src/BarcodeFactory.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "../include/BarcodeFactory.h"
2+
#include <memory>
23

34
std::unique_ptr<IBarcodeGenerator>
45
BarcodeFactory::create(const std::string type) {
@@ -10,6 +11,8 @@ BarcodeFactory::create(const std::string type) {
1011
return std::make_unique<UpcAGenerator>();
1112
} else if (type == "ITF") {
1213
return std::make_unique<ItfGenerator>();
14+
} else if (type == "DataBar") {
15+
return std::make_unique<DataBarGenerator>();
1316
}
1417

1518
return std::make_unique<QrGenerator>();

src/DataBarGenerator.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include "../include/DataBarGenerator.h"
2+
3+
std::string DataBarGenerator::generate(const std::string &text, int margin,
4+
int size) {
5+
writer.setMargin(margin);
6+
writer.setEncoding(ZXing::CharacterSet::UTF8);
7+
ZXing::BitMatrix matrix = writer.encode(text, size, size);
8+
9+
return ZXing::ToSVG(matrix);
10+
}

0 commit comments

Comments
 (0)