Kaydet (Commit) f93f0d0d authored tarafından Jan-Marek Glogowski's avatar Jan-Marek Glogowski Kaydeden (comit) Thorsten Behrens

Qt5/KDE5 use logicalDotsPerInch to report DPI

It looks like all other backend don't use the physical, but the
logical DPI to report the resolution.
So use the QScreens logical resolution when reporting the DPI
values. Also use QScreen for KDE5, as the Svp defaults to 96.

This might fix tdf#122131, but since I can't reproduce...

Change-Id: Iefc75acf26f8664f2a9ad995edbdc749be2228cf
Reviewed-on: https://gerrit.libreoffice.org/66525
Tested-by: Jenkins
Reviewed-by: 's avatarJan-Marek Glogowski <glogow@fbihome.de>
(cherry picked from commit b0b089e8)
Reviewed-on: https://gerrit.libreoffice.org/67410Reviewed-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: 's avatarThorsten Behrens <Thorsten.Behrens@CIB.de>
üst 133c8c08
......@@ -643,8 +643,8 @@ void Qt5Graphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY)
return;
QScreen* pScreen = m_pFrame->GetQWidget()->window()->windowHandle()->screen();
rDPIX = pScreen->physicalDotsPerInchX();
rDPIY = pScreen->physicalDotsPerInchY();
rDPIX = pScreen->logicalDotsPerInchX();
rDPIY = pScreen->logicalDotsPerInchY();
}
sal_uInt16 Qt5Graphics::GetBitCount() const { return getFormatBits(m_pQImage->format()); }
......
......@@ -210,7 +210,7 @@ SalGraphics* KDE5SalFrame::AcquireGraphics()
if (!m_pKDE5Graphics.get())
{
m_pKDE5Graphics.reset(new KDE5SalGraphics());
m_pKDE5Graphics.reset(new KDE5SalGraphics(this));
Qt5Frame::InitSvpSalGraphics(m_pKDE5Graphics.get());
}
......
......@@ -21,7 +21,11 @@
#include <salbmp.hxx>
#include <QtGui/QScreen>
#include <QtGui/QWindow>
#include <Qt5Tools.hxx>
#include <Qt5Frame.hxx>
static void QImage2BitmapBuffer(QImage* pImg, BitmapBuffer* pBuf)
{
......@@ -35,8 +39,9 @@ static void QImage2BitmapBuffer(QImage* pImg, BitmapBuffer* pBuf)
}
}
KDE5SalGraphics::KDE5SalGraphics()
KDE5SalGraphics::KDE5SalGraphics(Qt5Frame* pFrame)
: SvpSalGraphics()
, m_pFrame(pFrame)
{
}
......@@ -59,4 +64,22 @@ bool KDE5SalGraphics::drawNativeControl(ControlType nType, ControlPart nPart,
return bHandled;
}
void KDE5SalGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY)
{
char* pForceDpi;
if ((pForceDpi = getenv("SAL_FORCEDPI")))
{
OString sForceDPI(pForceDpi);
rDPIX = rDPIY = sForceDPI.toInt32();
return;
}
if (!m_pFrame || !m_pFrame->GetQWidget()->window()->windowHandle())
return;
QScreen* pScreen = m_pFrame->GetQWidget()->window()->windowHandle()->screen();
rDPIX = pScreen->logicalDotsPerInchX();
rDPIY = pScreen->logicalDotsPerInchY();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -29,13 +29,15 @@
#include <QtGui/QImage>
#include <QtWidgets/QPushButton>
class Qt5Frame;
/**
* Handles native graphics requests and performs the needed drawing operations.
*/
class KDE5SalGraphics : public SvpSalGraphics
{
public:
KDE5SalGraphics();
KDE5SalGraphics(Qt5Frame* pFrame);
virtual bool IsNativeControlSupported(ControlType, ControlPart) override;
virtual bool hitTestNativeControl(ControlType, ControlPart, const tools::Rectangle&,
......@@ -48,8 +50,11 @@ public:
ControlState, const ImplControlValue&, const OUString&,
tools::Rectangle&, tools::Rectangle&) override;
virtual void GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) override;
private:
Qt5Graphics_Controls m_aControl;
Qt5Frame* m_pFrame;
};
inline bool KDE5SalGraphics::IsNativeControlSupported(ControlType nType, ControlPart nPart)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment