[Bf-blender-cvs] [c35a649] master: Freestyle: lazy load 'export_svg'

Campbell Barton noreply at git.blender.org
Sat Oct 18 17:49:44 CEST 2014


Commit: c35a649a0a6c3c07bb8d56caba680887f726b9e9
Author: Campbell Barton
Date:   Sat Oct 18 17:46:09 2014 +0200
Branches: master
https://developer.blender.org/rBc35a649a0a6c3c07bb8d56caba680887f726b9e9

Freestyle: lazy load 'export_svg'

Loading XML module, registering etree namespaces... etc
on startup for everyone on chance someone may want to export
an SVG from Freestyle is unacceptable.

This shouldn't have got through the review.

also disable loading when built without freestyle.

===================================================================

M	release/scripts/freestyle/modules/export_svg.py
M	release/scripts/startup/freestyle_builtins.py

===================================================================

diff --git a/release/scripts/freestyle/modules/export_svg.py b/release/scripts/freestyle/modules/export_svg.py
index 777fc73..9d6e13f 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 - #
- at 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")
 
 
- at 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 25d3077..b6493e8 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()




More information about the Bf-blender-cvs mailing list