f8b24468a14943878cb4ce2aa6958d383efa1773
[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         Object_Type.ob_type = &PyType_Type;
72         Particle_Type.ob_type = &PyType_Type;
73         RenderData_Type.ob_type = &PyType_Type;
74         Scene_Type.ob_type = &PyType_Type;
75         Text_Type.ob_type = &PyType_Type;
76         Text3d_Type.ob_type = &PyType_Type;
77         Texture_Type.ob_type = &PyType_Type;
78         World_Type.ob_type = &PyType_Type;
79         buffer_Type.ob_type = &PyType_Type;
80         constant_Type.ob_type = &PyType_Type;
81         euler_Type.ob_type = &PyType_Type;
82         matrix_Type.ob_type = &PyType_Type;
83         quaternion_Type.ob_type = &PyType_Type;
84         rgbTuple_Type.ob_type = &PyType_Type;
85         vector_Type.ob_type = &PyType_Type;
86         property_Type.ob_type = &PyType_Type;
87         point_Type.ob_type = &PyType_Type;
88 }
89
90 /*****************************************************************************/
91 /* Function:     Types_Init                                             */
92 /*****************************************************************************/
93 PyObject *Types_Init( void )
94 {
95         PyObject *submodule, *dict;
96
97         submodule =
98                 Py_InitModule3( "Blender.Types", Null_methods, M_Types_doc );
99
100         dict = PyModule_GetDict( submodule );
101
102         /* The Blender Object Type */
103
104         PyDict_SetItemString( dict, "ObjectType",
105                               ( PyObject * ) &Object_Type );
106
107         /* Blender Object Data Types */
108
109         PyDict_SetItemString( dict, "SceneType", ( PyObject * ) &Scene_Type );
110         PyDict_SetItemString( dict, "RenderDataType",
111                               ( PyObject * ) &RenderData_Type );
112
113         PyDict_SetItemString( dict, "NMeshType", ( PyObject * ) &NMesh_Type );
114         PyDict_SetItemString( dict, "NMFaceType",
115                               ( PyObject * ) &NMFace_Type );
116         PyDict_SetItemString( dict, "NMVertType",
117                               ( PyObject * ) &NMVert_Type );
118         PyDict_SetItemString( dict, "NMColType", ( PyObject * ) &NMCol_Type );
119
120         PyDict_SetItemString( dict, "ArmatureType",
121                               ( PyObject * ) &Armature_Type );
122         PyDict_SetItemString( dict, "BoneType", ( PyObject * ) &Bone_Type );
123
124         PyDict_SetItemString( dict, "CurNurb_Type",
125                               ( PyObject * ) &CurNurb_Type );
126         PyDict_SetItemString( dict, "CurveType", ( PyObject * ) &Curve_Type );
127
128         PyDict_SetItemString( dict, "IpoType", ( PyObject * ) &Ipo_Type );
129         PyDict_SetItemString( dict, "MetaballType",
130                               ( PyObject * ) &Metaball_Type );
131
132         PyDict_SetItemString( dict, "CameraType",
133                               ( PyObject * ) &Camera_Type );
134         PyDict_SetItemString( dict, "ImageType", ( PyObject * ) &Image_Type );
135         PyDict_SetItemString( dict, "LampType", ( PyObject * ) &Lamp_Type );
136         PyDict_SetItemString( dict, "TextType", ( PyObject * ) &Text_Type );
137         PyDict_SetItemString( dict, "Text3dType", ( PyObject * ) &Text3d_Type );
138         PyDict_SetItemString( dict, "MaterialType",
139                               ( PyObject * ) &Material_Type );
140
141         PyDict_SetItemString( dict, "ButtonType",
142                               ( PyObject * ) &Button_Type );
143
144         PyDict_SetItemString( dict, "LatticeType",
145                               ( PyObject * ) &Lattice_Type );
146
147         PyDict_SetItemString( dict, "TextureType",
148                               ( PyObject * ) &Texture_Type );
149         PyDict_SetItemString( dict, "MTexType", ( PyObject * ) &MTex_Type );
150
151         /* External helper Types available to the main ones above */
152
153         PyDict_SetItemString( dict, "vectorType",
154                               ( PyObject * ) &vector_Type );
155         PyDict_SetItemString( dict, "bufferType",
156                               ( PyObject * ) &buffer_Type );
157         PyDict_SetItemString( dict, "constantType",
158                               ( PyObject * ) &constant_Type );
159         PyDict_SetItemString( dict, "rgbTupleType",
160                               ( PyObject * ) &rgbTuple_Type );
161         PyDict_SetItemString( dict, "matrix_Type",
162                               ( PyObject * ) &matrix_Type );
163         PyDict_SetItemString( dict, "eulerType", ( PyObject * ) &euler_Type );
164         PyDict_SetItemString( dict, "quaternionType",
165                               ( PyObject * ) &quaternion_Type );
166         PyDict_SetItemString( dict, "BezTripleType",
167                               ( PyObject * ) &BezTriple_Type );
168         PyDict_SetItemString( dict, "ActionType",
169                               ( PyObject * ) &Action_Type );
170         PyDict_SetItemString( dict, "propertyType",
171                               ( PyObject * ) &property_Type );
172         PyDict_SetItemString( dict, "pointType",
173                               ( PyObject * ) &point_Type );
174
175         return submodule;
176 }