diff options
-rw-r--r-- | source/blender/freestyle/CMakeLists.txt | 3 | ||||
-rw-r--r-- | source/blender/freestyle/FRS_freestyle.h | 1 | ||||
-rw-r--r-- | source/blender/freestyle/SConscript | 3 | ||||
-rw-r--r-- | source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp | 6 | ||||
-rw-r--r-- | source/blender/freestyle/intern/python/BPy_Freestyle.cpp | 16 |
5 files changed, 27 insertions, 2 deletions
diff --git a/source/blender/freestyle/CMakeLists.txt b/source/blender/freestyle/CMakeLists.txt index 298af7a4803..18f721ccfdc 100644 --- a/source/blender/freestyle/CMakeLists.txt +++ b/source/blender/freestyle/CMakeLists.txt @@ -27,7 +27,8 @@ FILE(GLOB_RECURSE SRC *.cpp) SET(INC - ../blenkernel ../blenloader ../blenlib ../imbuf ../makesdna ../makesrna ../python + ../blenkernel ../blenloader ../blenlib ../imbuf ../makesdna ../makesrna + ../python ../python/intern ../render/extern/include ../render/intern/include ../include ../src ../../../extern/glew/include ../../../intern/guardedalloc ../freestyle ${PYTHON_INC} diff --git a/source/blender/freestyle/FRS_freestyle.h b/source/blender/freestyle/FRS_freestyle.h index 1add5f97b38..3d8e785ce99 100644 --- a/source/blender/freestyle/FRS_freestyle.h +++ b/source/blender/freestyle/FRS_freestyle.h @@ -10,6 +10,7 @@ extern "C" { #include "BKE_context.h" + extern Scene *freestyle_scene; extern float freestyle_viewpoint[3]; extern float freestyle_mv[4][4]; extern float freestyle_proj[4][4]; diff --git a/source/blender/freestyle/SConscript b/source/blender/freestyle/SConscript index 6fd6805bef9..b955365f44e 100644 --- a/source/blender/freestyle/SConscript +++ b/source/blender/freestyle/SConscript @@ -6,7 +6,8 @@ sources = [] defs = [] incs = '' -incs += '../blenkernel ../blenloader ../blenlib ../imbuf ../makesdna ../makesrna ../python ' +incs += '../blenkernel ../blenloader ../blenlib ../imbuf ../makesdna ../makesrna' +incs += '../python ../python/intern' incs += '../render/extern/include ../render/intern/include ../include ../src' incs += ' #/extern/glew/include #/intern/guardedalloc' incs += ' ' + env['BF_PYTHON_INC'] diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp index 0f2160d7bf6..393cd1b2dd9 100644 --- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp +++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp @@ -39,6 +39,9 @@ extern "C" { float freestyle_proj[4][4]; int freestyle_viewport[4]; + // current scene + Scene *freestyle_scene; + string default_module_path; //======================================================= @@ -54,6 +57,7 @@ extern "C" { controller = new Controller(); view = new AppView; controller->setView(view); + freestyle_scene = NULL; default_module_path = pathconfig->getProjectDir() + Config::DIR_SEP + "style_modules" + Config::DIR_SEP + "contour.py"; @@ -203,6 +207,7 @@ extern "C" { init_view(re); init_camera(re); + freestyle_scene = re->scene; for(srl= (SceneRenderLayer *)re->scene->r.layers.first; srl; srl= srl->next) { if( !(srl->layflag & SCE_LAY_DISABLE) && @@ -238,6 +243,7 @@ extern "C" { } } + freestyle_scene = NULL; } //======================================================= diff --git a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp index bd5a5c8b38a..3e8572d07ae 100644 --- a/source/blender/freestyle/intern/python/BPy_Freestyle.cpp +++ b/source/blender/freestyle/intern/python/BPy_Freestyle.cpp @@ -33,6 +33,7 @@ extern "C" { //static PyObject *Freestyle_testOutput( BPy_Freestyle * self ); +static PyObject *Freestyle_getCurrentScene( PyObject *self ); /*-----------------------Freestyle module doc strings--------------------------*/ @@ -42,6 +43,7 @@ static char module_docstring[] = "The Blender Freestyle module\n\n"; static PyMethodDef module_functions[] = { // {"testOutput", ( PyCFunction ) Freestyle_testOutput, METH_NOARGS, "() - Return Curve Data name"}, + {"getCurrentScene", ( PyCFunction ) Freestyle_getCurrentScene, METH_NOARGS, "() - Return the current scene."}, {NULL, NULL, 0, NULL} }; @@ -99,6 +101,20 @@ PyObject *Freestyle_Init( void ) /////////////////////////////////////////////////////////////////////////////////////////// +#include "FRS_freestyle.h" +#include "bpy_rna.h" /* pyrna_struct_CreatePyObject() */ + +static PyObject *Freestyle_getCurrentScene( PyObject *self ) +{ + if (!freestyle_scene) { + PyErr_SetString(PyExc_TypeError, "current scene not available"); + return NULL; + } + PointerRNA ptr_scene; + RNA_pointer_create(NULL, &RNA_Scene, freestyle_scene, &ptr_scene); + return pyrna_struct_CreatePyObject(&ptr_scene); +} + #ifdef __cplusplus } #endif |