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 );

Reply via email to