drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx | 20 +++---- include/vcl/animate/Animation.hxx | 1 include/vcl/animate/AnimationFrame.hxx | 10 +-- sd/source/filter/grf/sdgrffilter.cxx | 2 sd/source/ui/dlg/animobjs.cxx | 4 - slideshow/source/engine/shapes/gdimtftools.cxx | 20 +++---- svx/source/dialog/_bmpmask.cxx | 4 - svx/source/dialog/_contdlg.cxx | 2 svx/source/xoutdev/_xoutbmp.cxx | 2 vcl/qa/cppunit/GraphicTest.cxx | 6 +- vcl/qa/cppunit/TypeSerializerTest.cxx | 4 - vcl/qa/cppunit/animation.cxx | 10 +-- vcl/qa/cppunit/animationrenderer.cxx | 6 +- vcl/qa/cppunit/png/PngFilterTest.cxx | 12 ++-- vcl/source/animate/Animation.cxx | 30 +++++------ vcl/source/animate/AnimationFrame.cxx | 2 vcl/source/animate/AnimationRenderer.cxx | 2 vcl/source/bitmap/bitmapfilter.cxx | 2 vcl/source/filter/egif/egif.cxx | 2 vcl/source/filter/etiff/etiff.cxx | 6 +- vcl/source/filter/igif/gifread.cxx | 10 +-- vcl/source/filter/itiff/itiff.cxx | 2 vcl/source/filter/png/PngImageReader.cxx | 4 - vcl/source/filter/png/PngImageWriter.cxx | 2 vcl/source/graphic/GraphicObject.cxx | 2 25 files changed, 84 insertions(+), 83 deletions(-)
New commits: commit 37baf97cedb58cd602cf451f7b23659f01ce9bfe Author: Noel Grandin <[email protected]> AuthorDate: Fri Aug 29 11:51:45 2025 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Sat Aug 30 12:11:17 2025 +0200 BitmapEx->Bitmap in AnimationFrame now that Bitmap supports transparency Change-Id: I7bd64088bc1e23f4c373bf554756644c3cb828a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190405 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins diff --git a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx index 17db841a7f77..a758787540de 100644 --- a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx +++ b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx @@ -293,7 +293,7 @@ namespace drawinglayer::primitive2d if (bSourceBlending) { - tools::Rectangle aArea(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmapEx.GetSizePixel()); + tools::Rectangle aArea(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap.GetSizePixel()); maVirtualDevice->Erase(aArea); maVirtualDeviceMask->Erase(aArea); } @@ -302,8 +302,8 @@ namespace drawinglayer::primitive2d { case Disposal::Not: { - maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmapEx); - AlphaMask aAlphaMask = rAnimationFrame.maBitmapEx.GetAlphaMask(); + maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap); + AlphaMask aAlphaMask = rAnimationFrame.maBitmap.CreateAlphaMask(); if (aAlphaMask.IsEmpty()) { @@ -323,21 +323,21 @@ namespace drawinglayer::primitive2d case Disposal::Back: { // #i70772# react on no mask, for primitives, too. - const AlphaMask & rMask(rAnimationFrame.maBitmapEx.GetAlphaMask()); maVirtualDeviceMask->Erase(); - maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmapEx); + maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap); - if (rMask.IsEmpty()) + if (!rAnimationFrame.maBitmap.HasAlpha()) { - const ::tools::Rectangle aRect(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmapEx.GetSizePixel()); + const ::tools::Rectangle aRect(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap.GetSizePixel()); maVirtualDeviceMask->SetFillColor(COL_BLACK); maVirtualDeviceMask->SetLineColor(); maVirtualDeviceMask->DrawRect(aRect); } else { - BitmapEx aExpandVisibilityMask(rMask.GetBitmap(), rMask); + const AlphaMask aMask(rAnimationFrame.maBitmap.CreateAlphaMask()); + BitmapEx aExpandVisibilityMask(aMask.GetBitmap(), aMask); maVirtualDeviceMask->DrawBitmapEx(rAnimationFrame.maPositionPixel, aExpandVisibilityMask); } @@ -345,8 +345,8 @@ namespace drawinglayer::primitive2d } case Disposal::Previous: { - maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmapEx); - BitmapEx aExpandVisibilityMask(rAnimationFrame.maBitmapEx.GetAlphaMask().GetBitmap(), rAnimationFrame.maBitmapEx.GetAlphaMask()); + maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap); + BitmapEx aExpandVisibilityMask(rAnimationFrame.maBitmap.CreateAlphaMask().GetBitmap(), rAnimationFrame.maBitmap.CreateAlphaMask()); maVirtualDeviceMask->DrawBitmapEx(rAnimationFrame.maPositionPixel, aExpandVisibilityMask); break; } diff --git a/include/vcl/animate/Animation.hxx b/include/vcl/animate/Animation.hxx index a6ec7db4192f..6c187c68e884 100644 --- a/include/vcl/animate/Animation.hxx +++ b/include/vcl/animate/Animation.hxx @@ -23,6 +23,7 @@ #include <tools/solar.h> #include <vcl/dllapi.h> #include <vcl/timer.hxx> +#include <vcl/bitmapex.hxx> #include <vcl/animate/AnimationFrame.hxx> #define ANIMATION_TIMEOUT_ON_CLICK 2147483647L diff --git a/include/vcl/animate/AnimationFrame.hxx b/include/vcl/animate/AnimationFrame.hxx index 3e9a4b21d168..0c81463c51e9 100644 --- a/include/vcl/animate/AnimationFrame.hxx +++ b/include/vcl/animate/AnimationFrame.hxx @@ -19,7 +19,7 @@ #pragma once -#include <vcl/bitmapex.hxx> +#include <vcl/bitmap.hxx> enum class Disposal { @@ -36,7 +36,7 @@ enum class Blend struct AnimationFrame { - BitmapEx maBitmapEx; + Bitmap maBitmap; Point maPositionPixel; Size maSizePixel; tools::Long mnWait; @@ -52,10 +52,10 @@ struct AnimationFrame { } - AnimationFrame(const BitmapEx& rBitmapEx, const Point& rPositionPixel, const Size& rSizePixel, + AnimationFrame(const Bitmap& rBitmap, const Point& rPositionPixel, const Size& rSizePixel, tools::Long nWait = 0, Disposal eDisposal = Disposal::Not, Blend eBlend = Blend::Over) - : maBitmapEx(rBitmapEx) + : maBitmap(rBitmap) , maPositionPixel(rPositionPixel) , maSizePixel(rSizePixel) , mnWait(nWait) @@ -67,7 +67,7 @@ struct AnimationFrame bool operator==(const AnimationFrame& rAnimationFrame) const { - return (rAnimationFrame.maBitmapEx == maBitmapEx + return (rAnimationFrame.maBitmap == maBitmap && rAnimationFrame.maPositionPixel == maPositionPixel && rAnimationFrame.maSizePixel == maSizePixel && rAnimationFrame.mnWait == mnWait && rAnimationFrame.meDisposal == meDisposal && rAnimationFrame.meBlend == meBlend diff --git a/sd/source/filter/grf/sdgrffilter.cxx b/sd/source/filter/grf/sdgrffilter.cxx index 26469e5dc7bc..f261efa17d27 100644 --- a/sd/source/filter/grf/sdgrffilter.cxx +++ b/sd/source/filter/grf/sdgrffilter.cxx @@ -167,7 +167,7 @@ bool SdGRFFilter::Import() } for (size_t nPageIndex = 0; nPageIndex < nImages; ++nPageIndex) { - InsertSdrGrafObj(Bitmap(aAnim.Get(nPageIndex).maBitmapEx), + InsertSdrGrafObj(aAnim.Get(nPageIndex).maBitmap, mrDocument.GetSdPage(nPageIndex, PageKind::Standard)); } } diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx index 5c7dcab4f7b4..5026369f2327 100644 --- a/sd/source/ui/dlg/animobjs.cxx +++ b/sd/source/ui/dlg/animobjs.cxx @@ -745,7 +745,7 @@ void AnimationWindow::AddObj (::sd::View& rView ) size_t nIndex = m_nCurrentFrame + 1; m_FrameList.insert( m_FrameList.begin() + nIndex, - ::std::make_pair(Bitmap(rAnimationFrame.maBitmapEx), aTime)); + ::std::make_pair(rAnimationFrame.maBitmap, aTime)); // increment => next one inserted after this one ++m_nCurrentFrame; @@ -968,7 +968,7 @@ void AnimationWindow::CreateAnimObj (::sd::View& rView ) if( nPos != -1 && nPos != m_xLbLoopCount->get_count() - 1 ) // endless nLoopCount = m_xLbLoopCount->get_active_text().toUInt32(); - aAnimationFrame.maBitmapEx = rBitmap; + aAnimationFrame.maBitmap = rBitmap; aAnimationFrame.maPositionPixel = aPt; aAnimationFrame.maSizePixel = aBitmapSize; aAnimationFrame.mnWait = nTime; diff --git a/slideshow/source/engine/shapes/gdimtftools.cxx b/slideshow/source/engine/shapes/gdimtftools.cxx index e7c33528dc31..cba95f33ea31 100644 --- a/slideshow/source/engine/shapes/gdimtftools.cxx +++ b/slideshow/source/engine/shapes/gdimtftools.cxx @@ -298,10 +298,9 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames, case Disposal::Not: { pVDev->DrawBitmapEx(rAnimationFrame.maPositionPixel, - rAnimationFrame.maBitmapEx); - AlphaMask aMask = rAnimationFrame.maBitmapEx.GetAlphaMask(); + rAnimationFrame.maBitmap); - if (aMask.IsEmpty()) + if (!rAnimationFrame.maBitmap.HasAlpha()) { const tools::Rectangle aRect(aEmptyPoint, pVDevMask->GetOutputSizePixel()); const Wallpaper aWallpaper(COL_BLACK); @@ -309,6 +308,7 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames, } else { + AlphaMask aMask = rAnimationFrame.maBitmap.CreateAlphaMask(); BitmapEx aTmpMask(aMask.GetBitmap(), aMask); pVDevMask->DrawBitmapEx(rAnimationFrame.maPositionPixel, aTmpMask); } @@ -318,22 +318,22 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames, case Disposal::Back: { // #i70772# react on no mask - const AlphaMask aMask(rAnimationFrame.maBitmapEx.GetAlphaMask()); - const Bitmap& rContent(rAnimationFrame.maBitmapEx.GetBitmap()); + const Bitmap aContent(rAnimationFrame.maBitmap.CreateColorBitmap()); pVDevMask->Erase(); - pVDev->DrawBitmap(rAnimationFrame.maPositionPixel, rContent); + pVDev->DrawBitmap(rAnimationFrame.maPositionPixel, aContent); - if (aMask.IsEmpty()) + if (!rAnimationFrame.maBitmap.HasAlpha()) { const tools::Rectangle aRect(rAnimationFrame.maPositionPixel, - rContent.GetSizePixel()); + aContent.GetSizePixel()); pVDevMask->SetFillColor(COL_BLACK); pVDevMask->SetLineColor(); pVDevMask->DrawRect(aRect); } else { + const AlphaMask aMask(rAnimationFrame.maBitmap.CreateAlphaMask()); pVDevMask->DrawBitmap(rAnimationFrame.maPositionPixel, aMask.GetBitmap()); } break; @@ -342,9 +342,9 @@ bool getAnimationFromGraphic( VectorOfMtfAnimationFrames& o_rFrames, case Disposal::Previous: { pVDev->DrawBitmapEx(rAnimationFrame.maPositionPixel, - rAnimationFrame.maBitmapEx); + rAnimationFrame.maBitmap); pVDevMask->DrawBitmap(rAnimationFrame.maPositionPixel, - rAnimationFrame.maBitmapEx.GetAlphaMask().GetBitmap()); + rAnimationFrame.maBitmap.CreateAlphaMask().GetBitmap()); break; } } diff --git a/svx/source/dialog/_bmpmask.cxx b/svx/source/dialog/_bmpmask.cxx index feb9b54965a4..cbe38c725bc9 100644 --- a/svx/source/dialog/_bmpmask.cxx +++ b/svx/source/dialog/_bmpmask.cxx @@ -635,7 +635,7 @@ Animation SvxBmpMask::ImpMask( const Animation& rAnimation ) for( sal_uInt16 i = 0; i < nAnimationCount; i++ ) { AnimationFrame aAnimationFrame( aAnimation.Get( i ) ); - aAnimationFrame.maBitmapEx = BitmapEx(Mask(Bitmap(aAnimationFrame.maBitmapEx)).GetBitmap()); + aAnimationFrame.maBitmap = Mask(aAnimationFrame.maBitmap).GetBitmap(); aAnimation.Replace(aAnimationFrame, i); } @@ -892,7 +892,7 @@ Animation SvxBmpMask::ImpReplaceTransparency( const Animation& rAnim, const Colo for( sal_uInt16 i = 0; i < nAnimationCount; i++ ) { AnimationFrame aAnimationFrame(aAnimation.Get(i)); - aAnimationFrame.maBitmapEx.ReplaceTransparency(rColor); + aAnimationFrame.maBitmap.ReplaceTransparency(rColor); aAnimation.Replace(aAnimationFrame, i); } diff --git a/svx/source/dialog/_contdlg.cxx b/svx/source/dialog/_contdlg.cxx index 82cf3469e9de..af486f9bfbbb 100644 --- a/svx/source/dialog/_contdlg.cxx +++ b/svx/source/dialog/_contdlg.cxx @@ -105,7 +105,7 @@ tools::PolyPolygon SvxContourDlg::CreateAutoContour( const Graphic& rGraphic, // offset of the sub-image within the total animation aTransMap.SetOrigin( Point( rStepBmp.maPositionPixel.X(), rStepBmp.maPositionPixel.Y() ) ); pVDev->SetMapMode( aTransMap ); - pVDev->DrawPolyPolygon( CreateAutoContour( Bitmap(rStepBmp.maBitmapEx), pRect ) ); + pVDev->DrawPolyPolygon( CreateAutoContour( rStepBmp.maBitmap, pRect ) ); } aTransMap.SetOrigin( Point() ); diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx index f86031bd540c..81f190917e8c 100644 --- a/svx/source/xoutdev/_xoutbmp.cxx +++ b/svx/source/xoutdev/_xoutbmp.cxx @@ -72,7 +72,7 @@ Animation XOutBitmap::MirrorAnimation( const Animation& rAnimation, bool bHMirr, AnimationFrame aAnimationFrame( aNewAnim.Get( i ) ); // mirror the BitmapEx - aAnimationFrame.maBitmapEx.Mirror( nMirrorFlags ); + aAnimationFrame.maBitmap.Mirror( nMirrorFlags ); // Adjust the positions inside the whole bitmap if( bHMirr ) diff --git a/vcl/qa/cppunit/GraphicTest.cxx b/vcl/qa/cppunit/GraphicTest.cxx index 21cc2e55a051..771a535b74c2 100644 --- a/vcl/qa/cppunit/GraphicTest.cxx +++ b/vcl/qa/cppunit/GraphicTest.cxx @@ -1086,7 +1086,7 @@ CPPUNIT_TEST_FIXTURE(GraphicTest, testSwappingAnimationGraphic_GIF_WithGfxLink) // Get the declared byte size of the graphic sal_uLong rByteSize = aGraphic.GetSizeBytes(); - CPPUNIT_ASSERT_EQUAL(sal_uLong(89552), rByteSize); + CPPUNIT_ASSERT_EQUAL(sal_uLong(179104), rByteSize); // Make sure we don't have a file CPPUNIT_ASSERT_EQUAL(true, aGraphic.ImplGetImpGraphic()->getSwapFileStream() == nullptr); @@ -1158,10 +1158,10 @@ CPPUNIT_TEST_FIXTURE(GraphicTest, testSwappingAnimationGraphic_GIF_WithoutGfxLin pStream->Seek(0); // Check size of the stream - CPPUNIT_ASSERT_EQUAL(sal_uInt64(15139), pStream->remainingSize()); + CPPUNIT_ASSERT_EQUAL(sal_uInt64(140851), pStream->remainingSize()); std::vector<unsigned char> aHash = calculateHash(*pStream); - CPPUNIT_ASSERT_EQUAL(std::string("f3678a6f0adc2a86450facd850c4740ba0ecb52a"), + CPPUNIT_ASSERT_EQUAL(std::string("1d63bf2441d5d46c28f18978e5d104673c34a7cf"), comphelper::hashToString(aHash)); } diff --git a/vcl/qa/cppunit/TypeSerializerTest.cxx b/vcl/qa/cppunit/TypeSerializerTest.cxx index c21c7738372e..147008c39668 100644 --- a/vcl/qa/cppunit/TypeSerializerTest.cxx +++ b/vcl/qa/cppunit/TypeSerializerTest.cxx @@ -227,9 +227,9 @@ void TypeSerializerTest::testGraphic_Animation() } aMemoryStream.Seek(STREAM_SEEK_TO_BEGIN); - CPPUNIT_ASSERT_EQUAL(sal_uInt64(15123), aMemoryStream.remainingSize()); + CPPUNIT_ASSERT_EQUAL(sal_uInt64(140835), aMemoryStream.remainingSize()); std::vector<unsigned char> aHash = calculateHash(aMemoryStream); - CPPUNIT_ASSERT_EQUAL(std::string("1defb473c6f0eeb915935d5039ce0aaed00226ed"), + CPPUNIT_ASSERT_EQUAL(std::string("d002e4d28b2b3b68d9daad97343ea8811e579e2d"), comphelper::hashToString(aHash)); aMemoryStream.Seek(STREAM_SEEK_TO_BEGIN); diff --git a/vcl/qa/cppunit/animation.cxx b/vcl/qa/cppunit/animation.cxx index bbedacbdf303..25e6254c7603 100644 --- a/vcl/qa/cppunit/animation.cxx +++ b/vcl/qa/cppunit/animation.cxx @@ -36,11 +36,11 @@ void VclAnimationTest::testFrameCount() CPPUNIT_ASSERT_EQUAL(size_t(0), aAnimation.Count()); aAnimation.Insert( - AnimationFrame(BitmapEx(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(3, 4))); + AnimationFrame(Bitmap(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(3, 4))); CPPUNIT_ASSERT_EQUAL(size_t(1), aAnimation.Count()); aAnimation.Insert( - AnimationFrame(BitmapEx(Size(3, 3), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); + AnimationFrame(Bitmap(Size(3, 3), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); CPPUNIT_ASSERT_EQUAL(size_t(2), aAnimation.Count()); aAnimation.Clear(); @@ -53,11 +53,11 @@ void VclAnimationTest::testDisplaySize() CPPUNIT_ASSERT_EQUAL(Size(0, 0), aAnimation.GetDisplaySizePixel()); aAnimation.Insert( - AnimationFrame(BitmapEx(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(3, 4))); + AnimationFrame(Bitmap(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(3, 4))); CPPUNIT_ASSERT_EQUAL(Size(3, 4), aAnimation.GetDisplaySizePixel()); - aAnimation.Insert(AnimationFrame(BitmapEx(Size(10, 10), vcl::PixelFormat::N24_BPP), Point(0, 0), - Size(10, 10))); + aAnimation.Insert( + AnimationFrame(Bitmap(Size(10, 10), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); CPPUNIT_ASSERT_EQUAL(Size(10, 10), aAnimation.GetDisplaySizePixel()); aAnimation.Clear(); diff --git a/vcl/qa/cppunit/animationrenderer.cxx b/vcl/qa/cppunit/animationrenderer.cxx index b6f0b53dd249..a9acadaa6288 100644 --- a/vcl/qa/cppunit/animationrenderer.cxx +++ b/vcl/qa/cppunit/animationrenderer.cxx @@ -39,9 +39,9 @@ Animation createAnimation() Animation aAnimation; aAnimation.Insert( - AnimationFrame(BitmapEx(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); + AnimationFrame(Bitmap(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); aAnimation.Insert( - AnimationFrame(BitmapEx(Size(3, 3), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); + AnimationFrame(Bitmap(Size(3, 3), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10))); return aAnimation; } @@ -92,7 +92,7 @@ CPPUNIT_TEST_FIXTURE(VclAnimationRendererTest, testGetPosSizeWindow) AnimationRenderer* pAnimationRenderer = new AnimationRenderer(&aTestAnim, pTestRC, Point(0, 0), Size(10, 10), 5); - AnimationFrame aAnimBmp(BitmapEx(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), + AnimationFrame aAnimBmp(Bitmap(Size(3, 4), vcl::PixelFormat::N24_BPP), Point(0, 0), Size(10, 10)); Point aPos; Size aSize; diff --git a/vcl/qa/cppunit/png/PngFilterTest.cxx b/vcl/qa/cppunit/png/PngFilterTest.cxx index 161600f36b93..e8779439dd3b 100644 --- a/vcl/qa/cppunit/png/PngFilterTest.cxx +++ b/vcl/qa/cppunit/png/PngFilterTest.cxx @@ -329,9 +329,9 @@ void PngFilterTest::testApng() AnimationFrame aFrame1 = *rAnimation.GetAnimationFrames()[0]; AnimationFrame aFrame2 = *rAnimation.GetAnimationFrames()[1]; - CPPUNIT_ASSERT_EQUAL(COL_WHITE, aFrame1.maBitmapEx.GetPixelColor(0, 0)); - CPPUNIT_ASSERT_EQUAL(Color(0x72d1c8), aFrame1.maBitmapEx.GetPixelColor(2, 2)); - CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, aFrame2.maBitmapEx.GetPixelColor(0, 0)); + CPPUNIT_ASSERT_EQUAL(COL_WHITE, aFrame1.maBitmap.GetPixelColor(0, 0)); + CPPUNIT_ASSERT_EQUAL(Color(0x72d1c8), aFrame1.maBitmap.GetPixelColor(2, 2)); + CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, aFrame2.maBitmap.GetPixelColor(0, 0)); // Roundtrip the APNG SvMemoryStream aOutStream; @@ -353,9 +353,9 @@ void PngFilterTest::testApng() AnimationFrame aFrame1Roundtripped = *rAnimation2.GetAnimationFrames()[0]; AnimationFrame aFrame2Roundtripped = *rAnimation2.GetAnimationFrames()[1]; - CPPUNIT_ASSERT_EQUAL(COL_WHITE, aFrame1Roundtripped.maBitmapEx.GetPixelColor(0, 0)); - CPPUNIT_ASSERT_EQUAL(Color(0x72d1c8), aFrame1Roundtripped.maBitmapEx.GetPixelColor(2, 2)); - CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, aFrame2Roundtripped.maBitmapEx.GetPixelColor(0, 0)); + CPPUNIT_ASSERT_EQUAL(COL_WHITE, aFrame1Roundtripped.maBitmap.GetPixelColor(0, 0)); + CPPUNIT_ASSERT_EQUAL(Color(0x72d1c8), aFrame1Roundtripped.maBitmap.GetPixelColor(2, 2)); + CPPUNIT_ASSERT_EQUAL(COL_LIGHTRED, aFrame2Roundtripped.maBitmap.GetPixelColor(0, 0)); // Make sure the two frames have the same properties CPPUNIT_ASSERT_EQUAL(aFrame1.maPositionPixel, aFrame1Roundtripped.maPositionPixel); diff --git a/vcl/source/animate/Animation.cxx b/vcl/source/animate/Animation.cxx index c8a52fddf391..6402047deee2 100644 --- a/vcl/source/animate/Animation.cxx +++ b/vcl/source/animate/Animation.cxx @@ -130,7 +130,7 @@ sal_uLong Animation::GetSizeBytes() const { return std::accumulate(maFrames.begin(), maFrames.end(), GetBitmapEx().GetSizeBytes(), [](sal_Int64 nSize, const std::unique_ptr<AnimationFrame>& pFrame) { - return nSize + pFrame->maBitmapEx.GetSizeBytes(); + return nSize + pFrame->maBitmap.GetSizeBytes(); }); } @@ -243,11 +243,11 @@ void Animation::Draw(OutputDevice& rOut, const Point& rDestPt, const Size& rDest if (rOut.GetConnectMetaFile() || (rOut.GetOutDevType() == OUTDEV_PRINTER)) { - maFrames[0]->maBitmapEx.Draw(&rOut, rDestPt, rDestSz); + maFrames[0]->maBitmap.Draw(&rOut, rDestPt, rDestSz); } else if (ANIMATION_TIMEOUT_ON_CLICK == pObj->mnWait) { - pObj->maBitmapEx.Draw(&rOut, rDestPt, rDestSz); + pObj->maBitmap.Draw(&rOut, rDestPt, rDestSz); } else { @@ -321,7 +321,7 @@ void Animation::RenderNextFrameInAllRenderers() Stop(); mbLoopTerminated = true; mnFrameIndex = maFrames.size() - 1; - maBitmapEx = maFrames[mnFrameIndex]->maBitmapEx; + maBitmapEx = maFrames[mnFrameIndex]->maBitmap; return; } else @@ -409,7 +409,7 @@ bool Animation::Insert(const AnimationFrame& rStepBmp) // As a start, we make the first BitmapEx the replacement BitmapEx if (maFrames.size() == 1) - maBitmapEx = rStepBmp.maBitmapEx; + maBitmapEx = rStepBmp.maBitmap; return true; } @@ -431,7 +431,7 @@ void Animation::Replace(const AnimationFrame& rNewAnimationFrame, sal_uInt16 nAn if ((!nAnimation && (!mbLoopTerminated || (maFrames.size() == 1))) || ((nAnimation == maFrames.size() - 1) && mbLoopTerminated)) { - maBitmapEx = rNewAnimationFrame.maBitmapEx; + maBitmapEx = rNewAnimationFrame.maBitmap; } } @@ -458,7 +458,7 @@ void Animation::Convert(BmpConversion eConversion) for (size_t i = 0, n = maFrames.size(); (i < n) && bRet; ++i) { - bRet = maFrames[i]->maBitmapEx.Convert(eConversion); + bRet = maFrames[i]->maBitmap.Convert(eConversion); } maBitmapEx.Convert(eConversion); @@ -475,7 +475,7 @@ bool Animation::ReduceColors(sal_uInt16 nNewColorCount) for (size_t i = 0, n = maFrames.size(); (i < n) && bRet; ++i) { - bRet = BitmapFilter::Filter(maFrames[i]->maBitmapEx, + bRet = BitmapFilter::Filter(maFrames[i]->maBitmap, BitmapColorQuantizationFilter(nNewColorCount)); } @@ -495,7 +495,7 @@ bool Animation::Invert() for (auto& pFrame : maFrames) { - if (!pFrame->maBitmapEx.Invert()) + if (!pFrame->maBitmap.Invert()) return false; } @@ -517,7 +517,7 @@ void Animation::Mirror(BmpMirrorFlags nMirrorFlags) for (size_t i = 0, n = maFrames.size(); (i < n) && bRet; ++i) { AnimationFrame* pCurrentFrameBmp = maFrames[i].get(); - bRet = pCurrentFrameBmp->maBitmapEx.Mirror(nMirrorFlags); + bRet = pCurrentFrameBmp->maBitmap.Mirror(nMirrorFlags); if (bRet) { if (nMirrorFlags & BmpMirrorFlags::Horizontal) @@ -547,8 +547,8 @@ void Animation::Adjust(short nLuminancePercent, short nContrastPercent, short nC for (size_t i = 0, n = maFrames.size(); (i < n) && bRet; ++i) { - bRet = maFrames[i]->maBitmapEx.Adjust(nLuminancePercent, nContrastPercent, nChannelRPercent, - nChannelGPercent, nChannelBPercent, fGamma, bInvert); + bRet = maFrames[i]->maBitmap.Adjust(nLuminancePercent, nContrastPercent, nChannelRPercent, + nChannelGPercent, nChannelBPercent, fGamma, bInvert); } maBitmapEx.Adjust(nLuminancePercent, nContrastPercent, nChannelRPercent, nChannelGPercent, @@ -567,7 +567,7 @@ SvStream& WriteAnimation(SvStream& rOStm, const Animation& rAnimation) // If no BitmapEx was set we write the first Bitmap of // the Animation if (rAnimation.GetBitmapEx().GetBitmap().IsEmpty()) - WriteDIBBitmapEx(rAnimation.Get(0).maBitmapEx, rOStm); + WriteDIBBitmapEx(rAnimation.Get(0).maBitmap, rOStm); else WriteDIBBitmapEx(rAnimation.GetBitmapEx(), rOStm); @@ -580,7 +580,7 @@ SvStream& WriteAnimation(SvStream& rOStm, const Animation& rAnimation) const sal_uInt16 nRest = nCount - i - 1; // Write AnimationFrame - WriteDIBBitmapEx(rAnimationFrame.maBitmapEx, rOStm); + WriteDIBBitmapEx(rAnimationFrame.maBitmap, rOStm); tools::GenericTypeSerializer aSerializer(rOStm); aSerializer.writePoint(rAnimationFrame.maPositionPixel); aSerializer.writeSize(rAnimationFrame.maSizePixel); @@ -644,7 +644,7 @@ SvStream& ReadAnimation(SvStream& rIStm, Animation& rAnimation) do { - ReadDIBBitmapEx(aAnimationFrame.maBitmapEx, rIStm); + ReadDIBBitmapEx(aAnimationFrame.maBitmap, rIStm); tools::GenericTypeSerializer aSerializer(rIStm); aSerializer.readPoint(aAnimationFrame.maPositionPixel); aSerializer.readSize(aAnimationFrame.maSizePixel); diff --git a/vcl/source/animate/AnimationFrame.cxx b/vcl/source/animate/AnimationFrame.cxx index 697167ebdc31..d803560f9f41 100644 --- a/vcl/source/animate/AnimationFrame.cxx +++ b/vcl/source/animate/AnimationFrame.cxx @@ -25,7 +25,7 @@ BitmapChecksum AnimationFrame::GetChecksum() const { - BitmapChecksum nCrc = maBitmapEx.GetChecksum(); + BitmapChecksum nCrc = maBitmap.GetChecksum(); SVBT32 aBT32; Int32ToSVBT32(maPositionPixel.X(), aBT32); diff --git a/vcl/source/animate/AnimationRenderer.cxx b/vcl/source/animate/AnimationRenderer.cxx index 5755c549d3e5..cc30c9eef69b 100644 --- a/vcl/source/animate/AnimationRenderer.cxx +++ b/vcl/source/animate/AnimationRenderer.cxx @@ -271,7 +271,7 @@ void AnimationRenderer::draw( sal_uLong nIndex, VirtualDevice* pVDev ) mpRestore->DrawOutDev( Point(), maRestSz, aPosPix, aSizePix, *pDev ); } - pDev->DrawBitmapEx( aBmpPosPix, aBmpSizePix, rAnimationFrame.maBitmapEx ); + pDev->DrawBitmapEx( aBmpPosPix, aBmpSizePix, rAnimationFrame.maBitmap ); if( !pVDev ) { diff --git a/vcl/source/bitmap/bitmapfilter.cxx b/vcl/source/bitmap/bitmapfilter.cxx index e0084f1460a6..33a6966213a3 100644 --- a/vcl/source/bitmap/bitmapfilter.cxx +++ b/vcl/source/bitmap/bitmapfilter.cxx @@ -53,7 +53,7 @@ bool BitmapFilter::Filter(Animation& rAnimation, BitmapFilter const& rFilter) std::vector<std::unique_ptr<AnimationFrame>>& aList = rAnimation.GetAnimationFrames(); for (size_t i = 0, n = aList.size(); (i < n) && bRet; ++i) { - bRet = BitmapFilter::Filter(aList[i]->maBitmapEx, rFilter); + bRet = BitmapFilter::Filter(aList[i]->maBitmap, rFilter); } BitmapEx aBmpEx(rAnimation.GetBitmapEx()); diff --git a/vcl/source/filter/egif/egif.cxx b/vcl/source/filter/egif/egif.cxx index f9a7b16a5dcb..9000c8a526dc 100644 --- a/vcl/source/filter/egif/egif.cxx +++ b/vcl/source/filter/egif/egif.cxx @@ -215,7 +215,7 @@ void GIFWriter::WriteAnimation( const Animation& rAnimation ) { const AnimationFrame& rAnimationFrame = rAnimation.Get( i ); - WriteBitmapEx(rAnimationFrame.maBitmapEx, rAnimationFrame.maPositionPixel, true, + WriteBitmapEx(BitmapEx(rAnimationFrame.maBitmap), rAnimationFrame.maPositionPixel, true, rAnimationFrame.mnWait, rAnimationFrame.meDisposal ); nMinPercent = nMaxPercent; nMaxPercent = static_cast<sal_uInt32>(nMaxPercent + fStep); diff --git a/vcl/source/filter/etiff/etiff.cxx b/vcl/source/filter/etiff/etiff.cxx index 0d20d502b80a..51a6017a9d8c 100644 --- a/vcl/source/filter/etiff/etiff.cxx +++ b/vcl/source/filter/etiff/etiff.cxx @@ -169,16 +169,16 @@ bool TIFFWriter::WriteTIFF( const Graphic& rGraphic, FilterConfigItem const * pF { Animation aAnimation = rGraphic.IsAnimated() ? rGraphic.GetAnimation() : Animation(); if (!rGraphic.IsAnimated()) - aAnimation.Insert(AnimationFrame(BitmapEx(rGraphic.GetBitmap()), Point(), Size())); + aAnimation.Insert(AnimationFrame(rGraphic.GetBitmap(), Point(), Size())); for (size_t i = 0; i < aAnimation.Count(); ++i) - mnSumOfAllPictHeight += aAnimation.Get(i).maBitmapEx.GetSizePixel().Height(); + mnSumOfAllPictHeight += aAnimation.Get(i).maBitmap.GetSizePixel().Height(); for (size_t i = 0; mbStatus && i < aAnimation.Count(); ++i) { mnPalPos = 0; const AnimationFrame& rAnimationFrame = aAnimation.Get( i ); - Bitmap aBmp = rAnimationFrame.maBitmapEx.GetBitmap(); + Bitmap aBmp = rAnimationFrame.maBitmap.CreateColorBitmap(); mpAcc = aBmp; if ( mpAcc ) { diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx index 98dd1a531928..70969016e122 100644 --- a/vcl/source/filter/igif/gifread.cxx +++ b/vcl/source/filter/igif/gifread.cxx @@ -664,7 +664,7 @@ void GIFReader::CreateNewBitmaps() AlphaMask aAlphaMask(aBmp1); // No need to convert from transparency to alpha // aBmp1 is already inverted - aAnimationFrame.maBitmapEx = BitmapEx( aBmp8, aAlphaMask ); + aAnimationFrame.maBitmap = Bitmap(BitmapEx( aBmp8, aAlphaMask )); } else if( nPaletteSize > 2 ) { @@ -676,7 +676,7 @@ void GIFReader::CreateNewBitmaps() // and create a completely opaque bitmap instead. // Note: this fix also fixes tdf#157576, tdf#157635, and tdf#157793. AlphaMask aAlphaMask(aBmp8.GetSizePixel()); - aAnimationFrame.maBitmapEx = BitmapEx( aBmp8, aAlphaMask ); + aAnimationFrame.maBitmap = Bitmap(BitmapEx( aBmp8, aAlphaMask )); } else { @@ -684,7 +684,7 @@ void GIFReader::CreateNewBitmaps() // in Word documents like the following test document to fail to be // parsed correctly: // sw/qa/extras/tiledrendering/data/tdf159626_yellowPatternFill.docx - aAnimationFrame.maBitmapEx = BitmapEx( aBmp8 ); + aAnimationFrame.maBitmap = aBmp8; } aAnimationFrame.maPositionPixel = Point( nImagePosX, nImagePosY ); @@ -704,7 +704,7 @@ void GIFReader::CreateNewBitmaps() else aAnimationFrame.meDisposal = Disposal::Not; - nAnimationByteSize += aAnimationFrame.maBitmapEx.GetSizeBytes(); + nAnimationByteSize += aAnimationFrame.maBitmap.GetSizeBytes(); nAnimationMinFileData += static_cast<sal_uInt64>(nImageWidth) * nImageHeight / 2560; aAnimation.Insert(aAnimationFrame); @@ -925,7 +925,7 @@ ReadState GIFReader::ReadGIF(ImportOutput& rImportOutput) if (aAnimation.Count() == 1) { rImportOutput.mbIsAnimated = false; - rImportOutput.moBitmap = Bitmap(aAnimation.Get(0).maBitmapEx); + rImportOutput.moBitmap = aAnimation.Get(0).maBitmap; if (aPrefSize.Width() && aPrefSize.Height()) { diff --git a/vcl/source/filter/itiff/itiff.cxx b/vcl/source/filter/itiff/itiff.cxx index 57f39d84313f..185c98d5d68a 100644 --- a/vcl/source/filter/itiff/itiff.cxx +++ b/vcl/source/filter/itiff/itiff.cxx @@ -328,7 +328,7 @@ bool ImportTiffGraphicImport(SvStream& rTIFF, Graphic& rGraphic) bitmap.SetPrefMapMode(aMapMode); bitmap.SetPrefSize(Size(w, h)); - AnimationFrame aAnimationFrame(BitmapEx(bitmap), Point(0, 0), bitmap.GetSizePixel(), + AnimationFrame aAnimationFrame(bitmap, Point(0, 0), bitmap.GetSizePixel(), ANIMATION_TIMEOUT_ON_CLICK, Disposal::Back); aAnimation.Insert(aAnimationFrame); } diff --git a/vcl/source/filter/png/PngImageReader.cxx b/vcl/source/filter/png/PngImageReader.cxx index 2c688ecaa181..2d65bab81a8f 100644 --- a/vcl/source/filter/png/PngImageReader.cxx +++ b/vcl/source/filter/png/PngImageReader.cxx @@ -649,7 +649,7 @@ bool reader(SvStream& rStream, ImportOutput& rImportOutput, if (aDisposal == Disposal::Previous) aDisposal = Disposal::Back; AnimationFrame aAnimationFrame( - BitmapEx(aBitmap), aFirstPoint, aCanvasSize, + aBitmap, aFirstPoint, aCanvasSize, NumDenToTime(aFctlChunk->delay_num, aFctlChunk->delay_den), aDisposal, aBlend); aAnimation.Insert(aAnimationFrame); } @@ -694,7 +694,7 @@ bool reader(SvStream& rStream, ImportOutput& rImportOutput, Point aStartPoint(aFctlChunk->x_offset, aFctlChunk->y_offset); Size aSize(aFctlChunk->width, aFctlChunk->height); AnimationFrame aAnimationFrame( - BitmapEx(aFrameBitmap), aStartPoint, aSize, + aFrameBitmap, aStartPoint, aSize, NumDenToTime(aFctlChunk->delay_num, aFctlChunk->delay_den), aDisposal, aBlend); aAnimation.Insert(aAnimationFrame); } diff --git a/vcl/source/filter/png/PngImageWriter.cxx b/vcl/source/filter/png/PngImageWriter.cxx index 70734cd70fcb..106e4916e60c 100644 --- a/vcl/source/filter/png/PngImageWriter.cxx +++ b/vcl/source/filter/png/PngImageWriter.cxx @@ -365,7 +365,7 @@ static bool pngWrite(SvStream& rStream, const Graphic& rGraphic, int nCompressio const AnimationFrame& rCurrentFrame = *rFrames[1 + i]; SvMemoryStream aStream; - if (!pngWrite(aStream, Bitmap(rCurrentFrame.maBitmapEx), nCompressionLevel, bInterlaced, + if (!pngWrite(aStream, rCurrentFrame.maBitmap, nCompressionLevel, bInterlaced, bTranslucent, {})) return false; diff --git a/vcl/source/graphic/GraphicObject.cxx b/vcl/source/graphic/GraphicObject.cxx index 158751f723d9..dc4d78ba8955 100644 --- a/vcl/source/graphic/GraphicObject.cxx +++ b/vcl/source/graphic/GraphicObject.cxx @@ -775,7 +775,7 @@ Graphic GraphicObject::GetTransformedGraphic( const Size& rDestSize, const MapMo // cropping affects this frame, apply it then // do _not_ apply enlargement, this is done below - ImplTransformBitmap( aAnimationFrame.maBitmapEx, rAttr, Size(), Size(), + ImplTransformBitmap( aAnimationFrame.maBitmap, rAttr, Size(), Size(), aCropRectRel, rDestSize, false ); aAnim.Replace( aAnimationFrame, nFrame );
