import QtQuick 2.0 CanvasTestCase { id:testCase name: "svgpath" function init_data() { return testData("2d"); } function test_svgpath(row) { var canvas = createCanvasObject(row); var ctx = canvas.getContext('2d'); var svgs = [ // Absolute coordinates, explicit commands. "M50 0 V50 H0 Q0 25 25 25 T50 0 C25 0 50 50 25 50 S25 0 0 0 Z", // Absolute coordinates, implicit commands. "M50 0 50 50 0 50 Q0 25 25 25 Q50 25 50 0 C25 0 50 50 25 50 C0 50 25 0 0 0 Z", // Relative coordinates, explicit commands. "m50 0 v50 h-50 q0 -25 25 -25 t25 -25 c-25 0 0 50 -25 50 s0 -50 -25 -50 z", // Relative coordinates, implicit commands. "m50 0 0 50 -50 0 q0 -25 25 -25 25 0 25 -25 c-25 0 0 50 -25 50 -25 0 0 -50 -25 -50 z", // Absolute coordinates, explicit commands, minimal whitespace. "m50 0v50h-50q0-25 25-25t25-25c-25 0 0 50-25 50s0-50-25-50z", // Absolute coordinates, explicit commands, extra whitespace. " M 50 0 V 50 H 0 Q 0 25 25 25 T 50 0 C 25 0 50 50 25 50 S 25 0 0 0 Z" ]; var blues = [ -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,-1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0,-1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, -1, 0, 0, 0, 1, 1, 1, 0, 0, 0 ]; ctx.fillRule = Qt.OddEvenFill; for (var i = 0; i < svgs.length; i++) { ctx.fillStyle = "blue"; ctx.fillRect(0, 0, 50, 50); ctx.fillStyle = "red"; ctx.path = svgs[i]; ctx.fill(); var x, y; for (x=0; x < 10; x++) { for (y=0; y < 10; y++) { if (blues[y*10 +x] == -1) continue; //edge point, different render target may have different value if (blues[y * 10 + x]) { comparePixel(ctx, x * 5, y * 5, 0, 0, 255, 255); } else { comparePixel(ctx, x * 5, y * 5, 255, 0, 0, 255); } } } } } }