summaryrefslogtreecommitdiff
path: root/quacker/graphicalboard.cpp
diff options
context:
space:
mode:
authorJohn Fultz <jfultz@wolfram.com>2019-07-28 16:46:01 -0500
committerJohn Fultz <jfultz@wolfram.com>2019-07-28 16:46:01 -0500
commit98008e148fbd4cbb2a5ea4dfbc88fa19de233749 (patch)
tree1288a13bc6321da4b4fa829ffad9dc0fb59b71e0 /quacker/graphicalboard.cpp
parentf4d4c109d3b099534edb8b39dafd1f371b91ce4d (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.cpp16
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);