diff --git a/release/scripts/freestyle/modules/export_svg.py b/release/scripts/freestyle/modules/export_svg.py index 777fc736d20..9d6e13f4bd6 100644 --- a/release/scripts/freestyle/modules/export_svg.py +++ b/release/scripts/freestyle/modules/export_svg.py @@ -23,7 +23,6 @@ import bpy import xml.etree.cElementTree as et from bpy.path import abspath -from bpy.app.handlers import persistent from bpy_extras.object_utils import world_to_camera_view from freestyle.types import StrokeShader, BinaryPredicate1D, Interface0DIterator @@ -266,12 +265,10 @@ def indent_xml(elem, level=0, indentsize=4): # - callbacks - # -@persistent +# called from: bpy.app.handlers.render_init def svg_export_header(scene): - render = scene.render - if not (render.use_freestyle and render.use_svg_export): - return # create new file (overwrite existing) + render = scene.render width, height = render.resolution_x, render.resolution_y scale = render.resolution_percentage / 100 @@ -283,16 +280,15 @@ def svg_export_header(scene): print("SVG export: invalid path") -@persistent +# called from: bpy.app.handlers.render_complete def svg_export_animation(scene): - """makes an animation of the exported SVG file """ + # makes an animation of the exported SVG file render = scene.render - if render.use_freestyle and render.use_svg_export and render.svg_mode == 'ANIMATION': - write_animation(abspath(render.svg_path), scene.frame_start, render.fps) + write_animation(abspath(render.svg_path), scene.frame_start, render.fps) def write_animation(filepath, frame_begin, fps=25): - """Adds animate tags to the specified file.""" + # Adds animate tags to the specified file. tree = et.parse(filepath) root = tree.getroot() diff --git a/release/scripts/startup/freestyle_builtins.py b/release/scripts/startup/freestyle_builtins.py index 25d30771e39..b6493e86979 100644 --- a/release/scripts/startup/freestyle_builtins.py +++ b/release/scripts/startup/freestyle_builtins.py @@ -20,15 +20,39 @@ import bpy -from export_svg import svg_export_header, svg_export_animation +if bpy.app.build_options.freestyle: + from bpy.app.handlers import persistent -def register(): - bpy.app.handlers.render_init.append(svg_export_header) - bpy.app.handlers.render_complete.append(svg_export_animation) + @persistent + def freestyle_render_init(scene): + render = scene.render + if render.use_freestyle: + if render.use_svg_export: + from export_svg import svg_export_header + svg_export_header(scene) -def unregister(): - bpy.app.handlers.render_init.remove(svg_export_header) - bpy.app.handlers.render_complete.remove(svg_export_animation) + @persistent + def freestyle_render_complete(scene): + render = scene.render + if render.use_freestyle: + if render.use_svg_export and render.svg_mode == 'ANIMATION': + from export_svg import svg_export_animation + svg_export_animation(scene) + + def register(): + bpy.app.handlers.render_init.append(freestyle_render_init) + bpy.app.handlers.render_complete.append(freestyle_render_complete) + + def unregister(): + bpy.app.handlers.render_init.remove(freestyle_render_init) + bpy.app.handlers.render_complete.remove(freestyle_render_complete) + +else: + def register(): + pass + + def unregister(): + pass if __name__ == '__main__': register()