Bug 549468 and Bug 670466 - Reftests for ICO and BMP encoders. r=joe
authorBrian R. Bondy <netzen@gmail.com>
Thu, 25 Aug 2011 16:09:06 -0400
changeset 77233 f097100df8aa0aae62fde3bc4556f1232718bcde
parent 77232 35b13356df7870bd0fb7dfd6e41cd49407a8359e
child 77234 53362b3e8894cc891921be6c29b447c87cf5484a
push id78
push userclegnitto@mozilla.com
push dateFri, 16 Dec 2011 17:32:24 +0000
treeherdermozilla-release@79d24e644fdd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjoe
bugs549468, 670466
milestone9.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 549468 and Bug 670466 - Reftests for ICO and BMP encoders. r=joe
modules/libpr0n/test/reftest/encoders-lossless/encoder.html
modules/libpr0n/test/reftest/encoders-lossless/reftest.list
modules/libpr0n/test/reftest/encoders-lossless/size-15x15.png
modules/libpr0n/test/reftest/encoders-lossless/size-16x16.png
modules/libpr0n/test/reftest/encoders-lossless/size-17x17.png
modules/libpr0n/test/reftest/encoders-lossless/size-1x1.png
modules/libpr0n/test/reftest/encoders-lossless/size-2x2.png
modules/libpr0n/test/reftest/encoders-lossless/size-31x31.png
modules/libpr0n/test/reftest/encoders-lossless/size-32x32.png
modules/libpr0n/test/reftest/encoders-lossless/size-33x33.png
modules/libpr0n/test/reftest/encoders-lossless/size-3x3.png
modules/libpr0n/test/reftest/encoders-lossless/size-4x4.png
modules/libpr0n/test/reftest/encoders-lossless/size-5x5.png
modules/libpr0n/test/reftest/encoders-lossless/size-6x6.png
modules/libpr0n/test/reftest/encoders-lossless/size-7x7.png
modules/libpr0n/test/reftest/encoders-lossless/size-8x8.png
modules/libpr0n/test/reftest/encoders-lossless/size-9x9.png
modules/libpr0n/test/reftest/encoders-lossless/test.png
modules/libpr0n/test/reftest/reftest.list
new file mode 100644
--- /dev/null
+++ b/modules/libpr0n/test/reftest/encoders-lossless/encoder.html
@@ -0,0 +1,112 @@
+<html class="reftest-wait">
+<head>
+<title>Image reftest wrapper</title>
+  <style type="text/css">
+    #image_from_encoder { background-color: rgb(10, 100, 250); }
+  </style>
+
+  <script>
+  // Parse out the URL command line params
+  // Valid options are:
+  // - img=<reference image to use>
+  // - mime=<mime type>
+  // - options=<canvas toDataURL encoder options>
+  // Example: 
+  // encoder.html?img=escape(reference_image.png)
+  //             &mime=escape(image/ico)
+  //             &options=escape(-moz-parse-options:bpp=24;format=png)
+  var getVars = {};
+  function buildValue(sValue) 
+  {
+    if (/^\s*$/.test(sValue)) { 
+      return null; 
+    }
+    if (/^(true|false)$/i.test(sValue)) {
+      return sValue.toLowerCase() === "true"; 
+    }
+    if (isFinite(sValue)) { 
+      return parseFloat(sValue); 
+    }
+    if (isFinite(Date.parse(sValue))) { 
+      return new Date(sValue); 
+    }
+    return sValue;
+  }
+  if (window.location.search.length > 1) {
+    var couple, couples = window.location.search.substr(1).split("&");
+    for (var couplId = 0; couplId < couples.length; couplId++) {
+      couple = couples[couplId].split("=");
+      getVars[unescape(couple[0])] = couple.length > 1 ? 
+                                       buildValue(unescape(couple[1])) : null;
+    }
+  }
+
+  // Create the image that we will load the reference image to 
+  var img = new Image();
+
+  // Create the canvas that we will draw the image img onto and
+  // eventually call toDataURL to invoke the encoder on
+  var canvas = document.createElement("canvas");
+
+  // Starts the test by loading the reference image
+  function runTest() 
+  {
+    // Load the reference image to start the test
+    img.onload = onReferenceImageLoad;
+    img.onerror = onReferenceImageLoad;
+    img.src = getVars.img;
+  }
+
+  // Once the encoded image from the canvas is loaded we can
+  // let the reftest compare
+  function onEncodedImageLoad() 
+  {
+    document.documentElement.removeAttribute("class");
+  }
+
+  // Once the image loads async, we then draw the image onto the canvas,
+  // and call canvas.toDataURL to invoke the encoder, and then set a new
+  // image to the encoded data URL
+  function onReferenceImageLoad() 
+  {
+    // mimeType will hold the mime type of which encoder to invoke
+    var mimeType = getVars.mime;
+    // parseOptions will hold the encoder options to use 
+    var parseOptions = getVars.options;
+
+    // Obtain the canvas and draw the reference image
+    canvas.width = img.width;
+    canvas.height = img.height;
+    var ctx = canvas.getContext('2d')
+    ctx.drawImage(img, 0, 0);
+
+    // Obtain the data URL with parsing options if specified
+    var dataURL;
+    if (parseOptions) 
+      dataURL = canvas.toDataURL(mimeType, parseOptions);
+    else
+      dataURL = canvas.toDataURL(mimeType);
+
+    // Setup async image loaded events
+    var image_from_encoder = document.getElementById('image_from_encoder');
+    image_from_encoder.onload = onEncodedImageLoad;
+    image_from_encoder.onerror = onEncodedImageLoad;
+
+    // Only set the image if we have the correct mime type
+    // because we want to fail the ref test if toDataURL fell
+    // back to image/png
+    if (dataURL.substring(0, mimeType.length+5) == "data:" + mimeType) {
+      // Set the image to the BMP data URL
+      image_from_encoder.src = dataURL; 
+    } else {
+      // Blank image so that we won't have to timeout the reftest
+      image_from_encoder.src = "data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D";
+    }
+  };
+  </script>
+</head>
+
+<body onload="runTest()">
+<img id="image_from_encoder">
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/modules/libpr0n/test/reftest/encoders-lossless/reftest.list
@@ -0,0 +1,155 @@
+# Encoder ref tests
+# These reftests must be run as HTTP because of canvas' origin-clean security
+# file:// URLs are always considered from a different origin unless same URL
+#
+# The test will copy a PNG image to a canvas, then use canvas.toDataUrl to get 
+# the data, then set the data to a new image hence invoking the appropriate 
+# encoder.
+#
+# The tests should only be used with lossless encoders.
+#
+# Valid arguments for encoder.html in the query string:
+# - img=<reference image to use>
+# - mime=<mime type>
+# - options=<canvas toDataURL encoder options>
+# Example: 
+# encoder.html?img=escape(reference_image.png)
+#             &mime=escape(image/vnd.microsoft.icon)
+#             &options=escape(-moz-parse-options:bpp=24;format=png)
+
+# PNG
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/png
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/png
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/png
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/png
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/png
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/png
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/png
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/png
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/png
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/png
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/png
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/png
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/png
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/png
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/png
+
+# BMP using default parse options
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/bmp
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/bmp
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/bmp
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/bmp
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/bmp
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/bmp
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/bmp
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/bmp
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/bmp
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/bmp
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/bmp
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/bmp
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/bmp
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/bmp
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/bmp
+
+# BMP using image/bmp mime type and 32bpp parse options
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D32
+
+# BMP using image/bmp mime type and 24bpp parse options
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/bmp&options=-moz-parse-options%3Abpp%3D24
+
+# ICO using default parse options
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/vnd.microsoft.icon
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/vnd.microsoft.icon
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/vnd.microsoft.icon
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/vnd.microsoft.icon
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/vnd.microsoft.icon
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/vnd.microsoft.icon
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/vnd.microsoft.icon
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/vnd.microsoft.icon
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/vnd.microsoft.icon
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/vnd.microsoft.icon
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/vnd.microsoft.icon
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/vnd.microsoft.icon
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/vnd.microsoft.icon
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/vnd.microsoft.icon
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/vnd.microsoft.icon
+
+# ICO using image/vnd.microsoft.icon mime type and 32bpp parse options with bmp 
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D32%3Bformat%3Dbmp
+
+# ICO using image/vnd.microsoft.icon mime type and 24bpp parse options with bmp 
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Abpp%3D24%3Bformat%3Dbmp
+
+# ICO using image/vnd.microsoft.icon mime type png
+HTTP == size-1x1.png   encoder.html?img=size-1x1.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-2x2.png   encoder.html?img=size-2x2.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-3x3.png   encoder.html?img=size-3x3.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-4x4.png   encoder.html?img=size-4x4.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-5x5.png   encoder.html?img=size-5x5.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-6x6.png   encoder.html?img=size-6x6.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-7x7.png   encoder.html?img=size-7x7.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-8x8.png   encoder.html?img=size-8x8.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-9x9.png   encoder.html?img=size-9x9.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-15x15.png encoder.html?img=size-15x15.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-16x16.png encoder.html?img=size-16x16.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-17x17.png encoder.html?img=size-17x17.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-31x31.png encoder.html?img=size-31x31.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-32x32.png encoder.html?img=size-32x32.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+HTTP == size-33x33.png encoder.html?img=size-33x33.png&mime=image/vnd.microsoft.icon&options=-moz-parse-options%3Aformat%3Dpng
+
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e1287430d05e2b48d8c689310633b269dbe8cff8
GIT binary patch
literal 809
zc$@(#1J?YBP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-0008;Nkl<ZD3Jxh
zUuYWz9KiA4<<hiwsSirB%TPq=pF0!<mDF5hg2-B%8`FnD=W=C;pccKWf}&E%RhXa*
zw%mq@g0kj{`Y;gfmB}6yq`Be5M{}t@`mkKk2Wi%zFJC_&`S-sm{vNCRF`nS&IM4NQ
zfv*npd^|32Zk*@Mae)^O^E`W4;K}g>4~-|d=XRbu4s>Mnm&&b7NHbw?AjCtVGZey1
z2r|JR3e8M#GQrMrSXmBZP(Z&mjU4>0knIa;Pe@WBPKBtia48iwQ^8LKHx-<|Q0uA8
z_cSWKyO{3Xi;R9&7~By0iO@}iI1xIDa4As;62VUdHxZm9Pi;@bOiCQ>-p};j!^puk
zVGs*xEOd8;I2Jmw5XM3f3+u6hyOU#iN23;(Fn8xL;z!WFJBHl;QX$(G(nz7Zt+2Z-
zbRr>)6oN=)JyL0Qrf6)Hs7Etc+Y1=c)972zA%~Z93`2#qEp$U+x2+I`Lf969wu%=P
zSq;ma2<NGXk70(37~v_3?H7^J`#FX!Aq^C|n+kDD*lG!3pwbF-yjBS}n869E)PqH=
z&C^siUq)}eg^XTT82CcpS4jLEv8T}SR4#f&T3#8?o5S@MSoV)&udiUOuVMIaqrdh6
zGCHd;SQXNyLbs_ByDFWgM!Q)iaA)zFRovzh&oo!4xvyZl8&uqn(9e8=j85jr9EE;E
zNE&%|8X6s^Oxu|ya2D{LC03p1aT;sXop-UE^B9d!(U-qQMo;7z*h0USr(4sBYb7Fk
zhS07O)E4n;r&+bvIAL#4v(IDNpHs1~QhfY6GI}6KW~%f|of}q}9czw`RVB2R2+S2c
zYYo@hz_Bh+x4ytKzoBCOKym&TWOP(zaAcC+kvr)c_YoV9a>aOxi^eHh#!Gm{JDf2-
zWZC$Ph00Y-<3|kRSG4jz@{cybK%3^b$-DVUdysFnV_eZra$)K$?`d!Fs&<YQ?J~!w
nwyA30GppUCtnD*7`6vGam7nI8(5Io`00000NkvXXu0mjfATxY?
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c04869e728ed01902838c869fc437bf07ad8c5f4
GIT binary patch
literal 879
zc$@)m1CacQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0009vNkl<ZIE@9t
zO>El)7=Yo=`DvWALSnHexX~t=dQBH+h}%MAer~kH5s1^G#?!d1ZQMzmXoVw<TN!ac
z+zLsGb{wmtid&_{W#TrePLbe(v={-Gv?-UD=aH-b=J@9-!SAy<ew`)wc{a!6S(5K&
zNxqyV`Rppiz1bX}Tqb#c7U!+YB+IioUb|FzWtu{!f5(U-A&i7zBKVQeiv({XwEq&E
zD25%ys7DI#M1m2;$VCaVlQi=$GsyHeg-Ixcp)d-CqfqFDf_EmkV+CidV229zP^gXt
zBaD$dQ_(`5%-QS6#q&5(AdCZH6bODG^aF)XAh?0x1j0rj)B?c_5*Vi$@}n%;Xo<|T
zW#r;mA@YT>FP!?q(NO3Og^n+{zOd~J8@@vAD2{oQq3rAA{YA8+BAKVRkc%H<M15i0
z7fuHX!+}EoQ1A|g_CRP2Vl)Q{tX>AQpXFA6iNc`B^}%fxdha3AZxo`A5O#!9PZ)NE
zfhTl5q3tO+UYuq}#p>u(y(P+Ck$m?yy0^xB=VRpZVS-6p7`wvA6?|71xI))eaNRhL
zo1y7mqweM~+eON5g+hA`-EFYoeu`W?P?$KvxFrOR;5$O!5jw3HUu>sowKO)IMJ#89
zs#C#m*2y~!G-r!U>j5&o7bm(aoZCWRD-3Ogz8$C2Oyk-bJN6Q`U8HVTFzq$Uc7uYw
ziQe30q4^M*eiS3BE1X*jztj|bD^9PL=IdIPwv}VYDq>p|toj<&dV`X6pL~4}&DtmP
z;kU^2-8d6dIA2u=stNq6O3%#VRdckfD>!Ba+x!5_Y*01tQ#L=RVD6)v-!s4Z7@5AQ
zFfoL%6yw=V6~C0FZ!FO<R&b5CaZ2knjXTtgEmq6B80CHP<pVV1Co-jD<YGC_q!8yU
zpC%|=V^~;ZP*}k$RB&&s;}ja)Eo@=scQJ1~!pI+xFFZldpD>?$j!ds7d6`uSHJw0P
z<XFGSp;n=*t<%;UY-^j?`W{yHE2`Q7CG810?F3DGK_+{S{F_$zQ%&(g)j3h~JWZAP
zL9Oygt+S^#*-Y<nC+)JXcB!a+it3Oz(j#6~$D~q!@IOD?Dem9#Mi~GA002ovPDHLk
FV1fXCqV@m)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..00fb8e4f37ad46acb599269302ba4dd7e8af7d4a
GIT binary patch
literal 1000
zc$@*~0~h>>P)<h;3K|Lk000e1NJLTq000pH000pP1^@s6J8eh$000B8Nkl<ZIE@9t
zZD<>H9KiA4KbQ3`FpwpeF%-8ox4}Sd?FA=@Yt3~igLU+R8wlN&#0OB;^)?tNZn-M@
zLboNIAgEif4g}HJo9u-s=HkN(1(!?*zR_NXFXws_QJSW{`TF_Df9nQ+_c!oIe}J3o
z8~DDT=2}0+<@F6*SWolDTAEY+G%u{BIn+<{WIxUBzQ(Tp0QdHFHuf^e>R&06B*ju9
zbdnTNB7}E^AQ2jgFq;ToBGeM0oCu{vD6S~1l{C3K0~mKUBE4HFl30jip%V-3Sh%{Z
z2x6fb3-wqy5eu~?!CexZSg@B;SW6l5@g|IT3$priin})yaaZWvP_(<kVpj-m2#u~#
z?+9L3sCI;MS25m6V|NU!u1UUoKSp;K()%Vw(h}lG=tM%)62eHBkA(AW!EXy*B-Gl9
z$tXpsm7y4Av7$lp(SsPRN0Hv=8cC>#L!lE2?NAYh!h9$+LWLg+UZ|*q8g6JX9_A>9
z+pxl6^5Nqci%%hIA8I6lupB5lfzX~8!axxOLUTdkF9_aziladWH^|}y+pvQn3c)C5
zun!|Rg!C?GBy)<mspvEnQ9}ruil8Yp<`ng&#!S<oHfQ3_ZN+I0V>d@BH1}gRpFwXt
zkF33>k@!Mf7rMTpT^FwUioh4n)fIK$;P`Boia$u%AHu1RV%I0w;ZKqGUnEmMh4fBp
zB%Tm^ijJp<W`xjF%pXs2-ZQArWSKd!m8v&P*&D_2_G8Z+W`}o-&E6|yX5K`4&uSz!
zVY#a4Rut{3VzH_*f7GB+$ue8r&WY*})#@1K>H(bU6n15rLhTG@?JY8ucahbnHSUy!
z*cCdiqUCBVx(2~ymZrNE-yOzt_fT>7<GP1&%Ez$XGYpo`kt@HCG5HbF+nZ*^Q7k(`
zx1`Z387!8vEI5NSN)O>XV|dO46=w?9nZ_AEjXi!A%eh3}`2?eM4Ox98&5ErNk7!)C
z4I(?oqP?BK9;RXM;mpVcGxijf;xXLftCWgo87Y21!M=iNe~CWw9n#yGX2nYJ+n`R@
z%F?#Ban%}P!5U-EnqanY1g|hn%{oolI*Vgnq-cGLWqn1y@B>ESCi3rQjX%vaOXfXX
z&)rAMe1Ol)$GDW+M<YK)J^vEN&6hc9zRjfh9#5Db^RW2^h5V10=C2sJTgX3|G`Ecm
zzw2B0N#DuW`fjf1d%36|<edH-r}dLe8?SRje}@D5WybVt4C~*r-S~w~12Ou*ZT<%#
WWpP4?WQrgF0000<MNUMnLSTYUy4~IY
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c05f5fef89c726ff425de116c3c4b8ec3815d9c8
GIT binary patch
literal 70
zc%17D@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9<W+ty#AO4@8f#o!l>Noxl
QBcKF>r>mdKI;Vst0IwSl1poj5
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e512d3f9b4f415ccc88e429b62fc5bb169d26e9b
GIT binary patch
literal 83
zc%17D@N?(olHy`uVBq!ia0vp^Od!m`1|*BN@u~nRDNh&25RRG2H}+V5tFPbxw7zYP
g&cy$Wj6DAtgAZ}cpPiv322{o1>FVdQ&MBb@0Q}GvQUCw|
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e4a86425144e210aa639bf0272dcc8112a9faeba
GIT binary patch
literal 2936
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3a6fbe8ee9ca09800ba36d1d15c4f35828964ad5
GIT binary patch
literal 3106
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..72ef7eb636f6b601bc025239ca475cbcdae14113
GIT binary patch
literal 3303
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cb42ec4f87c5e64c6bf02001d33cfc862c1f5eb5
GIT binary patch
literal 107
zc%17D@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~MxHK?AsjOq)fsO5XSi@#>;Kjr
z{QvC^xcz6CGoRsqQ!B%N;i=O98MYXj|6e4p`d?FH!~Y58!o5qp-)#cwX7F_Nb6Mw<
G&;$S;j3bNy
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e6afafd89ac86972d6ba8d67f0333d0e5a69ac72
GIT binary patch
literal 136
zc%17D@N?(olHy`uVBq!ia0vp^EFjFm1|(O0oL2{={5@S9LpWwKx-jhi&v56S^#4<5
zIRA&=*8lH%QuaT?_MHs>mn>uWZ?ui;zsd@R{|vW7_5YuAmi-?TH0QsY+XSErL+<~p
kR2cpn8`u6<S1<g3XN%H?)q4$30*z+yboFyt=akR{00dw(AOHXW
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a844aff76dc218c16737612e40c5c66b522210dc
GIT binary patch
literal 173
zc%17D@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&;W5>FS$5RRFQnGDnZGdz7R{{QfO
zf&cyY1pmk07X5E@P5wW_wY?nwH*aSCU$>e2zwZXo|7sgF|1(_g;QYV2j_ZF-jm&@l
z8uS0E)nWe`E{AgeU*|3Kzskqtzn@>!e<iQl{|qNp1pcp*SNdP35cuC+uIj(6?EL>*
XPnhw})xUfhXg`CetDnm{r-UW|aQ#MO
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..415c2d9c6ac29b9221a446c7acd7f063ba050f25
GIT binary patch
literal 218
zc%17D@N?(olHy`uVBq!ia0vp^Y#_`5A|IT2?*XJ1db&7<aLi<!#*q1+;mupI|L30Z
z{a^5u?|<2I!T(;5#sBNw75UF__aw*v0|y!ZPd>o-KjRSBf2;js{}p#j10`m&{XZ~;
z;s4}GO#jm+iT$^nWb$8OqT_#t`$gRU4`p%wpPC{5KP$`RzfD%`f2H)C{|xt>1pgnf
z68}Hh%H)5hP4s^|yN>?~mec+-T$E$~zg0@~e~*;){{)%T|AsOX|BFj3`Ohihd*NS*
S_En%`89ZJ6T-G@yGywqgoL-9n
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ab2f892747207b8d9c863ede684e0e7770e3c190
GIT binary patch
literal 271
zc$^iFy-LGi7=>SLZDL||(2%B@MHd$ZA&o^G{E4+$f>g0hvt)3v;01`3SVU1T!9^vZ
z1qby492HR#2QfH^I8?+Ay@%uH@SJBjoZ+0VS*vLwD-coIEE*+d?jJtI@}X3IV|q7@
z#SQ+fCnOEj?G7UD2)O+nz)45M7GvQ@#CUrc^!?h0=p}(x*o*xr2`3VuKMg^BRzdBn
zB*GS<84$c6g-Ren_a`yx&$H!W3SlFGrpLjnOR&9Z%z6ck)m>J)JVK`*K}CXRPoY}1
zkhgcBmXAPRa~vKu5tq3M?CHzc)VHDKj*-!P&_`Cpy)5Hg$zxY>u&y*PBVS-dx<jT=
S`@D|hB6~>Yie=m^xd(svzIxvP
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe2ff40a1dc9050bba19630f64de6b51fcc07d95
GIT binary patch
literal 313
zc$@(_0mlA`P)<h;3K|Lk000e1NJLTq000O8000OG1^@s6#1FoU00031Nkl<Z7?lOV
zF;2oz0D$4wCIuQ2O>2q8$;F_w7!%_Szy%&g2Ty=;kVj%1Jb)%H(noah01hrfHBQC@
zIEn4xpsRK$gWllx`^4|x9G^3r=e)#CZgZL!*`Jl!${m(}<`LP4MVbm85`$4<Fi1^g
zYEz#&EWIrvvL}lq7R0eY#|CO*(H<`ljO$eIHxb#jMKUspwMnFlsG&<ouhP)lR4;cC
z*-3%-fkCV+qP~k#HKb}1sssF^V??%BBI%ZxbQ~gCV<4M!cX~9s=TzHQi0_Ru)4*jC
ztf7MzD(oS{Gs5r|zy65$@(a9H9PYezE<DMh*QZq(vf_<#+!y`<w`qzf3=3X#00000
LNkvXXu0mjfY`TID
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..18ab4b25de8d3679ea71d7363236364d17b2a81d
GIT binary patch
literal 368
zc$@)n0gwKPP)<h;3K|Lk000e1NJLTq000R9000RH1^@s6;E@Ip0003uNkl<Z7?lOV
zKT85(0Knl_^M8@2M@vvp68H*2)X)$`peIqZL`w~l9@WqgEe#QO3Pnq_M%@iU_z4>H
zgr?S(h<Y7@pe67~p+3N`=MjIuBYX~GJoV!=`%y0YaSjJDHu?$XeiDrLG=%>VrmF-U
z6~I-3x(Z^dAVn2Mz7M0njUoKUFv=5nUI51v*j|v`c8Eedg=|lvw`LK3BZ6`T9arEw
zL2Nfd#nmV{8Kk>_ez%VB&qF9XK*tW?*dZ)SqiSa`YRgD#i?nrs=<SE-nnQTiFis_j
zU74b4E@GJ5<f_N$l?#Nw7D1Jww2dT=F-^@_!Yu7zlupPMuhEP5i0^!a*KC58oZvP$
z&slDhvOJ<7uaL4yI@>{f>2Y2(od+$?jkd~ZYL9ZN&WhGxCh0MneC8icJ+B_!?wD)<
O0000<MNUMnLSTYh`J7V#
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3a6fbe8ee9ca09800ba36d1d15c4f35828964ad5
GIT binary patch
literal 3106
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
--- a/modules/libpr0n/test/reftest/reftest.list
+++ b/modules/libpr0n/test/reftest/reftest.list
@@ -37,8 +37,12 @@ include apng/reftest.list
 # Icon tests
 include icon/win/reftest.list
 
 # Generic image tests
 include generic/reftest.list
 
 # Color management test
 include color-management/reftest.list
+
+# Lossless encoders
+include encoders-lossless/reftest.list
+