1b36c725449309fe01f7d6c48403e577b8fd68fe
[blender.git] / source / blender / python / api2_2x / Ipo.h
1 /* 
2  *
3  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
23  * All rights reserved.
24  *
25  * This is a new part of Blender.
26  *
27  * Contributor(s): Jacques Guignot
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30 */
31
32 #ifndef EXPP_IPO_H
33 #define EXPP_IPO_H
34
35 #include <Python.h>
36
37 #include <BKE_main.h>
38 #include <BKE_global.h>
39 #include <BKE_object.h>
40 #include <BKE_library.h>
41 #include <BLI_blenlib.h>
42 #include <DNA_ipo_types.h>
43
44 #include "constant.h"
45 #include "gen_utils.h"
46 #include "modules.h"
47
48
49 /*****************************************************************************/
50 /* Python API function prototypes for the Ipo module.                        */
51 /*****************************************************************************/
52 static PyObject *M_Ipo_New (PyObject *self, PyObject *args);
53 static PyObject *M_Ipo_Get (PyObject *self, PyObject *args);
54 static PyObject *M_Ipo_Recalc (PyObject *self, PyObject *args);
55
56 /*****************************************************************************/
57 /* The following string definitions are used for documentation strings.      */
58 /* In Python these will be written to the console when doing a               */
59 /* Blender.Ipo.__doc__                                                       */
60 /*****************************************************************************/
61 char M_Ipo_doc[] = "";
62 char M_Ipo_New_doc[] ="";
63 char M_Ipo_Get_doc[] ="";
64
65
66 /*****************************************************************************/
67 /* Python method structure definition for Blender.Ipo module:             */
68 /*****************************************************************************/
69
70 struct PyMethodDef M_Ipo_methods[] = {
71   {"New",(PyCFunction)M_Ipo_New, METH_VARARGS|METH_KEYWORDS,M_Ipo_New_doc},
72   {"Get",         M_Ipo_Get,         METH_VARARGS, M_Ipo_Get_doc},
73   {"get",         M_Ipo_Get,         METH_VARARGS, M_Ipo_Get_doc},
74   {"Recalc",         M_Ipo_Recalc,         METH_VARARGS, M_Ipo_Get_doc},
75   {NULL, NULL, 0, NULL}
76 };
77
78 /*****************************************************************************/
79 /* Python C_Ipo structure definition:                                     */
80 /*****************************************************************************/
81 typedef struct {
82   PyObject_HEAD
83   Ipo *ipo;
84 } C_Ipo;
85
86 /*****************************************************************************/
87 /* Python C_Ipo methods declarations:                                     */
88 /*****************************************************************************/
89 static PyObject *Ipo_getName(C_Ipo *self);
90 static PyObject *Ipo_setName(C_Ipo *self, PyObject *args);
91 static PyObject *Ipo_getBlocktype(C_Ipo *self);
92 static PyObject *Ipo_setBlocktype(C_Ipo *self, PyObject *args);
93 static PyObject *Ipo_getRctf(C_Ipo *self);
94 static PyObject *Ipo_setRctf(C_Ipo *self, PyObject *args);
95
96 static PyObject *Ipo_addCurve(C_Ipo *self, PyObject *args);
97 static PyObject *Ipo_getNcurves(C_Ipo *self);
98 static PyObject *Ipo_getNBezPoints(C_Ipo *self, PyObject *args);
99 static PyObject *Ipo_DeleteBezPoints(C_Ipo *self, PyObject *args);
100 static PyObject *Ipo_getCurveBP(C_Ipo *self, PyObject *args);
101 static PyObject *Ipo_getCurvecurval(C_Ipo *self, PyObject *args);
102 static PyObject *Ipo_EvaluateCurveOn(C_Ipo *self, PyObject *args);
103
104
105 static PyObject *Ipo_setCurveBeztriple(C_Ipo *self, PyObject *args);
106 static PyObject *Ipo_getCurveBeztriple(C_Ipo *self, PyObject *args);
107
108 /*****************************************************************************/
109 /* Python C_Ipo methods table:                                            */
110 /*****************************************************************************/
111 static PyMethodDef C_Ipo_methods[] = {
112  /* name, method, flags, doc */
113   {"getName", (PyCFunction)Ipo_getName, METH_NOARGS,
114       "() - Return Ipo Data name"},  
115 {"setName", (PyCFunction)Ipo_setName, METH_VARARGS,
116       "(str) - Change Ipo Data name"},
117   {"getBlocktype", (PyCFunction)Ipo_getBlocktype, METH_NOARGS,
118       "() - Return Ipo blocktype -"},
119   {"setBlocktype", (PyCFunction)Ipo_setBlocktype, METH_VARARGS,
120       "(str) - Change Ipo blocktype"},
121   {"getRctf", (PyCFunction)Ipo_getRctf, METH_NOARGS,
122       "() - Return Ipo rctf - "},
123   {"setRctf", (PyCFunction)Ipo_setRctf, METH_VARARGS,
124       "(str) - Change Ipo rctf"},
125   {"addCurve", (PyCFunction)Ipo_addCurve, METH_VARARGS,
126       "() - Return Ipo ncurves"},
127   {"getNcurves", (PyCFunction)Ipo_getNcurves, METH_NOARGS,
128       "() - Return Ipo ncurves"},
129   {"getNBezPoints", (PyCFunction)Ipo_getNBezPoints, METH_VARARGS,
130       "() - Return curve number of Bez points"},
131   {"delBezPoint", (PyCFunction)Ipo_DeleteBezPoints, METH_VARARGS,
132       "() - Return curve number of Bez points"},
133   {"getCurveBP", (PyCFunction)Ipo_getCurveBP, METH_VARARGS,
134       "() - Return Ipo ncurves"},
135   {"EvaluateCurveOn", (PyCFunction)Ipo_EvaluateCurveOn, METH_VARARGS,
136       "() - Return curve value at given time"},
137   {"getCurveCurval", (PyCFunction)Ipo_getCurvecurval, METH_VARARGS,
138       "() - Return curval"},
139   {"getCurveBeztriple", (PyCFunction)Ipo_getCurveBeztriple, METH_VARARGS,
140       "() - Return Ipo ncurves"},
141   {"setCurveBeztriple", (PyCFunction)Ipo_setCurveBeztriple, METH_VARARGS,
142       "() - Return curval"},
143   {0}
144 };
145
146 /*****************************************************************************/
147 /* Python Ipo_Type callback function prototypes:                          */
148 /*****************************************************************************/
149 static void IpoDeAlloc (C_Ipo *self);
150 //static int IpoPrint (C_Ipo *self, FILE *fp, int flags);
151 static int IpoSetAttr (C_Ipo *self, char *name, PyObject *v);
152 static PyObject *IpoGetAttr (C_Ipo *self, char *name);
153 static PyObject *IpoRepr (C_Ipo *self);
154
155 /*****************************************************************************/
156 /* Python Ipo_Type structure definition:                                  */
157 /*****************************************************************************/
158 PyTypeObject Ipo_Type =
159 {
160   PyObject_HEAD_INIT(NULL)
161   0,                                      /* ob_size */
162   "Ipo",                               /* tp_name */
163   sizeof (C_Ipo),                      /* tp_basicsize */
164   0,                                      /* tp_itemsize */
165   /* methods */
166   (destructor)IpoDeAlloc,              /* tp_dealloc */
167   0,                 /* tp_print */
168   (getattrfunc)IpoGetAttr,             /* tp_getattr */
169   (setattrfunc)IpoSetAttr,             /* tp_setattr */
170   0,                                      /* tp_compare */
171   (reprfunc)IpoRepr,                   /* tp_repr */
172   0,                                      /* tp_as_number */
173   0,                                      /* tp_as_sequence */
174   0,                                      /* tp_as_mapping */
175   0,                                      /* tp_as_hash */
176   0,0,0,0,0,0,
177   0,                                      /* tp_doc */ 
178   0,0,0,0,0,0,
179   C_Ipo_methods,                       /* tp_methods */
180   0,                                      /* tp_members */
181 };
182
183 #endif /* EXPP_IPO_H */