58 lines
1.8 KiB
HTML
58 lines
1.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
description("Test that we can render a CMYK JPEG without color corruption.");
|
|
|
|
// This is an async test because it has to wait for WebKit to load an image.
|
|
jsTestIsAsync = true;
|
|
|
|
// The colors used for verifying the test results.
|
|
var red = 0, green = 0, blue = 0, alpha = 0;
|
|
|
|
// Create a canvas element. This element is used for pasting a CMYK JPEG and
|
|
// reading its pixels.
|
|
var canvas = document.createElement("canvas");
|
|
canvas.width = 64;
|
|
canvas.height = 64;
|
|
|
|
// Create an image object and load a CMYK JPEG.
|
|
var image = new Image();
|
|
image.onload = function() {
|
|
// Paste the loaded JPEG ('resources/cmyk-jpeg.jpg') to the canvas.
|
|
var context = canvas.getContext("2d");
|
|
context.drawImage(image, 0, 0);
|
|
|
|
// Read the pixels in the canvas and calculate their avarage values.
|
|
// (DumpRenderTree always allows to read them.)
|
|
var data = context.getImageData(0, 0, canvas.width, canvas.height);
|
|
var pixels = canvas.width * canvas.height;
|
|
for (var i = 0; i < pixels * 4; i += 4) {
|
|
red += data.data[i + 0];
|
|
green += data.data[i + 1];
|
|
blue += data.data[i + 2];
|
|
alpha += data.data[i + 3];
|
|
}
|
|
red /= pixels;
|
|
green /= pixels;
|
|
blue /= pixels;
|
|
alpha /= pixels;
|
|
|
|
// Even though the output colors depend on color-profiles (i.e. they depend
|
|
// on devices), green must be the most prominent color because the source
|
|
// image only consists of green. So, we test it.
|
|
shouldBeTrue("green > red");
|
|
shouldBeTrue("green > blue");
|
|
|
|
// Notify this test has been finished.
|
|
finishJSTest();
|
|
}
|
|
image.src = "resources/cmyk-jpeg.jpg";
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|