blob: 945dbe5a76a7245ecb3dff0b1f42eb3992f0b257 [file] [log] [blame]
<!--
Tests that image-rendering behavior for WebGL canvas element is the same as
for an image with the same contents.
Left (canvas element) should be the same as right (image element).
-->
<body>
<style type=text/css>
canvas {
width: 64px;
height: 64px;
display: inline-block;
}
img {
width: 64px;
height: 64px;
display: inline-block;
}
.pixelated canvas, .pixelated img {
image-rendering: pixelated;
}
.crisp-edges canvas, .crisp-edges img {
image-rendering: crisp-edges;
}
</style>
<div class="pixelated">
<canvas width="2" height="2""></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="to-be-pixelated">
<canvas width="2" height="2""></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="pixelated delayed">
<canvas width="2" height="2""></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="crisp-edges">
<canvas width="2" height="2"></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="to-be-crisp-edges">
<canvas width="2" height="2"></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="crisp-edges delayed">
<canvas width="2" height="2"></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div>
<canvas width="2" height="2"></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="to-be-cleared pixelated">
<canvas width="2" height="2"></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<div class="to-be-cleared crisp-edges">
<canvas width="2" height="2"></canvas>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAAqADAAQAAAABAAAAAgAAAADtGLyqAAAADklEQVQIHWNg+A+EyAAAHfQB/5BEIGEAAAAASUVORK5CYII=">
</div>
<script>
if (window.testRunner) {
window.testRunner.dumpAsText(true);
window.testRunner.waitUntilDone();
}
function clear(e) {
const gl = e.getContext('webgl');
gl.clearColor(0, 1, 0, 1);
gl.enable(gl.SCISSOR_TEST);
gl.scissor(0, 1, 1, 1);
gl.clear(gl.COLOR_BUFFER_BIT);
}
[...document.querySelectorAll('canvas')].forEach((e) => {
if (e.parentNode.className.includes("delayed"))
return;
clear(e);
});
[...document.querySelectorAll('.to-be-cleared')].forEach((e) => {
e.className = ""
});
window.requestAnimationFrame(() => {
[...document.querySelectorAll('.to-be-pixelated')].forEach((e) => {
e.className = "pixelated"
});
[...document.querySelectorAll('.to-be-crisp-edges')].forEach((e) => {
e.className = "crisp-edges"
});
[...document.querySelectorAll('div.delayed > canvas')].forEach((e) => {
clear(e);
});
if (window.testRunner)
window.testRunner.notifyDone();
});
</script>
</body>