| <!DOCTYPE html><!-- webkit-test-runner [ CSSGradientPremultipliedAlphaInterpolationEnabled=false ] --> |
| <html> |
| <head> |
| <style> |
| div { |
| width: 100px; |
| height: 100px; |
| border: dashed black 1px; |
| display: inline-block; |
| } |
| |
| :root { |
| --transparent-1: rgba(0, 0, 255, 0); |
| --transparent-2: rgba(255, 0, 0, 0); |
| --transparent-3: rgba(0, 255, 0, 0); |
| --transparent-4: rgba(255, 255, 0, 0); |
| |
| --opaque-1: rgba(0, 0, 255, 1); |
| --opaque-2: rgba(255, 0, 0, 1); |
| --opaque-3: rgba(0, 255, 0, 1); |
| --opaque-4: rgba(255, 255, 0, 1); |
| |
| --partial-1: rgba(0, 0, 255, 0.5); |
| --partial-2: rgba(255, 0, 0, 0.5); |
| --partial-3: rgba(0, 255, 0, 0.5); |
| --partial-4: rgba(255, 255, 0, 0.5); |
| } |
| |
| /* NOTE: If we ever want to remove the option to disable alpha premultiplied gradients, and alternative way |
| to test this would be using either Canvas or SVG, which both use unpremultiplied interpolation. */ |
| |
| #opaque-opaque { |
| /* No transform */ |
| background-image: linear-gradient(var(--opaque-1), var(--opaque-2)); |
| } |
| |
| #partial-partial { |
| /* No transform */ |
| background-image: linear-gradient(var(--partial-1), var(--partial-2)); |
| } |
| |
| #transparent-transparent { |
| /* No transform */ |
| background-image: linear-gradient(var(--transparent-1), var(--transparent-2)); |
| } |
| |
| #transparent-opaque { |
| /* Steal next */ |
| background-image: linear-gradient(var(--transparent-2), var(--opaque-2)); |
| } |
| |
| #transparent-partial { |
| /* Steal next */ |
| background-image: linear-gradient(var(--transparent-2), var(--partial-2)); |
| } |
| |
| #opaque-transparent { |
| /* Steal previous */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1)); |
| } |
| |
| #partial-transparent { |
| /* Steal previous */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1)); |
| } |
| |
| #opaque-transparent-opaque { |
| /* Split */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1) 50%, var(--transparent-3) 50%, var(--opaque-3)); |
| } |
| |
| #opaque-transparent-partial { |
| /* Split */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1) 50%, var(--transparent-3) 50%, var(--partial-3)); |
| } |
| |
| #partial-transparent-partial { |
| /* Split */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1) 50%, var(--transparent-3) 50%, var(--partial-3)); |
| } |
| |
| #partial-transparent-opaque { |
| /* Split */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1) 50%, var(--transparent-3) 50%, var(--opaque-3)); |
| } |
| |
| #opaque-transparent-transparent-opaque { |
| /* Steal previous, steal next */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1), var(--transparent-4), var(--opaque-4)); |
| } |
| |
| #opaque-transparent-transparent-partial { |
| /* Steal previous, steal next */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1), var(--transparent-4), var(--partial-4)); |
| } |
| |
| #partial-transparent-transparent-partial { |
| /* Steal previous, steal next */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1), var(--transparent-4), var(--partial-4)); |
| } |
| |
| #partial-transparent-transparent-opaque { |
| /* Steal previous, nothing, steal next */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1), var(--transparent-4), var(--opaque-4)); |
| } |
| |
| #opaque-transparent-transparent-transparent-opaque { |
| /* Steal previous, nothing, steal next */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1), var(--transparent-3), var(--transparent-2), var(--opaque-2)); |
| } |
| |
| #opaque-transparent-transparent-transparent-partial { |
| /* Steal previous, nothing, steal next */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1), var(--transparent-3), var(--transparent-2), var(--partial-2)); |
| } |
| |
| #partial-transparent-transparent-transparent-partial { |
| /* Steal previous, nothing, steal next */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1), var(--transparent-3), var(--transparent-2), var(--partial-2)); |
| } |
| |
| #partial-transparent-transparent-transparent-opaque { |
| /* Steal previous, nothing, steal next */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1), var(--transparent-3), var(--transparent-2), var(--opaque-2)); |
| } |
| |
| #opaque-transparent-transparent { |
| /* Steal previous, nothing */ |
| background-image: linear-gradient(var(--opaque-1), var(--transparent-1), var(--transparent-3)); |
| } |
| |
| #partial-transparent-transparent { |
| /* Steal previous, nothing */ |
| background-image: linear-gradient(var(--partial-1), var(--transparent-1), var(--transparent-3)); |
| } |
| |
| #transparent-transparent-opaque { |
| /* Nothing, steal next */ |
| background-image: linear-gradient(var(--transparent-1), var(--transparent-3), var(--opaque-3)); |
| } |
| |
| #transparent-transparent-partial { |
| /* Nothing, steal next */ |
| background-image: linear-gradient(var(--transparent-1), var(--transparent-3), var(--partial-3)); |
| } |
| |
| #transparent-transparent-transparent { |
| /* No transform */ |
| background-image: linear-gradient(var(--transparent-1), var(--transparent-2), var(--transparent-3)); |
| } |
| |
| #transparent-opaque-transparent { |
| /* Steal next, steal previous */ |
| background-image: linear-gradient(var(--transparent-2), var(--opaque-2), var(--transparent-2)); |
| } |
| |
| #transparent-partial-transparent { |
| /* Steal next, steal previous */ |
| background-image: linear-gradient(var(--transparent-2), var(--partial-2), var(--transparent-2)); |
| } |
| |
| </style> |
| </head> |
| <body> |
| <div id="opaque-opaque"></div> |
| <div id="partial-partial"></div> |
| <div id="transparent-transparent"></div> |
| <div id="transparent-opaque"></div> |
| <div id="transparent-partial"></div> |
| <div id="opaque-transparent"></div> |
| <div id="partial-transparent"></div> |
| <div id="opaque-transparent-opaque"></div> |
| <div id="opaque-transparent-partial"></div> |
| <div id="partial-transparent-partial"></div> |
| <div id="partial-transparent-opaque"></div> |
| <div id="opaque-transparent-transparent-opaque"></div> |
| <div id="opaque-transparent-transparent-partial"></div> |
| <div id="partial-transparent-transparent-partial"></div> |
| <div id="partial-transparent-transparent-opaque"></div> |
| <div id="opaque-transparent-transparent-transparent-opaque"></div> |
| <div id="opaque-transparent-transparent-transparent-partial"></div> |
| <div id="partial-transparent-transparent-transparent-partial"></div> |
| <div id="partial-transparent-transparent-transparent-opaque"></div> |
| <div id="opaque-transparent-transparent"></div> |
| <div id="partial-transparent-transparent"></div> |
| <div id="transparent-transparent-opaque"></div> |
| <div id="transparent-transparent-partial"></div> |
| <div id="transparent-transparent-transparent"></div> |
| <div id="transparent-opaque-transparent"></div> |
| <div id="transparent-partial-transparent"></div> |
| </body> |
| </html> |