Skip to content

Commit

Permalink
Use flexible font size for QRCode image address
Browse files Browse the repository at this point in the history
  • Loading branch information
jonasschnelli committed Jan 15, 2018
1 parent 0910cbe commit 59f9e2a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
12 changes: 12 additions & 0 deletions src/qt/guiutil.cpp
Expand Up @@ -995,6 +995,18 @@ QString formatBytes(uint64_t bytes)
return QString(QObject::tr("%1 GB")).arg(bytes / 1024 / 1024 / 1024);
}

qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal minPointSize, qreal font_size) {
while(font_size >= minPointSize) {
font.setPointSizeF(font_size);
QFontMetrics fm(font);
if (fm.width(text) < width) {
break;
}
font_size -= 0.5;
}
return font_size;
}

void ClickableLabel::mouseReleaseEvent(QMouseEvent *event)
{
Q_EMIT clicked(event->pos());
Expand Down
2 changes: 2 additions & 0 deletions src/qt/guiutil.h
Expand Up @@ -201,6 +201,8 @@ namespace GUIUtil

QString formatBytes(uint64_t bytes);

qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal minPointSize = 4, qreal startPointSize = 14);

class ClickableLabel : public QLabel
{
Q_OBJECT
Expand Down
8 changes: 6 additions & 2 deletions src/qt/receiverequestdialog.cpp
Expand Up @@ -183,9 +183,13 @@ void ReceiveRequestDialog::update()
QPainter painter(&qrAddrImage);
painter.drawImage(0, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE));
QFont font = GUIUtil::fixedPitchFont();
font.setPixelSize(12);
painter.setFont(font);
QRect paddedRect = qrAddrImage.rect();

// calculate ideal font size
qreal font_size = GUIUtil::calculateIdealFontSize(paddedRect.width() - 20, info.address, font);
font.setPointSizeF(font_size);

painter.setFont(font);
paddedRect.setHeight(QR_IMAGE_SIZE+12);
painter.drawText(paddedRect, Qt::AlignBottom|Qt::AlignCenter, info.address);
painter.end();
Expand Down

0 comments on commit 59f9e2a

Please sign in to comment.