vcl/source/outdev/bitmap.cxx |   21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

New commits:
commit 4a133770430a90050a5f78c3e1e2bd92770c8b91
Author:     Christopher Sherlock <chris.sherloc...@gmail.com>
AuthorDate: Sat Aug 2 16:46:11 2025 +1000
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Aug 11 08:20:39 2025 +0200

    vcl: move bitmap readers into lcl_BlendBitmapWithAlpha()
    
    Change-Id: Ie0bdba4a43823822a4b25ad37986718222f5c7e5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188804
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
index 653f9dddf124..d22d42f7b1db 100644
--- a/vcl/source/outdev/bitmap.cxx
+++ b/vcl/source/outdev/bitmap.cxx
@@ -444,8 +444,8 @@ BitmapColor lcl_AlphaBlendColors(const BitmapColor& rCol1, 
const BitmapColor& rC
 
 Bitmap lcl_BlendBitmapWithAlpha(
             Bitmap&             aBmp,
-            BitmapReadAccess const* pSrcBmp,
-            BitmapReadAccess const* pSrcAlphaBmp,
+            const Bitmap& rBitmap,
+            const AlphaMask& rAlpha,
             const sal_Int32     nDstHeight,
             const sal_Int32     nDstWidth,
             const sal_Int32*    pMapX,
@@ -454,6 +454,9 @@ Bitmap lcl_BlendBitmapWithAlpha(
 {
     Bitmap      res;
 
+    BitmapScopedReadAccess pSrcBmp(rBitmap);
+    BitmapScopedReadAccess pSrcAlphaBmp(rAlpha);
+
     {
         BitmapScopedWriteAccess pDstBmp(aBmp);
         if (pDstBmp && pSrcBmp && pSrcAlphaBmp)
@@ -524,11 +527,12 @@ void OutputDevice::DrawDeviceAlphaBitmapSlowPath(const 
Bitmap& rBitmap,
 
     TradScaleContext aTradContext(aDstRect, aBmpRect, aOutSize, nOffX, nOffY);
 
-    BitmapScopedReadAccess pBitmapReadAccess(rBitmap);
-    BitmapScopedReadAccess pAlphaReadAccess(rAlpha);
+    BitmapScopedReadAccess pCheckAlphaReadAccess(rAlpha);
+
+    SAL_WARN_IF(pCheckAlphaReadAccess->GetScanlineFormat() != 
ScanlineFormat::N8BitPal, "vcl.gdi", "non-8bit alpha no longer supported!");
+    assert(pCheckAlphaReadAccess->GetScanlineFormat() == 
ScanlineFormat::N8BitPal);
 
-    SAL_WARN_IF(pAlphaReadAccess->GetScanlineFormat() != 
ScanlineFormat::N8BitPal, "vcl.gdi", "non-8bit alpha no longer supported!");
-    assert(pAlphaReadAccess->GetScanlineFormat() == ScanlineFormat::N8BitPal);
+    pCheckAlphaReadAccess.reset();
 
     // #i38887# reading from screen may sometimes fail
     if (aDeviceBmp.ImplGetSalBitmap())
@@ -536,10 +540,9 @@ void OutputDevice::DrawDeviceAlphaBitmapSlowPath(const 
Bitmap& rBitmap,
         Bitmap aNewBitmap;
 
         aNewBitmap = lcl_BlendBitmapWithAlpha(
-                        aDeviceBmp, pBitmapReadAccess.get(), 
pAlphaReadAccess.get(),
-                        nDstHeight,
-                        nDstWidth,
+                        aDeviceBmp, rBitmap, rAlpha, nDstHeight, nDstWidth,
                         aTradContext.mpMapX.get(), aTradContext.mpMapY.get() );
+
         DrawBitmap(aDstRect.TopLeft(), aNewBitmap);
     }
 

Reply via email to