Cleanup: use new format string utility
authormano-wii <germano.costa@ig.com.br>
Sat, 6 Oct 2018 03:13:54 +0000 (00:13 -0300)
committermano-wii <germano.costa@ig.com.br>
Sat, 6 Oct 2018 03:13:54 +0000 (00:13 -0300)
source/blender/python/generic/bgl.c
source/blender/python/gpu/gpu_py_element.c

index 981aec17e6b7267fbcf30a1524a7e3a1089434b2..58bfea5fab8ec984b42d00aca72df1afca42d23f 100644 (file)
@@ -37,6 +37,8 @@
 #include "GPU_glew.h"
 #include "MEM_guardedalloc.h"
 
+#include "../generic/py_capi_utils.h"
+
 #include "bgl.h"
 
 
@@ -478,29 +480,19 @@ int BGL_typeSize(int type)
 
 static int gl_buffer_type_from_py_buffer(Py_buffer *pybuffer)
 {
-       char *typestr = pybuffer->format;
+       const char format = FORMAT_STR_GET(pybuffer->format);
        Py_ssize_t itemsize = pybuffer->itemsize;
 
-       if (ELEM(typestr[0], '<', '>', '|')) {
-               typestr += 1;
+       if (FORMAT_STR_IS_FLOAT(format)) {
+               if (itemsize == 4) return GL_FLOAT;
+               if (itemsize == 8) return GL_DOUBLE;
        }
-
-       switch (typestr[0]) {
-               case 't':
-               case 'b':
-               case 'h':
-               case 'i':
-               case 'l':
-                       if (itemsize == 1) return GL_BYTE;
-                       if (itemsize == 2) return GL_SHORT;
-                       if (itemsize == 4) return GL_INT;
-                       break;
-               case 'f':
-               case 'd':
-                       if (itemsize == 4) return GL_FLOAT;
-                       if (itemsize == 8) return GL_DOUBLE;
-                       break;
+       if (FORMAT_STR_IS_BYTE(format) || FORMAT_STR_IS_INT(format)) {
+               if (itemsize == 1) return GL_BYTE;
+               if (itemsize == 2) return GL_SHORT;
+               if (itemsize == 4) return GL_INT;
        }
+
        return -1; /* UNKNOWN */
 }
 
index 657358d04482537ea0af2fa76505950ff2088db1..0c4cd1d815b84408bad06fb8358a313a913382de 100644 (file)
@@ -93,11 +93,8 @@ static PyObject *bpygpu_IndexBuf_new(PyTypeObject *UNUSED(type), PyObject *args,
 
                bool format_error = pybuffer.itemsize != 4;
                {
-                       char *typestr = pybuffer.format;
-                       if (ELEM(typestr[0], '<', '>', '|')) {
-                               typestr += 1;
-                       }
-                       if (ELEM(typestr[0], 'f', 'd')) {
+                       char format = FORMAT_STR_GET(pybuffer.format);
+                       if (FORMAT_STR_IS_FLOAT(format)) {
                                format_error = true;
                        }
                }