vcl/inc/bitmap/BitmapColorizeFilter.hxx |    2 
 vcl/qa/cppunit/BitmapFilterTest.cxx     |   91 ++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+), 1 deletion(-)

New commits:
commit ceafe6ac7423ddc49489f8c0a87572b08b036474
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Jan 20 14:14:12 2026 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Tue Jan 20 21:16:52 2026 +0100

    tdf#170384: test BitmapColorizeFilter
    
    Change-Id: Ia1fe520f6669e659de547c44cf445784f02058f3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197664
    Reviewed-by: Xisco Fauli <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/inc/bitmap/BitmapColorizeFilter.hxx 
b/vcl/inc/bitmap/BitmapColorizeFilter.hxx
index 08b1026f0cb3..74e40f303cd2 100644
--- a/vcl/inc/bitmap/BitmapColorizeFilter.hxx
+++ b/vcl/inc/bitmap/BitmapColorizeFilter.hxx
@@ -14,7 +14,7 @@
 
 #include <vcl/bitmap/BitmapFilter.hxx>
 
-class BitmapColorizeFilter final : public BitmapFilter
+class VCL_DLLPUBLIC BitmapColorizeFilter final : public BitmapFilter
 {
 public:
     BitmapColorizeFilter(Color aColor)
diff --git a/vcl/qa/cppunit/BitmapFilterTest.cxx 
b/vcl/qa/cppunit/BitmapFilterTest.cxx
index ec0ebdbf2226..2f95ed90774c 100644
--- a/vcl/qa/cppunit/BitmapFilterTest.cxx
+++ b/vcl/qa/cppunit/BitmapFilterTest.cxx
@@ -11,6 +11,7 @@
 
 #include <tools/stream.hxx>
 
+#include <bitmap/BitmapColorizeFilter.hxx>
 #include <bitmap/BitmapDuoToneFilter.hxx>
 #include <vcl/BitmapWriteAccess.hxx>
 #include <vcl/bitmap/BitmapAlphaClampFilter.hxx>
@@ -1571,6 +1572,96 @@ CPPUNIT_TEST_FIXTURE(BitmapFilterTest, 
testDuoToneFilter_32_BPP)
     }
 }
 
+CPPUNIT_TEST_FIXTURE(BitmapFilterTest, testColorizeFilter_24_BPP)
+{
+    Bitmap aRedBitmap(Size(4, 4), vcl::PixelFormat::N24_BPP);
+    CPPUNIT_ASSERT_EQUAL(vcl::PixelFormat::N24_BPP, 
aRedBitmap.getPixelFormat());
+    {
+        BitmapScopedWriteAccess aWriteAccess(aRedBitmap);
+        aWriteAccess->Erase(COL_LIGHTRED);
+    }
+
+    Bitmap aTransparentBitmap(Size(4, 4), vcl::PixelFormat::N24_BPP);
+    CPPUNIT_ASSERT_EQUAL(vcl::PixelFormat::N24_BPP, 
aTransparentBitmap.getPixelFormat());
+    {
+        BitmapScopedWriteAccess aWriteAccess(aTransparentBitmap);
+        aWriteAccess->Erase(COL_AUTO);
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_RED);
+        Bitmap aResBitmap = aColorizeFilter.execute(aRedBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0xFF, 0xBF, 0x00, 0x00),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_AUTO);
+        Bitmap aResBitmap = aColorizeFilter.execute(aRedBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0xFF, 0xFF, 0x7F, 0x7F),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_RED);
+        Bitmap aResBitmap = aColorizeFilter.execute(aTransparentBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0xFF, 0xBF, 0x7F, 0x7F),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_AUTO);
+        Bitmap aResBitmap = aColorizeFilter.execute(aTransparentBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0xFF, 0xFF, 0xFF, 0xFF),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+}
+
+CPPUNIT_TEST_FIXTURE(BitmapFilterTest, testColorizeFilter_32_BPP)
+{
+    Bitmap aRedBitmap(Size(4, 4), vcl::PixelFormat::N32_BPP);
+    CPPUNIT_ASSERT_EQUAL(vcl::PixelFormat::N32_BPP, 
aRedBitmap.getPixelFormat());
+    {
+        BitmapScopedWriteAccess aWriteAccess(aRedBitmap);
+        aWriteAccess->Erase(COL_LIGHTRED);
+    }
+
+    Bitmap aTransparentBitmap(Size(4, 4), vcl::PixelFormat::N32_BPP);
+    CPPUNIT_ASSERT_EQUAL(vcl::PixelFormat::N32_BPP, 
aTransparentBitmap.getPixelFormat());
+    {
+        BitmapScopedWriteAccess aWriteAccess(aTransparentBitmap);
+        aWriteAccess->Erase(COL_AUTO);
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_RED);
+        Bitmap aResBitmap = aColorizeFilter.execute(aRedBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0xFF, 0xBF, 0x00, 0x00),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_AUTO);
+        Bitmap aResBitmap = aColorizeFilter.execute(aRedBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0xFF, 0xFF, 0x7F, 0x7F),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_RED);
+        Bitmap aResBitmap = aColorizeFilter.execute(aTransparentBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0x00, 0x00, 0x00, 0x00),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+
+    {
+        BitmapColorizeFilter aColorizeFilter(COL_AUTO);
+        Bitmap aResBitmap = aColorizeFilter.execute(aTransparentBitmap);
+        CPPUNIT_ASSERT_EQUAL(Color(ColorAlpha, 0x00, 0x00, 0x00, 0x00),
+                             aResBitmap.GetPixelColor(2, 2));
+    }
+}
+
 } // namespace
 
 CPPUNIT_PLUGIN_IMPLEMENT();

Reply via email to