[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