diff options
author | Ken Hughes <khughes@pacific.edu> | 2007-03-10 01:21:23 +0300 |
---|---|---|
committer | Ken Hughes <khughes@pacific.edu> | 2007-03-10 01:21:23 +0300 |
commit | 6da624feaddf0086a0b94c11b22d588e1ab18fd8 (patch) | |
tree | d5e1150c6d4e084ca19af4522890557fdf37f78c /source/blender/python/api2_2x/Image.c | |
parent | cec9f42296d189ba3acb627734089ec2d30d712d (diff) |
Python API
----------
Added Image.source attribute, so image type can be get/set for still, movie,
sequence or generated images.
Diffstat (limited to 'source/blender/python/api2_2x/Image.c')
-rw-r--r-- | source/blender/python/api2_2x/Image.c | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/source/blender/python/api2_2x/Image.c b/source/blender/python/api2_2x/Image.c index ed6f43067bb..6304964132f 100644 --- a/source/blender/python/api2_2x/Image.c +++ b/source/blender/python/api2_2x/Image.c @@ -69,6 +69,7 @@ enum img_consts { EXPP_IMAGE_ATTR_END, EXPP_IMAGE_ATTR_SPEED, EXPP_IMAGE_ATTR_BINDCODE, + EXPP_IMAGE_ATTR_SOURCE, }; /************************/ @@ -710,12 +711,26 @@ static PyObject *Image_save( BPy_Image * self ) Py_RETURN_NONE; /* normal return, image saved */ } +static PyObject *M_Image_SourceDict( void ) +{ + PyObject *Dict = PyConstant_New( ); + if( Dict ) { + BPy_constant *d = ( BPy_constant * ) Dict; + PyConstant_Insert(d, "STILL", PyInt_FromLong(IMA_SRC_FILE)); + PyConstant_Insert(d, "MOVIE", PyInt_FromLong(IMA_SRC_MOVIE)); + PyConstant_Insert(d, "SEQUENCE", PyInt_FromLong(IMA_SRC_SEQUENCE)); + PyConstant_Insert(d, "GENERATED", PyInt_FromLong(IMA_SRC_GENERATED)); + } + return Dict; +} + /*****************************************************************************/ /* Function: Image_Init */ /*****************************************************************************/ PyObject *Image_Init( void ) { PyObject *submodule; + PyObject *Sources = M_Image_SourceDict( ); if( PyType_Ready( &Image_Type ) < 0 ) return NULL; @@ -724,7 +739,10 @@ PyObject *Image_Init( void ) Py_InitModule3( "Blender.Image", M_Image_methods, M_Image_doc ); - return ( submodule ); + if( Sources ) + PyModule_AddObject( submodule, "Sources", Sources ); + + return submodule; } /*****************************************************************************/ @@ -1112,6 +1130,26 @@ static PyObject *Image_getFlag(BPy_Image *self, void *flag) } +static int Image_setSource( BPy_Image *self, PyObject *args) +{ + PyObject* integer = PyNumber_Int( args ); + short value; + + if( !integer ) + return EXPP_ReturnIntError( PyExc_TypeError, + "expected integer argument" ); + + value = ( short )PyInt_AS_LONG( integer ); + Py_DECREF( integer ); + + if( value < IMA_SRC_FILE || value > IMA_SRC_GENERATED ) + return EXPP_ReturnIntError( PyExc_ValueError, + "expected integer argument in range 1-4" ); + + self->image->source = value; + return 0; +} + static int Image_setFlag(BPy_Image *self, PyObject *value, void *flag) { if ( PyObject_IsTrue(value) ) @@ -1150,6 +1188,9 @@ static PyObject *getIntAttr( BPy_Image *self, void *type ) case EXPP_IMAGE_ATTR_BINDCODE: param = image->bindcode; break; + case EXPP_IMAGE_ATTR_SOURCE: + param = image->source; + break; default: return EXPP_ReturnPyObjError( PyExc_RuntimeError, "undefined type in getIntAttr" ); @@ -1206,7 +1247,6 @@ static int setIntAttrClamp( BPy_Image *self, PyObject *value, void *type ) size = 'h'; param = (void *)&image->animspeed; break; - default: return EXPP_ReturnIntError( PyExc_RuntimeError, "undefined type in setIntAttrClamp"); @@ -1243,6 +1283,8 @@ static PyGetSetDef BPy_Image_getseters[] = { "image end frame", (void *)EXPP_IMAGE_ATTR_SPEED }, {"bindcode", (getter)getIntAttr, (setter)NULL, "openGL bindcode", (void *)EXPP_IMAGE_ATTR_BINDCODE }, + {"source", (getter)getIntAttr, (setter)Image_setSource, + "image source type", (void *)EXPP_IMAGE_ATTR_SOURCE }, /* flags */ {"fields", (getter)Image_getFlag, (setter)Image_setFlag, "image fields toggle", (void *)IMA_FIELDS }, |