Author: jghali
Date: Mon Dec  7 19:00:21 2020
New Revision: 24309

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24309
Log:
#16379 : Adjustments for splash screen : scale smoothly if device pixel ratio 
is not an integer value

Modified:
    trunk/Scribus/scribus/scribuscore.cpp
    trunk/Scribus/scribus/ui/about.cpp

Modified: trunk/Scribus/scribus/scribuscore.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24309&path=/trunk/Scribus/scribus/scribuscore.cpp
==============================================================================
--- trunk/Scribus/scribus/scribuscore.cpp       (original)
+++ trunk/Scribus/scribus/scribuscore.cpp       Mon Dec  7 19:00:21 2020
@@ -23,10 +23,12 @@
 
 #include <cassert>
 #include <iostream>
+
 #include <QByteArray>
 #include <QDebug>
 #include <QGlobalStatic>
 #include <QMessageBox>
+#include <QScreen>
 
 #include "colormgmt/sccolormgmtenginefactory.h"
 #include "commonstrings.h"
@@ -208,7 +210,20 @@
        m_SplashScreen = nullptr;
        if (!showSplash)
                return;
+
+       QScreen* primaryScreeen = qApp->primaryScreen();
+       double pixelRatio = primaryScreeen ? primaryScreeen->devicePixelRatio() 
: 1.0;
        QPixmap pix = IconManager::instance().loadPixmap("scribus_splash.png", 
true);
+       if (pixelRatio != 1.0)
+       {
+               int w = qRound(pix.width() * pixelRatio);
+               int h = qRound(pix.height() * pixelRatio);
+               double integralPart = 0;
+               bool isIntegerRatio = (modf(pixelRatio, &integralPart) == 0.0);
+               pix = pix.scaled(w, h, Qt::IgnoreAspectRatio, isIntegerRatio ? 
Qt::FastTransformation : Qt::SmoothTransformation);
+               pix.setDevicePixelRatio(pixelRatio);
+       }
+
        m_SplashScreen = new ScSplashScreen(pix, Qt::WindowStaysOnTopHint);
        if (m_SplashScreen != nullptr)
        {

Modified: trunk/Scribus/scribus/ui/about.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=24309&path=/trunk/Scribus/scribus/ui/about.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/about.cpp  (original)
+++ trunk/Scribus/scribus/ui/about.cpp  Mon Dec  7 19:00:21 2020
@@ -106,9 +106,24 @@
        tabLayout1 = new QVBoxLayout( tab );
        tabLayout1->setSpacing( 6 );
        tabLayout1->setMargin( 15 );
+
+       double pixelRatio = devicePixelRatioF();
+       QPixmap splashPixmap = 
IconManager::instance().loadPixmap("scribus_splash.png", true);
+       double splashPixmapW = splashPixmap.width();
+       double splashPixmapH = splashPixmap.height();
+       if (pixelRatio != 1.0)
+       {
+               int w = qRound(splashPixmap.width() * pixelRatio);
+               int h = qRound(splashPixmap.height() * pixelRatio);
+               double integralPart = 0;
+               bool isIntegerRatio = (modf(pixelRatio, &integralPart) == 0.0);
+               splashPixmap = splashPixmap.scaled(w, h, Qt::IgnoreAspectRatio, 
isIntegerRatio ? Qt::FastTransformation : Qt::SmoothTransformation);
+               splashPixmap.setDevicePixelRatio(pixelRatio);
+       }
+
        pixmapLabel1 = new QLabel( tab );
-       
pixmapLabel1->setPixmap(IconManager::instance().loadPixmap("scribus_splash.png",
 true));
-       pixmapLabel1->setFixedSize(QSize(pixmapLabel1->pixmap()->width(), 
pixmapLabel1->pixmap()->height()));
+       pixmapLabel1->setPixmap(splashPixmap);
+       pixmapLabel1->setFixedSize(QSize(splashPixmapW, splashPixmapH));
        pixmapLabel1->setAlignment(Qt::AlignCenter);
        tabLayout1->addWidget( pixmapLabel1 );
        buildID = new QLabel( tab );


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to