removed unuseful function calls in BezTriple.[ch]
[blender.git] / source / blender / python / api2_2x / BezTriple.c
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 #include "BezTriple.h"
33
34 /*****************************************************************************/
35 /* Function:              M_BezTriple_New                                          */
36 /* Python equivalent:     Blender.BezTriple.New                                    */
37 /*****************************************************************************/
38 static PyObject *M_BezTriple_New(PyObject *self, PyObject *args)
39 {
40         return 0;
41 }
42
43 /*****************************************************************************/
44 /* Function:              M_BezTriple_Get                                       */
45 /* Python equivalent:     Blender.BezTriple.Get                                 */
46 /* Description:           Receives a string and returns the ipo data obj  */
47 /*                        whose name matches the string.  If no argument is  */
48 /*                        passed in, a list of all ipo data names in the  */
49 /*                        current scene is returned.                         */
50 /*****************************************************************************/
51 static PyObject *M_BezTriple_Get(PyObject *self, PyObject *args)
52 {
53         return 0;
54 }
55
56
57
58
59 /*****************************************************************************/
60 /* Function:    BezTripleDeAlloc                                                   */
61 /* Description: This is a callback function for the C_BezTriple type. It is        */
62 /*              the destructor function.                                     */
63 /*****************************************************************************/
64 static void BezTripleDeAlloc (C_BezTriple *self)
65 {
66   PyObject_DEL (self);
67 }
68
69 static PyObject* BezTriple_getPoints (C_BezTriple *self)
70 {       
71 struct BezTriple *bezt = self->beztriple;
72         PyObject* l = PyList_New(0);
73                                 int i;
74                                 for(i = 0;i<2;i++)
75                                         {
76   PyList_Append( l, PyFloat_FromDouble(bezt->vec[1][i]));
77                                         }
78   return l;
79 }
80
81
82 static PyObject *  BezTriple_setPoints (C_BezTriple *self,PyObject *args)
83 {       
84
85         int i;
86         struct BezTriple *bezt = self->beztriple;
87         PyObject*popo = 0;
88   if (!PyArg_ParseTuple(args, "O", &popo))
89     return (EXPP_ReturnPyObjError (PyExc_TypeError,"expected tuple argument"));
90         if (  PyTuple_Check(popo) == 0)
91                 {
92                         puts("error in   BezTriple_setPoints");
93   Py_INCREF(Py_None);
94   return Py_None;
95                 }
96         for(i = 0;i<2;i++)
97                 {
98                         bezt->vec[1][i] = PyFloat_AsDouble(PyTuple_GetItem(popo, i));
99                         bezt->vec[0][i] = bezt->vec[1][i] -1;
100                         bezt->vec[2][i] = bezt->vec[1][i] +1;
101                 }
102
103
104   Py_INCREF(Py_None);
105   return Py_None;
106 }
107
108
109 /*****************************************************************************/
110 /* Function:    BezTripleGetAttr                                                   */
111 /* Description: This is a callback function for the C_BezTriple type. It is        */
112 /*              the function that accesses C_BezTriple "member variables" and      */
113 /*              methods.                                                     */
114 /*****************************************************************************/
115 static PyObject *BezTripleGetAttr (C_BezTriple *self, char *name)
116 {
117 if (strcmp (name, "pt") == 0)return BezTriple_getPoints(self);
118   return Py_FindMethod(C_BezTriple_methods, (PyObject *)self, name);
119 }
120
121 /*****************************************************************************/
122 /* Function:    BezTripleSetAttr                                                */
123 /* Description: This is a callback function for the C_BezTriple type. It is the */
124 /*              function that sets BezTriple Data attributes (member variables).*/
125 /*****************************************************************************/
126 static int BezTripleSetAttr (C_BezTriple *self, char *name, PyObject *value)
127 {
128 if (strcmp (name, "pt") == 0)return BezTriple_setPoints(self,value);
129   return 0; /* normal exit */
130 }
131
132 /*****************************************************************************/
133 /* Function:    BezTripleRepr                                                */
134 /* Description: This is a callback function for the C_BezTriple type. It     */
135 /*              builds a meaninful string to represent  BezTriple objects.   */
136 /*****************************************************************************/
137 static PyObject *BezTripleRepr (C_BezTriple *self)
138 {
139         /*      float vec[3][3];
140         float alfa;
141         short s[3][2];
142         short h1, h2;
143         char f1, f2, f3, hide;
144         */
145         char str[1000];
146         sprintf(str,"BezTriple %f %f %f %f %f %f %f %f %f %f\n %d %d %d %d %d %d %d %d %d %d %d %d\n",self->beztriple->vec[0][0],self->beztriple->vec[0][1],self->beztriple->vec[0][2],self->beztriple->vec[1][0],self->beztriple->vec[1][1],self->beztriple->vec[1][2],self->beztriple->vec[2][0],self->beztriple->vec[2][1],self->beztriple->vec[2][2],self->beztriple->alfa,self->beztriple->s[0][0],self->beztriple->s[0][1],self->beztriple->s[1][0],self->beztriple->s[1][1],self->beztriple->s[2][0],self->beztriple->s[1][1],self->beztriple->h1,self->beztriple->h2,self->beztriple->f1,self->beztriple->f2,self->beztriple->f3,self->beztriple->hide);
147   return PyString_FromString(str);
148 }
149
150 /* Three Python BezTriple_Type helper functions needed by the Object module: */
151
152 /*****************************************************************************/
153 /* Function:    BezTriple_CreatePyObject                                           */
154 /* Description: This function will create a new C_BezTriple from an existing       */
155 /*              Blender ipo structure.                                       */
156 /*****************************************************************************/
157 PyObject *BezTriple_CreatePyObject (BezTriple *bzt)
158 {
159         C_BezTriple *pybeztriple;
160
161         pybeztriple = (C_BezTriple *)PyObject_NEW (C_BezTriple, &BezTriple_Type);
162
163         if (!pybeztriple)
164                 return EXPP_ReturnPyObjError (PyExc_MemoryError,
165                                                 "couldn't create C_BezTriple object");
166
167         pybeztriple->beztriple = bzt;
168
169         return (PyObject *)pybeztriple;
170 }
171
172 /*****************************************************************************/
173 /* Function:    BezTriple_CheckPyObject                                            */
174 /* Description: This function returns true when the given PyObject is of the */
175 /*              type BezTriple. Otherwise it will return false.                    */
176 /*****************************************************************************/
177 int BezTriple_CheckPyObject (PyObject *pyobj)
178 {
179         return (pyobj->ob_type == &BezTriple_Type);
180 }
181
182 /*****************************************************************************/
183 /* Function:    BezTriple_FromPyObject                                             */
184 /* Description: This function returns the Blender beztriple from the given         */
185 /*              PyObject.                                                    */
186 /*****************************************************************************/
187 BezTriple *BezTriple_FromPyObject (PyObject *pyobj)
188 {
189         return ((C_BezTriple *)pyobj)->beztriple;
190 }