#9130 Text in main work area isn't rendered with high resolution

Draw version string to splash image with correct position and size
This commit is contained in:
Stephan Witt 2014-10-20 17:37:12 +02:00
parent 345ec48ed3
commit 84e6b98562

View File

@ -164,23 +164,36 @@ public:
// The font used to display the version info // The font used to display the version info
font.setStyleHint(QFont::SansSerif); font.setStyleHint(QFont::SansSerif);
font.setWeight(QFont::Bold); font.setWeight(QFont::Bold);
font.setPointSize(int(toqstr(lyxrc.font_sizes[FONT_SIZE_LARGE]).toDouble())); int size = int(toqstr(lyxrc.font_sizes[FONT_SIZE_LARGE]).toDouble());
size *= splashPixelRatio() / pixelRatio();
font.setPointSize(size);
pain.setFont(font); pain.setFont(font);
pain.drawText(190, 225, text); int x = 190;
int y = 225;
x *= splashPixelRatio() / pixelRatio();
y *= splashPixelRatio() / pixelRatio();
LYXERR(Debug::GUI,
"widget pixel ratio: " << pixelRatio() <<
" splash pixel ratio: " << splashPixelRatio() <<
" text position: @" << x << "+" << y);
pain.drawText(x, y, text);
setFocusPolicy(Qt::StrongFocus); setFocusPolicy(Qt::StrongFocus);
} }
void paintEvent(QPaintEvent *) void paintEvent(QPaintEvent *)
{ {
QRectF r = splash_.rect(); int w = splash_.width();
#if QT_VERSION >= 0x050000 int h = splash_.height();
r.setWidth(r.width() / splash_.devicePixelRatio()); w /= splashPixelRatio();
r.setHeight(r.height() / splash_.devicePixelRatio()); h /= splashPixelRatio();
#endif int x = (width() - w) / 2;
int x = (width() - r.width()) / 2; int y = (height() - h) / 2;
int y = (height() - r.height()) / 2; LYXERR(Debug::GUI,
"widget pixel ratio: " << pixelRatio() <<
" splash pixel ratio: " << splashPixelRatio() <<
" paint pixmap: " << w << "x" << h << "@" << x << "+" << y);
QPainter pain(this); QPainter pain(this);
pain.drawPixmap(x, y, splash_); pain.drawPixmap(x, y, w, h, splash_);
} }
void keyPressEvent(QKeyEvent * ev) void keyPressEvent(QKeyEvent * ev)
@ -197,6 +210,24 @@ public:
private: private:
QPixmap splash_; QPixmap splash_;
/// Current ratio between physical pixels and device-independent pixels
double pixelRatio() const {
#if QT_VERSION >= 0x050000
return devicePixelRatio();
#else
return 1.0;
#endif
}
/// Ratio between physical pixels and device-independent pixels of splash image
double splashPixelRatio() const {
#if QT_VERSION >= 0x050000
return splash_.devicePixelRatio();
#else
return 1.0;
#endif
}
}; };