diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-01-03 01:47:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-01-03 01:47:56 +0300 |
commit | e7d863cee530d477f0aa494a4f0f9e70ac5012c7 (patch) | |
tree | 43bbd414b707a62424eb1863bdcc1724b2bd9332 /source/blender/python/generic | |
parent | cf7b19c0bab463a70ce5e364712ab61f6b11e336 (diff) |
editbone.transform(matrix) function, requested by Cessen.
Also added matrix.median_scale attribute to get the average scale from the matrix, use for scaling bone envalopes.
Diffstat (limited to 'source/blender/python/generic')
-rw-r--r-- | source/blender/python/generic/euler.c | 2 | ||||
-rw-r--r-- | source/blender/python/generic/matrix.c | 25 | ||||
-rw-r--r-- | source/blender/python/generic/quat.c | 2 | ||||
-rw-r--r-- | source/blender/python/generic/vector.c | 2 |
4 files changed, 26 insertions, 5 deletions
diff --git a/source/blender/python/generic/euler.c b/source/blender/python/generic/euler.c index f6f2e337211..ae7a6783358 100644 --- a/source/blender/python/generic/euler.c +++ b/source/blender/python/generic/euler.c @@ -541,7 +541,7 @@ static PyGetSetDef Euler_getseters[] = { {"z", (getter)Euler_getAxis, (setter)Euler_setAxis, "Euler Z axis", (void *)2}, {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, "True when this wraps blenders internal data", NULL}, - {"__owner__", (getter)BaseMathObject_getOwner, (setter)NULL, "Read only owner for vectors that depend on another object", NULL}, + {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, "Read only owner for vectors that depend on another object", NULL}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ }; diff --git a/source/blender/python/generic/matrix.c b/source/blender/python/generic/matrix.c index dcd1057f881..074a397b6d9 100644 --- a/source/blender/python/generic/matrix.c +++ b/source/blender/python/generic/matrix.c @@ -1129,12 +1129,33 @@ static PyObject *Matrix_getColSize( MatrixObject * self, void *type ) return PyLong_FromLong((long) self->colSize); } +static PyObject *Matrix_getMedianScale( MatrixObject * self, void *type ) +{ + float mat[3][3]; + + if(!BaseMath_ReadCallback(self)) + return NULL; + + /*must be 3-4 cols, 3-4 rows, square matrix*/ + if(self->colSize == 4 && self->rowSize == 4) + copy_m3_m4(mat, (float (*)[4])*self->matrix); + else if(self->colSize == 3 && self->rowSize == 3) + copy_m3_m3(mat, (float (*)[3])*self->matrix); + else { + PyErr_SetString(PyExc_AttributeError, "Matrix.median_scale: inappropriate matrix size - expects 3x3 or 4x4 matrix\n"); + return NULL; + } + + return PyFloat_FromDouble(mat3_to_scale(mat)); +} + /*****************************************************************************/ /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef Matrix_getseters[] = { - {"rowSize", (getter)Matrix_getRowSize, (setter)NULL, "", NULL}, - {"colSize", (getter)Matrix_getColSize, (setter)NULL, "", NULL}, + {"row_size", (getter)Matrix_getRowSize, (setter)NULL, "", NULL}, + {"col_size", (getter)Matrix_getColSize, (setter)NULL, "", NULL}, + {"median_scale", (getter)Matrix_getMedianScale, (setter)NULL, "", NULL}, {"wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, "", NULL}, {"_owner",(getter)BaseMathObject_getOwner, (setter)NULL, "", NULL}, diff --git a/source/blender/python/generic/quat.c b/source/blender/python/generic/quat.c index 2ee78235224..e739e1a5036 100644 --- a/source/blender/python/generic/quat.c +++ b/source/blender/python/generic/quat.c @@ -739,7 +739,7 @@ static PyGetSetDef Quaternion_getseters[] = { (getter)BaseMathObject_getWrapped, (setter)NULL, "True when this wraps blenders internal data", NULL}, - {"__owner__", + {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, "Read only owner for vectors that depend on another object", NULL}, diff --git a/source/blender/python/generic/vector.c b/source/blender/python/generic/vector.c index ae2c96fa86a..0713d60c6c2 100644 --- a/source/blender/python/generic/vector.c +++ b/source/blender/python/generic/vector.c @@ -1421,7 +1421,7 @@ static PyGetSetDef Vector_getseters[] = { (getter)BaseMathObject_getWrapped, (setter)NULL, "True when this wraps blenders internal data", NULL}, - {"__owner__", + {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, "Read only owner for vectors that depend on another object", NULL}, |