5f8af496854da32f86842bb69f72aef01bc74ece
[senf.git] / satscons / Dia2Png.py
1 """Dia2Png SCons Builder: Build a PNG file given a DIA file.
2
3 Support the specification of a scalefactor in the DIA2PNGDPI Environment variable.
4
5 """
6
7 import os
8 import SCons.Builder
9
10 def dia_getSize(env,source):
11     size = None
12     for line in popen(env['DIACOM']+" -e /proc/self/fd/1 -t eps "+source[0],"r"):
13         if line.startswith("%%BoundingBox:"):
14             size=map(int,line.split()[4:])
15     return size
16
17 def dia2png_generator(source, target, env, for_signature):
18     if for_signature:
19         return "$DIACOM -t png -s $DIA2PNGDPI $TARGET $SOURCE"
20     size = dia_getSize(env,source)
21     if not size: return None;
22     size[0] = size[0]*72/int(env['DIA2PNGDPI'])
23     size[1] = size[1]*72/int(env['$DIA2PNGDPI'])
24     return env.Action("$DIACOM -t png -s %dx%d $TARGET $SOURCE" % size)
25
26 Dia2Png = SCons.Builder.Builder(suffix = ".png",
27                                 src_suffix = ".dia",
28                                 generator = dia2png_generator,
29                                 single_source = 1)
30
31 def generate(env):
32     env['BUILDERS']['Dia2Png'] = Dia2Png
33     env['DIACOM'] = "dia"
34     env['DIA2PNGDPI'] = 115
35
36 def exists(env):
37     return 1