2008-07-23 07:56:08 +00:00
|
|
|
#include "BPy_Freestyle.h"
|
|
|
|
|
|
2008-07-24 08:29:48 +00:00
|
|
|
#include "BPy_BBox.h"
|
2008-07-23 07:56:08 +00:00
|
|
|
#include "BPy_BinaryPredicate0D.h"
|
|
|
|
|
#include "BPy_BinaryPredicate1D.h"
|
2009-07-26 11:19:37 +00:00
|
|
|
#include "BPy_ContextFunctions.h"
|
2008-08-01 02:25:21 +00:00
|
|
|
#include "BPy_FrsMaterial.h"
|
2008-08-01 02:15:25 +00:00
|
|
|
#include "BPy_FrsNoise.h"
|
2008-07-23 07:56:08 +00:00
|
|
|
#include "BPy_Id.h"
|
|
|
|
|
#include "BPy_IntegrationType.h"
|
|
|
|
|
#include "BPy_Interface0D.h"
|
|
|
|
|
#include "BPy_Interface1D.h"
|
2008-07-26 21:47:39 +00:00
|
|
|
#include "BPy_Iterator.h"
|
2008-07-23 07:56:08 +00:00
|
|
|
#include "BPy_MediumType.h"
|
|
|
|
|
#include "BPy_Nature.h"
|
2008-07-29 05:45:16 +00:00
|
|
|
#include "BPy_Operators.h"
|
2008-07-24 08:29:48 +00:00
|
|
|
#include "BPy_SShape.h"
|
2008-07-23 07:56:08 +00:00
|
|
|
#include "BPy_StrokeAttribute.h"
|
|
|
|
|
#include "BPy_StrokeShader.h"
|
|
|
|
|
#include "BPy_UnaryFunction0D.h"
|
|
|
|
|
#include "BPy_UnaryFunction1D.h"
|
|
|
|
|
#include "BPy_UnaryPredicate0D.h"
|
|
|
|
|
#include "BPy_UnaryPredicate1D.h"
|
2008-07-26 21:47:39 +00:00
|
|
|
#include "BPy_ViewMap.h"
|
2008-07-24 08:29:48 +00:00
|
|
|
#include "BPy_ViewShape.h"
|
|
|
|
|
|
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
|
|
|
|
2008-07-12 04:02:08 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//static PyObject *Freestyle_testOutput( BPy_Freestyle * self );
|
2009-12-06 22:01:04 +00:00
|
|
|
static PyObject *Freestyle_getCurrentScene( PyObject *self );
|
2009-09-27 00:32:20 +00:00
|
|
|
|
|
|
|
|
/*-----------------------Freestyle module doc strings--------------------------*/
|
|
|
|
|
|
|
|
|
|
static char module_docstring[] = "The Blender Freestyle module\n\n";
|
|
|
|
|
|
|
|
|
|
/*-----------------------Freestyle module method def---------------------------*/
|
|
|
|
|
|
|
|
|
|
static PyMethodDef module_functions[] = {
|
2008-07-12 04:02:08 +00:00
|
|
|
// {"testOutput", ( PyCFunction ) Freestyle_testOutput, METH_NOARGS, "() - Return Curve Data name"},
|
2009-12-06 22:01:04 +00:00
|
|
|
{"getCurrentScene", ( PyCFunction ) Freestyle_getCurrentScene, METH_NOARGS, "() - Return the current scene."},
|
2008-07-12 04:02:08 +00:00
|
|
|
{NULL, NULL, 0, NULL}
|
|
|
|
|
};
|
|
|
|
|
|
2009-09-27 00:32:20 +00:00
|
|
|
/*-----------------------Freestyle module definition---------------------------*/
|
2008-07-12 04:02:08 +00:00
|
|
|
|
2009-09-27 00:32:20 +00:00
|
|
|
static PyModuleDef module_definition = {
|
|
|
|
|
PyModuleDef_HEAD_INIT,
|
|
|
|
|
"Freestyle",
|
|
|
|
|
module_docstring,
|
|
|
|
|
-1,
|
|
|
|
|
module_functions
|
2008-07-12 04:02:08 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//-------------------MODULE INITIALIZATION--------------------------------
|
|
|
|
|
PyObject *Freestyle_Init( void )
|
|
|
|
|
{
|
2008-07-15 01:07:19 +00:00
|
|
|
PyObject *module;
|
2008-07-12 04:02:08 +00:00
|
|
|
|
2008-07-15 01:07:19 +00:00
|
|
|
// initialize modules
|
2009-09-27 00:32:20 +00:00
|
|
|
module = PyModule_Create(&module_definition);
|
|
|
|
|
if (!module)
|
|
|
|
|
return NULL;
|
|
|
|
|
PyDict_SetItemString(PySys_GetObject("modules"), module_definition.m_name, module);
|
2008-07-23 07:56:08 +00:00
|
|
|
|
2008-07-15 01:07:19 +00:00
|
|
|
// attach its classes (adding the object types to the module)
|
2008-07-23 07:56:08 +00:00
|
|
|
|
|
|
|
|
// those classes have to be initialized before the others
|
|
|
|
|
MediumType_Init( module );
|
|
|
|
|
Nature_Init( module );
|
|
|
|
|
|
2008-07-24 08:29:48 +00:00
|
|
|
BBox_Init( module );
|
2008-07-15 01:07:19 +00:00
|
|
|
BinaryPredicate0D_Init( module );
|
|
|
|
|
BinaryPredicate1D_Init( module );
|
2009-07-26 11:19:37 +00:00
|
|
|
ContextFunctions_Init( module );
|
2008-08-01 02:25:21 +00:00
|
|
|
FrsMaterial_Init( module );
|
2008-08-01 02:15:25 +00:00
|
|
|
FrsNoise_Init( module );
|
2008-07-15 01:07:19 +00:00
|
|
|
Id_Init( module );
|
2008-07-18 20:31:40 +00:00
|
|
|
IntegrationType_Init( module );
|
2008-07-15 01:07:19 +00:00
|
|
|
Interface0D_Init( module );
|
|
|
|
|
Interface1D_Init( module );
|
2008-07-23 10:19:08 +00:00
|
|
|
Iterator_Init( module );
|
2008-07-29 05:45:16 +00:00
|
|
|
Operators_Init( module );
|
2008-07-24 08:29:48 +00:00
|
|
|
SShape_Init( module );
|
2008-07-21 21:24:37 +00:00
|
|
|
StrokeAttribute_Init( module );
|
2008-07-23 05:54:34 +00:00
|
|
|
StrokeShader_Init( module );
|
2008-07-18 04:59:07 +00:00
|
|
|
UnaryFunction0D_Init( module );
|
|
|
|
|
UnaryFunction1D_Init( module );
|
|
|
|
|
UnaryPredicate0D_Init( module );
|
|
|
|
|
UnaryPredicate1D_Init( module );
|
2008-07-26 21:47:39 +00:00
|
|
|
ViewMap_Init( module );
|
2008-07-24 08:29:48 +00:00
|
|
|
ViewShape_Init( module );
|
2008-07-26 21:47:39 +00:00
|
|
|
|
2008-07-15 01:07:19 +00:00
|
|
|
return module;
|
2008-07-12 04:02:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2009-12-06 22:01:04 +00:00
|
|
|
#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);
|
|
|
|
|
}
|
|
|
|
|
|
2008-07-12 04:02:08 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
2009-10-15 19:38:45 +00:00
|
|
|
#endif
|