930ecc7c270ad869020b28cebb5786195dc80380
[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         Build_Type.ob_type = &PyType_Type;
55         Button_Type.ob_type = &PyType_Type;
56         Camera_Type.ob_type = &PyType_Type;
57         CurNurb_Type.ob_type = &PyType_Type;
58         Curve_Type.ob_type = &PyType_Type;
59         Effect_Type.ob_type = &PyType_Type;
60         Image_Type.ob_type = &PyType_Type;
61         Ipo_Type.ob_type = &PyType_Type;
62         IpoCurve_Type.ob_type = &PyType_Type;
63         Lamp_Type.ob_type = &PyType_Type;
64         Lattice_Type.ob_type = &PyType_Type;
65         Material_Type.ob_type = &PyType_Type;
66         Metaball_Type.ob_type = &PyType_Type;
67         MTex_Type.ob_type = &PyType_Type;
68         NMCol_Type.ob_type = &PyType_Type;
69         NMFace_Type.ob_type = &PyType_Type;
70         NMVert_Type.ob_type = &PyType_Type;
71         NMesh_Type.ob_type = &PyType_Type;
72         Object_Type.ob_type = &PyType_Type;
73         Particle_Type.ob_type = &PyType_Type;
74         RenderData_Type.ob_type = &PyType_Type;
75         Scene_Type.ob_type = &PyType_Type;
76         Text_Type.ob_type = &PyType_Type;
77         Texture_Type.ob_type = &PyType_Type;
78         Wave_Type.ob_type = &PyType_Type;
79         World_Type.ob_type = &PyType_Type;
80         buffer_Type.ob_type = &PyType_Type;
81         constant_Type.ob_type = &PyType_Type;
82         euler_Type.ob_type = &PyType_Type;
83         matrix_Type.ob_type = &PyType_Type;
84         quaternion_Type.ob_type = &PyType_Type;
85         rgbTuple_Type.ob_type = &PyType_Type;
86         vector_Type.ob_type = &PyType_Type;
87         property_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, "MaterialType",
138                               ( PyObject * ) & Material_Type );
139
140         PyDict_SetItemString( dict, "ButtonType",
141                               ( PyObject * ) & Button_Type );
142
143         PyDict_SetItemString( dict, "LatticeType",
144                               ( PyObject * ) & Lattice_Type );
145
146         PyDict_SetItemString( dict, "TextureType",
147                               ( PyObject * ) & Texture_Type );
148         PyDict_SetItemString( dict, "MTexType", ( PyObject * ) & MTex_Type );
149
150         /* External helper Types available to the main ones above */
151
152         PyDict_SetItemString( dict, "vectorType",
153                               ( PyObject * ) & vector_Type );
154         PyDict_SetItemString( dict, "bufferType",
155                               ( PyObject * ) & buffer_Type );
156         PyDict_SetItemString( dict, "constantType",
157                               ( PyObject * ) & constant_Type );
158         PyDict_SetItemString( dict, "rgbTupleType",
159                               ( PyObject * ) & rgbTuple_Type );
160         PyDict_SetItemString( dict, "matrix_Type",
161                               ( PyObject * ) & matrix_Type );
162         PyDict_SetItemString( dict, "eulerType", ( PyObject * ) & euler_Type );
163         PyDict_SetItemString( dict, "quaternionType",
164                               ( PyObject * ) & quaternion_Type );
165         PyDict_SetItemString( dict, "BezTripleType",
166                               ( PyObject * ) & BezTriple_Type );
167         PyDict_SetItemString( dict, "ActionType",
168                               ( PyObject * ) & Action_Type );
169         PyDict_SetItemString( dict, "propertyType",
170                               ( PyObject * ) & property_Type );
171
172         return submodule;
173 }