vcl/inc/pdf/pdfwriter_impl.hxx | 2 - vcl/source/filter/egif/egif.cxx | 2 - vcl/source/filter/eps/eps.cxx | 2 - vcl/source/filter/etiff/etiff.cxx | 2 - vcl/source/filter/png/PngImageWriter.cxx | 2 - vcl/source/gdi/pdfwriter_impl2.cxx | 60 +++++++++++++++--------------- vcl/source/graphic/GraphicID.cxx | 8 ++-- vcl/source/graphic/UnoGraphicProvider.cxx | 2 - 8 files changed, 40 insertions(+), 40 deletions(-)
New commits: commit e33a76e7fc5ec2c30cb47684c3cd6d0771f58bc0 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Aug 27 11:19:26 2025 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed Aug 27 14:00:04 2025 +0200 BitmapEx->Bitmap in vcl now that Bitmap supports transparency Change-Id: I3fcb2078a31ca005ace98115a0765b36d03714a0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190281 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/vcl/source/filter/egif/egif.cxx b/vcl/source/filter/egif/egif.cxx index a8a12e674ea6..f9a7b16a5dcb 100644 --- a/vcl/source/filter/egif/egif.cxx +++ b/vcl/source/filter/egif/egif.cxx @@ -139,7 +139,7 @@ bool GIFWriter::WriteGIF(const Graphic& rGraphic, FilterConfigItem* pFilterConfi { const bool bGrafTrans = rGraphic.IsTransparent(); - BitmapEx aBmpEx = rGraphic.GetBitmapEx(); + BitmapEx aBmpEx(rGraphic.GetBitmap()); nMinPercent = 0; nMaxPercent = 100; diff --git a/vcl/source/filter/eps/eps.cxx b/vcl/source/filter/eps/eps.cxx index 40aaf96744c7..278ed22635f5 100644 --- a/vcl/source/filter/eps/eps.cxx +++ b/vcl/source/filter/eps/eps.cxx @@ -372,7 +372,7 @@ bool PSWriter::WritePS( const Graphic& rGraphic, SvStream& rTargetStream, Filter } else { - BitmapEx aBmp( rGraphic.GetBitmapEx() ); + Bitmap aBmp( rGraphic.GetBitmap() ); pAMTF.reset( new GDIMetaFile ); ScopedVclPtrInstance< VirtualDevice > pTmpVDev; pAMTF->Record( pTmpVDev ); diff --git a/vcl/source/filter/etiff/etiff.cxx b/vcl/source/filter/etiff/etiff.cxx index f9b4c4409e1d..0d20d502b80a 100644 --- a/vcl/source/filter/etiff/etiff.cxx +++ b/vcl/source/filter/etiff/etiff.cxx @@ -169,7 +169,7 @@ bool TIFFWriter::WriteTIFF( const Graphic& rGraphic, FilterConfigItem const * pF { Animation aAnimation = rGraphic.IsAnimated() ? rGraphic.GetAnimation() : Animation(); if (!rGraphic.IsAnimated()) - aAnimation.Insert(AnimationFrame(rGraphic.GetBitmapEx(), Point(), Size())); + aAnimation.Insert(AnimationFrame(BitmapEx(rGraphic.GetBitmap()), Point(), Size())); for (size_t i = 0; i < aAnimation.Count(); ++i) mnSumOfAllPictHeight += aAnimation.Get(i).maBitmapEx.GetSizePixel().Height(); diff --git a/vcl/source/filter/png/PngImageWriter.cxx b/vcl/source/filter/png/PngImageWriter.cxx index ce05ea70f203..f65e098f2dd4 100644 --- a/vcl/source/filter/png/PngImageWriter.cxx +++ b/vcl/source/filter/png/PngImageWriter.cxx @@ -140,7 +140,7 @@ static bool pngWrite(SvStream& rStream, const Graphic& rGraphic, int nCompressio png_set_pHYs(pPng, pInfo, std::round(aPPM.getWidth()), std::round(aPPM.getHeight()), PNG_RESOLUTION_METER); - Bitmap aBitmap(rGraphic.GetBitmapEx()); + Bitmap aBitmap(rGraphic.GetBitmap()); if (!bTranslucent && aBitmap.HasAlpha()) { diff --git a/vcl/source/graphic/GraphicID.cxx b/vcl/source/graphic/GraphicID.cxx index d78acea53013..e7e11d374a68 100644 --- a/vcl/source/graphic/GraphicID.cxx +++ b/vcl/source/graphic/GraphicID.cxx @@ -54,11 +54,11 @@ GraphicID::GraphicID(ImpGraphic const& rGraphic) } else { - const BitmapEx aBmpEx(rGraphic.getBitmapEx(GraphicConversionParameters())); + const Bitmap aBmp(rGraphic.getBitmap(GraphicConversionParameters())); - mnID1 |= aBmpEx.IsAlpha() ? 1 : 0; - mnID2 = aBmpEx.GetSizePixel().Width(); - mnID3 = aBmpEx.GetSizePixel().Height(); + mnID1 |= aBmp.HasAlpha() ? 1 : 0; + mnID2 = aBmp.GetSizePixel().Width(); + mnID3 = aBmp.GetSizePixel().Height(); mnID4 = rGraphic.getChecksum(); } } diff --git a/vcl/source/graphic/UnoGraphicProvider.cxx b/vcl/source/graphic/UnoGraphicProvider.cxx index 840965ca2df9..6dd5f28a8186 100644 --- a/vcl/source/graphic/UnoGraphicProvider.cxx +++ b/vcl/source/graphic/UnoGraphicProvider.cxx @@ -662,7 +662,7 @@ void ImplApplyFilterData( ::Graphic& rGraphic, const uno::Sequence< beans::Prope ImplApplyBitmapResolution( aGraphic, nImageResolution, aGraphic.GetSizePixel(), awt::Size( aSize100thmm2.Width(), aSize100thmm2.Height() ) ); - rtl::Reference<MetaAction> pNewAction = new MetaBmpExScaleAction( aPos, aSize, aGraphic.GetBitmapEx() ); + rtl::Reference<MetaAction> pNewAction = new MetaBmpExScaleAction( aPos, aSize, BitmapEx(aGraphic.GetBitmap()) ); aMtf.ReplaceAction( pNewAction, i ); break; } commit 4b4544064bf6cc688352e0449db2240c5e67526b Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed Aug 27 09:57:47 2025 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed Aug 27 13:59:54 2025 +0200 BitmapEx->Bitmap in PDFWriterImpl Now that Bitmap can handle transparency Change-Id: Ic1eec7601516fca2c6354707d7f9ef5b520ec7a7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190271 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/vcl/inc/pdf/pdfwriter_impl.hxx b/vcl/inc/pdf/pdfwriter_impl.hxx index a172c82a1785..c1dbe73a7550 100644 --- a/vcl/inc/pdf/pdfwriter_impl.hxx +++ b/vcl/inc/pdf/pdfwriter_impl.hxx @@ -1093,7 +1093,7 @@ private: // helper for playMetafile void implWriteGradient( const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient, VirtualDevice* pDummyVDev, const vcl::PDFWriter::PlayMetafileContext& ); - void implWriteBitmapEx( const Point& rPoint, const Size& rSize, const BitmapEx& rBitmapEx, const Graphic& i_pGraphic, + void implWriteBitmapEx( const Point& rPoint, const Size& rSize, const Bitmap& rBitmap, const Graphic& i_pGraphic, VirtualDevice const * pDummyVDev, const vcl::PDFWriter::PlayMetafileContext& ); // helpers for CCITT 1bit bitmap stream diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx index 642f8e88aa43..0c8b6fc19322 100644 --- a/vcl/source/gdi/pdfwriter_impl2.cxx +++ b/vcl/source/gdi/pdfwriter_impl2.cxx @@ -71,13 +71,13 @@ void PDFWriterImpl::implWriteGradient( const tools::PolyPolygon& i_rPolyPoly, co m_rOuterFace.Pop(); } -void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSize, const BitmapEx& i_rBitmapEx, const Graphic& i_Graphic, +void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSize, const Bitmap& i_rBitmap, const Graphic& i_Graphic, VirtualDevice const * i_pDummyVDev, const vcl::PDFWriter::PlayMetafileContext& i_rContext ) { - if ( i_rBitmapEx.IsEmpty() || !i_rSize.Width() || !i_rSize.Height() ) + if ( i_rBitmap.IsEmpty() || !i_rSize.Width() || !i_rSize.Height() ) return; - BitmapEx aBitmapEx( i_rBitmapEx ); + Bitmap aBitmap( i_rBitmap ); Point aPoint( i_rPoint ); Size aSize( i_rSize ); @@ -100,11 +100,11 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz if( nMirrorFlags != BmpMirrorFlags::NONE ) { - aBitmapEx.Mirror( nMirrorFlags ); + aBitmap.Mirror( nMirrorFlags ); } bool bIsJpeg = false, bIsPng = false; - if( i_Graphic.GetType() != GraphicType::NONE && i_Graphic.GetBitmapEx() == aBitmapEx ) + if( i_Graphic.GetType() != GraphicType::NONE && i_Graphic.GetBitmap() == aBitmap ) { GfxLinkType eType = i_Graphic.GetGfxLink().GetType(); bIsJpeg = (eType == GfxLinkType::NativeJpg); @@ -112,7 +112,7 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz } // Do not downsample images smaller than 50x50px. - const Size aBmpSize(aBitmapEx.GetSizePixel()); + const Size aBmpSize(aBitmap.GetSizePixel()); if (i_rContext.m_nMaxImageResolution > 50 && aBmpSize.getWidth() > 50 && aBmpSize.getHeight() > 50) { @@ -151,21 +151,21 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz if( aNewBmpSize.Width() && aNewBmpSize.Height() ) { // #i121233# Use best quality for PDF exports - aBitmapEx.Scale( aNewBmpSize, BmpScaleFlag::BestQuality ); + aBitmap.Scale( aNewBmpSize, BmpScaleFlag::BestQuality ); } else { - aBitmapEx.SetEmpty(); + aBitmap.SetEmpty(); } } } - const Size aSizePixel( aBitmapEx.GetSizePixel() ); + const Size aSizePixel( aBitmap.GetSizePixel() ); if ( !(aSizePixel.Width() && aSizePixel.Height()) ) return; if( m_aContext.ColorMode == PDFWriter::DrawGreyscale ) - aBitmapEx.Convert(BmpConversion::N8BitGreys); + aBitmap.Convert(BmpConversion::N8BitGreys); bool bUseJPGCompression = !i_rContext.m_bOnlyLosslessCompression; if ( bIsPng || ( aSizePixel.Width() < 32 ) || ( aSizePixel.Height() < 32 ) ) bUseJPGCompression = false; @@ -178,10 +178,10 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz { // TODO this checks could be done much earlier, saving us // from trying conversion & stores before... - if ( !aBitmapEx.IsAlpha() ) + if ( !aBitmap.HasAlpha() ) { const auto aCacheEntry=m_aPDFBmpCache.find( - aBitmapEx.GetChecksum()); + aBitmap.GetChecksum()); if ( aCacheEntry != m_aPDFBmpCache.end() ) { m_rOuterFace.DrawJPGBitmap( *aCacheEntry->second, true, aSizePixel, @@ -195,12 +195,12 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz SvMemoryStream aTemp; aTemp.SetCompressMode( aTemp.GetCompressMode() | SvStreamCompressFlags::ZBITMAP ); aTemp.SetVersion( SOFFICE_FILEFORMAT_40 ); // sj: up from version 40 our bitmap stream operator - WriteDIBBitmapEx(aBitmapEx, aTemp); // is capable of zlib stream compression + WriteDIBBitmapEx(BitmapEx(aBitmap), aTemp); // is capable of zlib stream compression nZippedFileSize = aTemp.TellEnd(); } - if ( aBitmapEx.IsAlpha() ) - aAlphaMask = aBitmapEx.GetAlphaMask(); - Graphic aGraphic(BitmapEx(aBitmapEx.GetBitmap())); + if ( aBitmap.HasAlpha() ) + aAlphaMask = aBitmap.CreateAlphaMask(); + Graphic aGraphic(aBitmap.CreateColorBitmap()); Sequence< PropertyValue > aFilterData{ comphelper::makePropertyValue(u"Quality"_ustr, sal_Int32(i_rContext.m_nJPEGQuality)), @@ -252,17 +252,17 @@ void PDFWriterImpl::implWriteBitmapEx( const Point& i_rPoint, const Size& i_rSiz if ( bUseJPGCompression ) { m_rOuterFace.DrawJPGBitmap( *pStrm, bTrueColorJPG, aSizePixel, tools::Rectangle( aPoint, aSize ), aAlphaMask, i_Graphic ); - if (!aBitmapEx.IsAlpha() && bTrueColorJPG) + if (!aBitmap.HasAlpha() && bTrueColorJPG) { // Cache last jpeg export m_aPDFBmpCache.insert( - {aBitmapEx.GetChecksum(), pStrm}); + {aBitmap.GetChecksum(), pStrm}); } } - else if ( aBitmapEx.IsAlpha() ) - m_rOuterFace.DrawBitmapEx( aPoint, aSize, Bitmap(aBitmapEx) ); + else if ( aBitmap.HasAlpha() ) + m_rOuterFace.DrawBitmapEx( aPoint, aSize, aBitmap ); else - m_rOuterFace.DrawBitmap( aPoint, aSize, aBitmapEx.GetBitmap(), i_Graphic ); + m_rOuterFace.DrawBitmap( aPoint, aSize, aBitmap, i_Graphic ); } @@ -520,7 +520,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa xVDev.disposeAndClear(); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( rPos, rSize, BitmapEx( aPaint.GetBitmap(), aAlpha ), aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( rPos, rSize, Bitmap(BitmapEx( aPaint.GetBitmap(), aAlpha )), aGraphic, pDummyVDev, i_rContext ); } } } @@ -739,7 +739,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa aSize = pDummyVDev->PixelToLogic( aBitmapEx.GetSizePixel() ); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( pA->GetPoint(), aSize, aBitmapEx, aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( pA->GetPoint(), aSize, Bitmap(aBitmapEx), aGraphic, pDummyVDev, i_rContext ); } break; @@ -747,17 +747,17 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa { const MetaBmpScaleAction* pA = static_cast<const MetaBmpScaleAction*>(pAction); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( pA->GetPoint(), pA->GetSize(), BitmapEx( pA->GetBitmap() ), aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( pA->GetPoint(), pA->GetSize(), pA->GetBitmap(), aGraphic, pDummyVDev, i_rContext ); } break; case MetaActionType::BMPSCALEPART: { const MetaBmpScalePartAction* pA = static_cast<const MetaBmpScalePartAction*>(pAction); - BitmapEx aBitmapEx( pA->GetBitmap() ); - aBitmapEx.Crop( tools::Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) ); + Bitmap aBitmap( pA->GetBitmap() ); + aBitmap.Crop( tools::Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) ); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( pA->GetDestPoint(), pA->GetDestSize(), aBitmapEx, aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( pA->GetDestPoint(), pA->GetDestSize(), aBitmap, aGraphic, pDummyVDev, i_rContext ); } break; @@ -768,7 +768,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa Size aSize( OutputDevice::LogicToLogic( aBitmapEx.GetPrefSize(), aBitmapEx.GetPrefMapMode(), pDummyVDev->GetMapMode() ) ); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( pA->GetPoint(), aSize, aBitmapEx, aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( pA->GetPoint(), aSize, Bitmap(aBitmapEx), aGraphic, pDummyVDev, i_rContext ); } break; @@ -777,7 +777,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa const MetaBmpExScaleAction* pA = static_cast<const MetaBmpExScaleAction*>(pAction); BitmapEx aBitmapEx( pA->GetBitmapEx() ); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( pA->GetPoint(), pA->GetSize(), aBitmapEx, aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( pA->GetPoint(), pA->GetSize(), Bitmap(aBitmapEx), aGraphic, pDummyVDev, i_rContext ); } break; @@ -788,7 +788,7 @@ void PDFWriterImpl::playMetafile( const GDIMetaFile& i_rMtf, vcl::PDFExtOutDevDa BitmapEx aBitmapEx( pA->GetBitmapEx() ); aBitmapEx.Crop( tools::Rectangle( pA->GetSrcPoint(), pA->GetSrcSize() ) ); Graphic aGraphic = i_pOutDevData ? i_pOutDevData->GetCurrentGraphic() : Graphic(); - implWriteBitmapEx( pA->GetDestPoint(), pA->GetDestSize(), aBitmapEx, aGraphic, pDummyVDev, i_rContext ); + implWriteBitmapEx( pA->GetDestPoint(), pA->GetDestSize(), Bitmap(aBitmapEx), aGraphic, pDummyVDev, i_rContext ); } break;