File indexing completed on 2024-05-12 15:49:08
0001 /* 0002 SPDX-FileCopyrightText: 2017 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: MIT 0005 */ 0006 0007 #ifndef PRISON_AZTECBARCODE_H 0008 #define PRISON_AZTECBARCODE_H 0009 0010 #include "abstractbarcode.h" 0011 0012 class AztecBarcodeTest; 0013 0014 namespace Prison 0015 { 0016 class BitVector; 0017 0018 /** Aztec code generator. */ 0019 class AztecBarcode : public AbstractBarcode 0020 { 0021 public: 0022 AztecBarcode(); 0023 ~AztecBarcode() override; 0024 0025 protected: 0026 QImage paintImage(const QSizeF &size) override; 0027 0028 private: 0029 friend class ::AztecBarcodeTest; 0030 0031 BitVector aztecEncode(const QByteArray &data) const; 0032 BitVector bitStuffAndPad(const BitVector &input, int codeWordSize) const; 0033 0034 void paintFullGrid(QImage *img) const; 0035 void paintFullData(QImage *img, const BitVector &data, int layerCount) const; 0036 void paintFullModeMessage(QImage *img, const BitVector &modeData) const; 0037 QImage cropAndScaleFull(QImage *img, int layerCount); 0038 0039 void paintCompactGrid(QImage *img) const; 0040 void paintCompactData(QImage *img, const BitVector &data, int layerCount) const; 0041 void paintCompactModeMessage(QImage *img, const BitVector &modeData) const; 0042 QImage cropAndScaleCompact(QImage *img, int layerCount); 0043 }; 0044 0045 } 0046 0047 #endif // PRISON_AZTECCODE_H