commit 84e6b98562d2528298b4b0d3d451749d16e05a93
Author: Stephan Witt <[email protected]>
Date:   Mon Oct 20 17:37:12 2014 +0200

    #9130 Text in main work area isn't rendered with high resolution
    Draw version string to splash image with correct position and size

diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp
index 09a3299..b690ac1 100644
--- a/src/frontends/qt4/GuiView.cpp
+++ b/src/frontends/qt4/GuiView.cpp
@@ -164,23 +164,36 @@ public:
                // The font used to display the version info
                font.setStyleHint(QFont::SansSerif);
                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.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);
        }
 
        void paintEvent(QPaintEvent *)
        {
-               QRectF r = splash_.rect();
-#if QT_VERSION >= 0x050000
-               r.setWidth(r.width() / splash_.devicePixelRatio());
-               r.setHeight(r.height() / splash_.devicePixelRatio());
-#endif
-               int x = (width() - r.width()) / 2;
-               int y = (height() - r.height()) / 2;
+               int w = splash_.width();
+               int h = splash_.height();
+               w /= splashPixelRatio();
+               h /= splashPixelRatio();
+               int x = (width() - w) / 2;
+               int y = (height() - h) / 2;
+               LYXERR(Debug::GUI,
+                          "widget pixel ratio: " << pixelRatio() <<
+                          " splash pixel ratio: " << splashPixelRatio() <<
+                          " paint pixmap: " << w << "x" << h << "@" << x << 
"+" << y);
                QPainter pain(this);
-               pain.drawPixmap(x, y, splash_);
+               pain.drawPixmap(x, y, w, h, splash_);
        }
 
        void keyPressEvent(QKeyEvent * ev)
@@ -197,6 +210,24 @@ public:
 
 private:
        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
+       }
 };
 
 

Reply via email to