[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