File indexing completed on 2024-05-12 04:01:32
0001 /* 0002 SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org> 0003 SPDX-License-Identifier: MIT 0004 */ 0005 0006 #ifndef PRISON_ZXINGONEDBARCODE_H 0007 #define PRISON_ZXINGONEDBARCODE_H 0008 0009 #include "abstractbarcode_p.h" 0010 #include "zxingutil_p.h" 0011 0012 #include <ZXing/BitMatrix.h> 0013 #include <ZXing/MultiFormatWriter.h> 0014 0015 #include <stdexcept> 0016 0017 namespace Prison 0018 { 0019 /** Generic support for ZXing 1D barcodes. */ 0020 template<ZXing::BarcodeFormat Format> 0021 class ZXingOneDBarcode : public AbstractBarcodePrivate 0022 { 0023 public: 0024 explicit inline ZXingOneDBarcode() 0025 : AbstractBarcodePrivate(Barcode::OneDimension) 0026 { 0027 } 0028 0029 protected: 0030 inline QImage paintImage() override 0031 { 0032 try { 0033 ZXing::MultiFormatWriter writer(Format); 0034 const auto matrix = writer.encode(ZXingUtil::toStdWString(m_data), 1, 1); 0035 return ZXingUtil::toImage(matrix, m_foreground, m_background); 0036 } catch (const std::invalid_argument &e) { 0037 }; // input too large or incompatible 0038 return {}; 0039 } 0040 }; 0041 0042 } 0043 0044 #endif // PRISON_PDF417BARCODE_H