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