summaryrefslogtreecommitdiff
path: root/vcl/qa/cppunit/png
diff options
context:
space:
mode:
authorofftkp <parisoplop@gmail.com>2022-06-24 11:42:26 +0300
committerTomaž Vajngerl <quikee@gmail.com>2022-07-19 09:57:50 +0200
commit4347a032d34497f324a944629dfb49702cb3c54c (patch)
treeee261738c2393407b1943fb1f2f561c61522b1ce /vcl/qa/cppunit/png
parent6b4f4bdf9beb0c73fa8b8bc218cd206f2cd347fa (diff)
Add PngSuite .png test files and test function
Add testPngSuite function that tests the PngSuite files against width and height, bit depth, whether it's paletted or if it has alpha To be used with the new pngreader/writer to verify that it was implemented correctly Change-Id: Ic334df36735fabcde71ecec7fbf463e255b06d4b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136359 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'vcl/qa/cppunit/png')
-rw-r--r--vcl/qa/cppunit/png/PngFilterTest.cxx1445
-rw-r--r--vcl/qa/cppunit/png/data/basi0g01.pngbin0 -> 217 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi0g02.pngbin0 -> 154 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi0g04.pngbin0 -> 247 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi0g08.pngbin0 -> 254 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi0g16.pngbin0 -> 299 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi2c08.pngbin0 -> 315 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi2c16.pngbin0 -> 595 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi3p01.pngbin0 -> 132 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi3p02.pngbin0 -> 193 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi3p04.pngbin0 -> 327 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi3p08.pngbin0 -> 1527 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi4a08.pngbin0 -> 214 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi4a16.pngbin0 -> 2855 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi6a08.pngbin0 -> 361 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basi6a16.pngbin0 -> 4180 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn0g01.pngbin0 -> 164 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn0g02.pngbin0 -> 104 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn0g04.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn0g08.pngbin0 -> 138 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn0g16.pngbin0 -> 167 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn2c08.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn2c16.pngbin0 -> 302 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn3p01.pngbin0 -> 112 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn3p02.pngbin0 -> 146 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn3p04.pngbin0 -> 216 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn3p08.pngbin0 -> 1286 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn4a08.pngbin0 -> 126 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn4a16.pngbin0 -> 2206 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn6a08.pngbin0 -> 184 bytes
-rw-r--r--vcl/qa/cppunit/png/data/basn6a16.pngbin0 -> 3435 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgai4a08.pngbin0 -> 214 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgai4a16.pngbin0 -> 2855 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgan6a08.pngbin0 -> 184 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgan6a16.pngbin0 -> 3435 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgbn4a08.pngbin0 -> 140 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bggn4a16.pngbin0 -> 2220 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgwn6a08.pngbin0 -> 202 bytes
-rw-r--r--vcl/qa/cppunit/png/data/bgyn6a16.pngbin0 -> 3453 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ccwn2c08.pngbin0 -> 1514 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ccwn3p08.pngbin0 -> 1554 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cdfn2c08.pngbin0 -> 404 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cdhn2c08.pngbin0 -> 344 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cdsn2c08.pngbin0 -> 232 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cdun2c08.pngbin0 -> 724 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ch1n3p04.pngbin0 -> 258 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ch2n3p08.pngbin0 -> 1810 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cm0n0g04.pngbin0 -> 292 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cm7n0g04.pngbin0 -> 292 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cm9n0g04.pngbin0 -> 292 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cs3n2c16.pngbin0 -> 214 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cs3n3p08.pngbin0 -> 259 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cs5n2c08.pngbin0 -> 186 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cs5n3p08.pngbin0 -> 271 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cs8n2c08.pngbin0 -> 149 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cs8n3p08.pngbin0 -> 256 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ct0n0g04.pngbin0 -> 273 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ct1n0g04.pngbin0 -> 792 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cten0g04.pngbin0 -> 742 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ctfn0g04.pngbin0 -> 716 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ctgn0g04.pngbin0 -> 1182 bytes
-rw-r--r--vcl/qa/cppunit/png/data/cthn0g04.pngbin0 -> 1269 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ctjn0g04.pngbin0 -> 941 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ctzn0g04.pngbin0 -> 753 bytes
-rw-r--r--vcl/qa/cppunit/png/data/exif2c08.pngbin0 -> 1788 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f00n0g08.pngbin0 -> 319 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f00n2c08.pngbin0 -> 2475 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f01n0g08.pngbin0 -> 321 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f01n2c08.pngbin0 -> 1180 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f02n0g08.pngbin0 -> 355 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f02n2c08.pngbin0 -> 1729 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f03n0g08.pngbin0 -> 389 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f03n2c08.pngbin0 -> 1291 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f04n0g08.pngbin0 -> 269 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f04n2c08.pngbin0 -> 985 bytes
-rw-r--r--vcl/qa/cppunit/png/data/f99n0g04.pngbin0 -> 426 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g03n0g16.pngbin0 -> 345 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g03n2c08.pngbin0 -> 370 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g03n3p04.pngbin0 -> 214 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g04n0g16.pngbin0 -> 363 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g04n2c08.pngbin0 -> 377 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g04n3p04.pngbin0 -> 219 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g05n0g16.pngbin0 -> 339 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g05n2c08.pngbin0 -> 350 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g05n3p04.pngbin0 -> 206 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g07n0g16.pngbin0 -> 321 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g07n2c08.pngbin0 -> 340 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g07n3p04.pngbin0 -> 207 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g10n0g16.pngbin0 -> 262 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g10n2c08.pngbin0 -> 285 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g10n3p04.pngbin0 -> 214 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g25n0g16.pngbin0 -> 383 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g25n2c08.pngbin0 -> 405 bytes
-rw-r--r--vcl/qa/cppunit/png/data/g25n3p04.pngbin0 -> 215 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi1n0g16.pngbin0 -> 167 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi1n2c16.pngbin0 -> 302 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi2n0g16.pngbin0 -> 179 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi2n2c16.pngbin0 -> 314 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi4n0g16.pngbin0 -> 203 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi4n2c16.pngbin0 -> 338 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi9n0g16.pngbin0 -> 1283 bytes
-rw-r--r--vcl/qa/cppunit/png/data/oi9n2c16.pngbin0 -> 3038 bytes
-rw-r--r--vcl/qa/cppunit/png/data/pp0n2c16.pngbin0 -> 962 bytes
-rw-r--r--vcl/qa/cppunit/png/data/pp0n6a08.pngbin0 -> 818 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ps1n0g08.pngbin0 -> 1456 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ps1n2c16.pngbin0 -> 1620 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ps2n0g08.pngbin0 -> 2320 bytes
-rw-r--r--vcl/qa/cppunit/png/data/ps2n2c16.pngbin0 -> 2484 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s01i3p01.pngbin0 -> 113 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s01n3p01.pngbin0 -> 113 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s02i3p01.pngbin0 -> 114 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s02n3p01.pngbin0 -> 115 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s03i3p01.pngbin0 -> 118 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s03n3p01.pngbin0 -> 120 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s04i3p01.pngbin0 -> 126 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s04n3p01.pngbin0 -> 121 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s05i3p02.pngbin0 -> 134 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s05n3p02.pngbin0 -> 129 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s06i3p02.pngbin0 -> 143 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s06n3p02.pngbin0 -> 131 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s07i3p02.pngbin0 -> 149 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s07n3p02.pngbin0 -> 138 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s08i3p02.pngbin0 -> 149 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s08n3p02.pngbin0 -> 139 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s09i3p02.pngbin0 -> 147 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s09n3p02.pngbin0 -> 143 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s32i3p04.pngbin0 -> 355 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s32n3p04.pngbin0 -> 263 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s33i3p04.pngbin0 -> 385 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s33n3p04.pngbin0 -> 329 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s34i3p04.pngbin0 -> 349 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s34n3p04.pngbin0 -> 248 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s35i3p04.pngbin0 -> 399 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s35n3p04.pngbin0 -> 338 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s36i3p04.pngbin0 -> 356 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s36n3p04.pngbin0 -> 258 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s37i3p04.pngbin0 -> 393 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s37n3p04.pngbin0 -> 336 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s38i3p04.pngbin0 -> 357 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s38n3p04.pngbin0 -> 245 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s39i3p04.pngbin0 -> 420 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s39n3p04.pngbin0 -> 352 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s40i3p04.pngbin0 -> 357 bytes
-rw-r--r--vcl/qa/cppunit/png/data/s40n3p04.pngbin0 -> 256 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbbn0g04.pngbin0 -> 429 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbbn2c16.pngbin0 -> 2041 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbbn3p08.pngbin0 -> 1499 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbgn2c16.pngbin0 -> 2041 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbgn3p08.pngbin0 -> 1499 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbrn2c08.pngbin0 -> 1633 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbwn0g16.pngbin0 -> 1313 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbwn3p08.pngbin0 -> 1496 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tbyn3p08.pngbin0 -> 1499 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tm3n3p02.pngbin0 -> 116 bytes
-rw-r--r--vcl/qa/cppunit/png/data/tp1n3p08.pngbin0 -> 1483 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xc1n0g08.pngbin0 -> 138 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xc9n2c08.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xcrn0g04.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xcsn0g01.pngbin0 -> 164 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xd0n2c08.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xd3n2c08.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xd9n2c08.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xdtn0g01.pngbin0 -> 61 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xhdn0g08.pngbin0 -> 138 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xlfn0g04.pngbin0 -> 145 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xs1n0g01.pngbin0 -> 164 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xs2n0g01.pngbin0 -> 164 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xs4n0g01.pngbin0 -> 164 bytes
-rw-r--r--vcl/qa/cppunit/png/data/xs7n0g01.pngbin0 -> 164 bytes
-rw-r--r--vcl/qa/cppunit/png/data/z00n2c08.pngbin0 -> 3172 bytes
-rw-r--r--vcl/qa/cppunit/png/data/z03n2c08.pngbin0 -> 232 bytes
-rw-r--r--vcl/qa/cppunit/png/data/z06n2c08.pngbin0 -> 224 bytes
-rw-r--r--vcl/qa/cppunit/png/data/z09n2c08.pngbin0 -> 224 bytes
173 files changed, 1445 insertions, 0 deletions
diff --git a/vcl/qa/cppunit/png/PngFilterTest.cxx b/vcl/qa/cppunit/png/PngFilterTest.cxx
index 727f86c9476b..81531f21b0e6 100644
--- a/vcl/qa/cppunit/png/PngFilterTest.cxx
+++ b/vcl/qa/cppunit/png/PngFilterTest.cxx
@@ -33,6 +33,122 @@
using namespace css;
+namespace
+{
+struct Case
+{
+ tools::Long mnWidth;
+ tools::Long mnHeight;
+ sal_uInt16 mnBpp;
+ bool mbHasPalette;
+ bool mbIsAlpha;
+};
+// Checks that a pngs BitmapEx is the same after reading and
+// after writing. Takes a vector of function pointers if there's need to test
+// special cases
+void checkImportExportPng(const OUString& sFilePath, const Case& aCase)
+{
+ SvFileStream aFileStream(sFilePath, StreamMode::READ);
+ SvMemoryStream aExportStream;
+ BitmapEx aImportedBitmapEx;
+ BitmapEx aExportedImportedBitmapEx;
+
+ bool bOpenOk = !aFileStream.GetError() && aFileStream.GetBufferSize() > 0;
+ CPPUNIT_ASSERT_MESSAGE(OString("Failed to open file: " + sFilePath.toUtf8()).getStr(), bOpenOk);
+
+ // Read the png from the file
+ {
+ vcl::PngImageReader aPngReader(aFileStream);
+ bool bReadOk = aPngReader.read(aImportedBitmapEx);
+ CPPUNIT_ASSERT_MESSAGE(OString("Failed to read png from: " + sFilePath.toUtf8()).getStr(),
+ bReadOk);
+ Bitmap aImportedBitmap = aImportedBitmapEx.GetBitmap();
+ Bitmap::ScopedInfoAccess pAccess(aImportedBitmap);
+ auto nActualWidth = aImportedBitmapEx.GetSizePixel().Width();
+ auto nActualHeight = aImportedBitmapEx.GetSizePixel().Height();
+ auto nActualBpp = vcl::pixelFormatBitCount(aImportedBitmapEx.GetBitmap().getPixelFormat());
+ auto bActualHasPalette = pAccess->HasPalette();
+ auto bActualIsAlpha = aImportedBitmapEx.IsAlpha();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("Width comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mnWidth, nActualWidth);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("Height comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mnHeight, nActualHeight);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("Bpp comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mnBpp, nActualBpp);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("HasPalette comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mbHasPalette, bActualHasPalette);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("IsAlpha comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mbIsAlpha, bActualIsAlpha);
+ }
+
+ // Write the imported png to a stream
+ {
+ vcl::PngImageWriter aPngWriter(aExportStream);
+ bool bWriteOk = aPngWriter.write(aImportedBitmapEx);
+ CPPUNIT_ASSERT_MESSAGE(OString("Failed to write png: " + sFilePath.toUtf8()).getStr(),
+ bWriteOk);
+ aExportStream.Seek(0);
+ }
+
+ // Read the png again from the exported stream
+ {
+ vcl::PngImageReader aPngReader(aExportStream);
+ bool bReadOk = aPngReader.read(aExportedImportedBitmapEx);
+ CPPUNIT_ASSERT_MESSAGE(
+ OString("Failed to read exported png: " + sFilePath.toUtf8()).getStr(), bReadOk);
+ Bitmap aExportedImportedBitmap = aExportedImportedBitmapEx.GetBitmap();
+ Bitmap::ScopedInfoAccess pAccess(aExportedImportedBitmap);
+ auto nActualWidth = aExportedImportedBitmapEx.GetSizePixel().Width();
+ auto nActualHeight = aExportedImportedBitmapEx.GetSizePixel().Height();
+ auto nActualBpp
+ = vcl::pixelFormatBitCount(aExportedImportedBitmapEx.GetBitmap().getPixelFormat());
+ auto bActualHasPalette = pAccess->HasPalette();
+ auto bActualIsAlpha = aExportedImportedBitmapEx.IsAlpha();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("Width comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mnWidth, nActualWidth);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("Height comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mnHeight, nActualHeight);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("Bpp comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mnBpp, nActualBpp);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("HasPalette comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mbHasPalette, bActualHasPalette);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE(
+ OString("IsAlpha comparison failed for exported png:" + sFilePath.toUtf8()).getStr(),
+ aCase.mbIsAlpha, bActualIsAlpha);
+ }
+
+ // Compare imported and exported BitmapEx
+ // This compares size, inner bitmap and alpha mask
+ bool bIsSame = (aExportedImportedBitmapEx == aImportedBitmapEx);
+ CPPUNIT_ASSERT_MESSAGE(
+ OString("Import->Export png test failed for png: " + sFilePath.toUtf8()).getStr(), bIsSame);
+}
+
+// Checks that aPngReader.read returns false on corrupted files
+void checkImportCorruptedPng(const OUString& sFilePath)
+{
+ SvFileStream aFileStream(sFilePath, StreamMode::READ);
+ BitmapEx aImportedBitmapEx;
+
+ bool bOpenOk = !aFileStream.GetError() && aFileStream.GetBufferSize() > 0;
+ CPPUNIT_ASSERT_MESSAGE(OString("Failed to open file: " + sFilePath.toUtf8()).getStr(), bOpenOk);
+ vcl::PngImageReader aPngReader(aFileStream);
+ bool bReadOk = aPngReader.read(aImportedBitmapEx);
+ // Make sure this file was not read successfully
+ CPPUNIT_ASSERT_MESSAGE(
+ OString("Corrupted png should not be opened: " + sFilePath.toUtf8()).getStr(), !bReadOk);
+}
+}
+
class PngFilterTest : public test::BootstrapFixture
{
// Should keep the temp files (should be false)
@@ -53,6 +169,7 @@ public:
}
void testPng();
+ void testPngSuite();
void testMsGifInPng();
void testPngRoundtrip8BitGrey();
void testPngRoundtrip24();
@@ -61,6 +178,7 @@ public:
CPPUNIT_TEST_SUITE(PngFilterTest);
CPPUNIT_TEST(testPng);
+ CPPUNIT_TEST(testPngSuite);
CPPUNIT_TEST(testMsGifInPng);
CPPUNIT_TEST(testPngRoundtrip8BitGrey);
CPPUNIT_TEST(testPngRoundtrip24);
@@ -245,6 +363,1333 @@ void PngFilterTest::testPng()
}
}
+void PngFilterTest::testPngSuite()
+{
+ // Test the PngSuite test files by Willem van Schaik
+ // filename: g04i2c08.png
+ // || ||||
+ // test feature (in this case gamma) ------+| ||||
+ // parameter of test (here gamma-value) ----+ ||||
+ // interlaced or non-interlaced --------------+|||
+ // color-type (numerical) ---------------------+||
+ // color-type (descriptive) --------------------+|
+ // bit-depth ------------------------------------+
+
+ // Some notes about the cases:
+ // - RGB palette PNGs get converted to a bitmap with png_set_palette_to_rgb
+ // - Grayscale PNGs with alpha also do with png_set_gray_to_rgb
+ // - Grayscale PNGs without alpha use BitmapEx palette utilities
+ // - 1, 2, 4 bit grayscale w/o alpha gets converted to 8 bit with png_set_expand_gray_1_2_4_to_8
+ // - 16 bit per channel gets converted to 8 bit per channel with png_set_scale_16
+ // - PNGs that are not size related have size 32x32
+ // - Internally BitmapEx is never 32 bpp, instead it's 24 bpp (rgb) and uses an 8 bpp alpha mask
+ std::pair<std::u16string_view, Case> aCases[] = {
+ // Basic formats, not interlaced
+ { u"basn0g01.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // b&w
+ { u"basn0g02.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 2 bit grayscale
+ { u"basn0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 4 bit grayscale
+ { u"basn0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 8 bit grayscale
+ { u"basn0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 16 bit grayscale
+ { u"basn2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 8 bit rgb
+ { u"basn2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 16 bit rgb
+ { u"basn3p01.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 1 bit palette
+ { u"basn3p02.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 2 bit palette
+ { u"basn3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 4 bit palette
+ { u"basn3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 8 bit palette
+ { u"basn4a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 8 bit grayscale + 8 bit alpha
+ { u"basn4a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 16 bit grayscale + 16 bit alpha
+ { u"basn6a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 8 bit rgba
+ { u"basn6a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 16 bit rgba
+ // Basic formats, interlaced
+ { u"basi0g01.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // b&w
+ { u"basi0g02.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 2 bit grayscale
+ { u"basi0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 4 bit grayscale
+ { u"basi0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 8 bit grayscale
+ { u"basi0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // 16 bit grayscale
+ { u"basi2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 8 bit rgb
+ { u"basi2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 16 bit rgb
+ { u"basi3p01.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 1 bit palette
+ { u"basi3p02.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 2 bit palette
+ { u"basi3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 4 bit palette
+ { u"basi3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 8 bit palette
+ { u"basi4a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 8 bit grayscale + 8 bit alpha
+ { u"basi4a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 16 bit grayscale + 16 bit alpha
+ { u"basi6a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 8 bit rgba
+ { u"basi6a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 16 bit rgba
+ // // Odd sizes, not interlaced
+ { u"s01n3p01.png",
+ {
+ 1,
+ 1,
+ 24,
+ false,
+ false,
+ } }, // 1x1
+ { u"s02n3p01.png",
+ {
+ 2,
+ 2,
+ 24,
+ false,
+ false,
+ } }, // 2x2
+ { u"s03n3p01.png",
+ {
+ 3,
+ 3,
+ 24,
+ false,
+ false,
+ } }, // 3x3
+ { u"s04n3p01.png",
+ {
+ 4,
+ 4,
+ 24,
+ false,
+ false,
+ } }, // 4x4
+ { u"s05n3p02.png",
+ {
+ 5,
+ 5,
+ 24,
+ false,
+ false,
+ } }, // 5x5
+ { u"s06n3p02.png",
+ {
+ 6,
+ 6,
+ 24,
+ false,
+ false,
+ } }, // 6x6
+ { u"s07n3p02.png",
+ {
+ 7,
+ 7,
+ 24,
+ false,
+ false,
+ } }, // 7x7
+ { u"s08n3p02.png",
+ {
+ 8,
+ 8,
+ 24,
+ false,
+ false,
+ } }, // 8x8
+ { u"s09n3p02.png",
+ {
+ 9,
+ 9,
+ 24,
+ false,
+ false,
+ } }, // 9x9
+ { u"s32n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 32x32
+ { u"s33n3p04.png",
+ {
+ 33,
+ 33,
+ 24,
+ false,
+ false,
+ } }, // 33x33
+ { u"s34n3p04.png",
+ {
+ 34,
+ 34,
+ 24,
+ false,
+ false,
+ } }, // 34x34
+ { u"s35n3p04.png",
+ {
+ 35,
+ 35,
+ 24,
+ false,
+ false,
+ } }, // 35x35
+ { u"s36n3p04.png",
+ {
+ 36,
+ 36,
+ 24,
+ false,
+ false,
+ } }, // 36x36
+ { u"s37n3p04.png",
+ {
+ 37,
+ 37,
+ 24,
+ false,
+ false,
+ } }, // 37x37
+ { u"s38n3p04.png",
+ {
+ 38,
+ 38,
+ 24,
+ false,
+ false,
+ } }, // 38x38
+ { u"s39n3p04.png",
+ {
+ 39,
+ 39,
+ 24,
+ false,
+ false,
+ } }, // 39x39
+ { u"s40n3p04.png",
+ {
+ 40,
+ 40,
+ 24,
+ false,
+ false,
+ } }, // 40x40
+ // // Odd sizes, interlaced
+ { u"s01i3p01.png",
+ {
+ 1,
+ 1,
+ 24,
+ false,
+ false,
+ } }, // 1x1
+ { u"s02i3p01.png",
+ {
+ 2,
+ 2,
+ 24,
+ false,
+ false,
+ } }, // 2x2
+ { u"s03i3p01.png",
+ {
+ 3,
+ 3,
+ 24,
+ false,
+ false,
+ } }, // 3x3
+ { u"s04i3p01.png",
+ {
+ 4,
+ 4,
+ 24,
+ false,
+ false,
+ } }, // 4x4
+ { u"s05i3p02.png",
+ {
+ 5,
+ 5,
+ 24,
+ false,
+ false,
+ } }, // 5x5
+ { u"s06i3p02.png",
+ {
+ 6,
+ 6,
+ 24,
+ false,
+ false,
+ } }, // 6x6
+ { u"s07i3p02.png",
+ {
+ 7,
+ 7,
+ 24,
+ false,
+ false,
+ } }, // 7x7
+ { u"s08i3p02.png",
+ {
+ 8,
+ 8,
+ 24,
+ false,
+ false,
+ } }, // 8x8
+ { u"s09i3p02.png",
+ {
+ 9,
+ 9,
+ 24,
+ false,
+ false,
+ } }, // 9x9
+ { u"s32i3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // 32x32
+ { u"s33i3p04.png",
+ {
+ 33,
+ 33,
+ 24,
+ false,
+ false,
+ } }, // 33x33
+ { u"s34i3p04.png",
+ {
+ 34,
+ 34,
+ 24,
+ false,
+ false,
+ } }, // 34x34
+ { u"s35i3p04.png",
+ {
+ 35,
+ 35,
+ 24,
+ false,
+ false,
+ } }, // 35x35
+ { u"s36i3p04.png",
+ {
+ 36,
+ 36,
+ 24,
+ false,
+ false,
+ } }, // 36x36
+ { u"s37i3p04.png",
+ {
+ 37,
+ 37,
+ 24,
+ false,
+ false,
+ } }, // 37x37
+ { u"s38i3p04.png",
+ {
+ 38,
+ 38,
+ 24,
+ false,
+ false,
+ } }, // 38x38
+ { u"s39i3p04.png",
+ {
+ 39,
+ 39,
+ 24,
+ false,
+ false,
+ } }, // 39x39
+ { u"s40i3p04.png",
+ {
+ 40,
+ 40,
+ 24,
+ false,
+ false,
+ } }, // 40x40
+ // Background colors
+ { u"bgai4a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 8 bit grayscale alpha no background chunk, interlaced
+ { u"bgai4a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 16 bit grayscale alpha no background chunk, interlaced
+ { u"bgan6a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 3 * 8 bits rgb color alpha, no background chunk
+ { u"bgan6a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 3 * 16 bits rgb color alpha, no background chunk
+ { u"bgbn4a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 8 bit grayscale alpha, black background chunk
+ { u"bggn4a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 16 bit grayscale alpha, gray background chunk
+ { u"bgwn6a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 3 * 8 bits rgb color alpha, white background chunk
+ { u"bgyn6a16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // 3 * 16 bits rgb color alpha, yellow background chunk
+ // Transparency
+ { u"tbbn0g04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, black background chunk
+ { u"tbbn2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, blue background chunk
+ { u"tbbn3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, black background chunk
+ { u"tbgn2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, green background chunk
+ { u"tbgn3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, light-gray background chunk
+ { u"tbrn2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, red background chunk
+ { u"tbwn0g16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, white background chunk
+ { u"tbwn3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, white background chunk
+ { u"tbyn3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, yellow background chunk
+ { u"tp1n3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // transparent, but no background chunk
+ { u"tm3n3p02.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // multiple levels of transparency, 3 entries
+ // Gamma
+ { u"g03n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale, file-gamma = 0.35
+ { u"g03n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, file-gamma = 0.35
+ { u"g03n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, file-gamma = 0.35
+ { u"g04n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale, file-gamma = 0.45
+ { u"g04n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, file-gamma = 0.45
+ { u"g04n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, file-gamma = 0.45
+ { u"g05n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale, file-gamma = 0.55
+ { u"g05n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, file-gamma = 0.55
+ { u"g05n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, file-gamma = 0.55
+ { u"g07n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale, file-gamma = 0.70
+ { u"g07n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, file-gamma = 0.70
+ { u"g07n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, file-gamma = 0.70
+ { u"g10n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale, file-gamma = 1.00
+ { u"g10n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, file-gamma = 1.00
+ { u"g10n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, file-gamma = 1.00
+ { u"g25n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale, file-gamma = 2.50
+ { u"g25n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, file-gamma = 2.50
+ { u"g25n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, file-gamma = 2.50
+ // Image filtering
+ { u"f00n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale no interlacing, filter-type 0
+ { u"f00n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, filter-type 0
+ { u"f01n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale no interlacing, filter-type 1
+ { u"f01n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, filter-type 1
+ { u"f02n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale no interlacing, filter-type 2
+ { u"f02n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, filter-type 2
+ { u"f03n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale no interlacing, filter-type 3
+ { u"f03n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, filter-type 3
+ { u"f04n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale no interlacing, filter-type 4
+ { u"f04n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, filter-type 4
+ { u"f99n0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale bit-depth 4, filter changing per scanline
+ // Additional palettes
+ { u"pp0n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // six-cube palette-chunk in true-color image
+ { u"pp0n6a08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ true,
+ } }, // six-cube palette-chunk in true-color+alpha image
+ { u"ps1n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // six-cube suggested palette (1 byte) in grayscale image
+ { u"ps1n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // six-cube suggested palette (1 byte) in true-color image
+ { u"ps2n0g08.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // six-cube suggested palette (2 bytes) in grayscale image
+ { u"ps2n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // six-cube suggested palette (2 bytes) in true-color image
+ // Ancillary chunks
+ { u"ccwn2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // chroma chunk w:0.31270.329 r:0.640.33 g:0.300.60 b:0.15,0.06
+ { u"ccwn3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // chroma chunk w:0.31270.329 r:0.640.33 g:0.300.60 b:0.15,0.06
+ { u"cdfn2c08.png",
+ {
+ 8,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // physical pixel dimensions, 8x32 flat pixels
+ { u"cdhn2c08.png",
+ {
+ 32,
+ 8,
+ 24,
+ false,
+ false,
+ } }, // physical pixel dimensions, 32x8 high pixels
+ { u"cdsn2c08.png",
+ {
+ 8,
+ 8,
+ 24,
+ false,
+ false,
+ } }, // physical pixel dimensions, 8x8 square pixels
+ { u"cdun2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // physical pixel dimensions, 1000 pixels per 1 meter
+ { u"ch1n3p04.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // histogram 15 colors
+ { u"ch2n3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // histogram 256 colors
+ { u"cm0n0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale modification time, 01-jan-2000 12:34:56
+ { u"cm7n0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale modification time, 01-jan-1970 00:00:00
+ { u"cm9n0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale modification time, 31-dec-1999 23:59:59
+ { u"cs3n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, 13 significant bits
+ { u"cs3n3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, 3 significant bits
+ { u"cs5n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, 5 significant bits
+ { u"cs5n3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, 5 significant bits
+ { u"cs8n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color, 8 significant bits (reference)
+ { u"cs8n3p08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // paletted, 8 significant bits (reference)
+ { u"ct0n0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale no textual data
+ { u"ct1n0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale with textual data
+ { u"ctzn0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale with compressed textual data
+ { u"cten0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale international UTF-8, english
+ { u"ctfn0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale international UTF-8, finnish
+ { u"ctgn0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale international UTF-8, greek
+ { u"cthn0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale international UTF-8, hindi
+ { u"ctjn0g04.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale international UTF-8, japanese
+ { u"exif2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // chunk with jpeg exif data
+ // Chunk ordering
+ { u"oi1n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale mother image with 1 idat-chunk
+ { u"oi1n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color mother image with 1 idat-chunk
+ { u"oi2n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale image with 2 idat-chunks
+ { u"oi2n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color image with 2 idat-chunks
+ { u"oi4n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale image with 4 unequal sized idat-chunks
+ { u"oi4n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color image with 4 unequal sized idat-chunks
+ { u"oi9n0g16.png",
+ {
+ 32,
+ 32,
+ 8,
+ true,
+ false,
+ } }, // grayscale image with all idat-chunks length one
+ { u"oi9n2c16.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color image with all idat-chunks length one
+ // Zlib compression
+ { u"z00n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, compression level 0 (none)
+ { u"z03n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, compression level 3
+ { u"z06n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, compression level 6 (default)
+ { u"z09n2c08.png",
+ {
+ 32,
+ 32,
+ 24,
+ false,
+ false,
+ } }, // color no interlacing, compression level 9 (maximum)
+ };
+
+ for (const auto & [ aCaseName, aCase ] : aCases)
+ {
+ checkImportExportPng(getFullUrl(aCaseName), aCase);
+ }
+
+ OUString aCorruptedFilenames[] = {
+ "xs1n0g01.png", // signature byte 1 MSBit reset to zero
+ "xs2n0g01.png", // signature byte 2 is a 'Q'
+ "xs4n0g01.png", // signature byte 4 lowercase
+ "xs7n0g01.png", // 7th byte a space instead of control-Z
+ "xcrn0g04.png", // added cr bytes
+ "xlfn0g04.png", // added lf bytes
+ "xhdn0g08.png", // incorrect IHDR checksum
+ "xc1n0g08.png", // color type 1
+ "xc9n2c08.png", // color type 9
+ "xd0n2c08.png", // bit-depth 0
+ "xd3n2c08.png", // bit-depth 3
+ "xd9n2c08.png", // bit-depth 99
+ "xdtn0g01.png", // missing IDAT chunk
+ "xcsn0g01.png", // incorrect IDAT checksum
+ };
+
+ for (const auto& aFilename : aCorruptedFilenames)
+ {
+ checkImportCorruptedPng(getFullUrl(aFilename));
+ }
+}
+
void PngFilterTest::testMsGifInPng()
{
Graphic aGraphic;
diff --git a/vcl/qa/cppunit/png/data/basi0g01.png b/vcl/qa/cppunit/png/data/basi0g01.png
new file mode 100644
index 000000000000..556fa7270408
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi0g02.png b/vcl/qa/cppunit/png/data/basi0g02.png
new file mode 100644
index 000000000000..ce09821ef101
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi0g02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi0g04.png b/vcl/qa/cppunit/png/data/basi0g04.png
new file mode 100644
index 000000000000..3853273f93e5
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi0g08.png b/vcl/qa/cppunit/png/data/basi0g08.png
new file mode 100644
index 000000000000..faed8bec445f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi0g16.png b/vcl/qa/cppunit/png/data/basi0g16.png
new file mode 100644
index 000000000000..a9f28165efd4
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi2c08.png b/vcl/qa/cppunit/png/data/basi2c08.png
new file mode 100644
index 000000000000..2aab44d42b23
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi2c16.png b/vcl/qa/cppunit/png/data/basi2c16.png
new file mode 100644
index 000000000000..cd7e50f91402
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi3p01.png b/vcl/qa/cppunit/png/data/basi3p01.png
new file mode 100644
index 000000000000..00a7cea6c2d3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi3p02.png b/vcl/qa/cppunit/png/data/basi3p02.png
new file mode 100644
index 000000000000..bb16b44b3090
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi3p04.png b/vcl/qa/cppunit/png/data/basi3p04.png
new file mode 100644
index 000000000000..b4e888e2477d
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi3p08.png b/vcl/qa/cppunit/png/data/basi3p08.png
new file mode 100644
index 000000000000..50a6d1cac7a1
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi4a08.png b/vcl/qa/cppunit/png/data/basi4a08.png
new file mode 100644
index 000000000000..398132be5faa
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi4a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi4a16.png b/vcl/qa/cppunit/png/data/basi4a16.png
new file mode 100644
index 000000000000..51192e731106
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi4a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi6a08.png b/vcl/qa/cppunit/png/data/basi6a08.png
new file mode 100644
index 000000000000..aecb32e0d9e3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi6a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basi6a16.png b/vcl/qa/cppunit/png/data/basi6a16.png
new file mode 100644
index 000000000000..4181533ad81b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basi6a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn0g01.png b/vcl/qa/cppunit/png/data/basn0g01.png
new file mode 100644
index 000000000000..1d722423aa51
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn0g02.png b/vcl/qa/cppunit/png/data/basn0g02.png
new file mode 100644
index 000000000000..508332418fa8
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn0g02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn0g04.png b/vcl/qa/cppunit/png/data/basn0g04.png
new file mode 100644
index 000000000000..0bf3687863d8
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn0g08.png b/vcl/qa/cppunit/png/data/basn0g08.png
new file mode 100644
index 000000000000..23c82379a29f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn0g16.png b/vcl/qa/cppunit/png/data/basn0g16.png
new file mode 100644
index 000000000000..e7c82f78eb95
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn2c08.png b/vcl/qa/cppunit/png/data/basn2c08.png
new file mode 100644
index 000000000000..db5ad15865f5
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn2c16.png b/vcl/qa/cppunit/png/data/basn2c16.png
new file mode 100644
index 000000000000..50c1cb91a017
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn3p01.png b/vcl/qa/cppunit/png/data/basn3p01.png
new file mode 100644
index 000000000000..b145c2b8eff1
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn3p02.png b/vcl/qa/cppunit/png/data/basn3p02.png
new file mode 100644
index 000000000000..8985b3d818e3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn3p04.png b/vcl/qa/cppunit/png/data/basn3p04.png
new file mode 100644
index 000000000000..0fbf9e827b46
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn3p08.png b/vcl/qa/cppunit/png/data/basn3p08.png
new file mode 100644
index 000000000000..0ddad07e5f5d
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn4a08.png b/vcl/qa/cppunit/png/data/basn4a08.png
new file mode 100644
index 000000000000..3e13052201c9
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn4a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn4a16.png b/vcl/qa/cppunit/png/data/basn4a16.png
new file mode 100644
index 000000000000..8243644d0743
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn4a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn6a08.png b/vcl/qa/cppunit/png/data/basn6a08.png
new file mode 100644
index 000000000000..e6087387639b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn6a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/basn6a16.png b/vcl/qa/cppunit/png/data/basn6a16.png
new file mode 100644
index 000000000000..984a99525f52
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/basn6a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgai4a08.png b/vcl/qa/cppunit/png/data/bgai4a08.png
new file mode 100644
index 000000000000..398132be5faa
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgai4a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgai4a16.png b/vcl/qa/cppunit/png/data/bgai4a16.png
new file mode 100644
index 000000000000..51192e731106
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgai4a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgan6a08.png b/vcl/qa/cppunit/png/data/bgan6a08.png
new file mode 100644
index 000000000000..e6087387639b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgan6a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgan6a16.png b/vcl/qa/cppunit/png/data/bgan6a16.png
new file mode 100644
index 000000000000..984a99525f52
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgan6a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgbn4a08.png b/vcl/qa/cppunit/png/data/bgbn4a08.png
new file mode 100644
index 000000000000..7cbefc3bff08
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgbn4a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bggn4a16.png b/vcl/qa/cppunit/png/data/bggn4a16.png
new file mode 100644
index 000000000000..13fd85ba1933
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bggn4a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgwn6a08.png b/vcl/qa/cppunit/png/data/bgwn6a08.png
new file mode 100644
index 000000000000..a67ff205bba9
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgwn6a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/bgyn6a16.png b/vcl/qa/cppunit/png/data/bgyn6a16.png
new file mode 100644
index 000000000000..ae3e9be58a82
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/bgyn6a16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ccwn2c08.png b/vcl/qa/cppunit/png/data/ccwn2c08.png
new file mode 100644
index 000000000000..47c24817b79c
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ccwn2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ccwn3p08.png b/vcl/qa/cppunit/png/data/ccwn3p08.png
new file mode 100644
index 000000000000..8bb2c1098159
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ccwn3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cdfn2c08.png b/vcl/qa/cppunit/png/data/cdfn2c08.png
new file mode 100644
index 000000000000..559e5261e705
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cdfn2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cdhn2c08.png b/vcl/qa/cppunit/png/data/cdhn2c08.png
new file mode 100644
index 000000000000..3e07e8ecbd08
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cdhn2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cdsn2c08.png b/vcl/qa/cppunit/png/data/cdsn2c08.png
new file mode 100644
index 000000000000..076c32cc0820
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cdsn2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cdun2c08.png b/vcl/qa/cppunit/png/data/cdun2c08.png
new file mode 100644
index 000000000000..846033be6b4f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cdun2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ch1n3p04.png b/vcl/qa/cppunit/png/data/ch1n3p04.png
new file mode 100644
index 000000000000..17cd12dfc916
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ch1n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ch2n3p08.png b/vcl/qa/cppunit/png/data/ch2n3p08.png
new file mode 100644
index 000000000000..25c17987a778
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ch2n3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cm0n0g04.png b/vcl/qa/cppunit/png/data/cm0n0g04.png
new file mode 100644
index 000000000000..9fba5db3b82c
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cm0n0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cm7n0g04.png b/vcl/qa/cppunit/png/data/cm7n0g04.png
new file mode 100644
index 000000000000..f7dc46e6853b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cm7n0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cm9n0g04.png b/vcl/qa/cppunit/png/data/cm9n0g04.png
new file mode 100644
index 000000000000..dd70911adce1
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cm9n0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cs3n2c16.png b/vcl/qa/cppunit/png/data/cs3n2c16.png
new file mode 100644
index 000000000000..bf5fd20a2044
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cs3n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cs3n3p08.png b/vcl/qa/cppunit/png/data/cs3n3p08.png
new file mode 100644
index 000000000000..f4a66237bfb3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cs3n3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cs5n2c08.png b/vcl/qa/cppunit/png/data/cs5n2c08.png
new file mode 100644
index 000000000000..40f947c33e47
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cs5n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cs5n3p08.png b/vcl/qa/cppunit/png/data/cs5n3p08.png
new file mode 100644
index 000000000000..dfd6e6e6ecfc
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cs5n3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cs8n2c08.png b/vcl/qa/cppunit/png/data/cs8n2c08.png
new file mode 100644
index 000000000000..8e01d3294ff7
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cs8n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cs8n3p08.png b/vcl/qa/cppunit/png/data/cs8n3p08.png
new file mode 100644
index 000000000000..a44066eb6edf
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cs8n3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ct0n0g04.png b/vcl/qa/cppunit/png/data/ct0n0g04.png
new file mode 100644
index 000000000000..40d1e062f8cd
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ct0n0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ct1n0g04.png b/vcl/qa/cppunit/png/data/ct1n0g04.png
new file mode 100644
index 000000000000..3ba110aa764f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ct1n0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cten0g04.png b/vcl/qa/cppunit/png/data/cten0g04.png
new file mode 100644
index 000000000000..a6a56faf2b3e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cten0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ctfn0g04.png b/vcl/qa/cppunit/png/data/ctfn0g04.png
new file mode 100644
index 000000000000..353873ebbd0c
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ctfn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ctgn0g04.png b/vcl/qa/cppunit/png/data/ctgn0g04.png
new file mode 100644
index 000000000000..453f2b0a49ee
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ctgn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/cthn0g04.png b/vcl/qa/cppunit/png/data/cthn0g04.png
new file mode 100644
index 000000000000..8fce253e6da2
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/cthn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ctjn0g04.png b/vcl/qa/cppunit/png/data/ctjn0g04.png
new file mode 100644
index 000000000000..a77b8d2fee4c
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ctjn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ctzn0g04.png b/vcl/qa/cppunit/png/data/ctzn0g04.png
new file mode 100644
index 000000000000..b4401c9cfca8
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ctzn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/exif2c08.png b/vcl/qa/cppunit/png/data/exif2c08.png
new file mode 100644
index 000000000000..56eb73499149
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/exif2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f00n0g08.png b/vcl/qa/cppunit/png/data/f00n0g08.png
new file mode 100644
index 000000000000..45a007596753
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f00n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f00n2c08.png b/vcl/qa/cppunit/png/data/f00n2c08.png
new file mode 100644
index 000000000000..d6a1ffff62eb
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f00n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f01n0g08.png b/vcl/qa/cppunit/png/data/f01n0g08.png
new file mode 100644
index 000000000000..4a1107b46376
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f01n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f01n2c08.png b/vcl/qa/cppunit/png/data/f01n2c08.png
new file mode 100644
index 000000000000..26fee958ce7e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f01n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f02n0g08.png b/vcl/qa/cppunit/png/data/f02n0g08.png
new file mode 100644
index 000000000000..bfe410c5e7ca
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f02n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f02n2c08.png b/vcl/qa/cppunit/png/data/f02n2c08.png
new file mode 100644
index 000000000000..e590f1234816
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f02n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f03n0g08.png b/vcl/qa/cppunit/png/data/f03n0g08.png
new file mode 100644
index 000000000000..ed01e2923c92
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f03n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f03n2c08.png b/vcl/qa/cppunit/png/data/f03n2c08.png
new file mode 100644
index 000000000000..758115059d78
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f03n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f04n0g08.png b/vcl/qa/cppunit/png/data/f04n0g08.png
new file mode 100644
index 000000000000..663fdae3e7d9
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f04n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f04n2c08.png b/vcl/qa/cppunit/png/data/f04n2c08.png
new file mode 100644
index 000000000000..3c8b5116e72a
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f04n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/f99n0g04.png b/vcl/qa/cppunit/png/data/f99n0g04.png
new file mode 100644
index 000000000000..0b521c1d56ac
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/f99n0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g03n0g16.png b/vcl/qa/cppunit/png/data/g03n0g16.png
new file mode 100644
index 000000000000..41083ca80f96
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g03n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g03n2c08.png b/vcl/qa/cppunit/png/data/g03n2c08.png
new file mode 100644
index 000000000000..a9354dbee6f3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g03n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g03n3p04.png b/vcl/qa/cppunit/png/data/g03n3p04.png
new file mode 100644
index 000000000000..60396c95af19
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g03n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g04n0g16.png b/vcl/qa/cppunit/png/data/g04n0g16.png
new file mode 100644
index 000000000000..32395b76c9c0
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g04n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g04n2c08.png b/vcl/qa/cppunit/png/data/g04n2c08.png
new file mode 100644
index 000000000000..a652b0ce87ed
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g04n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g04n3p04.png b/vcl/qa/cppunit/png/data/g04n3p04.png
new file mode 100644
index 000000000000..5661cc31318e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g04n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g05n0g16.png b/vcl/qa/cppunit/png/data/g05n0g16.png
new file mode 100644
index 000000000000..70b37f01e2b9
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g05n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g05n2c08.png b/vcl/qa/cppunit/png/data/g05n2c08.png
new file mode 100644
index 000000000000..932c1365364f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g05n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g05n3p04.png b/vcl/qa/cppunit/png/data/g05n3p04.png
new file mode 100644
index 000000000000..9619930585eb
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g05n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g07n0g16.png b/vcl/qa/cppunit/png/data/g07n0g16.png
new file mode 100644
index 000000000000..d6a47c2d5746
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g07n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g07n2c08.png b/vcl/qa/cppunit/png/data/g07n2c08.png
new file mode 100644
index 000000000000..597346460f19
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g07n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g07n3p04.png b/vcl/qa/cppunit/png/data/g07n3p04.png
new file mode 100644
index 000000000000..c73fb613650d
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g07n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g10n0g16.png b/vcl/qa/cppunit/png/data/g10n0g16.png
new file mode 100644
index 000000000000..85f2c958e9a2
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g10n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g10n2c08.png b/vcl/qa/cppunit/png/data/g10n2c08.png
new file mode 100644
index 000000000000..b3039970c10e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g10n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g10n3p04.png b/vcl/qa/cppunit/png/data/g10n3p04.png
new file mode 100644
index 000000000000..1b6a6be2ca57
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g10n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g25n0g16.png b/vcl/qa/cppunit/png/data/g25n0g16.png
new file mode 100644
index 000000000000..a9f6787c7ab5
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g25n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g25n2c08.png b/vcl/qa/cppunit/png/data/g25n2c08.png
new file mode 100644
index 000000000000..03f505a64b57
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g25n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/g25n3p04.png b/vcl/qa/cppunit/png/data/g25n3p04.png
new file mode 100644
index 000000000000..4f943c6175f3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/g25n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi1n0g16.png b/vcl/qa/cppunit/png/data/oi1n0g16.png
new file mode 100644
index 000000000000..e7c82f78eb95
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi1n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi1n2c16.png b/vcl/qa/cppunit/png/data/oi1n2c16.png
new file mode 100644
index 000000000000..50c1cb91a017
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi1n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi2n0g16.png b/vcl/qa/cppunit/png/data/oi2n0g16.png
new file mode 100644
index 000000000000..14d64c583db3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi2n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi2n2c16.png b/vcl/qa/cppunit/png/data/oi2n2c16.png
new file mode 100644
index 000000000000..4c2e3e3352ba
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi2n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi4n0g16.png b/vcl/qa/cppunit/png/data/oi4n0g16.png
new file mode 100644
index 000000000000..69e73ede311c
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi4n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi4n2c16.png b/vcl/qa/cppunit/png/data/oi4n2c16.png
new file mode 100644
index 000000000000..93691e373aa4
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi4n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi9n0g16.png b/vcl/qa/cppunit/png/data/oi9n0g16.png
new file mode 100644
index 000000000000..9248413576d9
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi9n0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/oi9n2c16.png b/vcl/qa/cppunit/png/data/oi9n2c16.png
new file mode 100644
index 000000000000..f0512e49f230
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/oi9n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/pp0n2c16.png b/vcl/qa/cppunit/png/data/pp0n2c16.png
new file mode 100644
index 000000000000..8f2aad733520
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/pp0n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/pp0n6a08.png b/vcl/qa/cppunit/png/data/pp0n6a08.png
new file mode 100644
index 000000000000..4ed7a30e4d16
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/pp0n6a08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ps1n0g08.png b/vcl/qa/cppunit/png/data/ps1n0g08.png
new file mode 100644
index 000000000000..99625fa4ba1c
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ps1n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ps1n2c16.png b/vcl/qa/cppunit/png/data/ps1n2c16.png
new file mode 100644
index 000000000000..0c7a6b380e9a
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ps1n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ps2n0g08.png b/vcl/qa/cppunit/png/data/ps2n0g08.png
new file mode 100644
index 000000000000..90b297968577
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ps2n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/ps2n2c16.png b/vcl/qa/cppunit/png/data/ps2n2c16.png
new file mode 100644
index 000000000000..a4a181e4ecfc
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/ps2n2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s01i3p01.png b/vcl/qa/cppunit/png/data/s01i3p01.png
new file mode 100644
index 000000000000..6c0fad1fc982
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s01i3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s01n3p01.png b/vcl/qa/cppunit/png/data/s01n3p01.png
new file mode 100644
index 000000000000..cb2c8c78261e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s01n3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s02i3p01.png b/vcl/qa/cppunit/png/data/s02i3p01.png
new file mode 100644
index 000000000000..2defaed911a2
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s02i3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s02n3p01.png b/vcl/qa/cppunit/png/data/s02n3p01.png
new file mode 100644
index 000000000000..2b1b66964354
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s02n3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s03i3p01.png b/vcl/qa/cppunit/png/data/s03i3p01.png
new file mode 100644
index 000000000000..c23fdc463170
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s03i3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s03n3p01.png b/vcl/qa/cppunit/png/data/s03n3p01.png
new file mode 100644
index 000000000000..6d96ee4f873b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s03n3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s04i3p01.png b/vcl/qa/cppunit/png/data/s04i3p01.png
new file mode 100644
index 000000000000..0e710c2c397e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s04i3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s04n3p01.png b/vcl/qa/cppunit/png/data/s04n3p01.png
new file mode 100644
index 000000000000..956396c45b51
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s04n3p01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s05i3p02.png b/vcl/qa/cppunit/png/data/s05i3p02.png
new file mode 100644
index 000000000000..d14cbd351ac1
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s05i3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s05n3p02.png b/vcl/qa/cppunit/png/data/s05n3p02.png
new file mode 100644
index 000000000000..bf940f057678
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s05n3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s06i3p02.png b/vcl/qa/cppunit/png/data/s06i3p02.png
new file mode 100644
index 000000000000..456ada320064
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s06i3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s06n3p02.png b/vcl/qa/cppunit/png/data/s06n3p02.png
new file mode 100644
index 000000000000..501064dc25cf
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s06n3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s07i3p02.png b/vcl/qa/cppunit/png/data/s07i3p02.png
new file mode 100644
index 000000000000..44b66bab9e4f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s07i3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s07n3p02.png b/vcl/qa/cppunit/png/data/s07n3p02.png
new file mode 100644
index 000000000000..6a582593d654
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s07n3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s08i3p02.png b/vcl/qa/cppunit/png/data/s08i3p02.png
new file mode 100644
index 000000000000..acf74f3fc413
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s08i3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s08n3p02.png b/vcl/qa/cppunit/png/data/s08n3p02.png
new file mode 100644
index 000000000000..b7094e1b4f19
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s08n3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s09i3p02.png b/vcl/qa/cppunit/png/data/s09i3p02.png
new file mode 100644
index 000000000000..0bfae8e45678
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s09i3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s09n3p02.png b/vcl/qa/cppunit/png/data/s09n3p02.png
new file mode 100644
index 000000000000..711ab8245189
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s09n3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s32i3p04.png b/vcl/qa/cppunit/png/data/s32i3p04.png
new file mode 100644
index 000000000000..0841910b7277
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s32i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s32n3p04.png b/vcl/qa/cppunit/png/data/s32n3p04.png
new file mode 100644
index 000000000000..fa58e3e3f69b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s32n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s33i3p04.png b/vcl/qa/cppunit/png/data/s33i3p04.png
new file mode 100644
index 000000000000..ab0dc14aba44
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s33i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s33n3p04.png b/vcl/qa/cppunit/png/data/s33n3p04.png
new file mode 100644
index 000000000000..764f1a3dc71f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s33n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s34i3p04.png b/vcl/qa/cppunit/png/data/s34i3p04.png
new file mode 100644
index 000000000000..bd99039be4a6
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s34i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s34n3p04.png b/vcl/qa/cppunit/png/data/s34n3p04.png
new file mode 100644
index 000000000000..9cbc68b3b9d5
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s34n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s35i3p04.png b/vcl/qa/cppunit/png/data/s35i3p04.png
new file mode 100644
index 000000000000..e2a5e0a6595f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s35i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s35n3p04.png b/vcl/qa/cppunit/png/data/s35n3p04.png
new file mode 100644
index 000000000000..90b892ebafc5
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s35n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s36i3p04.png b/vcl/qa/cppunit/png/data/s36i3p04.png
new file mode 100644
index 000000000000..eb61b6f9a325
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s36i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s36n3p04.png b/vcl/qa/cppunit/png/data/s36n3p04.png
new file mode 100644
index 000000000000..b38d179774ce
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s36n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s37i3p04.png b/vcl/qa/cppunit/png/data/s37i3p04.png
new file mode 100644
index 000000000000..6e2b1e9b79ba
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s37i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s37n3p04.png b/vcl/qa/cppunit/png/data/s37n3p04.png
new file mode 100644
index 000000000000..4d3054da516a
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s37n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s38i3p04.png b/vcl/qa/cppunit/png/data/s38i3p04.png
new file mode 100644
index 000000000000..a0a8a140ad7e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s38i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s38n3p04.png b/vcl/qa/cppunit/png/data/s38n3p04.png
new file mode 100644
index 000000000000..1233ed048e50
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s38n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s39i3p04.png b/vcl/qa/cppunit/png/data/s39i3p04.png
new file mode 100644
index 000000000000..04fee93eae40
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s39i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s39n3p04.png b/vcl/qa/cppunit/png/data/s39n3p04.png
new file mode 100644
index 000000000000..c750100d55fb
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s39n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s40i3p04.png b/vcl/qa/cppunit/png/data/s40i3p04.png
new file mode 100644
index 000000000000..68f358b822b9
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s40i3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/s40n3p04.png b/vcl/qa/cppunit/png/data/s40n3p04.png
new file mode 100644
index 000000000000..864b6b9673b3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/s40n3p04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbbn0g04.png b/vcl/qa/cppunit/png/data/tbbn0g04.png
new file mode 100644
index 000000000000..39a7050d27af
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbbn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbbn2c16.png b/vcl/qa/cppunit/png/data/tbbn2c16.png
new file mode 100644
index 000000000000..dd3168e5c864
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbbn2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbbn3p08.png b/vcl/qa/cppunit/png/data/tbbn3p08.png
new file mode 100644
index 000000000000..0ede3574db0f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbbn3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbgn2c16.png b/vcl/qa/cppunit/png/data/tbgn2c16.png
new file mode 100644
index 000000000000..85cec395c01b
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbgn2c16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbgn3p08.png b/vcl/qa/cppunit/png/data/tbgn3p08.png
new file mode 100644
index 000000000000..8cf2e6fb6aab
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbgn3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbrn2c08.png b/vcl/qa/cppunit/png/data/tbrn2c08.png
new file mode 100644
index 000000000000..5cca0d621047
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbrn2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbwn0g16.png b/vcl/qa/cppunit/png/data/tbwn0g16.png
new file mode 100644
index 000000000000..99bdeed2b3b8
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbwn0g16.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbwn3p08.png b/vcl/qa/cppunit/png/data/tbwn3p08.png
new file mode 100644
index 000000000000..eacab7a144cb
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbwn3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tbyn3p08.png b/vcl/qa/cppunit/png/data/tbyn3p08.png
new file mode 100644
index 000000000000..656db0989ad8
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tbyn3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tm3n3p02.png b/vcl/qa/cppunit/png/data/tm3n3p02.png
new file mode 100644
index 000000000000..fb3ef1d0c5aa
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tm3n3p02.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/tp1n3p08.png b/vcl/qa/cppunit/png/data/tp1n3p08.png
new file mode 100644
index 000000000000..a6c9f35a8627
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/tp1n3p08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xc1n0g08.png b/vcl/qa/cppunit/png/data/xc1n0g08.png
new file mode 100644
index 000000000000..940422737011
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xc1n0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xc9n2c08.png b/vcl/qa/cppunit/png/data/xc9n2c08.png
new file mode 100644
index 000000000000..b11c2a7b4049
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xc9n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xcrn0g04.png b/vcl/qa/cppunit/png/data/xcrn0g04.png
new file mode 100644
index 000000000000..48abba193ab3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xcrn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xcsn0g01.png b/vcl/qa/cppunit/png/data/xcsn0g01.png
new file mode 100644
index 000000000000..9863a262caaa
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xcsn0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xd0n2c08.png b/vcl/qa/cppunit/png/data/xd0n2c08.png
new file mode 100644
index 000000000000..2f001610a85a
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xd0n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xd3n2c08.png b/vcl/qa/cppunit/png/data/xd3n2c08.png
new file mode 100644
index 000000000000..9e4a3ff7accf
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xd3n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xd9n2c08.png b/vcl/qa/cppunit/png/data/xd9n2c08.png
new file mode 100644
index 000000000000..2c3b91aa4f12
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xd9n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xdtn0g01.png b/vcl/qa/cppunit/png/data/xdtn0g01.png
new file mode 100644
index 000000000000..1a81abef826f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xdtn0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xhdn0g08.png b/vcl/qa/cppunit/png/data/xhdn0g08.png
new file mode 100644
index 000000000000..fcb8737fa250
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xhdn0g08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xlfn0g04.png b/vcl/qa/cppunit/png/data/xlfn0g04.png
new file mode 100644
index 000000000000..d9ec53ed94b3
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xlfn0g04.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xs1n0g01.png b/vcl/qa/cppunit/png/data/xs1n0g01.png
new file mode 100644
index 000000000000..1817c5144ffa
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xs1n0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xs2n0g01.png b/vcl/qa/cppunit/png/data/xs2n0g01.png
new file mode 100644
index 000000000000..b8147f2a84b8
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xs2n0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xs4n0g01.png b/vcl/qa/cppunit/png/data/xs4n0g01.png
new file mode 100644
index 000000000000..45237a1d294f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xs4n0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/xs7n0g01.png b/vcl/qa/cppunit/png/data/xs7n0g01.png
new file mode 100644
index 000000000000..3f307f14ea5e
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/xs7n0g01.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/z00n2c08.png b/vcl/qa/cppunit/png/data/z00n2c08.png
new file mode 100644
index 000000000000..7669eb838517
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/z00n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/z03n2c08.png b/vcl/qa/cppunit/png/data/z03n2c08.png
new file mode 100644
index 000000000000..bfb10de8de4f
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/z03n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/z06n2c08.png b/vcl/qa/cppunit/png/data/z06n2c08.png
new file mode 100644
index 000000000000..b90ebc10f5b0
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/z06n2c08.png
Binary files differ
diff --git a/vcl/qa/cppunit/png/data/z09n2c08.png b/vcl/qa/cppunit/png/data/z09n2c08.png
new file mode 100644
index 000000000000..5f191a78ee56
--- /dev/null
+++ b/vcl/qa/cppunit/png/data/z09n2c08.png
Binary files differ