File: 2d.layer.non-invertible-matrix.html

package info (click to toggle)
firefox 145.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,653,528 kB
  • sloc: cpp: 7,594,999; javascript: 6,459,658; ansic: 3,752,909; python: 1,403,455; xml: 629,809; asm: 438,679; java: 186,421; sh: 67,287; makefile: 19,169; objc: 13,086; perl: 12,982; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (38 lines) | stat: -rw-r--r-- 1,318 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<meta charset="UTF-8">
<link rel="match" href="2d.layer.non-invertible-matrix-expected.html">
<title>Canvas test: 2d.layer.non-invertible-matrix</title>
<h1>2d.layer.non-invertible-matrix</h1>
<p class="desc">Test drawing layers when the transform is not invertible.</p>
<canvas id="canvas" width="200" height="200">
  <p class="fallback">FAIL (fallback content)</p>
</canvas>
<script>
  const canvas = document.getElementById("canvas");
  const ctx = canvas.getContext('2d');

  ctx.fillStyle = 'blue';
  ctx.fillRect(30, 30, 50, 50);

  // Anything below will be non-rasterizable.
  ctx.scale(1, 0);

  // Open the layer with a non-invertible matrix. The whole layer will be
  // non-rasterizable.
  ctx.beginLayer();

  // Because the transform is global, the matrix is still non-invertible.
  ctx.fillStyle = 'rgba(225, 0, 0, 1)';
  ctx.fillRect(40, 70, 50, 50);

  // Set a valid matrix in the middle of the layer. This makes the global
  // matrix invertible again, but because because the layer was opened with a
  // non-invertible matrix, the whole layer remains non-rasterizable.
  ctx.setTransform(1, 0, 0, 1, 0, 0);

  ctx.fillStyle = 'green';
  ctx.fillRect(70, 40, 50, 50);

  ctx.endLayer();
</script>