Skip to content

Commit 5043767

Browse files
committed
Merge 49984b4 into merged_master (Bitcoin PR bitcoin-core/gui#71)
2 parents 2708260 + 49984b4 commit 5043767

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

src/qt/qrimagewidget.cpp

+17-14
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <QApplication>
1010
#include <QClipboard>
1111
#include <QDrag>
12+
#include <QFontDatabase>
1213
#include <QMenu>
1314
#include <QMimeData>
1415
#include <QMouseEvent>
@@ -67,26 +68,28 @@ bool QRImageWidget::setQR(const QString& data, const QString& text)
6768
// Elements: Hack to get QR address to print right
6869
const size_t MORE_WIDTH = 80;
6970
70-
QImage qrAddrImage = QImage(QR_IMAGE_SIZE + MORE_WIDTH, QR_IMAGE_SIZE + 16 + fm.height(), QImage::Format_RGB32);
71+
const int qr_image_size = QR_IMAGE_SIZE + MORE_WIDTH + (text.isEmpty() ? 0 : 2 * QR_IMAGE_MARGIN);
72+
QImage qrAddrImage(qr_image_size, qr_image_size, QImage::Format_RGB32);
7173
qrAddrImage.fill(0xffffff);
72-
QPainter painter(&qrAddrImage);
73-
painter.drawImage(MORE_WIDTH/2, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE));
74+
{
75+
QPainter painter(&qrAddrImage);
76+
painter.drawImage(QR_IMAGE_MARGIN + MORE_WIDTH/2, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE));
7477

75-
if (!text.isEmpty()) {
76-
QFont font = GUIUtil::fixedPitchFont();
77-
font.setStyleStrategy(QFont::NoAntialias);
78-
QRect paddedRect = qrAddrImage.rect();
78+
if (!text.isEmpty()) {
79+
QRect paddedRect = qrAddrImage.rect();
80+
paddedRect.setHeight(QR_IMAGE_SIZE + QR_IMAGE_TEXT_MARGIN);
7981

80-
// calculate ideal font size
81-
qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 20, text, font);
82-
font.setPointSizeF(font_size);
82+
QFont font = GUIUtil::fixedPitchFont();
83+
font.setStretch(QFont::SemiCondensed);
84+
font.setLetterSpacing(QFont::AbsoluteSpacing, 1);
85+
const qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 2 * QR_IMAGE_TEXT_MARGIN, text, font);
86+
font.setPointSizeF(font_size);
8387

84-
painter.setFont(font);
85-
paddedRect.setHeight(QR_IMAGE_SIZE+12);
86-
painter.drawText(paddedRect, Qt::AlignBottom|Qt::AlignCenter, text);
88+
painter.setFont(font);
89+
painter.drawText(paddedRect, Qt::AlignBottom | Qt::AlignCenter, text);
90+
}
8791
}
8892

89-
painter.end();
9093
setPixmap(QPixmap::fromImage(qrAddrImage));
9194

9295
return true;

src/qt/qrimagewidget.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
static const int MAX_URI_LENGTH = 255;
1313

1414
/* Size of exported QR Code image */
15-
static const int QR_IMAGE_SIZE = 300;
15+
static constexpr int QR_IMAGE_SIZE = 300;
16+
static constexpr int QR_IMAGE_TEXT_MARGIN = 10;
17+
static constexpr int QR_IMAGE_MARGIN = 2 * QR_IMAGE_TEXT_MARGIN;
1618

1719
QT_BEGIN_NAMESPACE
1820
class QMenu;

0 commit comments

Comments
 (0)