[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54280] branches/soc-2008-mxcurioni: Freestyle Python API improvements - part 2.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sun Feb 3 18:01:21 CET 2013


Revision: 54280
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54280
Author:   kjym3
Date:     2013-02-03 17:01:21 +0000 (Sun, 03 Feb 2013)
Log Message:
-----------
Freestyle Python API improvements - part 2.

The API syntax of FrsMaterial was updated by means of getter/setter properties.
Python style modules (including the Parameter Editor) were updated accordingly.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_FrsMaterial.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_FrsMaterial.h

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py	2013-02-03 15:38:06 UTC (rev 54279)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py	2013-02-03 17:01:21 UTC (rev 54280)
@@ -365,13 +365,13 @@
     while not it.isEnd():
         material = func(it.castToInterface0DIterator())
         if material_attr == "DIFF":
-            color = (material.diffuseR(),
-                     material.diffuseG(),
-                     material.diffuseB())
+            color = (material.diffuse[0],
+                     material.diffuse[1],
+                     material.diffuse[2])
         elif material_attr == "SPEC":
-            color = (material.specularR(),
-                     material.specularG(),
-                     material.specularB())
+            color = (material.specular[0],
+                     material.specular[1],
+                     material.specular[2])
         else:
             raise ValueError("unexpected material attribute: " + material_attr)
         yield it, color
@@ -383,31 +383,31 @@
     while not it.isEnd():
         material = func(it.castToInterface0DIterator())
         if material_attr == "DIFF":
-            r = material.diffuseR()
-            g = material.diffuseG()
-            b = material.diffuseB()
+            r = material.diffuse[0]
+            g = material.diffuse[1]
+            b = material.diffuse[2]
             t = 0.35 * r + 0.45 * r + 0.2 * b
         elif material_attr == "DIFF_R":
-            t = material.diffuseR()
+            t = material.diffuse[0]
         elif material_attr == "DIFF_G":
-            t = material.diffuseG()
+            t = material.diffuse[1]
         elif material_attr == "DIFF_B":
-            t = material.diffuseB()
+            t = material.diffuse[2]
         elif material_attr == "SPEC":
-            r = material.specularR()
-            g = material.specularG()
-            b = material.specularB()
+            r = material.specular[0]
+            g = material.specular[1]
+            b = material.specular[2]
             t = 0.35 * r + 0.45 * r + 0.2 * b
         elif material_attr == "SPEC_R":
-            t = material.specularR()
+            t = material.specular[0]
         elif material_attr == "SPEC_G":
-            t = material.specularG()
+            t = material.specular[1]
         elif material_attr == "SPEC_B":
-            t = material.specularB()
+            t = material.specular[2]
         elif material_attr == "SPEC_HARDNESS":
             t = material.shininess()
         elif material_attr == "ALPHA":
-            t = material.diffuseA()
+            t = material.diffuse[3]
         else:
             raise ValueError("unexpected material attribute: " + material_attr)
         yield it, t

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py	2013-02-03 15:38:06 UTC (rev 54279)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py	2013-02-03 17:01:21 UTC (rev 54280)
@@ -459,9 +459,9 @@
 			toto = it.castToInterface0DIterator()
 			mat = func(toto)
 			
-			r = mat.diffuseR()
-			g = mat.diffuseG()
-			b = mat.diffuseB()
+			r = mat.diffuse[0]
+			g = mat.diffuse[1]
+			b = mat.diffuse[2]
 
 			X = 0.412453*r + 0.35758 *g + 0.180423*b
 			Y = 0.212671*r + 0.71516 *g + 0.072169*b

Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_FrsMaterial.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_FrsMaterial.cpp	2013-02-03 15:38:06 UTC (rev 54279)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_FrsMaterial.cpp	2013-02-03 17:01:21 UTC (rev 54280)
@@ -6,6 +6,8 @@
 extern "C" {
 #endif
 
+#include "BLI_math.h"
+
 ///////////////////////////////////////////////////////////////////////////////////////////
 
 //-------------------MODULE INITIALIZATION--------------------------------
@@ -19,6 +21,8 @@
 
 	Py_INCREF( &FrsMaterial_Type );
 	PyModule_AddObject(module, "Material", (PyObject *)&FrsMaterial_Type);
+
+	FrsMaterial_mathutils_register_callback();
 	return 0;
 }
 
@@ -115,438 +119,281 @@
     return PyUnicode_FromFormat("Material - address: %p", self->m );
 }
 
-static char FrsMaterial_diffuse___doc__[] =
-".. method:: diffuse()\n"
-"\n"
-"   Returns the diffuse color.\n"
-"\n"
-"   :return: The diffuse color.\n"
-"   :rtype: Tuple of 4 float values\n";
+/*----------------------FrsMaterial instance definitions ----------------------------*/
+static PyMethodDef BPy_FrsMaterial_methods[] = {
+	{NULL, NULL, 0, NULL}
+};
 
-static PyObject * FrsMaterial_diffuse( BPy_FrsMaterial* self) {
-	const float *diffuse = self->m->diffuse();
-	PyObject *py_diffuse = PyTuple_New(4);
-	
-	PyTuple_SetItem( py_diffuse, 0, PyFloat_FromDouble( diffuse[0] ) );
-	PyTuple_SetItem( py_diffuse, 1, PyFloat_FromDouble( diffuse[1] ) );
-	PyTuple_SetItem( py_diffuse, 2, PyFloat_FromDouble( diffuse[2] ) );
-	PyTuple_SetItem( py_diffuse, 3, PyFloat_FromDouble( diffuse[3] ) );
-	
-	return py_diffuse;
-}
+/*----------------------mathutils callbacks ----------------------------*/
 
-static char FrsMaterial_diffuseR___doc__[] =
-".. method:: diffuseR()\n"
-"\n"
-"   Returns the red component of the diffuse color.\n"
-"\n"
-"   :return: The red component of the diffuse color.\n"
-"   :rtype: float\n";
+/* subtype */
+#define MATHUTILS_SUBTYPE_DIFFUSE   1
+#define MATHUTILS_SUBTYPE_SPECULAR  2
+#define MATHUTILS_SUBTYPE_AMBIENT   3
+#define MATHUTILS_SUBTYPE_EMISSION  4
 
-static PyObject * FrsMaterial_diffuseR( BPy_FrsMaterial* self) {
-	return PyFloat_FromDouble( self->m->diffuseR() );
+static int FrsMaterial_mathutils_check(BaseMathObject *bmo)
+{
+	if (!BPy_FrsMaterial_Check(bmo->cb_user))
+		return -1;
+	return 0;
 }
 
-static char FrsMaterial_diffuseG___doc__[] =
-".. method:: diffuseG()\n"
-"\n"
-"   Returns the green component of the diffuse color.\n"
-"\n"
-"   :return: The green component of the diffuse color.\n"
-"   :rtype: float\n";
-
-static PyObject * FrsMaterial_diffuseG( BPy_FrsMaterial* self) {
-	return PyFloat_FromDouble( self->m->diffuseG() );
+static int FrsMaterial_mathutils_get(BaseMathObject *bmo, int subtype)
+{
+	BPy_FrsMaterial *self = (BPy_FrsMaterial *)bmo->cb_user;
+	switch (subtype) {
+	case MATHUTILS_SUBTYPE_DIFFUSE:
+		bmo->data[0] = self->m->diffuseR();
+		bmo->data[1] = self->m->diffuseG();
+		bmo->data[2] = self->m->diffuseB();
+		bmo->data[3] = self->m->diffuseA();
+		break;
+	case MATHUTILS_SUBTYPE_SPECULAR:
+		bmo->data[0] = self->m->specularR();
+		bmo->data[1] = self->m->specularG();
+		bmo->data[2] = self->m->specularB();
+		bmo->data[3] = self->m->specularA();
+		break;
+	case MATHUTILS_SUBTYPE_AMBIENT:
+		bmo->data[0] = self->m->ambientR();
+		bmo->data[1] = self->m->ambientG();
+		bmo->data[2] = self->m->ambientB();
+		bmo->data[3] = self->m->ambientA();
+		break;
+	case MATHUTILS_SUBTYPE_EMISSION:
+		bmo->data[0] = self->m->emissionR();
+		bmo->data[1] = self->m->emissionG();
+		bmo->data[2] = self->m->emissionB();
+		bmo->data[3] = self->m->emissionA();
+		break;
+	default:
+		return -1;
+	}
+	return 0;
 }
 
-static char FrsMaterial_diffuseB___doc__[] =
-".. method:: diffuseB()\n"
-"\n"
-"   Returns the blue component of the diffuse color.\n"
-"\n"
-"   :return: The blue component of the diffuse color.\n"
-"   :rtype: float\n";
-
-static PyObject * FrsMaterial_diffuseB( BPy_FrsMaterial* self) {
-	return PyFloat_FromDouble( self->m->diffuseB() );
+static int FrsMaterial_mathutils_set(BaseMathObject *bmo, int subtype)
+{
+	BPy_FrsMaterial *self = (BPy_FrsMaterial *)bmo->cb_user;
+	switch (subtype) {
+	case MATHUTILS_SUBTYPE_DIFFUSE:
+		self->m->setDiffuse(bmo->data[0], bmo->data[1], bmo->data[2], bmo->data[3]);
+		break;
+	case MATHUTILS_SUBTYPE_SPECULAR:
+		self->m->setSpecular(bmo->data[0], bmo->data[1], bmo->data[2], bmo->data[3]);
+		break;
+	case MATHUTILS_SUBTYPE_AMBIENT:
+		self->m->setAmbient(bmo->data[0], bmo->data[1], bmo->data[2], bmo->data[3]);
+		break;
+	case MATHUTILS_SUBTYPE_EMISSION:
+		self->m->setEmission(bmo->data[0], bmo->data[1], bmo->data[2], bmo->data[3]);
+		break;
+	default:
+		return -1;
+	}
+	return 0;
 }
 
-static char FrsMaterial_diffuseA___doc__[] =
-".. method:: diffuseA()\n"
-"\n"
-"   Returns the alpha component of the diffuse color.\n"
-"\n"
-"   :return: The alpha component of the diffuse color.\n"
-"   :rtype: float\n";
-
-static PyObject * FrsMaterial_diffuseA( BPy_FrsMaterial* self) {
-	return PyFloat_FromDouble( self->m->diffuseA() );
+static int FrsMaterial_mathutils_get_index(BaseMathObject *bmo, int subtype, int index)
+{
+	BPy_FrsMaterial *self = (BPy_FrsMaterial *)bmo->cb_user;
+	switch (subtype) {
+	case MATHUTILS_SUBTYPE_DIFFUSE:
+		{
+			const float *color = self->m->diffuse();
+			bmo->data[index] = color[index];
+		}
+		break;
+	case MATHUTILS_SUBTYPE_SPECULAR:
+		{
+			const float *color = self->m->specular();
+			bmo->data[index] = color[index];
+		}
+		break;
+	case MATHUTILS_SUBTYPE_AMBIENT:
+		{
+			const float *color = self->m->ambient();
+			bmo->data[index] = color[index];
+		}
+		break;
+	case MATHUTILS_SUBTYPE_EMISSION:
+		{
+			const float *color = self->m->emission();
+			bmo->data[index] = color[index];
+		}
+		break;
+	default:
+		return -1;
+	}
+	return 0;
 }
 
-static char FrsMaterial_specular___doc__[] =
-".. method:: specular()\n"
-"\n"
-"   Returns the specular color.\n"
-"\n"
-"   :return: The specular color.\n"
-"   :rtype: Tuple of 4 float values\n";
-
-static PyObject * FrsMaterial_specular( BPy_FrsMaterial* self) {
-	const float *specular = self->m->specular();
-	PyObject *py_specular = PyTuple_New(4);
-	
-	PyTuple_SetItem( py_specular, 0, PyFloat_FromDouble( specular[0] ) );
-	PyTuple_SetItem( py_specular, 1, PyFloat_FromDouble( specular[1] ) );
-	PyTuple_SetItem( py_specular, 2, PyFloat_FromDouble( specular[2] ) );
-	PyTuple_SetItem( py_specular, 3, PyFloat_FromDouble( specular[3] ) );
-	
-	return py_specular;
+static int FrsMaterial_mathutils_set_index(BaseMathObject *bmo, int subtype, int index)
+{
+	BPy_FrsMaterial *self = (BPy_FrsMaterial *)bmo->cb_user;

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list