diff --git a/helper.py b/helper.py index e4c1dfeb..61e3877d 100755 --- a/helper.py +++ b/helper.py @@ -265,8 +265,15 @@ def panel_to_components(tree): "inkscape": "http://www.inkscape.org/namespaces/inkscape", } - # Get components layer root = tree.getroot() + # Get SVG scale + root_width = root.get('width') + svg_dpi = 75 + scale = 1 + if re.match('\d+px', root_width): + scale = 25.4 / svg_dpi + + # Get components layer group = root.find(".//svg:g[@inkscape:label='components']", ns) # Illustrator uses `id` for the group name. # Don't test with `not group` since Elements with no subelements are falsy. @@ -296,10 +303,10 @@ def panel_to_components(tree): # Get position if el.tag == '{' + ns['svg'] + '}rect': - x = float(el.get('x')) - y = float(el.get('y')) - width = float(el.get('width')) - height = float(el.get('height')) + x = float(el.get('x')) * scale + y = float(el.get('y')) * scale + width = float(el.get('width')) * scale + height = float(el.get('height')) * scale c['x'] = round(x, 3) c['y'] = round(y, 3) c['width'] = round(width, 3) @@ -307,8 +314,8 @@ def panel_to_components(tree): c['cx'] = round(x + width / 2, 3) c['cy'] = round(y + height / 2, 3) elif el.tag == '{' + ns['svg'] + '}circle' or el.tag == '{' + ns['svg'] + '}ellipse': - cx = float(el.get('cx')) - cy = float(el.get('cy')) + cx = float(el.get('cx')) * scale + cy = float(el.get('cy')) * scale c['cx'] = round(cx, 3) c['cy'] = round(cy, 3) else: