diff options
author | John Fultz <jfultz@wolfram.com> | 2019-07-28 16:46:01 -0500 |
---|---|---|
committer | John Fultz <jfultz@wolfram.com> | 2019-07-28 16:46:01 -0500 |
commit | 98008e148fbd4cbb2a5ea4dfbc88fa19de233749 (patch) | |
tree | 1288a13bc6321da4b4fa829ffad9dc0fb59b71e0 /quacker/graphicalboard.cpp | |
parent | f4d4c109d3b099534edb8b39dafd1f371b91ce4d (diff) |
Fix #87, make tiles high-res on HiDpi screens.
QPixmap is still in actual pixels, so it needs to be created
at devicePixelRatio() times its present size, in addition to
having its own devicePixelRatio() set.
Diffstat (limited to 'quacker/graphicalboard.cpp')
-rw-r--r-- | quacker/graphicalboard.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/quacker/graphicalboard.cpp b/quacker/graphicalboard.cpp index 595e830..e6a2599 100644 --- a/quacker/graphicalboard.cpp +++ b/quacker/graphicalboard.cpp @@ -192,7 +192,8 @@ void GraphicalBoardFrame::generateBoardPixmap(QPixmap *pixmap) return; } - *pixmap = QPixmap(m_sizeForBoard); + *pixmap = QPixmap(m_sizeForBoard * devicePixelRatio()); + pixmap->setDevicePixelRatio(devicePixelRatio()); QPainter painter(pixmap); for (QSize currentTile(0, 0); currentTile.height() < m_boardSize.height(); currentTile.setHeight(currentTile.height() + 1)) @@ -413,6 +414,7 @@ void GraphicalBoardFrame::recreateWidgets() { TileWidget *newTile = new TileWidget; + newTile->setDevicePixelRatio(devicePixelRatio()); newTile->setLocation(currentTile); newTile->setAlwaysShowVerboseLabels(m_alwaysShowVerboseLabels); newTile->setOriginalInformation(emptyBoard.tileInformation(currentTile.height(), currentTile.width())); @@ -425,6 +427,7 @@ void GraphicalBoardFrame::recreateWidgets() { MarkWidget *newMark = new MarkWidget; + newMark->setDevicePixelRatio(devicePixelRatio()); if (row == 0) newMark->setCapstone(); else @@ -436,7 +439,10 @@ void GraphicalBoardFrame::recreateWidgets() for (int col = 1; col <= m_boardSize.width(); ++col) { MarkWidget *newMark = new MarkWidget; + + newMark->setDevicePixelRatio(devicePixelRatio()); newMark->setCol(col); + addMark(QSize(col, 0), newMark); } } @@ -1082,6 +1088,11 @@ void TileWidget::setLocation(const QSize &location) m_location = location; } +void TileWidget::setDevicePixelRatio(qreal ratio) +{ + m_devicePixelRatio = ratio; +} + void TileWidget::setCemented(bool cemented) { m_cemented = cemented; @@ -1353,7 +1364,8 @@ QPixmap TileWidget::generateTilePixmap() const QPointF midpoint((double)(currentSize.width() + borderWidth) / 2, (double)(currentSize.height() + borderWidth) / 2); const QColor color(tileColor()); - QPixmap ret(currentSize); + QPixmap ret(currentSize * m_devicePixelRatio); + ret.setDevicePixelRatio(m_devicePixelRatio); if (PixmapCacher::self()->contains(color)) ret = PixmapCacher::self()->get(color); |