Skip to content
Snippets Groups Projects
Commit 7cc4d752 authored by Michel Selten's avatar Michel Selten
Browse files

Python API fixes. Provided by Anders Nilsson (breakin)

* Typo fixed in IpoCurve_getInterpolation.
  'Bonstant' was used, while 'Constant' is what we want.
* IpoCurve.getName now also returns curve names for action-IPOs.

* Update to the Object module:
  Added obj.getTimeOffset() and obj.setTimeOffset() methods

Anders Nilsson has promissed me to provide some updated Python API docs :)
parent 8e5fd5bb
Branches
Tags
No related merge requests found
...@@ -224,7 +224,7 @@ IpoCurve_getInterpolation (C_IpoCurve * self) ...@@ -224,7 +224,7 @@ IpoCurve_getInterpolation (C_IpoCurve * self)
if (icu->ipo == IPO_BEZ) if (icu->ipo == IPO_BEZ)
str = "Bezier"; str = "Bezier";
if (icu->ipo == IPO_CONST) if (icu->ipo == IPO_CONST)
str = "Bonstant"; str = "Constant";
if (icu->ipo == IPO_LIN) if (icu->ipo == IPO_LIN)
str = "Linear"; str = "Linear";
...@@ -341,27 +341,50 @@ IpoCurve_Recalc (C_IpoCurve * self) ...@@ -341,27 +341,50 @@ IpoCurve_Recalc (C_IpoCurve * self)
static PyObject * static PyObject *
IpoCurve_getName (C_IpoCurve * self) IpoCurve_getName (C_IpoCurve * self)
{ {
char *nametab[24] = const int objectType=self->ipocurve->blocktype;
{ "LocX", "LocY", "LocZ", "dLocX", "dLocY", "dLocZ", "RotX", "RotY", const int trackType=self->ipocurve->adrcode;
"RotZ", "dRotX", "dRotY", "dRotZ", "SizeX", "SizeY", "SizeZ", "dSizeX",
"dSizeY",
"dSizeZ", "Layer", "Time", "ColR", "ColG", "ColB", "ColA"
};
if (self->ipocurve->blocktype != ID_OB) const char * ob_nametab[24] = {"LocX","LocY","LocZ","dLocX","dLocY","dLocZ",
return EXPP_ReturnPyObjError (PyExc_TypeError, "RotX","RotY","RotZ","dRotX","dRotY","dRotZ","SizeX","SizeY","SizeZ",
"This function doesn't support this ipocurve type yet"); "dSizeX","dSizeY","dSizeZ","Layer","Time","ColR","ColG","ColB","ColA"};
// printf("IpoCurve_getName %d\n",self->ipocurve->vartype); const char * ac_nametab[5] = {"QuatW", "QuatX", "QuatY", "QuatZ","TotIpo"};
if (self->ipocurve->adrcode <= 0)
switch (objectType) {
case ID_OB: {
if (self->ipocurve->adrcode <= 0 ) {
return PyString_FromString("Index too small"); return PyString_FromString("Index too small");
if (self->ipocurve->adrcode >= 25) } else if (self->ipocurve->adrcode >= 25 ) {
return PyString_FromString("Index too big"); return PyString_FromString("Index too big");
} else {
return PyString_FromString (nametab[self->ipocurve->adrcode - 1]); return PyString_FromString(ob_nametab[trackType-1]);
} }
}
break;
case ID_AC: {
switch (trackType) {
case 1: case 2: case 3: case 13: case 14: case 15:
return PyString_FromString(ob_nametab[trackType-1]);
break;
case 25: case 26: case 27: case 28:
return PyString_FromString(ac_nametab[trackType-25]);
break;
case 10:
return PyString_FromString(ac_nametab[4]);
break;
default:
return PyString_FromString("Index out of range");
}
}
break;
default:
return EXPP_ReturnPyObjError (PyExc_TypeError,
"This function doesn't support this ipocurve type yet");
}
}
static void static void
IpoCurveDeAlloc (C_IpoCurve * self) IpoCurveDeAlloc (C_IpoCurve * self)
......
...@@ -102,6 +102,7 @@ static PyObject *Object_getMatrix (BPy_Object *self); ...@@ -102,6 +102,7 @@ static PyObject *Object_getMatrix (BPy_Object *self);
static PyObject *Object_getName (BPy_Object *self); static PyObject *Object_getName (BPy_Object *self);
static PyObject *Object_getParent (BPy_Object *self); static PyObject *Object_getParent (BPy_Object *self);
static PyObject *Object_getSize (BPy_Object *self, PyObject *args); static PyObject *Object_getSize (BPy_Object *self, PyObject *args);
static PyObject *Object_getTimeOffset (BPy_Object *self);
static PyObject *Object_getTracked (BPy_Object *self); static PyObject *Object_getTracked (BPy_Object *self);
static PyObject *Object_getType (BPy_Object *self); static PyObject *Object_getType (BPy_Object *self);
static PyObject *Object_getBoundBox (BPy_Object *self); static PyObject *Object_getBoundBox (BPy_Object *self);
...@@ -119,6 +120,7 @@ static PyObject *Object_setLocation (BPy_Object *self, PyObject *args); ...@@ -119,6 +120,7 @@ static PyObject *Object_setLocation (BPy_Object *self, PyObject *args);
static PyObject *Object_setMaterials (BPy_Object *self, PyObject *args); static PyObject *Object_setMaterials (BPy_Object *self, PyObject *args);
static PyObject *Object_setName (BPy_Object *self, PyObject *args); static PyObject *Object_setName (BPy_Object *self, PyObject *args);
static PyObject *Object_setSize (BPy_Object *self, PyObject *args); static PyObject *Object_setSize (BPy_Object *self, PyObject *args);
static PyObject *Object_setTimeOffset (BPy_Object *self, PyObject *args);
static PyObject *Object_shareFrom (BPy_Object *self, PyObject *args); static PyObject *Object_shareFrom (BPy_Object *self, PyObject *args);
/*****************************************************************************/ /*****************************************************************************/
...@@ -159,6 +161,8 @@ hierarchy (faster)"}, ...@@ -159,6 +161,8 @@ hierarchy (faster)"},
"Returns the object's parent object"}, "Returns the object's parent object"},
{"getSize", (PyCFunction)Object_getSize, METH_VARARGS, {"getSize", (PyCFunction)Object_getSize, METH_VARARGS,
"Returns the object's size (x, y, z)"}, "Returns the object's size (x, y, z)"},
{"getTimeOffset", (PyCFunction)Object_getTimeOffset, METH_NOARGS,
"Returns the object's time offset"},
{"getTracked", (PyCFunction)Object_getTracked, METH_NOARGS, {"getTracked", (PyCFunction)Object_getTracked, METH_NOARGS,
"Returns the object's tracked object"}, "Returns the object's tracked object"},
{"getType", (PyCFunction)Object_getType, METH_NOARGS, {"getType", (PyCFunction)Object_getType, METH_NOARGS,
...@@ -208,6 +212,8 @@ objects."}, ...@@ -208,6 +212,8 @@ objects."},
{"setSize", (PyCFunction)Object_setSize, METH_VARARGS, {"setSize", (PyCFunction)Object_setSize, METH_VARARGS,
"Set the object's size. The first argument must be a vector\n\ "Set the object's size. The first argument must be a vector\n\
triple."}, triple."},
{"setTimeOffset", (PyCFunction)Object_setTimeOffset, METH_VARARGS,
"Set the object's time offset."},
{"shareFrom", (PyCFunction)Object_shareFrom, METH_VARARGS, {"shareFrom", (PyCFunction)Object_shareFrom, METH_VARARGS,
"Link data of self with object specified in the argument. This\n\ "Link data of self with object specified in the argument. This\n\
works only if self and the object specified are of the same type."}, works only if self and the object specified are of the same type."},
...@@ -843,6 +849,17 @@ static PyObject *Object_getSize (BPy_Object *self, PyObject *args) ...@@ -843,6 +849,17 @@ static PyObject *Object_getSize (BPy_Object *self, PyObject *args)
"couldn't get Object.size attributes")); "couldn't get Object.size attributes"));
} }
static PyObject *Object_getTimeOffset (BPy_Object *self)
{
PyObject *attr = Py_BuildValue ("f", self->object->sf);
if (attr) return (attr);
return (PythonReturnErrorObject (PyExc_RuntimeError,
"couldn't get Object.sf attributes"));
}
static PyObject *Object_getTracked (BPy_Object *self) static PyObject *Object_getTracked (BPy_Object *self)
{ {
PyObject *attr; PyObject *attr;
...@@ -1390,6 +1407,22 @@ static PyObject *Object_setSize (BPy_Object *self, PyObject *args) ...@@ -1390,6 +1407,22 @@ static PyObject *Object_setSize (BPy_Object *self, PyObject *args)
return (Py_None); return (Py_None);
} }
static PyObject *Object_setTimeOffset (BPy_Object *self, PyObject *args)
{
float newTimeOffset;
if (!PyArg_ParseTuple (args, "f", &newTimeOffset))
{
return (PythonReturnErrorObject (PyExc_AttributeError,
"expected a float as argument"));
}
self->object->sf=newTimeOffset;
Py_INCREF (Py_None);
return (Py_None);
}
static PyObject *Object_shareFrom (BPy_Object *self, PyObject *args) static PyObject *Object_shareFrom (BPy_Object *self, PyObject *args)
{ {
BPy_Object * object; BPy_Object * object;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment