diff options
Diffstat (limited to 'source/blender/bpython/intern/BPY_ipo.c')
-rw-r--r-- | source/blender/bpython/intern/BPY_ipo.c | 721 |
1 files changed, 0 insertions, 721 deletions
diff --git a/source/blender/bpython/intern/BPY_ipo.c b/source/blender/bpython/intern/BPY_ipo.c deleted file mode 100644 index d1966ce58fd..00000000000 --- a/source/blender/bpython/intern/BPY_ipo.c +++ /dev/null @@ -1,721 +0,0 @@ -/** Ipo module; access to Ipo datablocks in Blender - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. - * All rights reserved. - * - * The Original Code is: all of this file. - * - * Contributor(s): none yet. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - * - */ -#include "MEM_guardedalloc.h" - -#include "Python.h" -#include "BPY_macros.h" -#include "BPY_tools.h" - -#include "b_interface.h" // most datatypes - -#include "opy_datablock.h" - -#include "DNA_curve_types.h" - -#include "BSE_editipo.h" - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -/* GLOBALS */ - -/* These should be put into a proper dictionary for quicker retrieval..*/ - -NamedEnum g_OB_ipocodes[] = { - - { "LocX", OB_LOC_X }, - { "LocY", OB_LOC_Y }, - { "LocZ", OB_LOC_Z }, - { "dLocX", OB_DLOC_X }, - { "dLocY", OB_DLOC_Y }, - { "dLocZ", OB_DLOC_Z }, - { "RotX", OB_ROT_X }, - { "RotY", OB_ROT_Y }, - { "RotZ", OB_ROT_Z }, - { "dRotX", OB_DROT_X }, - { "dRotY", OB_DROT_Y }, - { "dRotZ", OB_DROT_Z }, - { "SizeX", OB_SIZE_X }, - { "SizeY", OB_SIZE_Y }, - { "SizeY", OB_SIZE_Z }, - { "dSizeX", OB_DSIZE_X }, - { "dSizeY", OB_DSIZE_Y }, - { "dSizeY", OB_DSIZE_Z }, - { "Layer", OB_LAY }, - { "Time", OB_TIME }, - { 0, 0 } -}; - -NamedEnum g_MA_ipocodes[] = { - - { "R", MA_COL_R }, - { "G", MA_COL_G }, - { "B", MA_COL_B }, - { "Alpha", MA_ALPHA}, - { "SpecR", MA_SPEC_R }, - { "SpecG", MA_SPEC_G }, - { "SpecB", MA_SPEC_B }, - { "MirR", MA_MIR_R }, - { "MirG", MA_MIR_G }, - { "MirB", MA_MIR_B }, - { "Emit", MA_EMIT }, - { "Amb", MA_AMB }, - { "Spec", MA_SPEC }, - { "Hard", MA_HARD }, - { "SpTra", MA_SPTR }, - { "Ang", MA_ANG }, - { "HaSize", MA_HASIZE }, - { 0, 0 } -}; - -NamedEnum g_WO_ipocodes[] = { - { "HorR", WO_HOR_R }, - { "HorG", WO_HOR_G }, - { "HorB", WO_HOR_B }, - { "ZenR", WO_ZEN_R }, - { "ZenG", WO_ZEN_G }, - { "ZenB", WO_ZEN_B }, - { "Expos", WO_EXPOS }, - { "Misi", WO_MISI }, - { "MisDi", WO_MISTDI }, - { "MisSta", WO_MISTSTA }, - { "MisHi", WO_MISTHI }, - { "StarR", WO_STAR_R }, - { "StarG", WO_STAR_G }, - { "StarB", WO_STAR_B }, - { "StarDi", WO_STARDIST }, - { "StarSi", WO_STARSIZE }, - { 0, 0 } -}; - -NamedEnum g_CA_ipocodes[] = { - { "Lens", CAM_LENS }, - { "ClSta", CAM_STA }, - { "ClEnd", CAM_END }, - { 0, 0 } -}; - -PyObject *g_ipoBlockTypes; // global for ipo type container -PyObject *g_interpolationTypes; // global for interpolation type container -PyObject *g_extrapolationTypes; // global for extrapolation type container - -typedef struct _PyBezTriple { - PyObject_VAR_HEAD - - BezTriple bzt; -} PyBezTriple; - - -void pybzt_dealloc(PyObject *self) { - PyMem_DEL(self); -} - -PyObject *pybzt_repr(PyObject *self) { - return PyString_FromString("[BezTriple]"); -} - -/* XXX */ - -NamedEnum bez_triple_flags[]= { - {"Free", HD_FREE}, - {"Auto", HD_AUTO}, - {"Vect", HD_VECT}, - {"Align", HD_ALIGN}, - {NULL} -}; - -DataBlockProperty BezTriple_Properties[]= { - {"h1", "vec[3][3]", DBP_TYPE_VEC, 0, 2.0, 0.0, {0,0}, {3,3,-sizeof(float)}}, - {"pt", "vec[3][3]", DBP_TYPE_VEC, 0, 2.0, 0.0, {1,0}, {3,3,-sizeof(float)}}, - {"h2", "vec[3][3]", DBP_TYPE_VEC, 0, 2.0, 0.0, {2,0}, {3,3,-sizeof(float)}}, - - {"f1", "f1", DBP_TYPE_CHA, 0, 0.0, 1.0}, - {"f2", "f2", DBP_TYPE_CHA, 0, 0.0, 1.0}, - {"f3", "f3", DBP_TYPE_CHA, 0, 0.0, 1.0}, - - {"h1Type", "h1", DBP_TYPE_SHO, 0, 0.0, 0.0, {0}, {0}, DBP_HANDLING_NENM, bez_triple_flags}, - {"h2Type", "h2", DBP_TYPE_SHO, 0, 0.0, 0.0, {0}, {0}, DBP_HANDLING_NENM, bez_triple_flags}, - - {"h1t", "h1", DBP_TYPE_SHO, 0, 0.0, 0.0, {0}, {0}, DBP_HANDLING_NENM, bez_triple_flags}, - {"h2t", "h2", DBP_TYPE_SHO, 0, 0.0, 0.0, {0}, {0}, DBP_HANDLING_NENM, bez_triple_flags}, - - {NULL} -}; - -PyObject *pybzt_getattr(PyObject *self, char *name) { - PyBezTriple *pybzt= (PyBezTriple *) self; - - return datablock_getattr(BezTriple_Properties, "BezTriple", name, &pybzt->bzt); -} - -int pybzt_setattr(PyObject *self, char *name, PyObject *ob) { - PyBezTriple *pybzt= (PyBezTriple *) self; - - return datablock_setattr(BezTriple_Properties, "BezTriple", name, &pybzt->bzt, ob); -} - -PyTypeObject PyBezTriple_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "BezTriple", /*tp_name*/ - sizeof(PyBezTriple), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) pybzt_dealloc, /*tp_dealloc*/ - (printfunc) 0, /*tp_print*/ - (getattrfunc) pybzt_getattr, /*tp_getattr*/ - (setattrfunc) pybzt_setattr, /*tp_setattr*/ - 0, /*tp_compare*/ - (reprfunc) pybzt_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ -}; - -static char pybzt_create_doc[]= "() - Create a new BezTriple object"; -PyObject *pybzt_create(PyObject *self, PyObject *args) { - PyBezTriple *py_bzt= PyObject_NEW(PyBezTriple, &PyBezTriple_Type); - // BezTriple *bzt= &py_bzt->bzt; - - BPY_TRY(PyArg_ParseTuple(args, "")); - - memset(&py_bzt->bzt,0,sizeof(py_bzt->bzt)); - - return (PyObject *) py_bzt; -} - -PyObject *pybzt_from_bzt(BezTriple *bzt) { - PyBezTriple *py_bzt= PyObject_NEW(PyBezTriple, &PyBezTriple_Type); - - memcpy(&py_bzt->bzt, bzt, sizeof(*bzt)); - - return (PyObject *) py_bzt; -} - - -typedef struct _PyIpoCurve { - PyObject_VAR_HEAD - - IpoCurve *icu; -} PyIpoCurve; - - -/********************/ -/* IpoCurve methods */ - -#undef MethodDef -#define MethodDef(func) _MethodDef(func, IpoCurve) - -#define DICT_FROM_CONSTDICT(x) \ - ((constobject *) x)->dict - -/** sets an enum int value 'by name' from the dictionary dict */ - -static PyObject *setEnum_fromDict(short *i, PyObject *dict, char *key, char *errmsg) -{ - PyObject *p; - p = PyDict_GetItemString(dict, key); - if (!p) { - PyErr_SetString(PyExc_TypeError, errmsg); - return NULL; - } - - *i = (short) PyInt_AsLong(p); - return BPY_incr_ret(Py_None); -} - -static char IpoCurve_setInterpolation_doc[] = -"(type) - Set interpolation to one of: ['Constant', 'Linear', 'Bezier']"; - -static PyObject *IpoCurve_setInterpolation(PyObject *self, PyObject *args) -{ - char *typename; - IpoCurve *ipocurve = (IpoCurve *) ((PyIpoCurve *) self)->icu; - - BPY_TRY(PyArg_ParseTuple(args, "s", &typename)); - - return setEnum_fromDict(&ipocurve->ipo, DICT_FROM_CONSTDICT(g_interpolationTypes), - typename, "Improper interpolation type, see Ipo.InterpolationTypes"); - -} - -static char IpoCurve_setExtrapolation_doc[] = -"(type) - Set interpolation to one of: ['Constant', 'Linear', 'Cyclic', 'CyclicLinear']"; - -static PyObject *IpoCurve_setExtrapolation(PyObject *self, PyObject *args) -{ - char *typename; - IpoCurve *ipocurve = (IpoCurve *) ((PyIpoCurve *) self)->icu; - - BPY_TRY(PyArg_ParseTuple(args, "s", &typename)); - - - return setEnum_fromDict(&ipocurve->extrap, DICT_FROM_CONSTDICT(g_extrapolationTypes), - typename, "Improper extrapolation type, see Ipo.ExtrapolationTypes"); -} - -static char IpoCurve_getInterpolation_doc[] = -"() - Returns interpolation type"; - -static PyObject *IpoCurve_getInterpolation(PyObject *self, PyObject *args) -{ - IpoCurve *ipocurve = (IpoCurve *) ((PyIpoCurve *) self)->icu; - - switch (ipocurve->ipo) { - case IPO_CONST: return PyString_FromString("Constant"); - case IPO_LIN: return PyString_FromString("Linear"); - case IPO_BEZ: return PyString_FromString("Bezier"); - default: return PyString_FromString("<not defined>"); - } -} - -static char IpoCurve_getExtrapolation_doc[] = -"() - Returns extrapolation type"; - -static PyObject *IpoCurve_getExtrapolation(PyObject *self, PyObject *args) -{ - IpoCurve *ipocurve = (IpoCurve *) ((PyIpoCurve *) self)->icu; - - switch (ipocurve->extrap) { - case IPO_HORIZ: return PyString_FromString("Constant"); - case IPO_DIR: return PyString_FromString("Linear"); - case IPO_CYCL: return PyString_FromString("Cyclic"); - case IPO_CYCLX: return PyString_FromString("CyclicLinear"); - default: return PyString_FromString("<not defined>"); - } - -} - -static char IpoCurve_eval_doc[] = -"(time = <current frame>) - evaluates ipo at time 'time' and returns result\n\ -(float). If 'time' is not specified, the current frame value is taken"; - -static PyObject *IpoCurve_eval(PyObject *self, PyObject *args) -{ - PyIpoCurve *pIpocurve = (PyIpoCurve *) self; - float time = CurrentFrame; - - BPY_TRY(PyArg_ParseTuple(args, "|f", &time)); - - return PyFloat_FromDouble(eval_icu(pIpocurve->icu, time)); -} - -static char IpoCurve_update_doc[] = -"() - update and recalculate IpoCurve"; - -static PyObject *IpoCurve_update(PyObject *self, PyObject *args) -{ - - BPY_TRY(PyArg_ParseTuple(args, "")); - - testhandles_ipocurve(((PyIpoCurve *) self)->icu); // recalculate IPO - - Py_INCREF(Py_None); - return Py_None; -} - -static struct PyMethodDef IpoCurve_methods[] = { - MethodDef(setInterpolation), - MethodDef(getInterpolation), - MethodDef(setExtrapolation), - MethodDef(getExtrapolation), - MethodDef(eval), - MethodDef(update), - {NULL, NULL} -}; - - -PyObject *IpoCurve_getattr(PyObject *self, char *name) { - PyIpoCurve *py_icu= (PyIpoCurve *) self; - IpoCurve *icu= py_icu->icu; - - if (STREQ(name, "type")) { - return IpoCurve_getInterpolation(self, Py_BuildValue("")); - } else if (STREQ(name, "extend")) { - return IpoCurve_getExtrapolation(self, Py_BuildValue("")); - } else if (STREQ(name, "name")) { - char icu_name[32]= ""; - - switch (icu->blocktype) { - case ID_OB: - getname_ob_ei(icu->adrcode, icu_name, 0); - break; - case ID_MA: - getname_mat_ei(icu->adrcode, icu_name); - break; - case ID_WO: - getname_world_ei(icu->adrcode, icu_name); - break; - case ID_SEQ: - getname_seq_ei(icu->adrcode, icu_name); - break; - case ID_CU: - getname_cu_ei(icu->adrcode, icu_name); - break; - case ID_KE: - getname_key_ei(icu->adrcode, icu_name); - break; - case ID_LA: - getname_la_ei(icu->adrcode, icu_name); - break; - case ID_CA: - getname_cam_ei(icu->adrcode, icu_name); - break; - default: - return PyString_FromString("<unknown>"); - } - - return PyString_FromString(icu_name); - } else if (STREQ(name, "points")) { - PyObject *list= PyList_New(icu->totvert); - BezTriple *bzt= icu->bezt; - int i; - - for (i=0; i<icu->totvert; i++) { - PyList_SetItem(list, i, pybzt_from_bzt(bzt)); - bzt++; - } - - return list; - } - return Py_FindMethod(IpoCurve_methods, (PyObject*)self, name); -} - -int IpoCurve_setattr(PyObject *self, char *name, PyObject *ob) { - PyIpoCurve *py_icu= (PyIpoCurve *) self; - IpoCurve *icu= py_icu->icu; - - if (STREQ(name, "points")) { - int i, len; - BezTriple *bzt; - - if (!PySequence_Check(ob) || !BPY_check_sequence_consistency(ob, &PyBezTriple_Type)) - return py_err_ret_int(PyExc_AttributeError, "Expected list of BezTriples"); - - len= PySequence_Length(ob); - - if (icu->bezt) // free existing (IF) - MEM_freeN(icu->bezt); - - icu->totvert= len; - if (len) icu->bezt= MEM_mallocN(len*sizeof(BezTriple), "beztriples"); - - bzt= icu->bezt; - for (i=0; i<len; i++) { - PyBezTriple *pybzt= (PyBezTriple*) PySequence_GetItem(ob, i); - - memcpy(bzt, &pybzt->bzt, sizeof(BezTriple)); - bzt++; - - Py_DECREF(pybzt); - } - - /* Twice for auto handles */ - calchandles_ipocurve(icu); - calchandles_ipocurve(icu); - - boundbox_ipocurve(icu); - sort_time_ipocurve(icu); - - return 0; - } - - PyErr_SetString(PyExc_AttributeError, name); - return -1; -} - -void IpoCurve_dealloc(PyObject *self) { - PyMem_DEL(self); -} - -PyObject *IpoCurve_repr(PyObject *self) { - char s[256]; - sprintf (s, "[IpoCurve %.32s]", - PyString_AsString(IpoCurve_getattr(self, "name"))); - return Py_BuildValue("s", s); -} - -PyTypeObject PyIpoCurve_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "IpoCurve", /*tp_name*/ - sizeof(PyIpoCurve), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - (destructor) IpoCurve_dealloc, /*tp_dealloc*/ - (printfunc) 0, /*tp_print*/ - (getattrfunc) IpoCurve_getattr, /*tp_getattr*/ - (setattrfunc) IpoCurve_setattr, /*tp_setattr*/ - 0, /*tp_compare*/ - (reprfunc) IpoCurve_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ -}; - -PyObject *IpoCurve_from_icu(IpoCurve *icu) { - PyIpoCurve *ob= PyObject_NEW(PyIpoCurve, &PyIpoCurve_Type); - - ob->icu= icu; - - return (PyObject *) ob; -} - -PyObject *make_icu_list (ListBase *curves) { - ListBase lb= *curves; - IpoCurve *icu= (IpoCurve *) lb.first; - PyObject *list= PyList_New(0); - PyObject *pyipo; - - while (icu) { - pyipo = IpoCurve_from_icu(icu); - PyList_Append(list, pyipo); - Py_DECREF(pyipo); - icu= icu->next; - } - - return list; -} - -DataBlockProperty Ipo_Properties[]= { - {"curves", "curve", DBP_TYPE_FUN, 0, 0.0, 0.0, {0}, {0}, 0, 0, make_icu_list}, - {NULL} -}; - - -/**********************/ -/* Ipo module methods */ - -DATABLOCK_GET(Ipomodule, ipo, getIpoList()) - -static char Ipomodule_New_doc[] = -"(type, name = <default>) - Creates a new Ipo block of the specified type,\n\ -which must be of the appropriate datablock ID type (e.g. ID_OB, ID_MA, ...)"; - - -static PyObject *Ipomodule_New(PyObject *self, PyObject *args) -{ - Ipo *ipo; - int type; - PyObject *p; - char *name = NULL, *typename; - - BPY_TRY(PyArg_ParseTuple(args, "s|s", &typename, &name)); - p = PyDict_GetItemString(((constobject *)g_ipoBlockTypes)->dict, typename); - if (!p) { - PyErr_SetString(PyExc_TypeError, "Improper Ipo type, see Ipo.Types"); - return NULL; - } - - type = PyInt_AsLong(p); - - if (!name) { - switch(type) { - case ID_OB: name = "Objpo"; break; - case ID_MA: name = "MatIpo"; break; - case ID_SEQ: name = "SeqIpo"; break; - case ID_CU: name = "CurveIpo"; break; - case ID_KE: name = "KeyIpo"; break; - case ID_WO: name = "WorldIpo"; break; - case ID_LA: name = "LampIpo"; break; - case ID_CA: name = "CamIpo"; break; - case ID_SO: name = "SndIpo"; break; - case ID_AC: name = "ActionIpo"; break; - default: - PyErr_SetString(PyExc_TypeError, "Internal error, illegal type"); - return NULL; - } - } - - ipo = ipo_new(type, name); - return DataBlock_fromData(ipo); -} - -#undef MethodDef -#define MethodDef(func) _MethodDef(func, Ipomodule) -struct PyMethodDef Ipomodule_methods[] = { - - MethodDef(New), - MethodDef(get), - {"BezTriple", pybzt_create, METH_VARARGS, pybzt_create_doc}, - - {NULL, NULL} -}; - -/********************/ -/* Ipoblock methods */ - -/* slow and inefficient lookup function , use proper dictionaries in future */ -short code_lookup(NamedEnum *codetab, char *name) -{ - int i = 0; - - while(codetab[i].name) - { - if (!strcmp(codetab[i].name, name)) - return codetab[i].num; - i++; - } - return -1; -} - -static char Ipo_addCurve_doc[]= -"(type, curve = None) - adds IpoCurve 'curve' to the IpoBlock under type id 'type'"; -PyObject *Ipo_addCurve(PyObject *self, PyObject *args) -{ - - Ipo *ipo = (Ipo *) ((DataBlock *) self)->data; - NamedEnum *lookup; - - short code; - - char *type; - PyIpoCurve *curve = NULL; - IpoCurve *ipocurve, *existingIpoCurve; - - BPY_TRY(PyArg_ParseTuple(args, "s|O!", &type, &PyIpoCurve_Type, &curve)); - - switch (ipo->blocktype) { - case ID_OB: - lookup = g_OB_ipocodes; - break; - case ID_CA: - lookup = g_CA_ipocodes; - break; - case ID_MA: - lookup = g_MA_ipocodes; - break; - case ID_WO: - lookup = g_WO_ipocodes; - break; - default: - PyErr_SetString(PyExc_TypeError, "Ipo type not (YET) supported"); - return NULL; - } - code = code_lookup(lookup, type); - if (code == -1) { - PyErr_SetString(PyExc_TypeError, "Unknown IpoCurve type"); - return NULL; - } - - if (!curve) { - ipocurve = ipocurve_new(); // malloc new ipocurve - } else { // add existing curve: - ipocurve = ipocurve_copy(curve->icu); // copy ipocurve - } - - ipocurve->adrcode = code; // re-code ipo - ipocurve->blocktype = ipo->blocktype; - - existingIpoCurve = ipo_findcurve(ipo, code); - if (existingIpoCurve) { - BLI_remlink(&(ipo->curve), existingIpoCurve); // remove existing - MEM_freeN(existingIpoCurve); - } - BLI_addtail(&(ipo->curve), ipocurve); // add curve to list - return IpoCurve_from_icu(ipocurve); -} - -static char Ipo_update_doc[]= -"() - Recalculate the ipo and update linked objects"; - -PyObject *Ipo_update(PyObject *self, PyObject *args) { - DataBlock *ipoblock = (DataBlock *) self; - Key *key; - - do_ipo((Ipo *) ipoblock->data); - - /* here we should signal all objects with keys that the ipo changed */ - - key= getKeyList()->first; - while(key) { - if(key->ipo == (Ipo *)ipoblock->data) do_spec_key(key); - key= key->id.next; - } - - return BPY_incr_ret(Py_None); -} - -#undef MethodDef -#define MethodDef(func) _MethodDef(func, Ipo) -struct PyMethodDef Ipo_methods[] = { - MethodDef(addCurve), - MethodDef(update), - {NULL, NULL} -}; - - -PyObject *initIpo(void) -{ - PyObject *mod, *dict, *d; - - mod= Py_InitModule(MODNAME(BLENDERMODULE) ".Ipo", Ipomodule_methods); - dict = PyModule_GetDict(mod); - - // ipo block types - d = ConstObject_New(); - PyDict_SetItemString(dict, "Types", d); - g_ipoBlockTypes = d; - - insertConst(d, "Object", PyInt_FromLong(ID_OB)); - insertConst(d, "Material", PyInt_FromLong(ID_MA)); - insertConst(d, "Sequence", PyInt_FromLong(ID_SEQ)); - insertConst(d, "Curve", PyInt_FromLong(ID_CU)); - insertConst(d, "Key", PyInt_FromLong(ID_KE)); - insertConst(d, "World", PyInt_FromLong(ID_WO)); - insertConst(d, "Lamp", PyInt_FromLong(ID_LA)); - insertConst(d, "Camera", PyInt_FromLong(ID_CA)); - insertConst(d, "Sound", PyInt_FromLong(ID_SO)); - insertConst(d, "Action", PyInt_FromLong(ID_AC)); - - // interpolation types: - d = ConstObject_New(); - g_interpolationTypes = d; - PyDict_SetItemString(dict, "InterpolationTypes", d); - insertConst(d, "Constant", PyInt_FromLong(IPO_CONST)); - insertConst(d, "Linear", PyInt_FromLong(IPO_LIN)); - insertConst(d, "Bezier", PyInt_FromLong(IPO_BEZ)); - - d = ConstObject_New(); - g_extrapolationTypes = d; - PyDict_SetItemString(dict, "ExtrapolationTypes", d); - insertConst(d, "Constant", PyInt_FromLong(IPO_HORIZ)); - insertConst(d, "Linear", PyInt_FromLong(IPO_DIR)); - insertConst(d, "Cyclic", PyInt_FromLong(IPO_CYCL)); - insertConst(d, "CyclicLinear", PyInt_FromLong(IPO_CYCLX)); - - return mod; -} |