Only use one sending socket; auto-determine ports
[tennix.git] / doc / graphics-buildsystem / render-bitmaps.py
blobe30adbe9869748dd1324e6c1e5981c11a9e50aae
1 #!/usr/bin/env python
3 import glob, os, sys, dircache, xml.dom.minidom
4 import new
6 INKSCAPE = "/usr/bin/inkscape"
7 SRC = "./svg"
9 # getText() by Mark Pilgrim
10 def getText(self):
11 def isTextNode(node):
12 return isinstance(node, xml.dom.minidom.Text)
13 def getData(node):
14 return node.data
15 try:
16 return "".join(map(getData, filter(isTextNode, self.childNodes)))
17 except:
18 return ""
20 def render(file):
21 print "\t%s" % (file)
22 svg = xml.dom.minidom.parse(SRC + "/" + file)
23 for icon in svg.getElementsByTagName("g"):
24 if icon.getAttribute("inkscape:label").find("plate") == -1:
25 continue
26 for in_node in icon.getElementsByTagName("text"):
27 if in_node.getAttribute("inkscape:label") == "icon-name":
28 icon_name = getText(in_node.getElementsByTagName("tspan")[0])
29 if in_node.getAttribute("inkscape:label") == "context":
30 context = getText(in_node.getElementsByTagName("tspan")[0])
31 print "\t\t%s/%s" % (context, icon_name)
32 for box in icon.getElementsByTagName("rect"):
33 bid = box.getAttribute("id")
34 size = "%sx%s" % (box.getAttribute("width"),
35 box.getAttribute("height"))
36 src = "%s/%s" % (SRC, file)
37 dest = "%s/%s.png" % (context, icon_name)
38 cmd = INKSCAPE + " -i " + bid + " -e " + dest + " " + src + " > /dev/null 2>&1"
39 if not os.path.isdir(context):
40 os.makedirs(context)
41 #print "\t\t\t%s/%s" % (context, icon_name)
42 os.system(cmd)
43 return
45 if len(sys.argv) < 2:
46 print "Rendering from SVGs in %s" % (SRC)
47 for file in dircache.listdir(SRC):
48 if file.endswith(".svg"):
49 render(file)
50 else:
51 for svgname in sys.argv[1:]:
52 file = svgname + ".svg"
53 if os.path.isfile(SRC + "/" + file):
54 render(file)
55 else:
56 print "Error: No such file: %s" % (file)