blob: 85a39240d0fa0981c01074634d70205649df1049 [file] [log] [blame]
<!DOCTYPE html>
<style>
.group {
width: 400px;
}
</style>
<body></body>
<script>
function createSvgElement(name, attributes) {
var element = document.createElementNS('http://www.w3.org/2000/svg', name);
for (var attrName in attributes)
element.setAttribute(attrName, attributes[attrName]);
return element;
}
const blendModes = [
"normal",
"multiply",
"screen",
"darken",
"lighten",
"overlay",
"color-dodge",
"color-burn",
"hard-light",
"soft-light",
"difference",
"exclusion",
"hue",
"saturation",
"color",
"luminosity"
];
[
{a: 'rgb(255,0,0)', b: 'rgb(0,255,0)' },
{a: 'rgb(51,64,204)', b: 'rgb(153,192,102)' },
{a: 'rgba(51,64,204,0.5)', b: 'rgba(153,192,102,0.5)' },
].forEach(function(colors, groupNr) {
var group = document.createElement('div');
group.className = 'group';
document.body.appendChild(group);
blendModes.forEach(function(mode) {
var filterId = 'f_' + mode + groupNr;
var filter = createSvgElement('filter', { id: filterId, x: 0, y: 0, width: 1, height: 1 });
filter.appendChild(createSvgElement('feFlood', { result: 'a', 'flood-color': colors.a }));
filter.appendChild(createSvgElement('feFlood', { result: 'b', 'flood-color': colors.b }));
filter.appendChild(createSvgElement('feBlend', { in: 'a', in2: 'b', mode: mode }));
var svgRoot = createSvgElement('svg', { width: '50', height: '50' });
var rect = createSvgElement('rect', { width: 50, height: 50, filter: 'url(#' + filterId + ')' });
svgRoot.appendChild(filter);
svgRoot.appendChild(rect);
group.appendChild(svgRoot);
});
});
</script>