minor fixes for clang++
[senf.git] / site_scons / site_tools / Dia2Png.py
1 import os
2 import SCons.Builder, SCons.Action
3
4 def dia_getSize(env,source):
5     size = None
6     for line in os.popen(env['DIACOM']+" -e /proc/self/fd/1 -t eps "+str(source[0]),"r"):
7         if line.startswith("%%BoundingBox:"):
8             size=map(int,line.split()[3:])
9             break
10     return size
11
12 def dia2png_generator(source, target, env, for_signature):
13     if for_signature:
14         return "$DIACOM -t png -s $DIA2PNGDPI,$DIA2PNGMAXWIDTH $TARGET $SOURCE"
15     size = dia_getSize(env,source)
16     if not size: return None;
17     size[0] = size[0]*int(env['DIA2PNGDPI'])/72
18     size[1] = size[1]*int(env['DIA2PNGDPI'])/72
19     if size[0] > env['DIA2PNGMAXWIDTH']:
20         size[1] = size[1]*env['DIA2PNGMAXWIDTH']/size[0]
21         size[0] = env['DIA2PNGMAXWIDTH']
22     return SCons.Action.Action("$DIACOM -t png -s %dx%d -e $TARGET $SOURCE" % tuple(size))
23
24 Dia2Png = SCons.Builder.Builder(suffix = ".png",
25                                 src_suffix = ".dia",
26                                 generator = dia2png_generator,
27                                 single_source = 1)
28
29 def generate(env):
30     env['BUILDERS']['Dia2Png'] = Dia2Png
31     env['DIACOM'] = "dia"
32     env['DIA2PNGDPI'] = 115
33     env['DIA2PNGMAXWIDTH'] = 800
34
35 def exists(env):
36     return env.Detect("dia")