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();
