diff options
Diffstat (limited to 'third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js')
-rw-r--r-- | third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js b/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js new file mode 100644 index 0000000..e6a45ed --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-clip-rule.js @@ -0,0 +1,69 @@ +description("Series of tests to ensure correct results of the winding rule."); + + +var tmpimg = document.createElement('canvas'); +tmpimg.width = 200; +tmpimg.height = 200; +ctx = tmpimg.getContext('2d'); + +// Create the image for blending test with images. +var img = document.createElement('canvas'); +img.width = 100; +img.height = 100; +var imgCtx = img.getContext('2d'); + +function pixelDataAtPoint() +{ + return ctx.getImageData(50, 50, 1, 1).data; +} + +function checkResult(expectedColors, sigma) { + for (var i = 0; i < 4; i++) + shouldBeCloseTo("pixelDataAtPoint()[" + i + "]", expectedColors[i], sigma); +} + +// Execute test. +function prepareTestScenario() { + debug('Testing default clip'); + ctx.fillStyle = 'rgb(255,0,0)'; + ctx.fillRect(0, 0, 100, 100); + ctx.fillStyle = 'rgb(0,255,0)'; + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + ctx.clip(); + ctx.beginPath(); + ctx.fillRect(0, 0, 100, 100); + checkResult([0, 255, 0, 255], 5); + debug(''); + + debug('Testing nonzero clip'); + ctx.fillStyle = 'rgb(255,0,0)'; + ctx.fillRect(0, 0, 100, 100); + ctx.fillStyle = 'rgb(0,255,0)'; + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + ctx.clip('nonzero'); + ctx.beginPath(); + ctx.fillRect(0, 0, 100, 100); + checkResult([0, 255, 0, 255], 5); + debug(''); + + debug('Testing evenodd clip'); + ctx.fillStyle = 'rgb(255,0,0)'; + ctx.fillRect(0, 0, 100, 100); + ctx.fillStyle = 'rgb(0,255,0)'; + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + ctx.clip('evenodd'); + ctx.beginPath(); + ctx.fillRect(0, 0, 100, 100); + checkResult([255, 0, 0, 255], 5); + debug(''); + +} + +// Run test and allow variation of results. +prepareTestScenario(); |