Cleanup: remove redundant, invalid info from headers
[blender.git] / source / blender / python / gpu / gpu_py_api.c
index 373bce160b757247ffa8bd9531b1c5eb4b3dfffa..899302b0cd4b584edc911f94488b0041cffc6715 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
@@ -14,8 +12,6 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * ***** END GPL LICENSE BLOCK *****
  */
 
 /** \file blender/python/gpu/gpu_py_api.c
 
 #include "../generic/python_utildefines.h"
 
+#include "GPU_init_exit.h"
+#include "GPU_primitive.h"
+
 #include "gpu_py_matrix.h"
 #include "gpu_py_select.h"
 #include "gpu_py_types.h"
 
 #include "gpu_py_api.h" /* own include */
 
+
+/* -------------------------------------------------------------------- */
+/** \name Utils to invalidate functions
+ * \{ */
+
+bool bpygpu_is_initialized_or_error(void)
+{
+       if (!GPU_is_initialized()) {
+               PyErr_SetString(
+                       PyExc_SystemError,
+                       "GPU functions for drawing are not available in background mode");
+
+               return false;
+       }
+
+       return true;
+}
+
+/** \} */
+
+
+/* -------------------------------------------------------------------- */
+/** \name Primitive Type Utils
+ * \{ */
+
+int bpygpu_ParsePrimType(PyObject *o, void *p)
+{
+       Py_ssize_t mode_id_len;
+       const char *mode_id = _PyUnicode_AsStringAndSize(o, &mode_id_len);
+       if (mode_id == NULL) {
+               PyErr_Format(PyExc_ValueError,
+                            "expected a string, got %s",
+                            Py_TYPE(o)->tp_name);
+               return 0;
+       }
+#define MATCH_ID(id) \
+       if (mode_id_len == strlen(STRINGIFY(id))) { \
+               if (STREQ(mode_id, STRINGIFY(id))) { \
+                       mode = GPU_PRIM_##id; \
+                       goto success; \
+               } \
+       } ((void)0)
+
+       GPUPrimType mode;
+       MATCH_ID(POINTS);
+       MATCH_ID(LINES);
+       MATCH_ID(TRIS);
+       MATCH_ID(LINE_STRIP);
+       MATCH_ID(LINE_LOOP);
+       MATCH_ID(TRI_STRIP);
+       MATCH_ID(TRI_FAN);
+       MATCH_ID(LINE_STRIP_ADJ);
+
+#undef MATCH_ID
+       PyErr_Format(PyExc_ValueError,
+                    "unknown type literal: '%s'",
+                    mode_id);
+       return 0;
+
+success:
+       (*(GPUPrimType *)p) = mode;
+       return 1;
+}
+
+/** \} */
+
+
+/* -------------------------------------------------------------------- */
+/** \name GPU Module
+ * \{ */
+
+
 PyDoc_STRVAR(GPU_doc,
 "This module provides Python wrappers for the GPU implementation in Blender. "
 "Some higher level functions can be found in the `gpu_extras` module. "
@@ -83,3 +154,5 @@ PyObject *BPyInit_gpu(void)
 
        return mod;
 }
+
+/** \} */