- New additions to Mesh module
[blender.git] / source / blender / python / api2_2x / Types.c
1 /* 
2  * $Id$
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): Willian P. Germano, Alex Mole, Joseph Gilbert
28  *
29  * ***** END GPL/BL DUAL LICENSE BLOCK *****
30 */
31
32 #include "Types.h" 
33
34 char M_Types_doc[] = "The Blender Types module\n\n\
35 This module is a dictionary of all Blender Python types";
36
37 struct PyMethodDef Null_methods[] = { {NULL, NULL, 0, NULL} };
38
39
40
41 /* The internal types (lowercase first letter, like constant_Type) are only
42  * set when some object initializes them.  But unless we do it early, we get
43  * some easy and unpredictable (varies with platform, even distro) ways to
44  * crash Blender.  Some modules also need this early up, so let's generalize
45  * and init all our pytypes here. 
46  */
47
48 void types_InitAll( void )
49 {
50         Action_Type.ob_type = &PyType_Type;
51         Armature_Type.ob_type = &PyType_Type;
52         BezTriple_Type.ob_type = &PyType_Type;
53         Bone_Type.ob_type = &PyType_Type;
54         Button_Type.ob_type = &PyType_Type;
55         Camera_Type.ob_type = &PyType_Type;
56         CurNurb_Type.ob_type = &PyType_Type;
57         Curve_Type.ob_type = &PyType_Type;
58         Effect_Type.ob_type = &PyType_Type;
59         Image_Type.ob_type = &PyType_Type;
60         Ipo_Type.ob_type = &PyType_Type;
61         IpoCurve_Type.ob_type = &PyType_Type;
62         Lamp_Type.ob_type = &PyType_Type;
63         Lattice_Type.ob_type = &PyType_Type;
64         Material_Type.ob_type = &PyType_Type;
65         Metaball_Type.ob_type = &PyType_Type;
66         MTex_Type.ob_type = &PyType_Type;
67         NMCol_Type.ob_type = &PyType_Type;
68         NMFace_Type.ob_type = &PyType_Type;
69         NMVert_Type.ob_type = &PyType_Type;
70         NMesh_Type.ob_type = &PyType_Type;
71         Mesh_Type.ob_type = &PyType_Type;
72         MFace_Type.ob_type = &PyType_Type;
73         MVert_Type.ob_type = &PyType_Type;
74         PVert_Type.ob_type = &PyType_Type;
75         MEdge_Type.ob_type = &PyType_Type;
76         MCol_Type.ob_type = &PyType_Type;
77         Mesh_Type.ob_type = &PyType_Type;
78         Object_Type.ob_type = &PyType_Type;
79         Particle_Type.ob_type = &PyType_Type;
80         RenderData_Type.ob_type = &PyType_Type;
81         Scene_Type.ob_type = &PyType_Type;
82         Text_Type.ob_type = &PyType_Type;
83         Text3d_Type.ob_type = &PyType_Type;
84         Texture_Type.ob_type = &PyType_Type;
85         World_Type.ob_type = &PyType_Type;
86         buffer_Type.ob_type = &PyType_Type;
87         constant_Type.ob_type = &PyType_Type;
88         euler_Type.ob_type = &PyType_Type;
89         matrix_Type.ob_type = &PyType_Type;
90         quaternion_Type.ob_type = &PyType_Type;
91         rgbTuple_Type.ob_type = &PyType_Type;
92         vector_Type.ob_type = &PyType_Type;
93         property_Type.ob_type = &PyType_Type;
94         point_Type.ob_type = &PyType_Type;
95 }
96
97 /*****************************************************************************/
98 /* Function:     Types_Init                                             */
99 /*****************************************************************************/
100 PyObject *Types_Init( void )
101 {
102         PyObject *submodule, *dict;
103
104         submodule =
105                 Py_InitModule3( "Blender.Types", Null_methods, M_Types_doc );
106
107         dict = PyModule_GetDict( submodule );
108
109         /* The Blender Object Type */
110
111         PyDict_SetItemString( dict, "ObjectType",
112                               ( PyObject * ) &Object_Type );
113
114         /* Blender Object Data Types */
115
116         PyDict_SetItemString( dict, "SceneType", ( PyObject * ) &Scene_Type );
117         PyDict_SetItemString( dict, "RenderDataType",
118                               ( PyObject * ) &RenderData_Type );
119
120         PyDict_SetItemString( dict, "NMeshType", ( PyObject * ) &NMesh_Type );
121         PyDict_SetItemString( dict, "NMFaceType",
122                               ( PyObject * ) &NMFace_Type );
123         PyDict_SetItemString( dict, "NMVertType",
124                               ( PyObject * ) &NMVert_Type );
125         PyDict_SetItemString( dict, "NMColType", ( PyObject * ) &NMCol_Type );
126
127         PyDict_SetItemString( dict, "MeshType", ( PyObject * ) &Mesh_Type );
128         PyDict_SetItemString( dict, "MFaceType",
129                               ( PyObject * ) &MFace_Type );
130         PyDict_SetItemString( dict, "MEdgeType",
131                               ( PyObject * ) &MEdge_Type );
132         PyDict_SetItemString( dict, "MVertType",
133                               ( PyObject * ) &MVert_Type );
134         PyDict_SetItemString( dict, "PVertType",
135                               ( PyObject * ) &PVert_Type );
136         PyDict_SetItemString( dict, "MColType", ( PyObject * ) &MCol_Type );
137
138         PyDict_SetItemString( dict, "ArmatureType",
139                               ( PyObject * ) &Armature_Type );
140         PyDict_SetItemString( dict, "BoneType", ( PyObject * ) &Bone_Type );
141
142         PyDict_SetItemString( dict, "CurNurb_Type",
143                               ( PyObject * ) &CurNurb_Type );
144         PyDict_SetItemString( dict, "CurveType", ( PyObject * ) &Curve_Type );
145
146         PyDict_SetItemString( dict, "IpoType", ( PyObject * ) &Ipo_Type );
147         PyDict_SetItemString( dict, "MetaballType",
148                               ( PyObject * ) &Metaball_Type );
149
150         PyDict_SetItemString( dict, "CameraType",
151                               ( PyObject * ) &Camera_Type );
152         PyDict_SetItemString( dict, "ImageType", ( PyObject * ) &Image_Type );
153         PyDict_SetItemString( dict, "LampType", ( PyObject * ) &Lamp_Type );
154         PyDict_SetItemString( dict, "TextType", ( PyObject * ) &Text_Type );
155         PyDict_SetItemString( dict, "Text3dType", ( PyObject * ) &Text3d_Type );
156         PyDict_SetItemString( dict, "MaterialType",
157                               ( PyObject * ) &Material_Type );
158
159         PyDict_SetItemString( dict, "ButtonType",
160                               ( PyObject * ) &Button_Type );
161
162         PyDict_SetItemString( dict, "LatticeType",
163                               ( PyObject * ) &Lattice_Type );
164
165         PyDict_SetItemString( dict, "TextureType",
166                               ( PyObject * ) &Texture_Type );
167         PyDict_SetItemString( dict, "MTexType", ( PyObject * ) &MTex_Type );
168
169         /* External helper Types available to the main ones above */
170
171         PyDict_SetItemString( dict, "vectorType",
172                               ( PyObject * ) &vector_Type );
173         PyDict_SetItemString( dict, "bufferType",
174                               ( PyObject * ) &buffer_Type );
175         PyDict_SetItemString( dict, "constantType",
176                               ( PyObject * ) &constant_Type );
177         PyDict_SetItemString( dict, "rgbTupleType",
178                               ( PyObject * ) &rgbTuple_Type );
179         PyDict_SetItemString( dict, "matrix_Type",
180                               ( PyObject * ) &matrix_Type );
181         PyDict_SetItemString( dict, "eulerType", ( PyObject * ) &euler_Type );
182         PyDict_SetItemString( dict, "quaternionType",
183                               ( PyObject * ) &quaternion_Type );
184         PyDict_SetItemString( dict, "BezTripleType",
185                               ( PyObject * ) &BezTriple_Type );
186         PyDict_SetItemString( dict, "ActionType",
187                               ( PyObject * ) &Action_Type );
188         PyDict_SetItemString( dict, "propertyType",
189                               ( PyObject * ) &property_Type );
190         PyDict_SetItemString( dict, "pointType",
191                               ( PyObject * ) &point_Type );
192
193         return submodule;
194 }