[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