From 6954156b4091bc1e561502f0eef0cece56c76eec Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 23 Aug 2020 23:53:17 +0300 Subject: qt: Fix visual quality of text in QR image --- src/qt/qrimagewidget.cpp | 18 ++++++++++-------- src/qt/qrimagewidget.h | 4 +++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/qt/qrimagewidget.cpp b/src/qt/qrimagewidget.cpp index de630b991b..52f1e60957 100644 --- a/src/qt/qrimagewidget.cpp +++ b/src/qt/qrimagewidget.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -64,24 +65,25 @@ bool QRImageWidget::setQR(const QString& data, const QString& text) } QRcode_free(code); - QImage qrAddrImage = QImage(QR_IMAGE_SIZE, QR_IMAGE_SIZE + (text.isEmpty() ? 0 : 20), QImage::Format_RGB32); + const int qr_image_size = QR_IMAGE_SIZE + (text.isEmpty() ? 0 : 2 * QR_IMAGE_MARGIN); + QImage qrAddrImage(qr_image_size, qr_image_size, QImage::Format_RGB32); qrAddrImage.fill(0xffffff); { QPainter painter(&qrAddrImage); - painter.drawImage(0, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE)); + painter.drawImage(QR_IMAGE_MARGIN, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE)); if (!text.isEmpty()) { - QFont font = GUIUtil::fixedPitchFont(); - font.setStyleStrategy(QFont::NoAntialias); QRect paddedRect = qrAddrImage.rect(); + paddedRect.setHeight(QR_IMAGE_SIZE + QR_IMAGE_TEXT_MARGIN); - // calculate ideal font size - qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 20, text, font); + QFont font = GUIUtil::fixedPitchFont(); + font.setStretch(QFont::SemiCondensed); + font.setLetterSpacing(QFont::AbsoluteSpacing, 1); + const qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 2 * QR_IMAGE_TEXT_MARGIN, text, font); font.setPointSizeF(font_size); painter.setFont(font); - paddedRect.setHeight(QR_IMAGE_SIZE+12); - painter.drawText(paddedRect, Qt::AlignBottom|Qt::AlignCenter, text); + painter.drawText(paddedRect, Qt::AlignBottom | Qt::AlignCenter, text); } } diff --git a/src/qt/qrimagewidget.h b/src/qt/qrimagewidget.h index cca598c2ce..a031bd7632 100644 --- a/src/qt/qrimagewidget.h +++ b/src/qt/qrimagewidget.h @@ -12,7 +12,9 @@ static const int MAX_URI_LENGTH = 255; /* Size of exported QR Code image */ -static const int QR_IMAGE_SIZE = 300; +static constexpr int QR_IMAGE_SIZE = 300; +static constexpr int QR_IMAGE_TEXT_MARGIN = 10; +static constexpr int QR_IMAGE_MARGIN = 2 * QR_IMAGE_TEXT_MARGIN; QT_BEGIN_NAMESPACE class QMenu; -- cgit v1.2.3