diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/backendtest/GraphicsRenderTests.cxx | 48 | ||||
-rw-r--r-- | vcl/backendtest/VisualBackendTest.cxx | 16 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/common.cxx | 103 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/line.cxx | 10 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/pixel.cxx | 11 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/polygon.cxx | 9 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/polyline.cxx | 11 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/polyline_b2d.cxx | 9 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/polypolygon.cxx | 14 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/polypolygon_b2d.cxx | 12 | ||||
-rw-r--r-- | vcl/backendtest/outputdevice/rectangle.cxx | 6 | ||||
-rw-r--r-- | vcl/inc/test/outputdevice.hxx | 1 | ||||
-rw-r--r-- | vcl/qa/cppunit/BackendTest.cxx | 16 |
13 files changed, 182 insertions, 84 deletions
diff --git a/vcl/backendtest/GraphicsRenderTests.cxx b/vcl/backendtest/GraphicsRenderTests.cxx index dc4483442fd6..bf3932ffa2b1 100644 --- a/vcl/backendtest/GraphicsRenderTests.cxx +++ b/vcl/backendtest/GraphicsRenderTests.cxx @@ -63,7 +63,7 @@ void GraphicsRenderTests::testDrawRectWithRectangle() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -83,7 +83,7 @@ void GraphicsRenderTests::testDrawRectWithPixel() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -103,7 +103,7 @@ void GraphicsRenderTests::testDrawRectWithLine() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -123,7 +123,7 @@ void GraphicsRenderTests::testDrawRectWithPolygon() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -143,7 +143,7 @@ void GraphicsRenderTests::testDrawRectWithPolyLine() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -163,7 +163,7 @@ void GraphicsRenderTests::testDrawRectWithPolyLineB2D() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -183,7 +183,7 @@ void GraphicsRenderTests::testDrawRectWithPolyPolygon() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -203,7 +203,7 @@ void GraphicsRenderTests::testDrawRectWithPolyPolygonB2D() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1704,7 +1704,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithRect() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1725,7 +1725,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithRect() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1745,7 +1745,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithPixel() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1765,7 +1765,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithPixel() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1785,7 +1785,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithLine() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1805,7 +1805,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithLine() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1825,7 +1825,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithPolyLine() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1845,7 +1845,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithPolyLine() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1865,7 +1865,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithPolygon() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1885,7 +1885,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithPolygon() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1905,7 +1905,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithPolyLineB2D() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1925,7 +1925,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithPolyLineB2D() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1945,7 +1945,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithPolyPolygon() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1965,7 +1965,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithPolyPolygon() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -1985,7 +1985,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize1028WithPolyPolygonB2D() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) @@ -2005,7 +2005,7 @@ void GraphicsRenderTests::testDrawRectangleOnSize4096WithPolygonPolygonB2D() appendTestResult(aTestName, "SKIPPED"); return; } - vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + vcl::test::TestResult eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); appendTestResult(aTestName, returnTestStatus(eResult), (m_aStoreResultantBitmap ? aBitmap : Bitmap())); if (m_aStoreResultantBitmap) diff --git a/vcl/backendtest/VisualBackendTest.cxx b/vcl/backendtest/VisualBackendTest.cxx index c5ca687242e6..7d0edb6aa69b 100644 --- a/vcl/backendtest/VisualBackendTest.cxx +++ b/vcl/backendtest/VisualBackendTest.cxx @@ -174,7 +174,7 @@ public: { vcl::test::OutputDeviceTestRect aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -182,7 +182,7 @@ public: { vcl::test::OutputDeviceTestPixel aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -190,7 +190,7 @@ public: { vcl::test::OutputDeviceTestLine aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -198,7 +198,7 @@ public: { vcl::test::OutputDeviceTestPolygon aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -206,7 +206,7 @@ public: { vcl::test::OutputDeviceTestPolyLine aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -214,7 +214,7 @@ public: { vcl::test::OutputDeviceTestPolyLineB2D aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -222,7 +222,7 @@ public: { vcl::test::OutputDeviceTestPolyPolygon aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } @@ -230,7 +230,7 @@ public: { vcl::test::OutputDeviceTestPolyPolygonB2D aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(AA); - assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap), aRectangle, rRenderContext); + assertAndSetBackground(vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap, AA), aRectangle, rRenderContext); drawBitmapScaledAndCentered(aRectangle, aBitmap, rRenderContext); } } diff --git a/vcl/backendtest/outputdevice/common.cxx b/vcl/backendtest/outputdevice/common.cxx index 2aa7de78a294..9e9f67bd9513 100644 --- a/vcl/backendtest/outputdevice/common.cxx +++ b/vcl/backendtest/outputdevice/common.cxx @@ -468,25 +468,104 @@ TestResult OutputDeviceTestCommon::checkRectangle(Bitmap& aBitmap) return checkRectangles(aBitmap, aExpected); } -TestResult OutputDeviceTestCommon::checkRectangleAA(Bitmap& aBitmap) +TestResult OutputDeviceTestCommon::checkRectangles(Bitmap& rBitmap, bool aEnableAA) { - std::vector<Color> aExpected + BitmapScopedWriteAccess pAccess(rBitmap); + + TestResult aResult = TestResult::Passed; + int nNumberOfQuirks = 0; + int nNumberOfErrors = 0; + + std::vector<Color> aExpected = { constBackgroundColor, constLineColor, constLineColor }; + + for (size_t aLayerNumber = 0; aLayerNumber < aExpected.size(); aLayerNumber++) { - constBackgroundColor, constBackgroundColor, constLineColor, - constBackgroundColor, constBackgroundColor, constLineColor, constBackgroundColor - }; - return checkRectangles(aBitmap, aExpected); + tools::Long startX = aLayerNumber, endX = pAccess->Width() / 2 - aLayerNumber + 1; + tools::Long startY = aLayerNumber, endY = pAccess->Height() - aLayerNumber - 1; + + for (tools::Long ptX = startX; ptX <= endX; ++ptX) + { + if (aEnableAA) + { + checkValueAA(pAccess, ptX, startY + (aLayerNumber == 2 ? 2 : 0), + aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors); + checkValueAA(pAccess, ptX, endY - (aLayerNumber == 2 ? 2 : 0), + aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors); + } + else + { + checkValue(pAccess, ptX, startY + (aLayerNumber == 2 ? 2 : 0), + aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors, true); + checkValue(pAccess, ptX, endY - (aLayerNumber == 2 ? 2 : 0), + aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors, true); + } + } + for (tools::Long ptY = startY + (aLayerNumber == 2 ? 2 : 0); + ptY <= endY - (aLayerNumber == 2 ? 2 : 0); ++ptY) + { + if (aEnableAA) + { + checkValueAA(pAccess, startX, ptY, aExpected[aLayerNumber], nNumberOfQuirks, + nNumberOfErrors); + checkValueAA(pAccess, endX, ptY, aExpected[aLayerNumber], nNumberOfQuirks, + nNumberOfErrors); + } + else + { + checkValue(pAccess, startX, ptY, aExpected[aLayerNumber], nNumberOfQuirks, + nNumberOfErrors, true); + checkValue(pAccess, endX, ptY, aExpected[aLayerNumber], nNumberOfQuirks, + nNumberOfErrors, true); + } + } + } + if (nNumberOfQuirks > 0) + aResult = TestResult::PassedWithQuirks; + if (nNumberOfErrors > 0) + aResult = TestResult::Failed; + return aResult; +} + +TestResult OutputDeviceTestCommon::checkRectangleAA(Bitmap& aBitmap) +{ + return checkRectangles(aBitmap, true); } TestResult OutputDeviceTestCommon::checkFilledRectangle(Bitmap& aBitmap, bool useLineColor) { - std::vector<Color> aExpected + std::vector<Color> aExpected{ constBackgroundColor, + useLineColor ? constLineColor : constFillColor, constFillColor, + constFillColor, constFillColor }; + + BitmapScopedWriteAccess pAccess(aBitmap); + + TestResult aResult = TestResult::Passed; + int nNumberOfQuirks = 0; + int nNumberOfErrors = 0; + + for (size_t aLayerNumber = 0; aLayerNumber < aExpected.size(); aLayerNumber++) { - constBackgroundColor, constBackgroundColor, - useLineColor ? constLineColor : constFillColor, - constFillColor, constFillColor, constFillColor, constFillColor - }; - return checkRectangles(aBitmap, aExpected); + tools::Long startX = aLayerNumber, endX = pAccess->Width() / 2 - aLayerNumber + 1; + tools::Long startY = aLayerNumber, endY = pAccess->Height() - aLayerNumber - 1; + + for (tools::Long ptX = startX; ptX <= endX; ++ptX) + { + checkValue(pAccess, ptX, startY, aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors, + true); + checkValue(pAccess, ptX, endY, aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors, true); + } + for (tools::Long ptY = startY; ptY <= endY; ++ptY) + { + checkValue(pAccess, startX, ptY, aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors, + true); + checkValue(pAccess, endX, ptY, aExpected[aLayerNumber], nNumberOfQuirks, nNumberOfErrors, true); + } + } + if (nNumberOfQuirks > 0) + aResult = TestResult::PassedWithQuirks; + if (nNumberOfErrors > 0) + aResult = TestResult::Failed; + return aResult; } TestResult OutputDeviceTestCommon::checkFilled(Bitmap& rBitmap, tools::Rectangle aRectangle, Color aExpectedColor) diff --git a/vcl/backendtest/outputdevice/line.cxx b/vcl/backendtest/outputdevice/line.cxx index ddff80683898..5cb6db10a9af 100644 --- a/vcl/backendtest/outputdevice/line.cxx +++ b/vcl/backendtest/outputdevice/line.cxx @@ -22,10 +22,12 @@ namespace void drawLineOffset(OutputDevice& rDevice, tools::Rectangle const & rRect, int nOffset) { - Point aLeftTop (rRect.Left() + nOffset, rRect.Top() + nOffset); - Point aRightTop (rRect.Right() - nOffset, rRect.Top() + nOffset); - Point aLeftBottom (rRect.Left() + nOffset, rRect.Bottom() - nOffset); - Point aRightBottom (rRect.Right() - nOffset, rRect.Bottom() - nOffset); + + int nMidOffset = rRect.GetWidth()/2; + Point aLeftTop (rRect.Left() + nOffset - (nOffset+1)/2, rRect.Top() + nOffset - 1); + Point aRightTop (rRect.Right() - nMidOffset - nOffset/3, rRect.Top() + nOffset - 1); + Point aLeftBottom (rRect.Left() + nOffset - (nOffset+1)/2, rRect.Bottom() - nOffset + 1); + Point aRightBottom (rRect.Right() - nMidOffset - nOffset/3, rRect.Bottom() - nOffset + 1); rDevice.DrawLine(aLeftTop, aRightTop); rDevice.DrawLine(aRightTop, aRightBottom); diff --git a/vcl/backendtest/outputdevice/pixel.cxx b/vcl/backendtest/outputdevice/pixel.cxx index 8801a9e70d35..3892160ef723 100644 --- a/vcl/backendtest/outputdevice/pixel.cxx +++ b/vcl/backendtest/outputdevice/pixel.cxx @@ -16,10 +16,11 @@ namespace { void drawPixelOffset(OutputDevice& rDevice, tools::Rectangle const& rRect, int nOffset) { - for (tools::Long x = 0 + nOffset; x < (rRect.GetWidth() - nOffset); ++x) + int nMidOffset = rRect.GetWidth() / 2; + for (tools::Long x = 0 + nOffset / 2; x < (rRect.GetWidth() - nMidOffset); ++x) { - tools::Long y1 = nOffset; - tools::Long y2 = rRect.GetHeight() - nOffset - 1; + tools::Long y1 = nOffset - 1; + tools::Long y2 = rRect.GetHeight() - nOffset; rDevice.DrawPixel(Point(x, y1)); rDevice.DrawPixel(Point(x, y2)); @@ -27,8 +28,8 @@ void drawPixelOffset(OutputDevice& rDevice, tools::Rectangle const& rRect, int n for (tools::Long y = 0 + nOffset; y < (rRect.GetHeight() - nOffset); ++y) { - tools::Long x1 = nOffset; - tools::Long x2 = rRect.GetWidth() - nOffset - 1; + tools::Long x1 = nOffset / 2; + tools::Long x2 = rRect.GetWidth() - nMidOffset - nOffset / std::max((nOffset - 3), 2); rDevice.DrawPixel(Point(x1, y)); rDevice.DrawPixel(Point(x2, y)); diff --git a/vcl/backendtest/outputdevice/polygon.cxx b/vcl/backendtest/outputdevice/polygon.cxx index fdc15bc54214..6b52ccabf72c 100644 --- a/vcl/backendtest/outputdevice/polygon.cxx +++ b/vcl/backendtest/outputdevice/polygon.cxx @@ -22,10 +22,11 @@ void drawPolygonOffset(OutputDevice& rDevice, tools::Rectangle const& rRect, int // overlaps when drawing adjacent polygons. Specifying nFix = 1 allows to visually compensate // for this by making the polygon explicitly larger. tools::Polygon aPolygon(4); - aPolygon.SetPoint(Point(rRect.Left() + nOffset, rRect.Top() + nOffset), 0); - aPolygon.SetPoint(Point(rRect.Right() - nOffset + nFix, rRect.Top() + nOffset), 1); - aPolygon.SetPoint(Point(rRect.Right() - nOffset + nFix, rRect.Bottom() - nOffset + nFix), 2); - aPolygon.SetPoint(Point(rRect.Left() + nOffset, rRect.Bottom() - nOffset + nFix), 3); + int nMidOffset = rRect.GetWidth() / 2; + aPolygon.SetPoint(Point(rRect.Left() + nOffset - (nOffset+1)/2, rRect.Top() + nOffset - 1), 0); + aPolygon.SetPoint(Point(rRect.Right() - nMidOffset + nFix - nOffset/3, rRect.Top() + nOffset - 1), 1); + aPolygon.SetPoint(Point(rRect.Right() - nMidOffset + nFix - nOffset/3, rRect.Bottom() - nOffset + nFix + 1), 2); + aPolygon.SetPoint(Point(rRect.Left() + nOffset - (nOffset+1)/2, rRect.Bottom() - nOffset + nFix + 1), 3); aPolygon.Optimize(PolyOptimizeFlags::CLOSE); rDevice.DrawPolygon(aPolygon); diff --git a/vcl/backendtest/outputdevice/polyline.cxx b/vcl/backendtest/outputdevice/polyline.cxx index 82450c82d67c..86f9de6306b4 100644 --- a/vcl/backendtest/outputdevice/polyline.cxx +++ b/vcl/backendtest/outputdevice/polyline.cxx @@ -21,13 +21,14 @@ namespace void drawPolyLineOffset(OutputDevice& rDevice, tools::Rectangle const & rRect, int nOffset) { tools::Polygon aPolygon(4); - aPolygon.SetPoint(Point(rRect.Left() + nOffset, rRect.Top() + nOffset), 0); - aPolygon.SetPoint(Point(rRect.Right() - nOffset, rRect.Top() + nOffset), 1); - aPolygon.SetPoint(Point(rRect.Right() - nOffset, rRect.Bottom() - nOffset), 2); - aPolygon.SetPoint(Point(rRect.Left() + nOffset, rRect.Bottom() - nOffset), 3); + int nMidOffset = rRect.GetWidth() / 2; + aPolygon.SetPoint(Point(rRect.Left() + nOffset - (nOffset+1)/2, rRect.Top() + nOffset - 1), 0); + aPolygon.SetPoint(Point(rRect.Right() - nMidOffset - nOffset/3, rRect.Top() + nOffset - 1), 1); + aPolygon.SetPoint(Point(rRect.Right() - nMidOffset - nOffset/3, rRect.Bottom() - nOffset + 1), 2); + aPolygon.SetPoint(Point(rRect.Left() + nOffset - (nOffset+1)/2, rRect.Bottom() - nOffset + 1), 3); aPolygon.Optimize(PolyOptimizeFlags::CLOSE); - rDevice.DrawPolyLine(aPolygon); + rDevice.DrawPolygon(aPolygon); } } // end anonymous namespace diff --git a/vcl/backendtest/outputdevice/polyline_b2d.cxx b/vcl/backendtest/outputdevice/polyline_b2d.cxx index 9204188b6f58..cef4c6e66aeb 100644 --- a/vcl/backendtest/outputdevice/polyline_b2d.cxx +++ b/vcl/backendtest/outputdevice/polyline_b2d.cxx @@ -17,11 +17,12 @@ namespace { void drawPolyLineOffset(OutputDevice& rDevice, tools::Rectangle const& rRect, int nOffset) { + int nMidOffset = rRect.GetWidth() / 2; basegfx::B2DPolygon aPolygon{ - basegfx::B2DPoint(rRect.Left() + nOffset, rRect.Top() + nOffset), - basegfx::B2DPoint(rRect.Right() - nOffset, rRect.Top() + nOffset), - basegfx::B2DPoint(rRect.Right() - nOffset, rRect.Bottom() - nOffset), - basegfx::B2DPoint(rRect.Left() + nOffset, rRect.Bottom() - nOffset), + basegfx::B2DPoint(rRect.Left() + nOffset - (nOffset + 1) / 2, rRect.Top() + nOffset - 1), + basegfx::B2DPoint(rRect.Right() - nMidOffset - nOffset / 3, rRect.Top() + nOffset - 1), + basegfx::B2DPoint(rRect.Right() - nMidOffset - nOffset / 3, rRect.Bottom() - nOffset + 1), + basegfx::B2DPoint(rRect.Left() + nOffset - (nOffset + 1) / 2, rRect.Bottom() - nOffset + 1), }; aPolygon.setClosed(true); diff --git a/vcl/backendtest/outputdevice/polypolygon.cxx b/vcl/backendtest/outputdevice/polypolygon.cxx index 4233e997bef4..8c96f2d33447 100644 --- a/vcl/backendtest/outputdevice/polypolygon.cxx +++ b/vcl/backendtest/outputdevice/polypolygon.cxx @@ -21,10 +21,16 @@ tools::Polygon createPolygonOffset(tools::Rectangle const& rRect, int nOffset, i // overlaps when drawing adjacent polygons. Specifying nFix = 1 allows to visually compensate // for this by making the polygon explicitly larger. tools::Polygon aPolygon(4); - aPolygon.SetPoint(Point(rRect.Left() + nOffset, rRect.Top() + nOffset), 0); - aPolygon.SetPoint(Point(rRect.Right() - nOffset + nFix, rRect.Top() + nOffset), 1); - aPolygon.SetPoint(Point(rRect.Right() - nOffset + nFix, rRect.Bottom() - nOffset + nFix), 2); - aPolygon.SetPoint(Point(rRect.Left() + nOffset, rRect.Bottom() - nOffset + nFix), 3); + int nMidOffset = rRect.GetWidth() / 2; + aPolygon.SetPoint(Point(rRect.Left() + nOffset - (nOffset + 1) / 2, rRect.Top() + nOffset - 1), + 0); + aPolygon.SetPoint( + Point(rRect.Right() - nMidOffset + nFix - nOffset / 3, rRect.Top() + nOffset - 1), 1); + aPolygon.SetPoint( + Point(rRect.Right() - nMidOffset + nFix - nOffset / 3, rRect.Bottom() - nOffset + nFix + 1), + 2); + aPolygon.SetPoint( + Point(rRect.Left() + nOffset - (nOffset + 1) / 2, rRect.Bottom() - nOffset + nFix + 1), 3); aPolygon.Optimize(PolyOptimizeFlags::CLOSE); return aPolygon; } diff --git a/vcl/backendtest/outputdevice/polypolygon_b2d.cxx b/vcl/backendtest/outputdevice/polypolygon_b2d.cxx index 5695920a4a32..432fc429b6e5 100644 --- a/vcl/backendtest/outputdevice/polypolygon_b2d.cxx +++ b/vcl/backendtest/outputdevice/polypolygon_b2d.cxx @@ -20,11 +20,15 @@ basegfx::B2DPolygon createPolygonOffset(tools::Rectangle const& rRect, int nOffs // filling polygons always skips the right-most and bottom-most pixels, in order to avoid // overlaps when drawing adjacent polygons. Specifying nFix = 1 allows to visually compensate // for this by making the polygon explicitly larger. + int nMidOffset = rRect.GetWidth() / 2; basegfx::B2DPolygon aPolygon{ - basegfx::B2DPoint(rRect.Left() + nOffset, rRect.Top() + nOffset), - basegfx::B2DPoint(rRect.Right() - nOffset + nFix, rRect.Top() + nOffset), - basegfx::B2DPoint(rRect.Right() - nOffset + nFix, rRect.Bottom() - nOffset + nFix), - basegfx::B2DPoint(rRect.Left() + nOffset, rRect.Bottom() - nOffset + nFix), + basegfx::B2DPoint(rRect.Left() + nOffset - (nOffset + 1) / 2, rRect.Top() + nOffset - 1), + basegfx::B2DPoint(rRect.Right() - nMidOffset - nOffset / 3 + nFix, + rRect.Top() + nOffset - 1), + basegfx::B2DPoint(rRect.Right() - nMidOffset - nOffset / 3 + nFix, + rRect.Bottom() - nOffset + 1 + nFix), + basegfx::B2DPoint(rRect.Left() + nOffset - (nOffset + 1) / 2, + rRect.Bottom() - nOffset + 1 + nFix), }; aPolygon.setClosed(true); return aPolygon; diff --git a/vcl/backendtest/outputdevice/rectangle.cxx b/vcl/backendtest/outputdevice/rectangle.cxx index d202687d35e8..f35285f28220 100644 --- a/vcl/backendtest/outputdevice/rectangle.cxx +++ b/vcl/backendtest/outputdevice/rectangle.cxx @@ -16,8 +16,10 @@ namespace { void drawRectOffset(OutputDevice& rDevice, tools::Rectangle const& rRect, int nOffset) { - rDevice.DrawRect(tools::Rectangle(rRect.Left() + nOffset, rRect.Top() + nOffset, - rRect.Right() - nOffset, rRect.Bottom() - nOffset)); + int nMidOffset = rRect.Left() + (rRect.Right() - rRect.Left()) / 2; + rDevice.DrawRect( + tools::Rectangle(rRect.Left() + nOffset - (nOffset + 1) / 2, rRect.Top() + nOffset - 1, + rRect.Right() - nMidOffset - nOffset / 3, rRect.Bottom() - nOffset + 1)); } void drawInvertOffset(OutputDevice& rDevice, tools::Rectangle const& rRect, int nOffset, diff --git a/vcl/inc/test/outputdevice.hxx b/vcl/inc/test/outputdevice.hxx index d0f273847d25..7e6f09040d03 100644 --- a/vcl/inc/test/outputdevice.hxx +++ b/vcl/inc/test/outputdevice.hxx @@ -49,6 +49,7 @@ public: static TestResult checkRectangles(Bitmap& rBitmap, std::vector<Color>& aExpectedColors); static TestResult checkRectangle(Bitmap& rBitmap, int aLayerNumber, Color aExpectedColor); + static TestResult checkRectangles(Bitmap& rBitmap, bool aEnableAA = false); static TestResult checkFilled(Bitmap& rBitmap, tools::Rectangle aRectangle, Color aExpectedColor); static TestResult checkChecker(Bitmap& rBitmap, sal_Int32 nStartX, sal_Int32 nEndX, diff --git a/vcl/qa/cppunit/BackendTest.cxx b/vcl/qa/cppunit/BackendTest.cxx index c337ad1f0707..3d14c811f022 100644 --- a/vcl/qa/cppunit/BackendTest.cxx +++ b/vcl/qa/cppunit/BackendTest.cxx @@ -103,7 +103,7 @@ public: return; vcl::test::OutputDeviceTestRect aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-01_rectangle_test-rectangle.png", aBitmap); if (SHOULD_ASSERT) @@ -116,7 +116,7 @@ public: return; vcl::test::OutputDeviceTestPixel aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-02_rectangle_test-pixel.png", aBitmap); if (SHOULD_ASSERT) @@ -129,7 +129,7 @@ public: return; vcl::test::OutputDeviceTestLine aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-03_rectangle_test-line.png", aBitmap); if (SHOULD_ASSERT) @@ -142,7 +142,7 @@ public: return; vcl::test::OutputDeviceTestPolygon aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-04_rectangle_test-polygon.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); @@ -154,7 +154,7 @@ public: return; vcl::test::OutputDeviceTestPolyLine aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-05_rectangle_test-polyline.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); @@ -166,7 +166,7 @@ public: return; vcl::test::OutputDeviceTestPolyLineB2D aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-06_rectangle_test-polyline_b2d.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); @@ -178,7 +178,7 @@ public: return; vcl::test::OutputDeviceTestPolyPolygon aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-07_rectangle_test-polypolygon.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); @@ -190,7 +190,7 @@ public: return; vcl::test::OutputDeviceTestPolyPolygonB2D aOutDevTest; Bitmap aBitmap = aOutDevTest.setupRectangle(false); - auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangle(aBitmap); + auto eResult = vcl::test::OutputDeviceTestCommon::checkRectangles(aBitmap); exportImage("01-08_rectangle_test-polypolygon_b2d.png", aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); |