diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-04-03 04:00:29 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-04-03 04:00:29 +0400 |
commit | 1e8d69ac7468670853a5714ebb2fc0d7c3cbf1be (patch) | |
tree | af5242223bfc453cbc3f46fef7caabe2695e3cab /source/blender/freestyle | |
parent | 8709d4b624653ab404ef69162262f94ee8b3506e (diff) |
Use of text datablocks for storing Python style modules.
Suggested by Brecht Van Lommel and Campbell Barton through code review comments.
Previously style modules were external Python script files whose absolute paths
were kept in .blend files. Now style modules are stored in .blend files as text
datablocks.
Style modules are configured in three steps:
1. Open an external style module file (or create a new text datablock) in the
Text Editor in Blender.
2. Add a style module to the list of style modules (by pressing the "Add" button)
in the Render Layer properties window.
3. Click the name entry and select the style module from the drop-down menu.
Diffstat (limited to 'source/blender/freestyle')
4 files changed, 9 insertions, 15 deletions
diff --git a/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h b/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h index c1668aff955..7848b75749f 100644 --- a/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h +++ b/source/blender/freestyle/intern/blender_interface/BlenderStyleModule.h @@ -46,12 +46,6 @@ public: { } - virtual void close() - { - BKE_text_unlink(G.main, _text); - BKE_libblock_free(&G.main->text, _text); - } - protected: virtual int interpret() { diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp index f0b0e0fe804..325c314a570 100644 --- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp +++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp @@ -321,11 +321,15 @@ static void prepare(Render *re, SceneRenderLayer *srl) module_conf; module_conf = module_conf->next) { - if (module_conf->is_displayed) { + if (module_conf->script && module_conf->is_displayed) { + const char *id_name = module_conf->script->id.name + 2; if (G.debug & G_DEBUG_FREESTYLE) { - cout << " " << layer_count + 1 << ": " << module_conf->module_path << endl; + cout << " " << layer_count + 1 << ": " << id_name; + if (module_conf->script->name) + cout << " (" << module_conf->script->name << ")"; + cout << endl; } - controller->InsertStyleModule(layer_count, module_conf->module_path); + controller->InsertStyleModule(layer_count, id_name, module_conf->script); controller->toggleLayer(layer_count, true); layer_count++; } @@ -537,7 +541,7 @@ static int displayed_layer_count(SceneRenderLayer *srl) module; module = module->next) { - if (module->is_displayed) + if (module->script && module->is_displayed) count++; } break; diff --git a/source/blender/freestyle/intern/stroke/Canvas.cpp b/source/blender/freestyle/intern/stroke/Canvas.cpp index 996264d7912..7953e4a718c 100644 --- a/source/blender/freestyle/intern/stroke/Canvas.cpp +++ b/source/blender/freestyle/intern/stroke/Canvas.cpp @@ -145,10 +145,8 @@ void Canvas::Clear() if (!_StyleModules.empty()) { for (deque<StyleModule*>::iterator s = _StyleModules.begin(), send = _StyleModules.end(); s != send; ++s) { - if (*s) { - (*s)->close(); + if (*s) delete (*s); - } } _StyleModules.clear(); } diff --git a/source/blender/freestyle/intern/stroke/StyleModule.h b/source/blender/freestyle/intern/stroke/StyleModule.h index 1d81e2e2151..c8ccdf51ea0 100644 --- a/source/blender/freestyle/intern/stroke/StyleModule.h +++ b/source/blender/freestyle/intern/stroke/StyleModule.h @@ -91,8 +91,6 @@ public: return sl; } - virtual void close() {} - protected: virtual int interpret() { |