static PyObject *Freestyle_blendRamp(PyObject *self, PyObject *args) { PyObject *obj1, *obj2; char *s; int type; float a[3], fac, b[3]; if (!PyArg_ParseTuple(args, "sOfO", &s, &obj1, &fac, &obj2)) return NULL; type = ramp_blend_type(s); if (type < 0) { PyErr_SetString(PyExc_TypeError, "argument 1 is an unknown ramp blend type"); return NULL; } if (!float_array_from_PyObject(obj1, a, 3)) { PyErr_SetString(PyExc_TypeError, "argument 2 must be a 3D vector (either a tuple/list of 3 elements or Vector)"); return NULL; } if (!float_array_from_PyObject(obj2, b, 3)) { PyErr_SetString(PyExc_TypeError, "argument 4 must be a 3D vector (either a tuple/list of 3 elements or Vector)"); return NULL; } ramp_blend(type, a, fac, b); return Vector_CreatePyObject(a, 3, Py_NEW, NULL); }
static int SVertex_point_2d_set(BPy_SVertex *self, PyObject *value, void *UNUSED(closure)) { float v[3]; if (!float_array_from_PyObject(value, v, 3)) { PyErr_SetString(PyExc_ValueError, "value must be a 3-dimensional vector"); return -1; } Vec3r p(v[0], v[1], v[2]); self->sv->setPoint2D(p); return 0; }
static int convert_v3(PyObject *obj, void *v) { return float_array_from_PyObject(obj, (float *)v, 3); }