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