""" Extract icons from SVG file. Author: Sergey Vartanov (me@enzet.ru). """ import re import xml.dom.minidom class IconExtractor: def __init__(self, svg_file_name): self.icons = {} input_file = open(svg_file_name) content = xml.dom.minidom.parse(input_file) for element in content.childNodes: if element.nodeName == 'svg': for node in element.childNodes: if node.nodeName in ['g', 'path']: self.parse(node) def parse(self, node): if node.nodeName == 'path': if 'id' in node.attributes.keys() and \ 'd' in node.attributes.keys() and \ node.attributes['id'].value != '': path = node.attributes['d'].value m = re.match('[Mm] ([0-9.e-]*)[, ]([0-9.e-]*)', path) if not m: print 'Error path: ' + path else: x = float(m.group(1)) y = float(m.group(2)) x = int(x / 16) y = int(y / 16) self.icons[node.attributes['id'].value] = \ (node.attributes['d'].value, x, y) else: for subnode in node.childNodes: self.parse(subnode) def get_path(self, id): if id in self.icons: return self.icons[id] else: return None, 0, 0