Layout fixes (again IE .. :-( )
[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 os.popen(env['DIACOM']+" -e /proc/self/fd/1 -t eps "+str(source[0]),"r"):
13         if line.startswith("%%BoundingBox:"):
14             size=map(int,line.split()[3:])
15             break
16     return size
17
18 def dia2png_generator(source, target, env, for_signature):
19     if for_signature:
20         return "$DIACOM -t png -s $DIA2PNGDPI $TARGET $SOURCE"
21     size = dia_getSize(env,source)
22     if not size: return None;
23     size[0] = size[0]*int(env['DIA2PNGDPI'])/72
24     size[1] = size[1]*int(env['DIA2PNGDPI'])/72
25     return env.Action("$DIACOM -t png -s %dx%d -e $TARGET $SOURCE" % tuple(size))
26
27 Dia2Png = SCons.Builder.Builder(suffix = ".png",
28                                 src_suffix = ".dia",
29                                 generator = dia2png_generator,
30                                 single_source = 1)
31
32 def generate(env):
33     env['BUILDERS']['Dia2Png'] = Dia2Png
34     env['DIACOM'] = "dia"
35     env['DIA2PNGDPI'] = 115
36
37 def exists(env):
38     return env.Detect("dia")