Status: PASS | Duration: 8ms | Subtests: 1/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-paint-api/paint2d-composite.https.html
<!DOCTYPE html> <html class="reftest-wait"> <link rel="help" href="https://drafts.css-houdini.org/css-paint-api/"> <link rel="match" href="paint2d-composite-ref.html"> <meta name="fuzzy" content="maxDifference=0-64;totalPixels=0-1000"> <style> div { display: inline-block; width: 80px; height: 80px; } #source-over { background-image: paint(source-over); } #source-in { background-image: paint(source-in); } #source-out { background-image: paint(source-out); } #source-atop { background-image: paint(source-atop); } #destination-over { background-image: paint(destination-over); } #destination-in { background-image: paint(destination-in); } #destination-out { background-image: paint(destination-out); } #destination-atop { background-image: paint(destination-atop); } #lighter { background-image: paint(lighter); } #xor { background-image: paint(xor); } </style> <script src="/common/reftest-wait.js"></script> <script src="/common/worklet-reftest.js"></script> <body> <div id="source-over"></div> <div id="source-in"></div> <div id="source-out"></div> <div id="source-atop"></div> <br> <div id="destination-over"></div> <div id="destination-in"></div> <div id="destination-out"></div> <div id="destination-atop"></div> <br> <div id="lighter"></div> <div id="xor"></div> <script id="code" type="text/worklet"> var compositeOps = [ 'source-over', 'source-in', 'source-out', 'source-atop', 'destination-over', 'destination-in', 'destination-out', 'destination-atop', 'lighter', 'xor' ]; function doPaint(ctx, op) { ctx.fillStyle = 'red'; ctx.fillRect(5, 5, 40, 40); ctx.globalCompositeOperation = op; ctx.fillStyle = 'deepskyblue'; ctx.beginPath(); ctx.arc(45,45,20,0,Math.PI*2,true); ctx.fill(); } for (var i = 0; i < compositeOps.length; i++) { let op = compositeOps[i]; registerPaint(op, class { paint(ctx, geom) { doPaint(ctx, op); } }); } </script> <script> importWorkletAndTerminateTestAfterAsyncPaint(CSS.paintWorklet, document.getElementById('code').textContent); </script> </body> </html>
/css/css-paint-api/paint2d-composite-ref.html
<!DOCTYPE html> <html> <head> <style> canvas { display: inline-block; } </style> </head> <body> <canvas id="source-over" width="80" height="80"></canvas> <canvas id="source-in" width="80" height="80"></canvas> <canvas id="source-out" width="80" height="80"></canvas> <canvas id="source-atop" width="80" height="80"></canvas> <br> <canvas id="destination-over" width="80" height="80"></canvas> <canvas id="destination-in" width="80" height="80"></canvas> <canvas id="destination-out" width="80" height="80"></canvas> <canvas id="destination-atop" width="80" height="80"></canvas> <br> <canvas id="lighter" width="80" height="80"></canvas> <canvas id="xor" width="80" height="80"></canvas> <script> var compositeOps = [ 'source-over', 'source-in', 'source-out', 'source-atop', 'destination-over', 'destination-in', 'destination-out', 'destination-atop', 'lighter', 'xor' ]; for (var i = 0; i < compositeOps.length; i++) { var op = compositeOps[i]; var ctx = document.getElementById(op).getContext('2d'); ctx.fillStyle = 'red'; ctx.fillRect(5, 5, 40, 40); ctx.globalCompositeOperation = op; ctx.fillStyle = 'deepskyblue'; ctx.beginPath(); ctx.arc(45,45,20,0,Math.PI*2,true); ctx.fill(); } </script> </body> </html>