[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [61070] trunk/blender/source/blender/ freestyle/intern/python/BPy_Convert.cpp: Fix for missing calls of BaseMath_ReadCallback() when accessing vector/ color elements.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sun Nov 3 15:24:02 CET 2013


Revision: 61070
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=61070
Author:   kjym3
Date:     2013-11-03 14:24:02 +0000 (Sun, 03 Nov 2013)
Log Message:
-----------
Fix for missing calls of BaseMath_ReadCallback() when accessing vector/color elements.
This bug was causing wrong color blending results in Freestyle color modifiers.
Problem report from Light BWK through personal communications, thanks!

Modified Paths:
--------------
    trunk/blender/source/blender/freestyle/intern/python/BPy_Convert.cpp

Modified: trunk/blender/source/blender/freestyle/intern/python/BPy_Convert.cpp
===================================================================
--- trunk/blender/source/blender/freestyle/intern/python/BPy_Convert.cpp	2013-11-03 14:09:44 UTC (rev 61069)
+++ trunk/blender/source/blender/freestyle/intern/python/BPy_Convert.cpp	2013-11-03 14:24:02 UTC (rev 61070)
@@ -556,6 +556,8 @@
 {
 	if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 2)
 		return NULL;
+	if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+		return NULL;
 	float x = ((VectorObject *)obj)->vec[0];
 	float y = ((VectorObject *)obj)->vec[1];
 	return new Vec2f(x, y);
@@ -565,6 +567,8 @@
 {
 	if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3)
 		return NULL;
+	if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+		return NULL;
 	float x = ((VectorObject *)obj)->vec[0];
 	float y = ((VectorObject *)obj)->vec[1];
 	float z = ((VectorObject *)obj)->vec[2];
@@ -575,6 +579,8 @@
 {
 	if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3)
 		return NULL;
+	if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+		return NULL;
 	real x = ((VectorObject *)obj)->vec[0];
 	real y = ((VectorObject *)obj)->vec[1];
 	real z = ((VectorObject *)obj)->vec[2];
@@ -585,6 +591,8 @@
 {
 	if (!ColorObject_Check(obj))
 		return NULL;
+	if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+		return NULL;
 	float r = ((ColorObject *)obj)->col[0];
 	float g = ((ColorObject *)obj)->col[1];
 	float b = ((ColorObject *)obj)->col[2];
@@ -595,6 +603,8 @@
 {
 	if (!ColorObject_Check(obj))
 		return NULL;
+	if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+		return NULL;
 	real r = ((ColorObject *)obj)->col[0];
 	real g = ((ColorObject *)obj)->col[1];
 	real b = ((ColorObject *)obj)->col[2];
@@ -696,10 +706,19 @@
 int float_array_from_PyObject(PyObject *obj, float *v, int n)
 {
 	if (VectorObject_Check(obj) && ((VectorObject *)obj)->size == n) {
+		if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+			return 0;
 		for (int i = 0; i < n; i++)
 			v[i] = ((VectorObject *)obj)->vec[i];
 		return 1;
 	}
+	else if (ColorObject_Check(obj) && n == 3) {
+		if (BaseMath_ReadCallback((BaseMathObject *)obj) == -1)
+			return 0;
+		for (int i = 0; i < n; i++)
+			v[i] = ((ColorObject *)obj)->col[i];
+		return 1;
+	}
 	else if (PyList_Check(obj) && PyList_Size(obj) == n) {
 		return float_array_from_PyList(obj, v, n);
 	}




More information about the Bf-blender-cvs mailing list