| Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-pattern-no-repeat-with-transformations.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-pattern-no-repeat-with-transformations.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-pattern-no-repeat-with-transformations.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..12575ed80c9f3d33b0d94d1839eacf8898231e31
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-pattern-no-repeat-with-transformations.html
|
| @@ -0,0 +1,64 @@
|
| +<canvas id="canvas" width="270" height="420"></canvas>
|
| +<canvas id="pattern" width="20" height="20"></canvas>
|
| +<script type="text/javascript">
|
| +if (window.testRunner)
|
| + testRunner.dumpAsTextWithPixelResults();
|
| +
|
| +var canvas = document.getElementById("canvas");
|
| +var ctx = canvas.getContext("2d");
|
| +ctx.strokeRect(0, 0, canvas.width, canvas.height);
|
| +
|
| +var pCanvas = document.getElementById("pattern");
|
| +var pctx = pCanvas.getContext("2d");
|
| +pctx.fillStyle = "red";
|
| +pctx.fillRect(0, 0, 20, 20);
|
| +pctx.fillStyle = "green";
|
| +pctx.fillRect(1, 1, 18, 18);
|
| +var pattern = pctx.createPattern(pCanvas, 'no-repeat');
|
| +ctx.fillStyle = pattern;
|
| +ctx.strokeStyle = "blue";
|
| +
|
| +function test(testPosX, testPosY, transformCallback)
|
| +{
|
| + ctx.save();
|
| + ctx.beginPath();
|
| + ctx.translate(testPosX, testPosY);
|
| + ctx.rect(0, 0, 100, 100);
|
| + // After transformCallback, no-repeat pattern should follow the new
|
| + // position; but rect will stay at wherever it was.
|
| + transformCallback();
|
| + ctx.fill(); // See the pattern
|
| + ctx.stroke(); // See the rect
|
| + ctx.restore();
|
| +}
|
| +
|
| +function rotateCallback() { ctx.rotate(Math.PI / 180 * 25); }
|
| +function translateCallback() { ctx.translate(50, 50); }
|
| +function scaleCallback() { ctx.scale(2, 2); }
|
| +function transformCallback() { ctx.transform(1, 1, 0, 1, 0, 0); }
|
| +function resetTransformCallback() { ctx.resetTransform() }
|
| +function multipleTransformCallback()
|
| +{
|
| + ctx.translate(20, 20);
|
| + ctx.rotate(Math.PI / 180 * 10);
|
| +}
|
| +
|
| +// Rotate the canvas by 90 degrees
|
| +// This is to test whether after save(), restore(), the canvas can return to
|
| +// this 90-degree-rotated state instead of its very initial state
|
| +ctx.translate(canvas.width/2, canvas.height/2);
|
| +ctx.rotate(Math.PI/2);
|
| +ctx.translate(-canvas.height/2, -canvas.width/2);
|
| +
|
| +// Since the canvas is rotated 90 degrees, these three rectangles will appear
|
| +// on right side, from top to bottom.
|
| +test(10, 10, scaleCallback);
|
| +test(160, 10, rotateCallback);
|
| +test(310, 10, translateCallback);
|
| +
|
| +// These three rectangles will appear on left side, from top to bottom.
|
| +test(10, 160, resetTransformCallback);
|
| +test(160, 160, transformCallback);
|
| +test(310, 160, multipleTransformCallback);
|
| +
|
| +</script>
|
|
|