aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt/QRCodeImageProvider.cpp
blob: 6d99b35cda341ab20b98aa3dfc8f9e1e2d280d27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "QrCode.hpp"

#include "QRCodeImageProvider.h"

QImage QRCodeImageProvider::genQrImage(const QString &id, QSize *size)
{
  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)); // 1 is black, not "255/white"
  if (size)
    *size = QSize(qrcode.size, qrcode.size);
  return img;
}

QImage QRCodeImageProvider::requestImage(const QString &id, QSize *size, const QSize &/* requestedSize */)
{
  return genQrImage(id, size);
}