blob: 3fd56a57231fe3b83b376129617761af3add82f2 [file] [log] [blame]
<!DOCTYPE html>
<head>
<style>
div.container {
display: inline-block;
margin-right: 20px;
margin-bottom: 10px;
width: 100px;
vertical-align: top;
}
div.horizontal {
width: 102px;
height: 52px;
}
div.vertical {
width: 52px;
height: 102px;
}
canvas {
border: 1px solid black;
width: 100px;
height: 50px;
}
</style>
</head>
<script id="vertexShaderSource" type="text/glsl">
attribute vec4 a_position;
varying vec2 v_texturePosition;
void main() {
v_texturePosition = vec2((a_position.x + 1.0) / 2.0, (a_position.y + 1.0) / 2.0);
gl_Position = a_position;
}
</script>
<script id="fragmentShaderSource" type="text/glsl">
precision mediump float;
varying vec2 v_texturePosition;
uniform sampler2D texture;
void main() {
gl_FragColor = texture2D(texture, v_texturePosition);
}
</script>
<script src="resources/webgl-draw-image.js"></script>
<body>
<b>WebGLRenderingContext.texImage2D() should rotate the images respecting their EXIF orientation.</b>
<br>
<br>
<div class ="container">
<div class ="horizontal">
<canvas class="horizontal" id="canvas2" style="transform: scaleX(-1);"></canvas>
</div>
<br>Flipped horizontally
</div>
<div class ="container">
<div class ="horizontal">
<canvas class="horizontal" id="canvas3" style="transform: rotate(180deg);"></canvas>
</div>
<br>Rotated 180&deg;
</div>
<div class ="container">
<div class ="horizontal">
<canvas class="horizontal" id="canvas4" style="transform: scaleX(-1) rotate(180deg);"></canvas>
</div>
<br>Flipped vertically
</div>
<br>
<div class ="container">
<div class ="vertical">
<canvas class="vertical" id="canvas5" style="transform: translate(-25px, 25px) rotate(90deg) scaleY(-1);"></canvas>
</div>
<br>Rotated 90&deg; CCW and flipped vertically
</div>
<div class ="container">
<div class ="vertical">
<canvas class="vertical" id="canvas6" style="transform: translate(-25px, 25px) rotate(90deg);"></canvas>
</div>
<br>Rotated 90&deg; CCW
</div>
<div class ="container">
<div class ="vertical">
<canvas class="vertical" id="canvas7" style="transform: translate(-25px, 25px) rotate(270deg) scaleY(-1);"></canvas>
</div>
<br>Rotated 90&deg; CW and flipped vertically
</div>
<div class ="container">
<div class ="vertical">
<canvas class="vertical" id="canvas8" style="transform: translate(-25px, 25px) rotate(270deg);"></canvas>
</div>
<br>Rotated 90&deg; CW
</div>
<br>
<script>
if (window.testRunner)
window.testRunner.waitUntilDone();
window.onload = function() {
document.querySelectorAll("canvas").forEach(canvas => {
canvas.width = 100 * window.devicePixelRatio;
canvas.height = 50 * window.devicePixelRatio;
});
var image = new Image;
image.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='50'><image href='data:image/jpeg;base64,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' width='100' height='50'/></svg>";
image.decode().then(() => {
setTimeout(function() {
document.querySelectorAll("canvas").forEach(canvas => {
canvas.width = image.width * window.devicePixelRatio;
canvas.height = image.height * window.devicePixelRatio;
webglDrawImage(canvas, image);
});
if (window.testRunner)
window.testRunner.notifyDone();
}, 100);
});
}
</script>
</body>