drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx | 6 - include/vcl/animate/Animation.hxx | 6 - vcl/inc/graphic/AnimationContainer.hxx | 8 +- vcl/source/animate/Animation.cxx | 38 +++++------ vcl/source/bitmap/bitmapfilter.cxx | 6 - vcl/source/filter/igif/gifread.cxx | 2 vcl/source/filter/itiff/itiff.cxx | 2 vcl/source/filter/png/PngImageReader.cxx | 2 vcl/source/gdi/TypeSerializer.cxx | 2 vcl/source/gdi/impgraph.cxx | 18 ++--- 10 files changed, 45 insertions(+), 45 deletions(-)
New commits: commit 35aa7f657c6caf53ab67727c39a27776925fd3b1 Author: Noel Grandin <[email protected]> AuthorDate: Wed Aug 13 19:40:43 2025 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Mon Sep 1 08:55:37 2025 +0200 BitmapEx->Bitmap in Animation now that Bitmap supports transparency Change-Id: I62ffd37a45b77cf7196d40ee196828bcf62634b8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189532 Reviewed-by: Noel Grandin <[email protected]> Tested-by: Jenkins diff --git a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx index a758787540de..8bfa411130de 100644 --- a/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx +++ b/drawinglayer/source/primitive2d/graphicprimitivehelper2d.cxx @@ -303,9 +303,8 @@ namespace drawinglayer::primitive2d case Disposal::Not: { maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap); - AlphaMask aAlphaMask = rAnimationFrame.maBitmap.CreateAlphaMask(); - if (aAlphaMask.IsEmpty()) + if (!rAnimationFrame.maBitmap.HasAlpha()) { const Point aEmpty; const ::tools::Rectangle aRect(aEmpty, maVirtualDeviceMask->GetOutputSizePixel()); @@ -314,6 +313,7 @@ namespace drawinglayer::primitive2d } else { + AlphaMask aAlphaMask = rAnimationFrame.maBitmap.CreateAlphaMask(); BitmapEx aExpandVisibilityMask(aAlphaMask.GetBitmap(), aAlphaMask); maVirtualDeviceMask->DrawBitmapEx(rAnimationFrame.maPositionPixel, aExpandVisibilityMask); } @@ -346,7 +346,7 @@ namespace drawinglayer::primitive2d case Disposal::Previous: { maVirtualDevice->DrawBitmapEx(rAnimationFrame.maPositionPixel, rAnimationFrame.maBitmap); - BitmapEx aExpandVisibilityMask(rAnimationFrame.maBitmap.CreateAlphaMask().GetBitmap(), rAnimationFrame.maBitmap.CreateAlphaMask()); + Bitmap 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 6c187c68e884..7900dd6cb94b 100644 --- a/include/vcl/animate/Animation.hxx +++ b/include/vcl/animate/Animation.hxx @@ -59,8 +59,8 @@ public: const Size& GetDisplaySizePixel() const { return maGlobalSize; } void SetDisplaySizePixel(const Size& rSize) { maGlobalSize = rSize; } - const BitmapEx& GetBitmapEx() const { return maBitmapEx; } - void SetBitmapEx(const BitmapEx& rBmpEx) { maBitmapEx = rBmpEx; } + const Bitmap& GetBitmap() const { return maBitmap; } + void SetBitmap(const Bitmap& rBmp) { maBitmap = rBmp; } sal_uInt32 GetLoopCount() const { return mnLoopCount; } void SetLoopCount(const sal_uInt32 nLoopCount); @@ -103,7 +103,7 @@ private: std::vector<std::unique_ptr<AnimationRenderer>> maRenderers; Link<Animation*, void> maNotifyLink; - BitmapEx maBitmapEx; + Bitmap maBitmap; Timer maTimer; Size maGlobalSize; sal_uInt32 mnLoopCount; diff --git a/vcl/inc/graphic/AnimationContainer.hxx b/vcl/inc/graphic/AnimationContainer.hxx index 69eedd009bf0..ae30eddd9c64 100644 --- a/vcl/inc/graphic/AnimationContainer.hxx +++ b/vcl/inc/graphic/AnimationContainer.hxx @@ -39,17 +39,17 @@ public: Size getPrefSize() const { - Size aSize = maAnimation.GetBitmapEx().GetPrefSize(); + Size aSize = maAnimation.GetBitmap().GetPrefSize(); if (!aSize.Width() || !aSize.Height()) - aSize = maAnimation.GetBitmapEx().GetSizePixel(); + aSize = maAnimation.GetBitmap().GetSizePixel(); return aSize; } MapMode getPrefMapMode() const { - const Size aSize = maAnimation.GetBitmapEx().GetPrefSize(); + const Size aSize = maAnimation.GetBitmap().GetPrefSize(); if (aSize.Width() && aSize.Height()) - return maAnimation.GetBitmapEx().GetPrefMapMode(); + return maAnimation.GetBitmap().GetPrefMapMode(); return {}; } diff --git a/vcl/source/animate/Animation.cxx b/vcl/source/animate/Animation.cxx index 6402047deee2..7b065f095c19 100644 --- a/vcl/source/animate/Animation.cxx +++ b/vcl/source/animate/Animation.cxx @@ -46,7 +46,7 @@ Animation::Animation() } Animation::Animation(const Animation& rAnimation) - : maBitmapEx(rAnimation.maBitmapEx) + : maBitmap(rAnimation.maBitmap) , maTimer("vcl::Animation") , maGlobalSize(rAnimation.maGlobalSize) , mnLoopCount(rAnimation.mnLoopCount) @@ -77,7 +77,7 @@ Animation& Animation::operator=(const Animation& rAnimation) maFrames.emplace_back(new AnimationFrame(*i)); maGlobalSize = rAnimation.maGlobalSize; - maBitmapEx = rAnimation.maBitmapEx; + maBitmap = rAnimation.maBitmap; mnLoopCount = rAnimation.mnLoopCount; mnFrameIndex = rAnimation.mnFrameIndex; mbLoopTerminated = rAnimation.mbLoopTerminated; @@ -88,7 +88,7 @@ Animation& Animation::operator=(const Animation& rAnimation) bool Animation::operator==(const Animation& rAnimation) const { - return maFrames.size() == rAnimation.maFrames.size() && maBitmapEx == rAnimation.maBitmapEx + return maFrames.size() == rAnimation.maFrames.size() && maBitmap == rAnimation.maBitmap && maGlobalSize == rAnimation.maGlobalSize && std::equal(maFrames.begin(), maFrames.end(), rAnimation.maFrames.begin(), [](const std::unique_ptr<AnimationFrame>& pAnim1, @@ -102,7 +102,7 @@ void Animation::Clear() maTimer.Stop(); mbIsInAnimation = false; maGlobalSize = Size(); - maBitmapEx.SetEmpty(); + maBitmap.SetEmpty(); maFrames.clear(); maRenderers.clear(); } @@ -116,7 +116,7 @@ bool Animation::IsTransparent() const // as the application (?) does not invalidate on non-transparent // graphics due to performance reasons. - return maBitmapEx.IsAlpha() + return maBitmap.HasAlpha() || std::any_of(maFrames.begin(), maFrames.end(), [&aRect](const std::unique_ptr<AnimationFrame>& pAnim) -> bool { return pAnim->meDisposal == Disposal::Back @@ -128,7 +128,7 @@ bool Animation::IsTransparent() const sal_uLong Animation::GetSizeBytes() const { - return std::accumulate(maFrames.begin(), maFrames.end(), GetBitmapEx().GetSizeBytes(), + return std::accumulate(maFrames.begin(), maFrames.end(), GetBitmap().GetSizeBytes(), [](sal_Int64 nSize, const std::unique_ptr<AnimationFrame>& pFrame) { return nSize + pFrame->maBitmap.GetSizeBytes(); }); @@ -138,7 +138,7 @@ BitmapChecksum Animation::GetChecksum() const { SVBT32 aBT32; BitmapChecksumOctetArray aBCOA; - BitmapChecksum nCrc = GetBitmapEx().GetChecksum(); + BitmapChecksum nCrc = GetBitmap().GetChecksum(); UInt32ToSVBT32(maFrames.size(), aBT32); nCrc = rtl_crc32(nCrc, aBT32, 4); @@ -321,7 +321,7 @@ void Animation::RenderNextFrameInAllRenderers() Stop(); mbLoopTerminated = true; mnFrameIndex = maFrames.size() - 1; - maBitmapEx = maFrames[mnFrameIndex]->maBitmap; + maBitmap = 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.maBitmap; + maBitmap = 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.maBitmap; + maBitmap = rNewAnimationFrame.maBitmap; } } @@ -461,7 +461,7 @@ void Animation::Convert(BmpConversion eConversion) bRet = maFrames[i]->maBitmap.Convert(eConversion); } - maBitmapEx.Convert(eConversion); + maBitmap.Convert(eConversion); } bool Animation::ReduceColors(sal_uInt16 nNewColorCount) @@ -479,7 +479,7 @@ bool Animation::ReduceColors(sal_uInt16 nNewColorCount) BitmapColorQuantizationFilter(nNewColorCount)); } - BitmapFilter::Filter(maBitmapEx, BitmapColorQuantizationFilter(nNewColorCount)); + BitmapFilter::Filter(maBitmap, BitmapColorQuantizationFilter(nNewColorCount)); return bRet; } @@ -491,7 +491,7 @@ bool Animation::Invert() if (IsInAnimation() || maFrames.empty()) return false; - maBitmapEx.Invert(); + maBitmap.Invert(); for (auto& pFrame : maFrames) { @@ -532,7 +532,7 @@ void Animation::Mirror(BmpMirrorFlags nMirrorFlags) } } - maBitmapEx.Mirror(nMirrorFlags); + maBitmap.Mirror(nMirrorFlags); } void Animation::Adjust(short nLuminancePercent, short nContrastPercent, short nChannelRPercent, @@ -551,8 +551,8 @@ void Animation::Adjust(short nLuminancePercent, short nContrastPercent, short nC nChannelGPercent, nChannelBPercent, fGamma, bInvert); } - maBitmapEx.Adjust(nLuminancePercent, nContrastPercent, nChannelRPercent, nChannelGPercent, - nChannelBPercent, fGamma, bInvert); + maBitmap.Adjust(nLuminancePercent, nContrastPercent, nChannelRPercent, nChannelGPercent, + nChannelBPercent, fGamma, bInvert); } SvStream& WriteAnimation(SvStream& rOStm, const Animation& rAnimation) @@ -566,10 +566,10 @@ 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()) + if (rAnimation.GetBitmap().IsEmpty()) WriteDIBBitmapEx(rAnimation.Get(0).maBitmap, rOStm); else - WriteDIBBitmapEx(rAnimation.GetBitmapEx(), rOStm); + WriteDIBBitmapEx(rAnimation.GetBitmap(), rOStm); // Write identifier ( SDANIMA1 ) rOStm.WriteUInt32(0x5344414e).WriteUInt32(0x494d4931); @@ -624,7 +624,7 @@ SvStream& ReadAnimation(SvStream& rIStm, Animation& rAnimation) else { rIStm.Seek(nStmPos); - ReadDIBBitmapEx(rAnimation.maBitmapEx, rIStm); + ReadDIBBitmapEx(rAnimation.maBitmap, rIStm); nStmPos = rIStm.Tell(); rIStm.ReadUInt32(nAnimMagic1).ReadUInt32(nAnimMagic2); diff --git a/vcl/source/bitmap/bitmapfilter.cxx b/vcl/source/bitmap/bitmapfilter.cxx index 33a6966213a3..51c9bbce2051 100644 --- a/vcl/source/bitmap/bitmapfilter.cxx +++ b/vcl/source/bitmap/bitmapfilter.cxx @@ -56,9 +56,9 @@ bool BitmapFilter::Filter(Animation& rAnimation, BitmapFilter const& rFilter) bRet = BitmapFilter::Filter(aList[i]->maBitmap, rFilter); } - BitmapEx aBmpEx(rAnimation.GetBitmapEx()); - BitmapFilter::Filter(aBmpEx, rFilter); - rAnimation.SetBitmapEx(aBmpEx); + Bitmap aBmp(rAnimation.GetBitmap()); + BitmapFilter::Filter(aBmp, rFilter); + rAnimation.SetBitmap(aBmp); } return bRet; diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx index 70969016e122..0501d1b570cd 100644 --- a/vcl/source/filter/igif/gifread.cxx +++ b/vcl/source/filter/igif/gifread.cxx @@ -940,7 +940,7 @@ ReadState GIFReader::ReadGIF(ImportOutput& rImportOutput) if (aPrefSize.Width() && aPrefSize.Height()) { - BitmapEx& rBitmap = const_cast<BitmapEx&>(rImportOutput.moAnimation->GetBitmapEx()); + Bitmap& rBitmap = const_cast<Bitmap&>(rImportOutput.moAnimation->GetBitmap()); rBitmap.SetPrefSize(aPrefSize); rBitmap.SetPrefMapMode(MapMode(MapUnit::Map100thMM)); } diff --git a/vcl/source/filter/itiff/itiff.cxx b/vcl/source/filter/itiff/itiff.cxx index 185c98d5d68a..92070bbf4250 100644 --- a/vcl/source/filter/itiff/itiff.cxx +++ b/vcl/source/filter/itiff/itiff.cxx @@ -342,7 +342,7 @@ bool ImportTiffGraphicImport(SvStream& rTIFF, Graphic& rGraphic) if (nImages) { if (nImages == 1) - rGraphic = Bitmap(aAnimation.GetBitmapEx()); + rGraphic = aAnimation.GetBitmap(); else rGraphic = aAnimation; diff --git a/vcl/source/filter/png/PngImageReader.cxx b/vcl/source/filter/png/PngImageReader.cxx index 2d65bab81a8f..82d1827543bd 100644 --- a/vcl/source/filter/png/PngImageReader.cxx +++ b/vcl/source/filter/png/PngImageReader.cxx @@ -789,7 +789,7 @@ Bitmap PngImageReader::read() if (!aImportOutput.mbIsAnimated) return *aImportOutput.moBitmap; else - return Bitmap(aImportOutput.moAnimation->GetBitmapEx()); + return aImportOutput.moAnimation->GetBitmap(); } return Bitmap(); } diff --git a/vcl/source/gdi/TypeSerializer.cxx b/vcl/source/gdi/TypeSerializer.cxx index 6888f4469acf..0edf74bba537 100644 --- a/vcl/source/gdi/TypeSerializer.cxx +++ b/vcl/source/gdi/TypeSerializer.cxx @@ -235,7 +235,7 @@ void TypeSerializer::readGraphic(Graphic& rGraphic) // #108077# manually set loaded BmpEx to Animation // (which skips loading its BmpEx if already done) - aAnimation.SetBitmapEx(BitmapEx(aBitmap)); + aAnimation.SetBitmap(aBitmap); rGraphic = Graphic(aAnimation); } else diff --git a/vcl/source/gdi/impgraph.cxx b/vcl/source/gdi/impgraph.cxx index 29a77867788e..1f8aa8dc788c 100644 --- a/vcl/source/gdi/impgraph.cxx +++ b/vcl/source/gdi/impgraph.cxx @@ -109,7 +109,7 @@ ImpGraphic::ImpGraphic(const ImpGraphic& rImpGraphic) if (rImpGraphic.mpAnimationContainer) { mpAnimationContainer = std::make_shared<AnimationContainer>(rImpGraphic.mpAnimationContainer->maAnimation); - maCachedBitmap = Bitmap(mpAnimationContainer->maAnimation.GetBitmapEx()); + maCachedBitmap = mpAnimationContainer->maAnimation.GetBitmap(); } } @@ -178,7 +178,7 @@ ImpGraphic::ImpGraphic(const std::shared_ptr<VectorGraphicData>& rVectorGraphicD ImpGraphic::ImpGraphic(const Animation& rAnimation) : MemoryManaged(true) - , maCachedBitmap(rAnimation.GetBitmapEx()) + , maCachedBitmap(rAnimation.GetBitmap()) , mpAnimationContainer(std::make_shared<AnimationContainer>(rAnimation)) , meType(GraphicType::Bitmap) { @@ -214,7 +214,7 @@ ImpGraphic& ImpGraphic::operator=(const ImpGraphic& rImpGraphic) if (rImpGraphic.mpAnimationContainer) { mpAnimationContainer = std::make_shared<AnimationContainer>(*rImpGraphic.mpAnimationContainer); - maCachedBitmap = Bitmap(mpAnimationContainer->maAnimation.GetBitmapEx()); + maCachedBitmap = mpAnimationContainer->maAnimation.GetBitmap(); } else { @@ -342,7 +342,7 @@ void BitmapContainer::createSwapInfo(SwapInfo& rSwapInfo) void AnimationContainer::createSwapInfo(SwapInfo& rSwapInfo) { - rSwapInfo.maSizePixel = maAnimation.GetBitmapEx().GetSizePixel(); + rSwapInfo.maSizePixel = maAnimation.GetBitmap().GetSizePixel(); rSwapInfo.maPrefMapMode = getPrefMapMode(); rSwapInfo.maPrefSize = getPrefSize(); @@ -570,7 +570,7 @@ Bitmap ImpGraphic::getBitmap(const GraphicConversionParameters& rParameters) con updateBitmapFromVectorGraphic(rParameters.getSizePixel()); if (mpAnimationContainer) - aRetBmp = Bitmap(mpAnimationContainer->maAnimation.GetBitmapEx()); + aRetBmp = mpAnimationContainer->maAnimation.GetBitmap(); else if (mpBitmapContainer) aRetBmp = mpBitmapContainer->maBitmap; else @@ -854,7 +854,7 @@ void ImpGraphic::setValuesForPrefSize(const Size& rPrefSize) // will be lost on copy otherwise else if (mpAnimationContainer) { - const_cast<BitmapEx&>(mpAnimationContainer->maAnimation.GetBitmapEx()).SetPrefSize(rPrefSize); + const_cast<Bitmap&>(mpAnimationContainer->maAnimation.GetBitmap()).SetPrefSize(rPrefSize); maCachedBitmap.SetPrefSize(rPrefSize); } else if (mpBitmapContainer) @@ -953,7 +953,7 @@ void ImpGraphic::setValuesForPrefMapMod(const MapMode& rPrefMapMode) // will be lost on copy otherwise else if (mpAnimationContainer) { - const_cast<BitmapEx&>(mpAnimationContainer->maAnimation.GetBitmapEx()).SetPrefMapMode(rPrefMapMode); + const_cast<Bitmap&>(mpAnimationContainer->maAnimation.GetBitmap()).SetPrefMapMode(rPrefMapMode); maCachedBitmap.SetPrefMapMode(rPrefMapMode); } else if (mpBitmapContainer) @@ -1388,7 +1388,7 @@ void ImpGraphic::updateFromLoadedGraphic(const ImpGraphic* pGraphic) if (pGraphic->mpAnimationContainer) { mpAnimationContainer = std::make_shared<AnimationContainer>(*pGraphic->mpAnimationContainer); - maCachedBitmap = Bitmap(mpAnimationContainer->maAnimation.GetBitmapEx()); + maCachedBitmap = mpAnimationContainer->maAnimation.GetBitmap(); } else if (pGraphic->mpBitmapContainer) { @@ -1619,7 +1619,7 @@ bool ImpGraphic::swapInGraphic(SvStream& rStream) if (!rStream.GetError()) { mpAnimationContainer = std::make_shared<AnimationContainer>(aAnimation); - maCachedBitmap = Bitmap(mpAnimationContainer->maAnimation.GetBitmapEx()); + maCachedBitmap = mpAnimationContainer->maAnimation.GetBitmap(); bReturn = true; } }
