[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16481] trunk/blender/source/blender/ python/api2_2x: Python API

Ken Hughes khughes at pacific.edu
Fri Sep 12 07:02:07 CEST 2008


Revision: 16481
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16481
Author:   khughes
Date:     2008-09-12 07:02:06 +0200 (Fri, 12 Sep 2008)

Log Message:
-----------
Python API
----------
Patch #17481: added Material attributes for missing colorbands controls:
 * material.colorbandDiffuseInput
 * material.colorbandDiffuseMethod
 * material.colorbandDiffuseFactor
 * material.colorbandSpecularInput
 * material.colorbandSpecularMethod
 * material.colorbandSpecularFactor

Contributed by Emilio Jos?\195?\169 Encinas Mir (asfhy).  Thanks!

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	2008-09-12 02:23:52 UTC (rev 16480)
+++ trunk/blender/source/blender/python/api2_2x/Material.c	2008-09-12 05:02:06 UTC (rev 16481)
@@ -155,6 +155,8 @@
 #define EXPP_MAT_SPECTRANS_MAX				1.0
 #define EXPP_MAT_MIRRTRANSADD_MIN			0.0
 #define EXPP_MAT_MIRRTRANSADD_MAX			1.0
+#define EXPP_MAT_COLORBAND_FACTOR_MIN		0.0
+#define EXPP_MAT_COLORBAND_FACTOR_MAX		1.0
 
 /* closure values for getColorComponent()/setColorComponent() */
 
@@ -403,19 +405,62 @@
 	return Shaders;
 }
 
+static PyObject *Material_ColorRampMethodsDict( void )
+{
+	PyObject *Methods = PyConstant_New(  );
+	if( Methods ) {
+		BPy_constant *c = (BPy_constant * ) Methods;
 
+		PyConstant_Insert(c, "BLEND", PyInt_FromLong(MA_RAMP_BLEND));
+		PyConstant_Insert(c, "MIX", PyInt_FromLong(MA_RAMP_BLEND)); /* This one is added to solve confusion between Blend-Mix name. */
+		PyConstant_Insert(c, "ADD", PyInt_FromLong(MA_RAMP_ADD));
+		PyConstant_Insert(c, "MULT", PyInt_FromLong(MA_RAMP_MULT));
+		PyConstant_Insert(c, "SUB", PyInt_FromLong(MA_RAMP_SUB));
+		PyConstant_Insert(c, "SCREEN", PyInt_FromLong(MA_RAMP_SCREEN));
+		PyConstant_Insert(c, "DIV", PyInt_FromLong(MA_RAMP_DIV));
+		PyConstant_Insert(c, "DIFF", PyInt_FromLong(MA_RAMP_DIFF));
+		PyConstant_Insert(c, "DARK", PyInt_FromLong(MA_RAMP_DARK));
+		PyConstant_Insert(c, "LIGHT", PyInt_FromLong(MA_RAMP_LIGHT));
+		PyConstant_Insert(c, "OVERLAY", PyInt_FromLong(MA_RAMP_OVERLAY));
+		PyConstant_Insert(c, "DODGE", PyInt_FromLong(MA_RAMP_DODGE));
+		PyConstant_Insert(c, "BURN", PyInt_FromLong(MA_RAMP_BURN));
+		PyConstant_Insert(c, "HUE", PyInt_FromLong(MA_RAMP_HUE));
+		PyConstant_Insert(c, "SAT", PyInt_FromLong(MA_RAMP_SAT));
+		PyConstant_Insert(c, "VAL", PyInt_FromLong(MA_RAMP_VAL));
+		PyConstant_Insert(c, "COLOR", PyInt_FromLong(MA_RAMP_COLOR));
+
+	}
+	return Methods;
+}
+
+static PyObject *Material_ColorRampInputDict( void )
+{
+	PyObject *Inputs = PyConstant_New(  );
+	if( Inputs ) {
+		BPy_constant *c = (BPy_constant * ) Inputs;
+
+		PyConstant_Insert(c, "SHADER", PyInt_FromLong(MA_RAMP_IN_SHADER));
+		PyConstant_Insert(c, "ENERGY", PyInt_FromLong(MA_RAMP_IN_ENERGY));
+		PyConstant_Insert(c, "NORMAL", PyInt_FromLong(MA_RAMP_IN_NOR));
+		PyConstant_Insert(c, "RESULT", PyInt_FromLong(MA_RAMP_IN_RESULT));
+	}
+	return Inputs;
+}
+
 /*****************************************************************************/
 /* Function:	Material_Init */
 /*****************************************************************************/
 PyObject *Material_Init( void )
 {
-	PyObject *submodule, *Modes, *Shaders;
+	PyObject *submodule, *Modes, *Shaders, *ColorbandInput, *ColorbandMethod;
 
 	if( PyType_Ready( &Material_Type ) < 0)
 		return NULL;
 
 	Modes = Material_ModesDict(  );
 	Shaders = Material_ShadersDict(  );
+	ColorbandMethod = Material_ColorRampMethodsDict(  );
+	ColorbandInput = Material_ColorRampInputDict(  );
 
 	submodule = Py_InitModule3( "Blender.Material",
 				    M_Material_methods, M_Material_doc );
@@ -424,6 +469,10 @@
 		PyModule_AddObject( submodule, "Modes", Modes );
 	if( Shaders )
 		PyModule_AddObject( submodule, "Shaders", Shaders );
+	if( ColorbandMethod )
+		PyModule_AddObject( submodule, "ColorbandMethod", ColorbandMethod );
+	if( ColorbandInput )
+		PyModule_AddObject( submodule, "ColorbandInput", ColorbandInput );
 	
 	PyModule_AddIntConstant( submodule, "RGB", IPOKEY_RGB );
 	PyModule_AddIntConstant( submodule, "ALPHA", IPOKEY_ALPHA );
@@ -652,6 +701,21 @@
 static PyObject *Material_copy( BPy_Material * self );
 static PyObject *Material_freeNodes( BPy_Material * self );
 
+static PyObject *Material_getColorbandDiffuseFactor( BPy_Material * self );
+static PyObject *Material_getColorbandSpecularFactor( BPy_Material * self );
+static int Material_setColorbandDiffuseFactor ( BPy_Material * self, PyObject * value );
+static int Material_setColorbandSpecularFactor ( BPy_Material * self, PyObject * value );
+static PyObject *Material_getColorbandDiffuseMethod( BPy_Material * self );
+static PyObject *Material_getColorbandSpecularMethod ( BPy_Material * self );
+static int Material_setColorbandDiffuseMethod ( BPy_Material * self, PyObject * value);
+static int Material_setColorbandSpecularMethod ( BPy_Material * self, PyObject * value);
+static PyObject *Material_getColorbandDiffuseInput( BPy_Material * self );
+static PyObject *Material_getColorbandSpecularInput( BPy_Material * self );
+static int Material_setColorbandDiffuseInput ( BPy_Material * self, PyObject * value);
+static int Material_setColorbandSpecularInput ( BPy_Material * self, PyObject * value);
+
+
+
 /*****************************************************************************/
 /* Python BPy_Material methods table: */
 /*****************************************************************************/
@@ -1176,7 +1240,31 @@
 	 (getter)Material_getTextures, (setter)Material_setTextures,
 	 "The Material's texture list as a tuple",
 	 NULL},
-	
+	{"colorbandSpecularFactor",
+	 (getter)Material_getColorbandSpecularFactor, (setter)Material_setColorbandSpecularFactor,
+	 "The specular colorband factor for this material",
+	 NULL},
+	{"colorbandSpecularMethod",
+	 (getter)Material_getColorbandSpecularMethod, (setter)Material_setColorbandSpecularMethod,
+	 "The specular colorband method for this material",
+	 NULL},
+	{"colorbandSpecularInput",
+	 (getter)Material_getColorbandSpecularInput, (setter)Material_setColorbandSpecularInput,
+	 "The specular colorband input for this material",
+	 NULL},
+	{"colorbandDiffuseFactor",
+	 (getter)Material_getColorbandDiffuseFactor, (setter)Material_setColorbandDiffuseFactor,
+	 "The diffuse colorband factor for this material",
+	 NULL},
+	{"colorbandDiffuseMethod",
+	 (getter)Material_getColorbandDiffuseMethod, (setter)Material_setColorbandDiffuseMethod,
+	 "The diffuse colorband method for this material",
+	 NULL},
+	{"colorbandDiffuseInput",
+	 (getter)Material_getColorbandDiffuseInput, (setter)Material_setColorbandDiffuseInput,
+	 "The diffuse colorband input for this material",
+	 NULL},
+
 	/* SSS settings */
 	{"enableSSS",
 	 (getter)Material_getSssEnable, (setter)Material_setSssEnable,
@@ -3312,3 +3400,75 @@
 	return EXPP_incr_ret_False(); /* no ipo found */
 }
 
+/* RampCol Factor */
+
+static PyObject *Material_getColorbandDiffuseFactor( BPy_Material * self )
+{
+	return PyFloat_FromDouble( (double) self->material->rampfac_col);
+}
+
+static PyObject *Material_getColorbandSpecularFactor( BPy_Material * self )
+{
+	return PyFloat_FromDouble( (double) self->material->rampfac_spec);
+}
+
+static int Material_setColorbandDiffuseFactor ( BPy_Material * self, PyObject * value )
+{
+	return EXPP_setFloatClamped(value, &self->material->rampfac_col,
+			EXPP_MAT_COLORBAND_FACTOR_MIN, EXPP_MAT_COLORBAND_FACTOR_MAX);
+}
+
+static int Material_setColorbandSpecularFactor ( BPy_Material * self, PyObject * value )
+{
+	return EXPP_setFloatClamped(value, &self->material->rampfac_spec,
+			EXPP_MAT_COLORBAND_FACTOR_MIN, EXPP_MAT_COLORBAND_FACTOR_MAX);
+}
+
+/* RampCol Method */
+
+static PyObject *Material_getColorbandDiffuseMethod( BPy_Material * self )
+{
+	return PyInt_FromLong( (long) self->material->rampblend_col);
+}
+
+static PyObject *Material_getColorbandSpecularMethod ( BPy_Material * self )
+{
+	return PyInt_FromLong( (long) self->material->rampblend_spec);
+}
+
+static int Material_setColorbandDiffuseMethod ( BPy_Material * self, PyObject * value)
+{
+	return EXPP_setIValueClamped(value, &self->material->rampblend_col,
+			MA_RAMP_BLEND, MA_RAMP_COLOR, 'b');
+}
+
+static int Material_setColorbandSpecularMethod ( BPy_Material * self, PyObject * value)
+{
+	return EXPP_setIValueClamped(value, &self->material->rampblend_spec,
+			MA_RAMP_BLEND, MA_RAMP_COLOR, 'b');
+}
+
+/* RampCol Input */
+
+static PyObject *Material_getColorbandDiffuseInput( BPy_Material * self )
+{
+	return PyInt_FromLong( (long) self->material->rampin_col);
+}
+
+static PyObject *Material_getColorbandSpecularInput( BPy_Material * self )
+{
+	return PyInt_FromLong( (long) self->material->rampin_spec);
+}
+
+static int Material_setColorbandDiffuseInput ( BPy_Material * self, PyObject * value)
+{
+	return EXPP_setIValueClamped(value, &self->material->rampin_col,
+			MA_RAMP_IN_SHADER, MA_RAMP_IN_RESULT, 'b');
+}
+
+static int Material_setColorbandSpecularInput ( BPy_Material * self, PyObject * value)
+{
+	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	2008-09-12 02:23:52 UTC (rev 16480)
+++ trunk/blender/source/blender/python/api2_2x/doc/Material.py	2008-09-12 05:02:06 UTC (rev 16481)
@@ -80,6 +80,35 @@
 		- SPEC_BLINN         - Make Material use the Blinn specular shader.
 		- SPEC_TOON      - Make Material use the toon specular shader.
 		- SPEC_WARDISO      - Make Material use the Ward-iso specular shader.
+
+ at type ColorbandMethod: readonly dictionary
+ at var ColorbandMethod: The available Colorband mixing methods.
+		- ADD  - Make Material use the Add method.
+		- BLEND  - Make Material use the Blend/Mix method.
+		- BURN  - Make Material use the Burn method.
+		- COLOR  - Make Material use the Color method.
+		- DARK  - Make Material use the Darken method.
+		- DIFF  - Make Material use the Difference method.
+		- DIV  - Make Material use the Divide method.
+		- DODGE  - Make Material use the Dodge method.
+		- HUE  - Make Material use the Hue method.
+		- LIGHT  - Make Material use the Lighten method.
+		- MIX  - Make Material use the Blend/Mix method.
+		- MULT  - Make Material use the Multiply method.
+		- OVERLAY  - Make Material use the Overlay method.
+		- SAT  - Make Material use the Saturation method.
+		- SCREEN  - Make Material use the Screen method.
+		- SUB  - Make Material use the Substract method.
+		- VAL  - Make Material use the Value method.
+
+ at type ColorbandInput: readonly dictionary
+ at var ColorbandInput: The available Colorband Input sources.
+		- ENERGY  - Make Material use the Energy input.
+		- NORMAL  - Make Material use the Normal input.
+		- RESULT  - Make Material use the Result input.

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list