Merge branch 'master' into blender2.8
[blender.git] / source / blender / python / gpu / gpu_py_api.c
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * ***** END GPL LICENSE BLOCK *****
19  */
20
21 /** \file blender/python/gpu/gpu_py_api.c
22  *  \ingroup bpygpu
23  *
24  * Experimental Python API, not considered public yet (called '_gpu'),
25  * we may re-expose as public later.
26  *
27  * - Use ``bpygpu_`` for local API.
28  * - Use ``BPyGPU`` for public API.
29  */
30
31 #include <Python.h>
32
33 #include "BLI_utildefines.h"
34
35 #include "../generic/python_utildefines.h"
36
37 #include "gpu_py_matrix.h"
38 #include "gpu_py_select.h"
39 #include "gpu_py_types.h"
40
41 #include "gpu_py_api.h" /* own include */
42
43 PyDoc_STRVAR(GPU_doc,
44 "This module provides Python wrappers for the GPU implementation in Blender. "
45 "Some higher level functions can be found in the `gpu_extras` module. "
46 "\n\n"
47 "Submodules:\n"
48 "\n"
49 ".. toctree::\n"
50 "   :maxdepth: 1\n"
51 "\n"
52 "   gpu.types.rst\n"
53 "   gpu.shader.rst\n"
54 "   gpu.matrix.rst\n"
55 "   gpu.select.rst\n"
56 "\n"
57 );
58 static struct PyModuleDef GPU_module_def = {
59         PyModuleDef_HEAD_INIT,
60         .m_name = "gpu",
61         .m_doc = GPU_doc,
62 };
63
64 PyObject *BPyInit_gpu(void)
65 {
66         PyObject *sys_modules = PyImport_GetModuleDict();
67         PyObject *submodule;
68         PyObject *mod;
69
70         mod = PyModule_Create(&GPU_module_def);
71
72         PyModule_AddObject(mod, "types", (submodule = BPyInit_gpu_types()));
73         PyDict_SetItem(sys_modules, PyModule_GetNameObject(submodule), submodule);
74
75         PyModule_AddObject(mod, "matrix", (submodule = BPyInit_gpu_matrix()));
76         PyDict_SetItem(sys_modules, PyModule_GetNameObject(submodule), submodule);
77
78         PyModule_AddObject(mod, "select", (submodule = BPyInit_gpu_select()));
79         PyDict_SetItem(sys_modules, PyModule_GetNameObject(submodule), submodule);
80
81         PyModule_AddObject(mod, "shader", (submodule = BPyInit_gpu_shader()));
82         PyDict_SetItem(sys_modules, PyModule_GetNameObject(submodule), submodule);
83
84         return mod;
85 }