summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/canvas/element/wide-gamut-canvas/2d.color.space.p3.fillText.html
blob: 9c3d1b337477aa2029082580687833afee1e4118 (plain)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
<title>Canvas test: 2d.color.space.p3.fillText</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/html/canvas/resources/canvas-tests.js"></script>
<link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css">
<body class="show_output">

<h1>2d.color.space.p3.fillText</h1>
<p class="desc">Test if fillText can be used with a solid display-p3 color</p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>

<ul id="d"></ul>
<script>
var t = async_test("Test if fillText can be used with a solid display-p3 color");
_addTest(function(canvas, ctx) {

  deferTest();

  const fullRedInP3 = [255, 0, 0, 255];
  const sRGBRedInP3 = [234, 51, 35, 255];

  canvas.width = 100;
  canvas.height = 100;

  let f = new FontFace("Ahem", "url(/fonts/Ahem.ttf)");
  document.fonts.add(f);
  f.load().then(function() {
      t.step(function() {
          ctx.font = "40px Ahem";

          ctx.fillStyle = "#f00";
          ctx.fillText("A", 0, 50);

          ctx.fillStyle = "black";
          ctx.fillStyle = "color(display-p3 100% 0 0)";
          ctx.fillText("A", 50, 50);

          let pixels = ctx.getImageData(0, 0, canvas.width, canvas.height, { colorSpace: "display-p3" }).data;
          let pixelAt = function(x, y) {
              let offset = (y * canvas.width + x) * 4;
              return [pixels[offset], pixels[offset + 1], pixels[offset + 2], pixels[offset + 3]];
          };

          assert_array_equals(pixelAt(25, 25), sRGBRedInP3);
          assert_array_equals(pixelAt(75, 25), fullRedInP3);

          t.done();
      });
  });

}, {colorSpace: "display-p3"});
</script>