[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20475] trunk/blender/source/blender/ python/api2_2x: [#18803] 'ShadeModes' dictionary and 'shadeMode' instance variable exported to Python API
Campbell Barton
ideasman42 at gmail.com
Thu May 28 16:01:10 CEST 2009
Revision: 20475
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20475
Author: campbellbarton
Date: 2009-05-28 16:01:10 +0200 (Thu, 28 May 2009)
Log Message:
-----------
[#18803] 'ShadeModes' dictionary and 'shadeMode' instance variable exported to Python API
Ton was ok with adding Vladislav Turbanov (vladius)'s patch during the freeze.
Modified Paths:
--------------
trunk/blender/source/blender/python/api2_2x/Material.c
trunk/blender/source/blender/python/api2_2x/doc/Material.py
Modified: trunk/blender/source/blender/python/api2_2x/Material.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Material.c 2009-05-28 13:44:32 UTC (rev 20474)
+++ trunk/blender/source/blender/python/api2_2x/Material.c 2009-05-28 14:01:10 UTC (rev 20475)
@@ -335,6 +335,20 @@
}
}
+static PyObject *Material_ShadeModesDict( void )
+{
+ PyObject *ShadeModes = PyConstant_New( );
+
+ if( ShadeModes ) {
+ BPy_constant *c = ( BPy_constant * ) ShadeModes;
+
+ PyConstant_Insert(c, "CUBIC", PyInt_FromLong(MA_CUBIC));
+ PyConstant_Insert(c, "OBCOLOR", PyInt_FromLong(MA_OBCOLOR));
+ }
+
+ return ShadeModes;
+}
+
static PyObject *Material_ModesDict( void )
{
PyObject *Modes = PyConstant_New( );
@@ -454,12 +468,13 @@
/*****************************************************************************/
PyObject *Material_Init( void )
{
- PyObject *submodule, *Modes, *Shaders, *ColorbandInput, *ColorbandMethod;
+ PyObject *submodule, *Modes, *ShadeModes, *Shaders, *ColorbandInput, *ColorbandMethod;
if( PyType_Ready( &Material_Type ) < 0)
return NULL;
Modes = Material_ModesDict( );
+ ShadeModes = Material_ShadeModesDict( );
Shaders = Material_ShadersDict( );
ColorbandMethod = Material_ColorRampMethodsDict( );
ColorbandInput = Material_ColorRampInputDict( );
@@ -469,6 +484,8 @@
if( Modes )
PyModule_AddObject( submodule, "Modes", Modes );
+ if( ShadeModes )
+ PyModule_AddObject( submodule, "ShadeModes", ShadeModes );
if( Shaders )
PyModule_AddObject( submodule, "Shaders", Shaders );
if( ColorbandMethod )
@@ -541,6 +558,7 @@
static int Material_setIpo( BPy_Material * self, PyObject * value );
static int Material_setMode( BPy_Material * self, PyObject * value );
+static int Material_setShadeMode( BPy_Material * self, PyObject * value );
static int Material_setRGBCol( BPy_Material * self, PyObject * value );
static int Material_setSpecCol( BPy_Material * self, PyObject * value );
static int Material_setMirCol( BPy_Material * self, PyObject * value );
@@ -620,6 +638,7 @@
/*****************************************************************************/
static PyObject *Material_getIpo( BPy_Material * self );
static PyObject *Material_getMode( BPy_Material * self );
+static PyObject *Material_getShadeMode( BPy_Material * self );
static PyObject *Material_getRGBCol( BPy_Material * self );
/*static PyObject *Material_getAmbCol(BPy_Material *self);*/
static PyObject *Material_getSpecCol( BPy_Material * self );
@@ -1098,6 +1117,10 @@
(getter)Material_getMode, (setter)Material_setMode,
"Material mode bitmask",
NULL},
+ {"shadeMode",
+ (getter)Material_getShadeMode, (setter)Material_setShadeMode,
+ "Material shade mode bitmask",
+ NULL},
{"nFlares",
(getter)Material_getNFlares, (setter)Material_setNFlares,
"Number of subflares with halo",
@@ -1495,6 +1518,11 @@
return PyInt_FromLong( ( long ) self->material->mode );
}
+static PyObject *Material_getShadeMode( BPy_Material * self )
+{
+ return PyInt_FromLong( ( long ) self->material->shade_flag );
+}
+
static PyObject *Material_getRGBCol( BPy_Material * self )
{
return rgbTuple_getCol( self->col );
@@ -1970,6 +1998,24 @@
return 0;
}
+static int Material_setShadeMode( BPy_Material * self, PyObject * value )
+{
+ int param;
+
+ if( !PyInt_Check( value ) ) {
+ char errstr[128];
+ sprintf ( errstr , "expected int bitmask of 0x%08x", (MA_CUBIC | MA_OBCOLOR) );
+ return EXPP_ReturnIntError( PyExc_TypeError, errstr );
+ }
+ param = PyInt_AS_LONG ( value );
+ if ( ( param & (MA_CUBIC | MA_OBCOLOR) ) != param )
+ return EXPP_ReturnIntError( PyExc_ValueError,
+ "invalid bit(s) set in mask" );
+ self->material->shade_flag |= param;
+
+ return 0;
+}
+
static int Material_setRGBCol( BPy_Material * self, PyObject * value )
{
return rgbTuple_setCol( self->col, value );
@@ -3476,4 +3522,3 @@
return EXPP_setIValueClamped(value, &self->material->rampin_spec,
MA_RAMP_IN_SHADER, MA_RAMP_IN_RESULT, 'b');
}
-
Modified: trunk/blender/source/blender/python/api2_2x/doc/Material.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Material.py 2009-05-28 13:44:32 UTC (rev 20474)
+++ trunk/blender/source/blender/python/api2_2x/doc/Material.py 2009-05-28 14:01:10 UTC (rev 20475)
@@ -69,6 +69,11 @@
- NMAP_TS - Tangent space normal mapping.
- GROUP_EXCLUSIVE - Light from this group even if the lights are on a hidden Layer.
+ at type ShadeModes: readonly dictionary
+ at var ShadeModes: The available Material Shade Modes.
+ - CUBIC - Use cubic interpolation of diffuse values, for smoother transitions.
+ - OBCOLOR - Modulate result with a per object color.
+
@type Shaders: readonly dictionary
@var Shaders: The available Material Shaders.
- DIFFUSE_LAMBERT - Make Material use the lambert diffuse shader.
@@ -246,6 +251,8 @@
@ivar mode: Mode mode bitfield. See L{the Modes dictionary<Modes>} keys and descriptions.
@type mode: int
+ @ivar shadeMode: Shade mode bitfield. See L{the ShadeModes dictionary<ShadeModes>} keys and descriptions.
+ @type shadeMode: int
@ivar nFlares: Number of subflares with halo.
Value is clamped to the range [1,32].
@type nFlares: int
More information about the Bf-blender-cvs
mailing list