summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/canvas/element/manual/filters/tentative/idl-conversions/canvas-filter-boolean-conversion.html
blob: 97ade79f3794e50940598a5f6a56e57a9be5d6c2 (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
<head>
    <link rel="match" href="canvas-filter-boolean-conversion-expected.html">
</head>
<body>
  <canvas id="canvas" width="300" height="300"></canvas>
</body>
<script>
  // Test the built-in ECMAScript types Undefined, Null, Boolean, String, Number, and Object
  // as input to the CanvasFilter resolver when a bool is the intended result.
  var ctx = document.getElementById('canvas').getContext('2d');

  // preserveAlpha for convolveMatrix is the only boolean so far implemented
  function drawWithConvolveFilter(x, y, preserveAlphaValue) {
    ctx.filter = new CanvasFilter({
      name: "convolveMatrix",
      kernelMatrix: [[1, 0], [0, 1]],
      preserveAlpha: preserveAlphaValue,
    });
    ctx.fillRect(x, y, 30, 30);
  }

  const trueTestCases = [
    true,
    { valueOf() { return false; }},
    "foo",
    1,
    {},
    []
  ];

  const falseTestCases = [
    false,
    "",
    0,
    null,
    undefined,
  ];

  ctx.fillStyle = "rgba(255,0,255,0.5)";
  let x = 10;
  let y = 10;
  for (tc of trueTestCases) {
    drawWithConvolveFilter(x, y, tc);
    x += 40;
  }
  y = 50;
  x = 10;
  for (tc of falseTestCases) {
    drawWithConvolveFilter(x, y, tc);
    x += 40;
  }

  ctx.filter = new CanvasFilter({
    name: "componentTransfer",
    funcR: {type: "discrete", tableValues: 0.5},
  });
  ctx.fillRect(10, 10, 100, 100);
</script>