From 597481905bc88b911960d7906d9ee73caeafd56e Mon Sep 17 00:00:00 2001 From: Teja Date: Wed, 27 Jan 2016 17:53:41 +0100 Subject: [PATCH] bugfix. images in groups with transform attributes are transformed correct now. --- .../svgtogcode/static/js/matrix_oven.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js b/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js index 05b4ffb7..dce7235a 100644 --- a/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js +++ b/src/octoprint/plugins/svgtogcode/static/js/matrix_oven.js @@ -53,6 +53,7 @@ Snap.plugin(function (Snap, Element, Paper, global) { elem.type !== "line" && elem.type !== "polygon" && elem.type !== "polyline" && + elem.type !== "image" && elem.type !== "path"){ // if(elem.type !== 'g' && elem.type !== 'desc' && elem.type !== 'defs') @@ -60,6 +61,32 @@ Snap.plugin(function (Snap, Element, Paper, global) { return; } + if (elem.type == 'image'){ + // TODO ... + var x = parseFloat(elem.attr('x')), + y = parseFloat(elem.attr('y')), + w = parseFloat(elem.attr('width')), + h = parseFloat(elem.attr('height')); + + // Validity checks from http://www.w3.org/TR/SVG/shapes.html#RectElement: + // If 'x' and 'y' are not specified, then set both to 0. // CorelDraw is creating that sometimes + if (!isFinite(x)) + console.log('No attribute "x" in image tag. Assuming 0.') + x = 0; + if (!isFinite(y)) + console.log('No attribute "y" in image tag. Assuming 0.') + y = 0; + var transform = elem.transform(); + var matrix = transform['totalMatrix']; + var transformedX = matrix.x(x, y); + var transformedY = matrix.y(x, y); + var transformedW = matrix.x(x+w, y+h) - transformedX; + var transformedH = matrix.y(x+w, y+h) - transformedY; + + elem.attr({x: transformedX, y: transformedY, width: transformedW, height: transformedH}); + return; + } + //if(elem.type !== 'path') console.log("bake: converting " + elem.type + " to path"); var path_elem = elem.convertToPath();