| <!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"> | |
| <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> | |