vcl/source/bitmap/bitmappaint.cxx |   16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

New commits:
commit 112dd7edb69a0262d829fb071df1bc5d402aab50
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Fri Feb 9 11:34:55 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Fri Feb 9 14:45:03 2024 +0100

    ofz#66573 directly invert the colors in the palette
    
    instead of looping over each pixel.
    
    Change-Id: I00d23d0c7d16dcf6e71c81bbad0a7b4cd3d241a2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163159
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/vcl/source/bitmap/bitmappaint.cxx 
b/vcl/source/bitmap/bitmappaint.cxx
index cc3674ad3123..bbf3239905f6 100644
--- a/vcl/source/bitmap/bitmappaint.cxx
+++ b/vcl/source/bitmap/bitmappaint.cxx
@@ -83,7 +83,6 @@ bool Bitmap::Invert()
     if (pWriteAcc->HasPalette())
     {
         const sal_uInt16 nActColors = pWriteAcc->GetPaletteEntryCount();
-        const sal_uInt16 nMaxColors = 1 << pWriteAcc->GetBitCount();
 
         if (pWriteAcc->GetPalette().IsGreyPalette8Bit())
         {
@@ -100,18 +99,11 @@ bool Bitmap::Invert()
         }
         else
         {
-            for (tools::Long nY = 0; nY < nHeight; nY++)
+            for (sal_uInt16 i = 0; i < nActColors; ++i)
             {
-                Scanline pScanline = pWriteAcc->GetScanline(nY);
-                for (tools::Long nX = 0; nX < nWidth; nX++)
-                {
-                    BitmapColor aBmpColor = 
pWriteAcc->GetPixelFromData(pScanline, nX);
-                    aBmpColor = 
pWriteAcc->GetPaletteColor(aBmpColor.GetIndex());
-                    aBmpColor.Invert();
-                    BitmapColor aReplace = UpdatePaletteForNewColor(
-                        pWriteAcc, nActColors, nMaxColors, nHeight, nWidth, 
aBmpColor);
-                    pWriteAcc->SetPixelOnData(pScanline, nX, aReplace);
-                }
+                BitmapColor aBmpColor = pWriteAcc->GetPaletteColor(i);
+                aBmpColor.Invert();
+                pWriteAcc->SetPaletteColor(i, aBmpColor);
             }
         }
     }

Reply via email to