1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00

Fixed multiple HiDPI map render issues

This commit is contained in:
Martin Tůma 2024-02-06 22:37:01 +01:00
parent fe70b31212
commit f7f680b93e
2 changed files with 11 additions and 6 deletions

View File

@ -7,7 +7,8 @@
static QImage img2line(const QImage &img, int width)
{
Q_ASSERT(img.format() == QImage::Format_ARGB32_Premultiplied);
QImage res(width, img.height(), QImage::Format_ARGB32_Premultiplied);
QImage res(width * img.devicePixelRatio(), img.height(),
QImage::Format_ARGB32_Premultiplied);
const int srcBpl = img.bytesPerLine();
const int dstBpl = res.bytesPerLine();
const uchar *srcBits = img.bits();
@ -21,6 +22,8 @@ static QImage img2line(const QImage &img, int width)
memcpy(dstLine, srcLine, qMin(j, srcBpl));
}
res.setDevicePixelRatio(img.devicePixelRatio());
return res;
}

View File

@ -294,15 +294,16 @@ void TextPathItem::init(const T &line, const QRect &tileRect)
if (label && _img) {
cw = _font->pixelSize() * CHAR_RATIO;
mw = _font->pixelSize() / 2.0;
textWidth = _text->size() * cw + _img->width() + PADDING;
textWidth = _text->size() * cw
+ (_img->width() / _img->devicePixelRatioF()) + PADDING;
} else if (label) {
cw = _font->pixelSize() * CHAR_RATIO;
mw = _font->pixelSize() / 2.0;
textWidth = _text->size() * cw;
} else {
cw = _img->width();
mw = _img->height() / 2.0;
textWidth = _img->width();
cw = _img->width() / _img->devicePixelRatioF();
mw = _img->height() / _img->devicePixelRatioF() / 2.0;
textWidth = _img->width() / _img->devicePixelRatioF();
}
_path = textPath(line, textWidth, cw, tileRect.adjusted(mw, mw, -mw, -mw));
@ -358,7 +359,8 @@ void TextPathItem::paint(QPainter *painter) const
if (_text && _font) {
QFontMetrics fm(*_font);
int textWidth = fm.boundingRect(*_text).width();
int imgWidth = _img ? _img->width() + PADDING : 0;
int imgWidth = _img
? (_img->width() / _img->devicePixelRatioF()) + PADDING : 0;
qreal imgPercent = imgWidth / _path.length();
qreal factor = textWidth / qMax(_path.length(), (qreal)(textWidth));
qreal percent = ((1.0 - factor) + imgPercent) / 2.0;