|
@@ -1,164 +0,0 @@
|
|
|
-From aef33b66df0ad6f085dc55b50d7847e0b8a2ccd8 Mon Sep 17 00:00:00 2001
|
|
|
-From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
|
|
|
-Date: Wed, 17 Jul 2024 14:53:35 +0200
|
|
|
-Subject: [PATCH] Fix building when only writer support is enabled
|
|
|
-
|
|
|
-The compilation of the following code, which links the zxing-cpp library
|
|
|
-built with only the writer (encoder) support, raises the following
|
|
|
-linking errors:
|
|
|
-
|
|
|
-using namespace ZXing;
|
|
|
-
|
|
|
-int main(void)
|
|
|
-{
|
|
|
- std::string str = "01";
|
|
|
- BitHacks::NumberOfLeadingZeros(0);
|
|
|
- auto writer = MultiFormatWriter(BarcodeFormat::Code128);
|
|
|
- writer.setEncoding(CharacterSet::UTF8);
|
|
|
- writer.setMargin(0);
|
|
|
- auto matrix = writer.encode(str, 0, 0 /*scaledImageWidth, pixelHeight*/);
|
|
|
-
|
|
|
- return EXIT_SUCCESS;
|
|
|
-}
|
|
|
-
|
|
|
-arm-buildroot-linux-uclibcgnueabihf/bin/ld:host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so:
|
|
|
-undefined reference to `ZXing::TextDecoder::GuessEncoding(unsigned char const*, unsigned int, ZXing::CharacterSet)'
|
|
|
-arm-buildroot-linux-uclibcgnueabihf/bin/ld: host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so:
|
|
|
-undefined reference to `ZXing::HRIFromGS1[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >)'
|
|
|
-arm-buildroot-linux-uclibcgnueabihf/bin/ld: host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so:
|
|
|
-undefined reference to `ZXing::TextDecoder::Append(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned char const*, unsigned int, ZXing::CharacterSet, bool)'
|
|
|
-arm-buildroot-linux-uclibcgnueabihf/bin/ld: host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/libZXing.so:
|
|
|
-undefined reference to `ZXing::HRIFromISO15434[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >)'
|
|
|
-collect2: error: ld returned 1 exit status
|
|
|
-
|
|
|
-The patch fixes these errors.
|
|
|
-
|
|
|
-Co-Developed-by: Francesco Nicoletta Puzzillo <francesco.nicolettap@amarula>
|
|
|
-Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
|
|
|
-Upstream: backport from upstream https://github.com/zxing-cpp/zxing-cpp/pull/811
|
|
|
----
|
|
|
- core/src/Content.cpp | 4 ++++
|
|
|
- core/src/Content.h | 6 ++++++
|
|
|
- core/src/DecoderResult.h | 2 ++
|
|
|
- core/src/GTIN.cpp | 2 ++
|
|
|
- core/src/GTIN.h | 2 ++
|
|
|
- 5 files changed, 16 insertions(+)
|
|
|
-
|
|
|
-diff --git a/core/src/Content.cpp b/core/src/Content.cpp
|
|
|
-index 4d3c44657cf9..569d4e35614a 100644
|
|
|
---- a/core/src/Content.cpp
|
|
|
-+++ b/core/src/Content.cpp
|
|
|
-@@ -93,6 +93,7 @@ bool Content::canProcess() const
|
|
|
- return std::all_of(encodings.begin(), encodings.end(), [](Encoding e) { return CanProcess(e.eci); });
|
|
|
- }
|
|
|
-
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- std::string Content::render(bool withECI) const
|
|
|
- {
|
|
|
- if (empty() || !canProcess())
|
|
|
-@@ -165,6 +166,7 @@ std::wstring Content::utfW() const
|
|
|
- {
|
|
|
- return FromUtf8(render(false));
|
|
|
- }
|
|
|
-+#endif // ZXING_READERS
|
|
|
-
|
|
|
- ByteArray Content::bytesECI() const
|
|
|
- {
|
|
|
-@@ -188,6 +190,7 @@ ByteArray Content::bytesECI() const
|
|
|
- return ByteArray(res);
|
|
|
- }
|
|
|
-
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- CharacterSet Content::guessEncoding() const
|
|
|
- {
|
|
|
- // assemble all blocks with unknown encoding
|
|
|
-@@ -236,5 +239,6 @@ ContentType Content::type() const
|
|
|
-
|
|
|
- return ContentType::Mixed;
|
|
|
- }
|
|
|
-+#endif // ZXING_READERS
|
|
|
-
|
|
|
- } // namespace ZXing
|
|
|
-diff --git a/core/src/Content.h b/core/src/Content.h
|
|
|
-index 99e5a01e7140..aa77bda94d54 100644
|
|
|
---- a/core/src/Content.h
|
|
|
-+++ b/core/src/Content.h
|
|
|
-@@ -38,7 +38,9 @@ class Content
|
|
|
- void ForEachECIBlock(FUNC f) const;
|
|
|
-
|
|
|
- void switchEncoding(ECI eci, bool isECI);
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- std::string render(bool withECI) const;
|
|
|
-+#endif // ZXING_READERS
|
|
|
-
|
|
|
- public:
|
|
|
- struct Encoding
|
|
|
-@@ -75,13 +77,17 @@ public:
|
|
|
- bool empty() const { return bytes.empty(); }
|
|
|
- bool canProcess() const;
|
|
|
-
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- std::string text(TextMode mode) const;
|
|
|
- std::wstring utfW() const; // utf16 or utf32 depending on the platform, i.e. on size_of(wchar_t)
|
|
|
- std::string utf8() const { return render(false); }
|
|
|
-+#endif // ZXING_READERS
|
|
|
-
|
|
|
- ByteArray bytesECI() const;
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- CharacterSet guessEncoding() const;
|
|
|
- ContentType type() const;
|
|
|
-+#endif // ZXING_READERS
|
|
|
- };
|
|
|
-
|
|
|
- } // ZXing
|
|
|
-diff --git a/core/src/DecoderResult.h b/core/src/DecoderResult.h
|
|
|
-index 02b285084195..3117b03a923a 100644
|
|
|
---- a/core/src/DecoderResult.h
|
|
|
-+++ b/core/src/DecoderResult.h
|
|
|
-@@ -50,7 +50,9 @@ public:
|
|
|
- Content&& content() && { return std::move(_content); }
|
|
|
-
|
|
|
- // to keep the unit tests happy for now:
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- std::wstring text() const { return _content.utfW(); }
|
|
|
-+#endif // ZXING_READERS
|
|
|
- std::string symbologyIdentifier() const { return _content.symbology.toString(false); }
|
|
|
-
|
|
|
- // Simple macro to set up getter/setter methods that save lots of boilerplate.
|
|
|
-diff --git a/core/src/GTIN.cpp b/core/src/GTIN.cpp
|
|
|
-index 256855a03070..690901062301 100644
|
|
|
---- a/core/src/GTIN.cpp
|
|
|
-+++ b/core/src/GTIN.cpp
|
|
|
-@@ -199,6 +199,7 @@ std::string LookupCountryIdentifier(const std::string& GTIN, const BarcodeFormat
|
|
|
- return it != std::end(COUNTRIES) && prefix >= it->first && prefix <= it->last ? it->id : std::string();
|
|
|
- }
|
|
|
-
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- std::string EanAddOn(const Result& result)
|
|
|
- {
|
|
|
- if (!(BarcodeFormat::EAN13 | BarcodeFormat::UPCA | BarcodeFormat::UPCE | BarcodeFormat::EAN8)
|
|
|
-@@ -208,6 +209,7 @@ std::string EanAddOn(const Result& result)
|
|
|
- auto pos = txt.find(' ');
|
|
|
- return pos != std::string::npos ? std::string(txt.substr(pos + 1)) : std::string();
|
|
|
- }
|
|
|
-+#endif // ZXING_READERS
|
|
|
-
|
|
|
- std::string IssueNr(const std::string& ean2AddOn)
|
|
|
- {
|
|
|
-diff --git a/core/src/GTIN.h b/core/src/GTIN.h
|
|
|
-index d56b604e5f71..9af0b01200ce 100644
|
|
|
---- a/core/src/GTIN.h
|
|
|
-+++ b/core/src/GTIN.h
|
|
|
-@@ -47,7 +47,9 @@ bool IsCheckDigitValid(const std::basic_string<T>& s)
|
|
|
- */
|
|
|
- std::string LookupCountryIdentifier(const std::string& GTIN, const BarcodeFormat format = BarcodeFormat::None);
|
|
|
-
|
|
|
-+#ifdef ZXING_READERS
|
|
|
- std::string EanAddOn(const Result& result);
|
|
|
-+#endif // ZXING_READERS
|
|
|
-
|
|
|
- std::string IssueNr(const std::string& ean2AddOn);
|
|
|
- std::string Price(const std::string& ean5AddOn);
|
|
|
---
|
|
|
-2.43.0
|
|
|
-
|