static PyObject *Color_div(PyObject *v1, PyObject *v2) { ColorObject *color1 = NULL; float scalar; if (ColorObject_Check(v1)) { color1 = (ColorObject *)v1; if (BaseMath_ReadCallback(color1) == -1) return NULL; } else { PyErr_SetString(PyExc_TypeError, "Color division not supported in this order"); return NULL; } /* make sure v1 is always the vector */ if (((scalar = PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred()) == 0) { /* COLOR * FLOAT */ if (scalar == 0.0f) { PyErr_SetString(PyExc_ZeroDivisionError, "Color division: divide by zero error"); return NULL; } return color_mul_float(color1, 1.0f / scalar); } PyErr_Format(PyExc_TypeError, "Color multiplication: not supported between " "'%.200s' and '%.200s' types", Py_TYPE(v1)->tp_name, Py_TYPE(v2)->tp_name); return NULL; }
static PyObject *Color_mul(PyObject *v1, PyObject *v2) { ColorObject *color1 = NULL, *color2 = NULL; float scalar; if ColorObject_Check(v1) { color1= (ColorObject *)v1; if (BaseMath_ReadCallback(color1) == -1) return NULL; } if ColorObject_Check(v2) { color2= (ColorObject *)v2; if (BaseMath_ReadCallback(color2) == -1) return NULL; } /* make sure v1 is always the vector */ if (color1 && color2) { /* col * col, dont support yet! */ } else if (color1) { if (((scalar= PyFloat_AsDouble(v2)) == -1.0f && PyErr_Occurred())==0) { /* COLOR * FLOAT */ return color_mul_float(color1, scalar); } } else if (color2) { if (((scalar= PyFloat_AsDouble(v1)) == -1.0f && PyErr_Occurred())==0) { /* FLOAT * COLOR */ return color_mul_float(color2, scalar); } } else { BLI_assert(!"internal error"); } PyErr_Format(PyExc_TypeError, "Color multiplication: not supported between " "'%.200s' and '%.200s' types", Py_TYPE(v1)->tp_name, Py_TYPE(v2)->tp_name); return NULL; }