6864e5f43b96279bf10fe4c37495176fdbb86285
[blender.git] / source / blender / python / api2_2x / Ipocurve.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_IPOCURVE_H
33 #define EXPP_IPOCURVE_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 IpoCurve module.                   */
51 /*****************************************************************************/
52 static PyObject *M_IpoCurve_New (PyObject *self, PyObject *args);
53 static PyObject *M_IpoCurve_Get (PyObject *self, PyObject *args);
54
55 /*****************************************************************************/
56 /* The following string definitions are used for documentation strings.      */
57 /* In Python these will be written to the console when doing a               */
58 /* Blender.IpoCurve.__doc__                                                  */
59 /*****************************************************************************/
60 char M_IpoCurve_doc[] = "";
61 char M_IpoCurve_New_doc[] ="";
62 char M_IpoCurve_Get_doc[] ="";
63
64
65 /*****************************************************************************/
66 /* Python method structure definition for Blender.IpoCurve module:           */
67 /*****************************************************************************/
68
69 struct PyMethodDef M_IpoCurve_methods[] = {
70   {"New",(PyCFunction)M_IpoCurve_New, METH_VARARGS|METH_KEYWORDS,M_IpoCurve_New_doc},
71   {"Get",         M_IpoCurve_Get,         METH_VARARGS, M_IpoCurve_Get_doc},
72   {"get",         M_IpoCurve_Get,         METH_VARARGS, M_IpoCurve_Get_doc},
73   {NULL, NULL, 0, NULL}
74 };
75
76 /*****************************************************************************/
77 /* Python C_IpoCurve structure definition:                                   */
78 /*****************************************************************************/
79 typedef struct {
80   PyObject_HEAD
81   IpoCurve *ipocurve;
82 } C_IpoCurve;
83
84 /*****************************************************************************/
85 /* Python C_IpoCurve methods declarations:                                   */
86 /*****************************************************************************/
87 static PyObject *IpoCurve_getName(C_IpoCurve *self);
88 static PyObject *IpoCurve_Recalc(C_IpoCurve *self);
89 static PyObject *IpoCurve_setName(C_IpoCurve *self, PyObject *args);
90 static PyObject *IpoCurve_addBezier( C_IpoCurve*self, PyObject *args);
91 static PyObject *IpoCurve_setInterpolation( C_IpoCurve*self, PyObject *args);
92 static PyObject *IpoCurve_getInterpolation( C_IpoCurve*self);
93 static PyObject *IpoCurve_setExtrapolation( C_IpoCurve*self, PyObject *args);
94 static PyObject *IpoCurve_getExtrapolation( C_IpoCurve*self);
95
96
97 /*****************************************************************************/
98 /* Python C_IpoCurve methods table:                                          */
99 /*****************************************************************************/
100 static PyMethodDef C_IpoCurve_methods[] = {
101  /* name, method, flags, doc */
102   {"getName", (PyCFunction)IpoCurve_getName, METH_NOARGS,
103       "() - Return IpoCurve Data name"},  
104   {"Recalc", (PyCFunction)IpoCurve_Recalc, METH_NOARGS,
105       "() - Return IpoCurve Data name"}, 
106   {"update", (PyCFunction)IpoCurve_Recalc, METH_NOARGS,
107       "() - Return IpoCurve Data name"},  
108 {"setName", (PyCFunction)IpoCurve_setName, METH_VARARGS,
109       "(str) - Change IpoCurve Data name"},  
110 {"addBezier", (PyCFunction)IpoCurve_addBezier, METH_VARARGS,
111       "(str) - Change IpoCurve Data name"},  
112 {"setInterpolation", (PyCFunction)IpoCurve_setInterpolation, METH_VARARGS,
113       "(str) - Change IpoCurve Data name"}, 
114 {"getInterpolation", (PyCFunction)IpoCurve_getInterpolation, METH_NOARGS,
115       "(str) - Change IpoCurve Data name"},  
116 {"setExtrapolation", (PyCFunction)IpoCurve_setExtrapolation, METH_VARARGS,
117       "(str) - Change IpoCurve Data name"}, 
118 {"getExtrapolation", (PyCFunction)IpoCurve_getExtrapolation, METH_NOARGS,
119       "(str) - Change IpoCurve Data name"},
120   {0}
121 };
122
123 /*****************************************************************************/
124 /* Python IpoCurve_Type callback function prototypes:                        */
125 /*****************************************************************************/
126 static void IpoCurveDeAlloc (C_IpoCurve *self);
127 //static int IpoCurvePrint (C_IpoCurve *self, FILE *fp, int flags);
128 static int IpoCurveSetAttr (C_IpoCurve *self, char *name, PyObject *v);
129 static PyObject *IpoCurveGetAttr (C_IpoCurve *self, char *name);
130 static PyObject *IpoCurveRepr (C_IpoCurve *self);
131
132 /*****************************************************************************/
133 /* Python IpoCurve_Type structure definition:                                */
134 /*****************************************************************************/
135 PyTypeObject IpoCurve_Type =
136 {
137   PyObject_HEAD_INIT(NULL)
138   0,                                      /* ob_size */
139   "IpoCurve",                               /* tp_name */
140   sizeof (C_IpoCurve),                      /* tp_basicsize */
141   0,                                      /* tp_itemsize */
142   /* methods */
143   (destructor)IpoCurveDeAlloc,              /* tp_dealloc */
144   0,                 /* tp_print */
145   (getattrfunc)IpoCurveGetAttr,             /* tp_getattr */
146   (setattrfunc)IpoCurveSetAttr,             /* tp_setattr */
147   0,                                      /* tp_compare */
148   (reprfunc)IpoCurveRepr,                   /* tp_repr */
149   0,                                      /* tp_as_number */
150   0,                                      /* tp_as_sequence */
151   0,                                      /* tp_as_mapping */
152   0,                                      /* tp_as_hash */
153   0,0,0,0,0,0,
154   0,                                      /* tp_doc */ 
155   0,0,0,0,0,0,
156   C_IpoCurve_methods,                       /* tp_methods */
157   0,                                      /* tp_members */
158 };
159
160 #endif /* EXPP_IPOCURVE_H */