diff options
Diffstat (limited to 'src/libwalletqt')
| -rw-r--r-- | src/libwalletqt/QRCodeImageProvider.cpp | 17 | ||||
| -rw-r--r-- | src/libwalletqt/QRCodeImageProvider.h | 11 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/libwalletqt/QRCodeImageProvider.cpp b/src/libwalletqt/QRCodeImageProvider.cpp new file mode 100644 index 00000000..217d3d7d --- /dev/null +++ b/src/libwalletqt/QRCodeImageProvider.cpp @@ -0,0 +1,17 @@ +#include "QrCode.hpp" + +#include "QRCodeImageProvider.h" + +QImage QRCodeImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize) +{ + using namespace qrcodegen; + + QrCode qrcode = QrCode::encodeText(id.toStdString().c_str(), QrCode::Ecc::MEDIUM); + QImage img = QImage(qrcode.size, qrcode.size, QImage::Format_Mono); + for (int y = 0; y < qrcode.size; ++y) + for (int x = 0; x < qrcode.size; ++x) + img.setPixel(x, y, qrcode.getModule(x, y)); + if (size) + *size = QSize(qrcode.size, qrcode.size); + return img; +} diff --git a/src/libwalletqt/QRCodeImageProvider.h b/src/libwalletqt/QRCodeImageProvider.h new file mode 100644 index 00000000..930b731a --- /dev/null +++ b/src/libwalletqt/QRCodeImageProvider.h @@ -0,0 +1,11 @@ +#include <QImage> +#include <QQuickImageProvider> + +class QRCodeImageProvider: public QQuickImageProvider +{ +public: + QRCodeImageProvider(): QQuickImageProvider(QQuickImageProvider::Image) {} + + QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize); +}; + |
