diff options
-rw-r--r-- | include/vcl/test/GraphicsRenderTests.hxx | 17 | ||||
-rw-r--r-- | vcl/backendtest/GraphicsRenderTests.cxx | 195 | ||||
-rw-r--r-- | vcl/backendtest/VisualBackendTest.cxx | 10 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/bitmap.cxx | 36 | ||||
-rw-r--r-- | vcl/inc/test/outputdevice.hxx | 13 | ||||
-rw-r--r-- | vcl/qa/cppunit/BackendTest.cxx | 141 |
6 files changed, 347 insertions, 65 deletions
diff --git a/include/vcl/test/GraphicsRenderTests.hxx b/include/vcl/test/GraphicsRenderTests.hxx index dee521438edc..41cbe561b483 100644 --- a/include/vcl/test/GraphicsRenderTests.hxx +++ b/include/vcl/test/GraphicsRenderTests.hxx @@ -81,11 +81,18 @@ class VCL_PLUGIN_PUBLIC GraphicsRenderTests void testDrawBezierAAWithPolylineB2D(); void testDrawDropShapeWithPolygon(); void testDrawDropShapeAAWithPolygon(); - void testDrawBitmap(); - void testDrawTransformedBitmap(); - void testDrawBitmapExWithAlpha(); - void testDrawMask(); - void testDrawBlend(); + void testDrawBitmap24bpp(); + void testDrawTransformedBitmap24bpp(); + void testDrawBitmapExWithAlpha24bpp(); + void testDrawMask24bpp(); + void testDrawBlend24bpp(); + void testDrawBitmap32bpp(); + void testDrawTransformedBitmap32bpp(); + void testDrawBitmapExWithAlpha32bpp(); + void testDrawMask32bpp(); + void testDrawBlend32bpp(); + void testDrawBitmap8bppGreyScale(); + void testDrawTransformedBitmap8bppGreyScale(); void testDrawXor(); void testClipRectangle(); void testClipPolygon(); diff --git a/vcl/backendtest/GraphicsRenderTests.cxx b/vcl/backendtest/GraphicsRenderTests.cxx index 263d37cf6d3f..ad508ec6d975 100644 --- a/vcl/backendtest/GraphicsRenderTests.cxx +++ b/vcl/backendtest/GraphicsRenderTests.cxx @@ -13,6 +13,9 @@ #include <vcl/test/GraphicsRenderTests.hxx> #include <tools/stream.hxx> +#include <svdata.hxx> +#include <salinst.hxx> + #include <unordered_map> #define SHOULD_ASSERT \ @@ -32,6 +35,7 @@ void exportBitmapExToImage(OUString const& rImageName, const BitmapEx& rBitmapEx SvFileStream aStream(rImageName, StreamMode::WRITE | StreamMode::TRUNC); GraphicFilter::GetGraphicFilter().compressAsPNG(aBitmapEx, aStream); } +bool is32bppSupported() { return ImplGetSVData()->mpDefInst->supportsBitmap32(); } } OUString GraphicsRenderTests::returnTestStatus(vcl::test::TestResult const result) @@ -758,11 +762,11 @@ void GraphicsRenderTests::testDrawDropShapeAAWithPolygon() } } -void GraphicsRenderTests::testDrawBitmap() +void GraphicsRenderTests::testDrawBitmap24bpp() { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawBitmap(); - OUString aTestName = "testDrawBitmap"; + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N24_BPP); + OUString aTestName = "testDrawBitmap24bpp"; if (!SHOULD_ASSERT) { appendTestResult(aTestName, "SKIPPED"); @@ -779,11 +783,11 @@ void GraphicsRenderTests::testDrawBitmap() } } -void GraphicsRenderTests::testDrawTransformedBitmap() +void GraphicsRenderTests::testDrawTransformedBitmap24bpp() { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(); - OUString aTestName = "testDrawTransformedBitmap"; + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N24_BPP); + OUString aTestName = "testDrawTransformedBitmap24bpp"; if (!SHOULD_ASSERT) { appendTestResult(aTestName, "SKIPPED"); @@ -800,11 +804,11 @@ void GraphicsRenderTests::testDrawTransformedBitmap() } } -void GraphicsRenderTests::testDrawBitmapExWithAlpha() +void GraphicsRenderTests::testDrawBitmapExWithAlpha24bpp() { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(); - OUString aTestName = "testDrawBitmapExWithAlpha"; + Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(vcl::PixelFormat::N24_BPP); + OUString aTestName = "testDrawBitmapExWithAlpha24bpp"; if (!SHOULD_ASSERT) { appendTestResult(aTestName, "SKIPPED"); @@ -821,11 +825,11 @@ void GraphicsRenderTests::testDrawBitmapExWithAlpha() } } -void GraphicsRenderTests::testDrawMask() +void GraphicsRenderTests::testDrawMask24bpp() { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawMask(); - OUString aTestName = "testDrawMask"; + Bitmap aBitmap = aOutDevTest.setupDrawMask(vcl::PixelFormat::N24_BPP); + OUString aTestName = "testDrawMask24bpp"; if (!SHOULD_ASSERT) { appendTestResult(aTestName, "SKIPPED"); @@ -841,11 +845,11 @@ void GraphicsRenderTests::testDrawMask() } } -void GraphicsRenderTests::testDrawBlend() +void GraphicsRenderTests::testDrawBlend24bpp() { vcl::test::OutputDeviceTestBitmap aOutDevTest; - BitmapEx aBitmapEx = aOutDevTest.setupDrawBlend(); - OUString aTestName = "testDrawBlend"; + BitmapEx aBitmapEx = aOutDevTest.setupDrawBlend(vcl::PixelFormat::N24_BPP); + OUString aTestName = "testDrawBlend24bpp"; if (!SHOULD_ASSERT) { appendTestResult(aTestName, "SKIPPED"); @@ -1545,6 +1549,150 @@ void GraphicsRenderTests::testEvenOddRuleInIntersectingRectsWithPolyPolygonB2D() } } +void GraphicsRenderTests::testDrawBitmap8bppGreyScale() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N8_BPP, true); + OUString aTestName = "testDrawBitmap8bppGreyScale"; + if (!SHOULD_ASSERT) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult + = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap8bppGreyScale(aBitmap); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmap : Bitmap())); + if (m_aStoreResultantBitmap) + { + BitmapEx aBitmapEx(aBitmap); + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + +void GraphicsRenderTests::testDrawTransformedBitmap8bppGreyScale() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N8_BPP, true); + OUString aTestName = "testDrawTransformedBitmap8bppGreyScale"; + if (!SHOULD_ASSERT) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult + = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap8bppGreyScale(aBitmap); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmap : Bitmap())); + if (m_aStoreResultantBitmap) + { + BitmapEx aBitmapEx(aBitmap); + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + +void GraphicsRenderTests::testDrawBitmap32bpp() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N32_BPP); + OUString aTestName = "testDrawBitmap32bpp"; + if (!SHOULD_ASSERT || !is32bppSupported()) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult + = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmap : Bitmap())); + if (m_aStoreResultantBitmap) + { + BitmapEx aBitmapEx(aBitmap); + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + +void GraphicsRenderTests::testDrawTransformedBitmap32bpp() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N32_BPP); + OUString aTestName = "testDrawTransformedBitmap32bpp"; + if (!SHOULD_ASSERT || !is32bppSupported()) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult + = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmap : Bitmap())); + if (m_aStoreResultantBitmap) + { + BitmapEx aBitmapEx(aBitmap); + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + +void GraphicsRenderTests::testDrawBitmapExWithAlpha32bpp() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(vcl::PixelFormat::N32_BPP); + OUString aTestName = "testDrawBitmapExWithAlpha32bpp"; + if (!SHOULD_ASSERT || !is32bppSupported()) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult + = vcl::test::OutputDeviceTestBitmap::checkBitmapExWithAlpha(aBitmap); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmap : Bitmap())); + if (m_aStoreResultantBitmap) + { + BitmapEx aBitmapEx(aBitmap); + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + +void GraphicsRenderTests::testDrawMask32bpp() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawMask(vcl::PixelFormat::N32_BPP); + OUString aTestName = "testDrawMask32bpp"; + if (!SHOULD_ASSERT || !is32bppSupported()) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestBitmap::checkMask(aBitmap); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmap : Bitmap())); + if (m_aStoreResultantBitmap) + { + BitmapEx aBitmapEx(aBitmap); + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + +void GraphicsRenderTests::testDrawBlend32bpp() +{ + vcl::test::OutputDeviceTestBitmap aOutDevTest; + BitmapEx aBitmapEx = aOutDevTest.setupDrawBlend(vcl::PixelFormat::N32_BPP); + OUString aTestName = "testDrawBlend32bpp"; + if (!SHOULD_ASSERT || !is32bppSupported()) + { + appendTestResult(aTestName, "SKIPPED"); + return; + } + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestBitmap::checkBlend(aBitmapEx); + appendTestResult(aTestName, returnTestStatus(eResult), + (m_aStoreResultantBitmap ? aBitmapEx.GetBitmap() : Bitmap())); + if (m_aStoreResultantBitmap) + { + exportBitmapExToImage(m_aUserInstallPath + aTestName + ".png", aBitmapEx); + } +} + void GraphicsRenderTests::runALLTests() { testDrawRectWithRectangle(); @@ -1576,11 +1724,11 @@ void GraphicsRenderTests::runALLTests() testDrawInvertTrackFrameWithRectangle(); testDrawBezierWithPolylineB2D(); testDrawBezierAAWithPolylineB2D(); - testDrawBitmap(); - testDrawTransformedBitmap(); - testDrawBitmapExWithAlpha(); - testDrawMask(); - testDrawBlend(); + testDrawBitmap24bpp(); + testDrawTransformedBitmap24bpp(); + testDrawBitmapExWithAlpha24bpp(); + testDrawMask24bpp(); + testDrawBlend24bpp(); testDrawXor(); testClipRectangle(); testClipPolygon(); @@ -1619,6 +1767,13 @@ void GraphicsRenderTests::runALLTests() testTextDrawing(); testEvenOddRuleInIntersectingRectsWithPolyPolygon(); testEvenOddRuleInIntersectingRectsWithPolyPolygonB2D(); + testDrawBitmap8bppGreyScale(); + testDrawTransformedBitmap8bppGreyScale(); + testDrawBitmap32bpp(); + testDrawTransformedBitmap32bpp(); + testDrawBitmapExWithAlpha32bpp(); + testDrawMask32bpp(); + testDrawBlend32bpp(); } void GraphicsRenderTests::appendTestResult(OUString aTestName, OUString aTestStatus, diff --git a/vcl/backendtest/VisualBackendTest.cxx b/vcl/backendtest/VisualBackendTest.cxx index 55ec308fb226..5426bf2acdd8 100644 --- a/vcl/backendtest/VisualBackendTest.cxx +++ b/vcl/backendtest/VisualBackendTest.cxx @@ -477,35 +477,35 @@ public: aRectangle = aRegions[index++]; { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawBitmap(); + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N24_BPP); assertAndSetBackground(vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } aRectangle = aRegions[index++]; { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(); + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N24_BPP); assertAndSetBackground(vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } aRectangle = aRegions[index++]; { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(); + Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(vcl::PixelFormat::N24_BPP); assertAndSetBackground(vcl::test::OutputDeviceTestBitmap::checkBitmapExWithAlpha(aBitmap), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } aRectangle = aRegions[index++]; { vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawMask(); + Bitmap aBitmap = aOutDevTest.setupDrawMask(vcl::PixelFormat::N24_BPP); assertAndSetBackground(vcl::test::OutputDeviceTestBitmap::checkMask(aBitmap), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } aRectangle = aRegions[index++]; { vcl::test::OutputDeviceTestBitmap aOutDevTest; - BitmapEx aBitmap = aOutDevTest.setupDrawBlend(); + BitmapEx aBitmap = aOutDevTest.setupDrawBlend(vcl::PixelFormat::N24_BPP); assertAndSetBackground(vcl::test::OutputDeviceTestBitmap::checkBlend(aBitmap), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap.GetBitmap(), rRenderContext); } diff --git a/vcl/backendtest/outputdevice/bitmap.cxx b/vcl/backendtest/outputdevice/bitmap.cxx index 2c7d7569cde6..066355c53f14 100644 --- a/vcl/backendtest/outputdevice/bitmap.cxx +++ b/vcl/backendtest/outputdevice/bitmap.cxx @@ -15,10 +15,10 @@ namespace vcl::test { -Bitmap OutputDeviceTestBitmap::setupDrawTransformedBitmap() +Bitmap OutputDeviceTestBitmap::setupDrawTransformedBitmap(vcl::PixelFormat aBitmapFormat,bool isBitmapGreyScale) { Size aBitmapSize(9, 9); - Bitmap aBitmap(aBitmapSize, vcl::PixelFormat::N24_BPP); + Bitmap aBitmap(aBitmapSize, aBitmapFormat); { BitmapScopedWriteAccess aWriteAccess(aBitmap); aWriteAccess->Erase(constFillColor); @@ -27,6 +27,9 @@ Bitmap OutputDeviceTestBitmap::setupDrawTransformedBitmap() aWriteAccess->DrawRect(tools::Rectangle(2, 2, 6, 6)); } + if (isBitmapGreyScale) + aBitmap.Convert(BmpConversion::N8BitGreys); + initialSetup(13, 13, constBackgroundColor); basegfx::B2DHomMatrix aTransform; @@ -40,10 +43,10 @@ Bitmap OutputDeviceTestBitmap::setupDrawTransformedBitmap() } -Bitmap OutputDeviceTestBitmap::setupDrawBitmap() +Bitmap OutputDeviceTestBitmap::setupDrawBitmap(vcl::PixelFormat aBitmapFormat,bool isBitmapGreyScale) { Size aBitmapSize(9, 9); - Bitmap aBitmap(aBitmapSize, vcl::PixelFormat::N24_BPP); + Bitmap aBitmap(aBitmapSize, aBitmapFormat); { BitmapScopedWriteAccess aWriteAccess(aBitmap); aWriteAccess->Erase(constFillColor); @@ -52,6 +55,9 @@ Bitmap OutputDeviceTestBitmap::setupDrawBitmap() aWriteAccess->DrawRect(tools::Rectangle(2, 2, 6, 6)); } + if (isBitmapGreyScale) + aBitmap.Convert(BmpConversion::N8BitGreys); + initialSetup(13, 13, constBackgroundColor); Point aPoint((maVDRectangle.GetWidth() / 2.0) - (aBitmapSize.Width() / 2.0), @@ -62,10 +68,10 @@ Bitmap OutputDeviceTestBitmap::setupDrawBitmap() return mpVirtualDevice->GetBitmap(maVDRectangle.TopLeft(), maVDRectangle.GetSize()); } -Bitmap OutputDeviceTestBitmap::setupDrawBitmapExWithAlpha() +Bitmap OutputDeviceTestBitmap::setupDrawBitmapExWithAlpha(vcl::PixelFormat aBitmapFormat) { Size aBitmapSize(9, 9); - Bitmap aBitmap(aBitmapSize, vcl::PixelFormat::N24_BPP); + Bitmap aBitmap(aBitmapSize, aBitmapFormat); { BitmapScopedWriteAccess aWriteAccess(aBitmap); aWriteAccess->Erase(COL_WHITE); @@ -92,10 +98,10 @@ Bitmap OutputDeviceTestBitmap::setupDrawBitmapExWithAlpha() return mpVirtualDevice->GetBitmap(maVDRectangle.TopLeft(), maVDRectangle.GetSize()); } -Bitmap OutputDeviceTestBitmap::setupDrawMask() +Bitmap OutputDeviceTestBitmap::setupDrawMask(vcl::PixelFormat aBitmapFormat) { Size aBitmapSize(9, 9); - Bitmap aBitmap(aBitmapSize, vcl::PixelFormat::N24_BPP); + Bitmap aBitmap(aBitmapSize, aBitmapFormat); { BitmapScopedWriteAccess aWriteAccess(aBitmap); aWriteAccess->Erase(COL_WHITE); @@ -111,10 +117,10 @@ Bitmap OutputDeviceTestBitmap::setupDrawMask() return mpVirtualDevice->GetBitmap(maVDRectangle.TopLeft(), maVDRectangle.GetSize()); } -BitmapEx OutputDeviceTestBitmap::setupDrawBlend() +BitmapEx OutputDeviceTestBitmap::setupDrawBlend(vcl::PixelFormat aBitmapFormat) { Size aBitmapSize(9, 9); - Bitmap aBitmap(aBitmapSize, vcl::PixelFormat::N24_BPP); + Bitmap aBitmap(aBitmapSize, aBitmapFormat); { BitmapScopedWriteAccess aWriteAccess(aBitmap); aWriteAccess->Erase(COL_WHITE); @@ -157,6 +163,16 @@ TestResult OutputDeviceTestBitmap::checkTransformedBitmap(Bitmap& rBitmap) return checkRectangles(rBitmap, aExpected); } +TestResult OutputDeviceTestBitmap::checkTransformedBitmap8bppGreyScale(Bitmap& rBitmap) +{ + std::vector<Color> aExpected + { + Color(0xC0,0xC0,0xC0), Color(0xC0,0xC0,0xC0), + Color(0xE2,0xE2,0xE2), Color(0xE,0xE,0xE), Color(0xE2,0xE2,0xE2), Color(0xE,0xE,0xE), Color(0xE,0xE,0xE) + }; + return checkRectangles(rBitmap, aExpected); +} + TestResult OutputDeviceTestBitmap::checkBitmapExWithAlpha(Bitmap& rBitmap) { const Color aBlendedColor(0xEE, 0xEE, 0x33); diff --git a/vcl/inc/test/outputdevice.hxx b/vcl/inc/test/outputdevice.hxx index b72206d76cd1..67ae1be876b1 100644 --- a/vcl/inc/test/outputdevice.hxx +++ b/vcl/inc/test/outputdevice.hxx @@ -105,16 +105,19 @@ class VCL_DLLPUBLIC OutputDeviceTestBitmap : public OutputDeviceTestCommon public: OutputDeviceTestBitmap() = default; - Bitmap setupDrawTransformedBitmap(); - Bitmap setupDrawBitmap(); - Bitmap setupDrawBitmapExWithAlpha(); - Bitmap setupDrawMask(); - BitmapEx setupDrawBlend(); + Bitmap setupDrawTransformedBitmap(vcl::PixelFormat aBitmapFormat, + bool isBitmapGreyScale = false); + Bitmap setupDrawBitmap(vcl::PixelFormat aBitmapFormat, bool isBitmapGreyScale = false); + Bitmap setupDrawBitmapExWithAlpha(vcl::PixelFormat aBitmapFormat); + Bitmap setupDrawMask(vcl::PixelFormat aBitmapFormat); + BitmapEx setupDrawBlend(vcl::PixelFormat aBitmapFormat); static TestResult checkTransformedBitmap(Bitmap& rBitmap); static TestResult checkBitmapExWithAlpha(Bitmap& rBitmap); static TestResult checkMask(Bitmap& rBitmap); static TestResult checkBlend(const BitmapEx& rBitmap); + + static TestResult checkTransformedBitmap8bppGreyScale(Bitmap& rBitmap); }; class VCL_DLLPUBLIC OutputDeviceTestAnotherOutDev : public OutputDeviceTestCommon diff --git a/vcl/qa/cppunit/BackendTest.cxx b/vcl/qa/cppunit/BackendTest.cxx index 7bef9b2479d7..c337ad1f0707 100644 --- a/vcl/qa/cppunit/BackendTest.cxx +++ b/vcl/qa/cppunit/BackendTest.cxx @@ -16,6 +16,9 @@ #include <basegfx/matrix/b2dhommatrix.hxx> #include <bitmap/BitmapWriteAccess.hxx> +#include <svdata.hxx> +#include <salinst.hxx> + #include <test/outputdevice.hxx> // Run tests from visualbackendtest ('bin/run visualbackendtest'). @@ -57,6 +60,8 @@ class BackendTest : public test::BootstrapFixture } } + bool is32bppSupported() { return ImplGetSVData()->mpDefInst->supportsBitmap32(); } + public: BackendTest() : BootstrapFixture(true, false) @@ -449,62 +454,148 @@ public: CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); } - void testDrawBitmap() + void testDrawBitmap24bpp() { if (getDefaultDeviceBitCount() < 24) return; vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawBitmap(); - exportImage("08-01_bitmap_test.png", aBitmap); + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N24_BPP); + exportImage("08-01_bitmap_test_24bpp.png", aBitmap); auto eResult = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); } - void testDrawTransformedBitmap() + void testDrawTransformedBitmap24bpp() { if (getDefaultDeviceBitCount() < 24) return; vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(); + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N24_BPP); auto eResult = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap); - exportImage("08-02_transformed_bitmap_test.png", aBitmap); + exportImage("08-02_transformed_bitmap_test_24bpp.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); } - void testDrawBitmapExWithAlpha() + void testDrawBitmapExWithAlpha24bpp() { if (getDefaultDeviceBitCount() < 24) return; vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(); + Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(vcl::PixelFormat::N24_BPP); auto eResult = vcl::test::OutputDeviceTestBitmap::checkBitmapExWithAlpha(aBitmap); - exportImage("08-03_bitmapex_with_alpha_test.png", aBitmap); + exportImage("08-03_bitmapex_with_alpha_test_24bpp.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); } - void testDrawMask() + void testDrawMask24bpp() { if (getDefaultDeviceBitCount() < 24) return; vcl::test::OutputDeviceTestBitmap aOutDevTest; - Bitmap aBitmap = aOutDevTest.setupDrawMask(); + Bitmap aBitmap = aOutDevTest.setupDrawMask(vcl::PixelFormat::N24_BPP); auto eResult = vcl::test::OutputDeviceTestBitmap::checkMask(aBitmap); - exportImage("08-04_mask_test.png", aBitmap); + exportImage("08-04_mask_test_24bpp.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); } - void testDrawBlend() + void testDrawBlend24bpp() { if (getDefaultDeviceBitCount() < 24) return; vcl::test::OutputDeviceTestBitmap aOutDevTest; - BitmapEx aBitmapEx = aOutDevTest.setupDrawBlend(); + BitmapEx aBitmapEx = aOutDevTest.setupDrawBlend(vcl::PixelFormat::N24_BPP); auto eResult = vcl::test::OutputDeviceTestBitmap::checkBlend(aBitmapEx); - exportImage("08-05_blend_test.png", aBitmapEx); + exportImage("08-05_blend_test_24bpp.png", aBitmapEx); + if (SHOULD_ASSERT) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawBitmap32bpp() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N32_BPP); + exportImage("09-01_bitmap_test_32bpp.png", aBitmap); + auto eResult = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap); + if (SHOULD_ASSERT && is32bppSupported()) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawTransformedBitmap32bpp() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N32_BPP); + auto eResult = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap(aBitmap); + exportImage("09-02_transformed_bitmap_test_32bpp.png", aBitmap); + if (SHOULD_ASSERT && is32bppSupported()) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawBitmapExWithAlpha32bpp() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawBitmapExWithAlpha(vcl::PixelFormat::N32_BPP); + auto eResult = vcl::test::OutputDeviceTestBitmap::checkBitmapExWithAlpha(aBitmap); + exportImage("09-03_bitmapex_with_alpha_test_32bpp.png", aBitmap); + if (SHOULD_ASSERT && is32bppSupported()) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawMask32bpp() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawMask(vcl::PixelFormat::N32_BPP); + auto eResult = vcl::test::OutputDeviceTestBitmap::checkMask(aBitmap); + exportImage("09-04_mask_test_32bpp.png", aBitmap); + if (SHOULD_ASSERT && is32bppSupported()) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawBlend32bpp() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + BitmapEx aBitmapEx = aOutDevTest.setupDrawBlend(vcl::PixelFormat::N32_BPP); + auto eResult = vcl::test::OutputDeviceTestBitmap::checkBlend(aBitmapEx); + exportImage("09-05_blend_test_32bpp.png", aBitmapEx); + if (SHOULD_ASSERT && is32bppSupported()) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawBitmap8bppGreyScale() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawBitmap(vcl::PixelFormat::N8_BPP, true); + exportImage("010-01_bitmap_test_8bpp_greyscale.png", aBitmap); + auto eResult + = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap8bppGreyScale(aBitmap); + if (SHOULD_ASSERT) + CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); + } + + void testDrawTransformedBitmap8bppGreyScale() + { + if (getDefaultDeviceBitCount() < 24) + return; + vcl::test::OutputDeviceTestBitmap aOutDevTest; + Bitmap aBitmap = aOutDevTest.setupDrawTransformedBitmap(vcl::PixelFormat::N8_BPP, true); + auto eResult + = vcl::test::OutputDeviceTestBitmap::checkTransformedBitmap8bppGreyScale(aBitmap); + exportImage("010-02_transformed_bitmap_test_8bpp_greyscale.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); } @@ -1251,13 +1342,23 @@ public: CPPUNIT_TEST(testFilledAsymmetricalDropShape); - CPPUNIT_TEST(testDrawBitmap); - CPPUNIT_TEST(testDrawTransformedBitmap); - CPPUNIT_TEST(testDrawBitmapExWithAlpha); - CPPUNIT_TEST(testDrawMask); - CPPUNIT_TEST(testDrawBlend); + CPPUNIT_TEST(testDrawBitmap24bpp); + CPPUNIT_TEST(testDrawTransformedBitmap24bpp); + CPPUNIT_TEST(testDrawBitmapExWithAlpha24bpp); + CPPUNIT_TEST(testDrawMask24bpp); + CPPUNIT_TEST(testDrawBlend24bpp); + CPPUNIT_TEST(testDrawXor); + CPPUNIT_TEST(testDrawBitmap32bpp); + CPPUNIT_TEST(testDrawTransformedBitmap32bpp); + CPPUNIT_TEST(testDrawBitmapExWithAlpha32bpp); + CPPUNIT_TEST(testDrawMask32bpp); + CPPUNIT_TEST(testDrawBlend32bpp); + + CPPUNIT_TEST(testDrawTransformedBitmap8bppGreyScale); + CPPUNIT_TEST(testDrawBitmap8bppGreyScale); + CPPUNIT_TEST(testDrawTransformedBitmapExAlpha); CPPUNIT_TEST(testClipRectangle); |