summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2019-04-18 21:35:46 +0900
committerTomaž Vajngerl <quikee@gmail.com>2019-04-19 10:04:38 +0200
commit39cab14ce5a8d12b0656f0dce13c08a8f81a5dbb (patch)
tree1730b7c2591528db833eef634deb27c265f3c5e2
parentcab700c69edc4a0b66a60e80b2852380217163cd (diff)
vcl: Allow for rounding errors on Win32 in testAlphaVirtualDevice
Windows Tinerbox fails because of rounding error in blending (but only in some environments), so allow for a small rounding error in colors. Change-Id: If45ae99a445e9d6f795d06d88c902a723913b9a6 Reviewed-on: https://gerrit.libreoffice.org/70932 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r--vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx46
1 files changed, 36 insertions, 10 deletions
diff --git a/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx b/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx
index b363da7386a1..cfb1143f3e02 100644
--- a/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx
+++ b/vcl/qa/cppunit/bitmaprender/BitmapRenderTest.cxx
@@ -151,6 +151,22 @@ void BitmapRenderTest::testDrawAlphaBitmapEx()
#endif
}
+#ifdef _WIN32
+
+namespace
+{
+int deltaColor(BitmapColor aColor1, BitmapColor aColor2)
+{
+ int deltaR = std::abs(aColor1.GetRed() - aColor2.GetRed());
+ int deltaG = std::abs(aColor1.GetGreen() - aColor2.GetGreen());
+ int deltaB = std::abs(aColor1.GetBlue() - aColor2.GetBlue());
+
+ return std::max(std::max(deltaR, deltaG), deltaB);
+}
+}
+
+#endif
+
void BitmapRenderTest::testAlphaVirtualDevice()
{
// Create an alpha virtual device
@@ -167,17 +183,20 @@ void BitmapRenderTest::testAlphaVirtualDevice()
CPPUNIT_ASSERT_EQUAL(long(4), aBitmap.GetSizePixel().Width());
CPPUNIT_ASSERT_EQUAL(long(4), aBitmap.GetSizePixel().Height());
Color aColor = aBitmap.GetPixelColor(1, 1);
- CPPUNIT_ASSERT_EQUAL(Color(0xff, 0xff, 0xff, 0xff), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0xffffffff), aColor);
// Draw an opaque pixel to the VirDev
- pAlphaVirtualDevice->DrawPixel(Point(1, 1), Color(0x00, 0x22, 0xff, 0x55));
+ pAlphaVirtualDevice->DrawPixel(Point(1, 1), Color(0x0022ff55));
+ aColor = pAlphaVirtualDevice->GetPixel(Point(1, 1));
// Read back the opaque pixel
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x2C, 0xff, 0x44), pAlphaVirtualDevice->GetPixel(Point(1, 1)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x002Cff44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x0022ff55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x22, 0xff, 0x55), pAlphaVirtualDevice->GetPixel(Point(1, 1)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x0022ff55), aColor);
#endif
// Read back the BitmapEx and check the opaque pixel
@@ -188,20 +207,25 @@ void BitmapRenderTest::testAlphaVirtualDevice()
aColor = aBitmap.GetPixelColor(1, 1);
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x2C, 0xff, 0x44), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x002Cff44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x0022ff55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x22, 0xff, 0x55), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x0022ff55), aColor);
#endif
// Draw an semi-transparent pixel
pAlphaVirtualDevice->DrawPixel(Point(0, 0), Color(0x44, 0x22, 0xff, 0x55));
+ aColor = pAlphaVirtualDevice->GetPixel(Point(0, 0));
// Read back the semi-transparent pixel
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x34, 0x2C, 0xFF, 0x44), pAlphaVirtualDevice->GetPixel(Point(0, 0)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x342CFF44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x4422FF55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x44, 0x22, 0xFF, 0x55), pAlphaVirtualDevice->GetPixel(Point(0, 0)));
+ CPPUNIT_ASSERT_EQUAL(Color(0x4422FF55), aColor);
#endif
// Read back the BitmapEx and check the semi-transparent pixel
@@ -212,9 +236,11 @@ void BitmapRenderTest::testAlphaVirtualDevice()
aColor = aBitmap.GetPixelColor(0, 0);
#ifdef MACOSX
// Oh no.. what we input is not the same as what we get out!
- CPPUNIT_ASSERT_EQUAL(Color(0x34, 0x2C, 0xFF, 0x44), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x342CFF44), aColor);
+#elif defined _WIN32
+ CPPUNIT_ASSERT_LESS(3, deltaColor(Color(0x4422FF55), aColor));
#else
- CPPUNIT_ASSERT_EQUAL(Color(0x44, 0x22, 0xFF, 0x55), aColor);
+ CPPUNIT_ASSERT_EQUAL(Color(0x4422FF55), aColor);
#endif
}