blob: 3d44950079e0a44fcb312a1fb2af7b30f4831ed7 [file] [log] [blame]
<body>
<style type="text/css">
canvas { border: 1px solid black; }
</style>
Each square canvas should contain a colored gradient bordered by a narrow white margin and a black line.
The column on the left contains linear gradients, the column on the right radial gradients.<br>
<script>
var counter = 1;
function Test(description, gradient) {
// Create canvas elements
var lin = document.createElement('canvas');
lin.setAttribute('id', 'canvas' + counter + 'lin');
lin.setAttribute('height', 100);
lin.setAttribute('width', 100);
var rad = document.createElement('canvas');
rad.setAttribute('id', 'canvas' + counter + 'rad');
rad.setAttribute('height', 100);
rad.setAttribute('width', 100);
document.body.appendChild(lin);
document.body.appendChild(rad);
document.body.appendChild(document.createTextNode(' ' + description));
document.body.appendChild(document.createElement('br'));
// Find canvas contexts
var linctx = lin.getContext('2d')
var radctx = rad.getContext('2d')
// Create linear and radial gradients from array
var lingrad = linctx.createLinearGradient(0, 0, 0, 100);
var radgrad = linctx.createRadialGradient(50, 50, 0, 50, 50, 50);
for (var i = 0; i < gradient.length - 1; i+=2) {
lingrad.addColorStop(gradient[i], gradient[i + 1]);
radgrad.addColorStop(gradient[i], gradient[i + 1]);
}
// Apply them
linctx.fillStyle = lingrad;
linctx.fillRect(5, 5, 90, 90);
radctx.fillStyle = radgrad;
radctx.fillRect(5, 5, 90, 90);
counter++;
}
// Simple gradient
Test('Green to white',
new Array(0, '#0f0',
1, '#fff'));
// Multiple sections
Test('Green to white to red',
new Array( 0, '#0f0',
0.5, '#fff',
1, '#f00'));
// Disjoint gradients (multiple stops at the same offset)
Test('Blue to white in the top (inner) half, red to yellow in the bottom (outer) half',
new Array( 0, '#00f',
0.5, '#fff',
0.5, '#f00',
1, '#ff0'));
// Ignored stops
Test('Blue to white, red to yellow (same as previous)',
new Array(0, '#00f',
0.5, '#fff',
0.5, '#aaa',
0.5, '#abc',
0.5, '#f00',
1, '#ff0'));
// Unsorted stops
Test('Blue to white, red to yellow (same as previous)',
new Array(0.5, '#fff',
0.5, '#aaa',
1, '#ff0',
0.5, '#abc',
0.5, '#f00',
0, '#00f'));
</script>
</body>