2008-08-01 02:15:25 +00:00
# include "BPy_FrsNoise.h"
2009-07-25 11:27:18 +00:00
# include "BPy_Convert.h"
2008-07-26 21:47:39 +00:00
2009-03-29 21:50:10 +00:00
# include <sstream>
2008-07-26 21:47:39 +00:00
# ifdef __cplusplus
extern " C " {
# endif
///////////////////////////////////////////////////////////////////////////////////////////
2008-08-01 02:15:25 +00:00
/*--------------- Python API function prototypes for FrsNoise instance -----------*/
static int FrsNoise___init__ ( BPy_FrsNoise * self , PyObject * args , PyObject * kwds ) ;
static void FrsNoise___dealloc__ ( BPy_FrsNoise * self ) ;
static PyObject * FrsNoise___repr__ ( BPy_FrsNoise * self ) ;
static PyObject * FrsNoise_turbulence1 ( BPy_FrsNoise * self , PyObject * args ) ;
static PyObject * FrsNoise_turbulence2 ( BPy_FrsNoise * self , PyObject * args ) ;
static PyObject * FrsNoise_turbulence3 ( BPy_FrsNoise * self , PyObject * args ) ;
static PyObject * FrsNoise_smoothNoise1 ( BPy_FrsNoise * self , PyObject * args ) ;
static PyObject * FrsNoise_smoothNoise2 ( BPy_FrsNoise * self , PyObject * args ) ;
static PyObject * FrsNoise_smoothNoise3 ( BPy_FrsNoise * self , PyObject * args ) ;
/*----------------------FrsNoise instance definitions ----------------------------*/
static PyMethodDef BPy_FrsNoise_methods [ ] = {
2009-09-27 00:32:20 +00:00
{ " turbulence1 " , ( PyCFunction ) FrsNoise_turbulence1 , METH_VARARGS , " (float arg, float freq, float amp, unsigned oct=4) Returns a noise value for a 1D element " } ,
{ " turbulence2 " , ( PyCFunction ) FrsNoise_turbulence2 , METH_VARARGS , " ([x, y], float freq, float amp, unsigned oct=4) Returns a noise value for a 2D element " } ,
{ " turbulence3 " , ( PyCFunction ) FrsNoise_turbulence3 , METH_VARARGS , " ([x, y, z], float freq, float amp, unsigned oct=4) Returns a noise value for a 3D element " } ,
{ " smoothNoise1 " , ( PyCFunction ) FrsNoise_smoothNoise1 , METH_VARARGS , " (float arg) Returns a smooth noise value for a 1D element " } ,
{ " smoothNoise2 " , ( PyCFunction ) FrsNoise_smoothNoise2 , METH_VARARGS , " ([x, y]) Returns a smooth noise value for a 2D element " } ,
{ " smoothNoise3 " , ( PyCFunction ) FrsNoise_smoothNoise3 , METH_VARARGS , " ([x, y, z]) Returns a smooth noise value for a 3D element " } ,
2008-07-26 21:47:39 +00:00
{ NULL , NULL , 0 , NULL }
} ;
2008-08-01 02:15:25 +00:00
/*-----------------------BPy_FrsNoise type definition ------------------------------*/
2008-07-26 21:47:39 +00:00
2008-08-01 02:15:25 +00:00
PyTypeObject FrsNoise_Type = {
2009-09-27 00:32:20 +00:00
PyVarObject_HEAD_INIT ( NULL , 0 )
" FrsNoise " , /* tp_name */
sizeof ( BPy_FrsNoise ) , /* tp_basicsize */
0 , /* tp_itemsize */
( destructor ) FrsNoise___dealloc__ , /* tp_dealloc */
0 , /* tp_print */
0 , /* tp_getattr */
0 , /* tp_setattr */
0 , /* tp_reserved */
( reprfunc ) FrsNoise___repr__ , /* tp_repr */
0 , /* tp_as_number */
0 , /* tp_as_sequence */
0 , /* tp_as_mapping */
0 , /* tp_hash */
0 , /* tp_call */
0 , /* tp_str */
0 , /* tp_getattro */
0 , /* tp_setattro */
0 , /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE , /* tp_flags */
" FrsNoise objects " , /* tp_doc */
0 , /* tp_traverse */
0 , /* tp_clear */
0 , /* tp_richcompare */
0 , /* tp_weaklistoffset */
0 , /* tp_iter */
0 , /* tp_iternext */
BPy_FrsNoise_methods , /* tp_methods */
0 , /* tp_members */
0 , /* tp_getset */
0 , /* tp_base */
0 , /* tp_dict */
0 , /* tp_descr_get */
0 , /* tp_descr_set */
0 , /* tp_dictoffset */
( initproc ) FrsNoise___init__ , /* tp_init */
0 , /* tp_alloc */
PyType_GenericNew , /* tp_new */
2008-07-26 21:47:39 +00:00
} ;
//-------------------MODULE INITIALIZATION--------------------------------
2009-09-27 00:32:20 +00:00
int FrsNoise_Init ( PyObject * module )
2008-07-26 21:47:39 +00:00
{
if ( module = = NULL )
2009-09-27 00:32:20 +00:00
return - 1 ;
2008-07-26 21:47:39 +00:00
2008-08-01 02:15:25 +00:00
if ( PyType_Ready ( & FrsNoise_Type ) < 0 )
2009-09-27 00:32:20 +00:00
return - 1 ;
2008-07-26 21:47:39 +00:00
2008-08-01 02:15:25 +00:00
Py_INCREF ( & FrsNoise_Type ) ;
PyModule_AddObject ( module , " FrsNoise " , ( PyObject * ) & FrsNoise_Type ) ;
2009-09-27 00:32:20 +00:00
return 0 ;
2008-07-09 08:24:13 +00:00
}
2008-07-26 21:47:39 +00:00
//------------------------INSTANCE METHODS ----------------------------------
2008-07-09 08:24:13 +00:00
2008-08-01 02:15:25 +00:00
int FrsNoise___init__ ( BPy_FrsNoise * self , PyObject * args , PyObject * kwds )
2008-07-26 21:47:39 +00:00
{
2009-09-27 00:32:20 +00:00
if ( ! ( PyArg_ParseTuple ( args , " " ) ) )
return - 1 ;
2008-07-26 21:47:39 +00:00
self - > n = new Noise ( ) ;
return 0 ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
void FrsNoise___dealloc__ ( BPy_FrsNoise * self )
2008-07-26 21:47:39 +00:00
{
delete self - > n ;
2009-09-27 00:32:20 +00:00
Py_TYPE ( self ) - > tp_free ( ( PyObject * ) self ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise___repr__ ( BPy_FrsNoise * self )
2008-07-26 21:47:39 +00:00
{
2009-09-27 00:32:20 +00:00
return PyUnicode_FromFormat ( " FrsNoise - address: %p " , self - > n ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise_turbulence1 ( BPy_FrsNoise * self , PyObject * args ) {
2008-07-26 21:47:39 +00:00
float f1 , f2 , f3 ;
2009-03-30 19:25:27 +00:00
unsigned int i = 4 ;
2008-07-09 08:24:13 +00:00
2009-03-29 21:50:10 +00:00
if ( ! ( PyArg_ParseTuple ( args , " fff|I " , & f1 , & f2 , & f3 , & i ) ) )
return NULL ;
2008-07-09 08:24:13 +00:00
2008-07-26 21:47:39 +00:00
return PyFloat_FromDouble ( self - > n - > turbulence1 ( f1 , f2 , f3 , i ) ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise_turbulence2 ( BPy_FrsNoise * self , PyObject * args ) {
2008-07-26 21:47:39 +00:00
PyObject * obj1 ;
float f2 , f3 ;
2009-03-30 19:25:27 +00:00
unsigned int i = 4 ;
2008-07-09 08:24:13 +00:00
2009-07-25 11:27:18 +00:00
if ( ! ( PyArg_ParseTuple ( args , " Off|I " , & obj1 , & f2 , & f3 , & i ) ) )
2009-03-29 21:50:10 +00:00
return NULL ;
2009-07-25 11:27:18 +00:00
Vec2f * v = Vec2f_ptr_from_PyObject ( obj1 ) ;
if ( ! v ) {
PyErr_SetString ( PyExc_TypeError , " argument 1 must be a 2D vector (either a list of 2 elements or Vector) " ) ;
2009-03-29 21:50:10 +00:00
return NULL ;
2008-07-26 21:47:39 +00:00
}
2009-07-25 11:27:18 +00:00
float t = self - > n - > turbulence2 ( * v , f2 , f3 , i ) ;
delete v ;
return PyFloat_FromDouble ( t ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise_turbulence3 ( BPy_FrsNoise * self , PyObject * args ) {
2008-07-26 21:47:39 +00:00
PyObject * obj1 ;
float f2 , f3 ;
2009-03-30 19:25:27 +00:00
unsigned int i = 4 ;
2008-07-26 21:47:39 +00:00
2009-07-25 11:27:18 +00:00
if ( ! ( PyArg_ParseTuple ( args , " Off|I " , & obj1 , & f2 , & f3 , & i ) ) )
2009-03-29 21:50:10 +00:00
return NULL ;
2009-07-25 11:27:18 +00:00
Vec3f * v = Vec3f_ptr_from_PyObject ( obj1 ) ;
if ( ! v ) {
PyErr_SetString ( PyExc_TypeError , " argument 1 must be a 3D vector (either a list of 3 elements or Vector) " ) ;
2009-03-29 21:50:10 +00:00
return NULL ;
2008-07-26 21:47:39 +00:00
}
2009-07-25 11:27:18 +00:00
float t = self - > n - > turbulence3 ( * v , f2 , f3 , i ) ;
delete v ;
return PyFloat_FromDouble ( t ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise_smoothNoise1 ( BPy_FrsNoise * self , PyObject * args ) {
2008-07-26 21:47:39 +00:00
float f ;
2008-07-09 08:24:13 +00:00
2009-03-29 21:50:10 +00:00
if ( ! ( PyArg_ParseTuple ( args , " f " , & f ) ) )
return NULL ;
2008-07-26 21:47:39 +00:00
return PyFloat_FromDouble ( self - > n - > smoothNoise1 ( f ) ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise_smoothNoise2 ( BPy_FrsNoise * self , PyObject * args ) {
2008-07-26 21:47:39 +00:00
PyObject * obj ;
2009-07-25 11:27:18 +00:00
if ( ! ( PyArg_ParseTuple ( args , " O " , & obj ) ) )
2009-03-29 21:50:10 +00:00
return NULL ;
2009-07-25 11:27:18 +00:00
Vec2f * v = Vec2f_ptr_from_PyObject ( obj ) ;
if ( ! v ) {
PyErr_SetString ( PyExc_TypeError , " argument 1 must be a 2D vector (either a list of 2 elements or Vector) " ) ;
2009-03-29 21:50:10 +00:00
return NULL ;
2008-07-26 21:47:39 +00:00
}
2009-07-25 11:27:18 +00:00
float t = self - > n - > smoothNoise2 ( * v ) ;
delete v ;
return PyFloat_FromDouble ( t ) ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 02:15:25 +00:00
PyObject * FrsNoise_smoothNoise3 ( BPy_FrsNoise * self , PyObject * args ) {
2008-07-26 21:47:39 +00:00
PyObject * obj ;
2009-07-25 11:27:18 +00:00
if ( ! ( PyArg_ParseTuple ( args , " O " , & obj ) ) )
2009-03-29 21:50:10 +00:00
return NULL ;
2009-07-25 11:27:18 +00:00
Vec3f * v = Vec3f_ptr_from_PyObject ( obj ) ;
if ( ! v ) {
PyErr_SetString ( PyExc_TypeError , " argument 1 must be a 3D vector (either a list of 3 elements or Vector) " ) ;
2009-03-29 21:50:10 +00:00
return NULL ;
2008-07-26 21:47:39 +00:00
}
2009-07-25 11:27:18 +00:00
float t = self - > n - > smoothNoise3 ( * v ) ;
delete v ;
return PyFloat_FromDouble ( t ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-26 21:47:39 +00:00
///////////////////////////////////////////////////////////////////////////////////////////
# ifdef __cplusplus
}
# endif