diff options
author | Jan-Marek Glogowski <glogow@fbihome.de> | 2017-12-09 23:12:02 +0000 |
---|---|---|
committer | Jan-Marek Glogowski <glogow@fbihome.de> | 2018-01-03 10:20:25 +0100 |
commit | d857e2780e882810bd2d615c0a5252c35c54d987 (patch) | |
tree | d3116a6ea7267a27e0b8139c58393a4a80ad162e /vcl/qt5 | |
parent | 30a3011a5229ea2e6228f6aa265d80204dd4263c (diff) |
Qt5 fix alpha drawing of start center image
Drawing the bottom-left start center image had multiple errors.
New images didn't set the default clip rect and weren't correctly
resized. The damage handling was also missing for alpha bitmaps.
Change-Id: Idabacbb8b507c990a24006152f064ae4f144b89e
Reviewed-on: https://gerrit.libreoffice.org/47277
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
Diffstat (limited to 'vcl/qt5')
-rw-r--r-- | vcl/qt5/Qt5Graphics.cxx | 1 | ||||
-rw-r--r-- | vcl/qt5/Qt5Graphics_GDI.cxx | 8 | ||||
-rw-r--r-- | vcl/qt5/Qt5VirtualDevice.cxx | 8 | ||||
-rw-r--r-- | vcl/qt5/Qt5VirtualDevice.hxx | 5 |
4 files changed, 14 insertions, 8 deletions
diff --git a/vcl/qt5/Qt5Graphics.cxx b/vcl/qt5/Qt5Graphics.cxx index 72226fbc308f..a81c941cf17f 100644 --- a/vcl/qt5/Qt5Graphics.cxx +++ b/vcl/qt5/Qt5Graphics.cxx @@ -41,6 +41,7 @@ Qt5Graphics::Qt5Graphics( Qt5Frame *pFrame, QImage *pQImage ) , m_pTextStyle{ nullptr, } , m_aTextColor( MAKE_SALCOLOR(0x00, 0x00, 0x00) ) { + ResetClipRegion(); } Qt5Graphics::~Qt5Graphics() diff --git a/vcl/qt5/Qt5Graphics_GDI.cxx b/vcl/qt5/Qt5Graphics_GDI.cxx index 4d7f8cf1a8b9..7f0bb5929602 100644 --- a/vcl/qt5/Qt5Graphics_GDI.cxx +++ b/vcl/qt5/Qt5Graphics_GDI.cxx @@ -151,7 +151,10 @@ bool Qt5Graphics::setClipRegion(const vcl::Region& rRegion) void Qt5Graphics::ResetClipRegion() { - m_aClipRegion = QRegion(m_pQImage->rect()); + if (m_pQImage) + m_aClipRegion = QRegion(m_pQImage->rect()); + else + m_aClipRegion = QRegion(); if (!m_aClipPath.isEmpty()) { QPainterPath aPath; @@ -490,7 +493,7 @@ static bool getAlphaImage(const SalBitmap& rSourceBitmap, const SalBitmap& rAlph if (x && !(x % 8)) ++alpha_line; if (0 == (*alpha_line & (1 << (x % 8)))) - image_line[0] = 0; + image_line[3] = 0; } } } @@ -509,6 +512,7 @@ bool Qt5Graphics::drawAlphaBitmap(const SalTwoRect& rPosAry, const SalBitmap& rS aPainter.drawImage( QPoint(rPosAry.mnDestX, rPosAry.mnDestY), aImage, QRect(rPosAry.mnSrcX, rPosAry.mnSrcY, rPosAry.mnSrcWidth, rPosAry.mnSrcHeight)); + aPainter.update(rPosAry.mnDestX, rPosAry.mnDestY, rPosAry.mnDestWidth, rPosAry.mnDestHeight); return true; } diff --git a/vcl/qt5/Qt5VirtualDevice.cxx b/vcl/qt5/Qt5VirtualDevice.cxx index aa8ae4958e0c..fc0c66232853 100644 --- a/vcl/qt5/Qt5VirtualDevice.cxx +++ b/vcl/qt5/Qt5VirtualDevice.cxx @@ -58,10 +58,10 @@ bool Qt5VirtualDevice::SetSizeUsingBuffer(long nNewDX, long nNewDY, sal_uInt8* p if (nNewDY == 0) nNewDY = 1; - if (m_pImage && m_aFrameSize.getX() != nNewDX && m_aFrameSize.getY() != nNewDY) + if (m_pImage && m_aFrameSize.width() == nNewDX && m_aFrameSize.height() == nNewDY) return true; - m_aFrameSize = basegfx::B2IVector(nNewDX, nNewDY); + m_aFrameSize = QSize(nNewDX, nNewDY); nNewDX *= m_fScale; nNewDY *= m_fScale; @@ -87,8 +87,8 @@ bool Qt5VirtualDevice::SetSizeUsingBuffer(long nNewDX, long nNewDY, sal_uInt8* p return true; } -long Qt5VirtualDevice::GetWidth() const { return m_pImage ? m_aFrameSize.getX() : 0; } +long Qt5VirtualDevice::GetWidth() const { return m_pImage ? m_aFrameSize.width() : 0; } -long Qt5VirtualDevice::GetHeight() const { return m_pImage ? m_aFrameSize.getY() : 0; } +long Qt5VirtualDevice::GetHeight() const { return m_pImage ? m_aFrameSize.height() : 0; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/qt5/Qt5VirtualDevice.hxx b/vcl/qt5/Qt5VirtualDevice.hxx index 56f3107e4cc7..80ed0fcf92d1 100644 --- a/vcl/qt5/Qt5VirtualDevice.hxx +++ b/vcl/qt5/Qt5VirtualDevice.hxx @@ -20,11 +20,12 @@ #pragma once #include <salvd.hxx> -#include <basegfx/vector/b2ivector.hxx> #include <memory> #include <list> +#include <QtCore/QSize> + class Qt5Graphics; class QImage; enum class DeviceFormat; @@ -34,7 +35,7 @@ class Qt5VirtualDevice : public SalVirtualDevice std::list<Qt5Graphics*> m_aGraphics; std::unique_ptr<QImage> m_pImage; DeviceFormat m_eFormat; - basegfx::B2IVector m_aFrameSize; + QSize m_aFrameSize; double m_fScale; public: |