turned BGL.c/.h -> bgl.c/.h
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: BGL.c 21218 2009-06-28 13:27:06Z campbellbarton $
|
||||
* $Id: bgl.c 27189 2010-02-28 15:44:18Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
@@ -15,7 +15,7 @@
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
@@ -32,13 +32,10 @@
|
||||
* implementation. The BGL submodule "wraps" OpenGL functions and constants,
|
||||
* allowing script writers to make OpenGL calls in their Python scripts. */
|
||||
|
||||
#include "BGL.h" /*This must come first */
|
||||
|
||||
#include "bgl.h" /*This must come first */
|
||||
#include <GL/glew.h>
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
static int type_size( int type );
|
||||
static Buffer *make_buffer( int type, int ndimensions, int *dimensions );
|
||||
|
||||
static char Method_Buffer_doc[] =
|
||||
"(type, dimensions, [template]) - Create a new Buffer object\n\n\
|
||||
(type) - The format to store data in\n\
|
||||
@@ -82,7 +79,7 @@ static PyObject *Buffer_dimensions( PyObject * self );
|
||||
static PyObject *Buffer_getattr( PyObject * self, char *name );
|
||||
static PyObject *Buffer_repr( PyObject * self );
|
||||
|
||||
PyTypeObject buffer_Type = {
|
||||
PyTypeObject BGL_bufferType = {
|
||||
PyVarObject_HEAD_INIT(NULL, 0)
|
||||
"buffer", /*tp_name */
|
||||
sizeof( Buffer ), /*tp_basicsize */
|
||||
@@ -120,7 +117,7 @@ static PyObject *Method_##funcname (PyObject *self, PyObject *args) {\
|
||||
/* #endif */
|
||||
|
||||
/********/
|
||||
static int type_size(int type)
|
||||
int BGL_typeSize(int type)
|
||||
{
|
||||
switch (type) {
|
||||
case GL_BYTE:
|
||||
@@ -137,7 +134,7 @@ static int type_size(int type)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static Buffer *make_buffer(int type, int ndimensions, int *dimensions)
|
||||
Buffer *BGL_MakeBuffer(int type, int ndimensions, int *dimensions, void *initbuffer)
|
||||
{
|
||||
Buffer *buffer;
|
||||
void *buf= NULL;
|
||||
@@ -147,39 +144,49 @@ static Buffer *make_buffer(int type, int ndimensions, int *dimensions)
|
||||
for (i=0; i<ndimensions; i++)
|
||||
length*= dimensions[i];
|
||||
|
||||
size= type_size(type);
|
||||
size= BGL_typeSize(type);
|
||||
|
||||
buf= MEM_mallocN(length*size, "Buffer buffer");
|
||||
|
||||
buffer= (Buffer *) PyObject_NEW(Buffer, &buffer_Type);
|
||||
|
||||
buffer= (Buffer *) PyObject_NEW(Buffer, &BGL_bufferType);
|
||||
buffer->parent= NULL;
|
||||
buffer->ndimensions= ndimensions;
|
||||
buffer->dimensions= dimensions;
|
||||
buffer->dimensions= MEM_mallocN(ndimensions*sizeof(int), "Buffer dimensions");
|
||||
memcpy(buffer->dimensions, dimensions, ndimensions*sizeof(int));
|
||||
buffer->type= type;
|
||||
buffer->buf.asvoid= buf;
|
||||
|
||||
for (i= 0; i<length; i++) {
|
||||
if (type==GL_BYTE)
|
||||
buffer->buf.asbyte[i]= 0;
|
||||
else if (type==GL_SHORT)
|
||||
buffer->buf.asshort[i]= 0;
|
||||
else if (type==GL_INT)
|
||||
buffer->buf.asint[i]= 0;
|
||||
else if (type==GL_FLOAT)
|
||||
buffer->buf.asfloat[i]= 0.0f;
|
||||
else if (type==GL_DOUBLE)
|
||||
buffer->buf.asdouble[i]= 0.0;
|
||||
if (initbuffer) {
|
||||
memcpy(buffer->buf.asvoid, initbuffer, length*size);
|
||||
} else {
|
||||
memset(buffer->buf.asvoid, 0, length*size);
|
||||
/*
|
||||
for (i= 0; i<length; i++) {
|
||||
if (type==GL_BYTE)
|
||||
buffer->buf.asbyte[i]= 0;
|
||||
else if (type==GL_SHORT)
|
||||
buffer->buf.asshort[i]= 0;
|
||||
else if (type==GL_INT)
|
||||
buffer->buf.asint[i]= 0;
|
||||
else if (type==GL_FLOAT)
|
||||
buffer->buf.asfloat[i]= 0.0f;
|
||||
else if (type==GL_DOUBLE)
|
||||
buffer->buf.asdouble[i]= 0.0;
|
||||
}
|
||||
*/
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
#define MAX_DIMENSIONS 256
|
||||
static PyObject *Method_Buffer (PyObject *self, PyObject *args)
|
||||
{
|
||||
PyObject *length_ob= NULL, *template= NULL;
|
||||
Buffer *buffer;
|
||||
int dimensions[MAX_DIMENSIONS];
|
||||
|
||||
int i, type;
|
||||
int *dimensions = 0, ndimensions = 0;
|
||||
int ndimensions = 0;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "iO|O", &type, &length_ob, &template)) {
|
||||
PyErr_SetString(PyExc_AttributeError, "expected an int and one or two PyObjects");
|
||||
@@ -192,11 +199,13 @@ static PyObject *Method_Buffer (PyObject *self, PyObject *args)
|
||||
|
||||
if (PyNumber_Check(length_ob)) {
|
||||
ndimensions= 1;
|
||||
dimensions= MEM_mallocN(ndimensions*sizeof(int), "Buffer dimensions");
|
||||
dimensions[0]= PyLong_AsLong(length_ob);
|
||||
} else if (PySequence_Check(length_ob)) {
|
||||
ndimensions= PySequence_Length(length_ob);
|
||||
dimensions= MEM_mallocN(ndimensions*sizeof(int), "Buffer dimensions");
|
||||
if (ndimensions > MAX_DIMENSIONS) {
|
||||
PyErr_SetString(PyExc_AttributeError, "too many dimensions, max is 256");
|
||||
return NULL;
|
||||
}
|
||||
for (i=0; i<ndimensions; i++) {
|
||||
PyObject *ob= PySequence_GetItem(length_ob, i);
|
||||
|
||||
@@ -206,7 +215,7 @@ static PyObject *Method_Buffer (PyObject *self, PyObject *args)
|
||||
}
|
||||
}
|
||||
|
||||
buffer= make_buffer(type, ndimensions, dimensions);
|
||||
buffer= BGL_MakeBuffer(type, ndimensions, dimensions, NULL);
|
||||
if (template && ndimensions) {
|
||||
if (Buffer_ass_slice((PyObject *) buffer, 0, dimensions[0], template)) {
|
||||
Py_DECREF(buffer);
|
||||
@@ -250,9 +259,9 @@ static PyObject *Buffer_item(PyObject *self, int i)
|
||||
for (j=1; j<buf->ndimensions; j++) {
|
||||
length*= buf->dimensions[j];
|
||||
}
|
||||
size= type_size(buf->type);
|
||||
size= BGL_typeSize(buf->type);
|
||||
|
||||
newbuf= (Buffer *) PyObject_NEW(Buffer, &buffer_Type);
|
||||
newbuf= (Buffer *) PyObject_NEW(Buffer, &BGL_bufferType);
|
||||
|
||||
Py_INCREF(self);
|
||||
newbuf->parent= self;
|
||||
@@ -1086,7 +1095,7 @@ static struct PyMethodDef BGL_methods[] = {
|
||||
|
||||
static struct PyModuleDef BGL_module_def = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"BGL", /* m_name */
|
||||
"bgl", /* m_name */
|
||||
0, /* m_doc */
|
||||
0, /* m_size */
|
||||
BGL_methods, /* m_methods */
|
||||
@@ -1104,7 +1113,7 @@ PyObject *BGL_Init(void)
|
||||
PyDict_SetItemString(PySys_GetObject("modules"), BGL_module_def.m_name, mod);
|
||||
dict= PyModule_GetDict(mod);
|
||||
|
||||
if( PyType_Ready( &buffer_Type) < 0)
|
||||
if( PyType_Ready( &BGL_bufferType) < 0)
|
||||
return NULL; /* should never happen */
|
||||
|
||||
#define EXPP_ADDCONST(x) PyDict_SetItemString(dict, #x, item=PyLong_FromLong((int)x)); Py_DECREF(item)
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: BGL.h 21094 2009-06-23 00:09:26Z gsrb3d $
|
||||
* $Id: bgl.h 27188 2010-02-28 14:57:26Z campbellbarton $
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
@@ -15,7 +15,7 @@
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
||||
* All rights reserved.
|
||||
@@ -41,13 +41,19 @@
|
||||
#endif
|
||||
|
||||
#include <Python.h>
|
||||
#include <GL/glew.h>
|
||||
|
||||
PyObject *BGL_Init(void);
|
||||
|
||||
/*@ Create a buffer object */
|
||||
/*@ dimensions is an array of ndimensions integers representing the size of each dimension */
|
||||
/*@ initbuffer if not NULL holds a contiguous buffer with the correct format from which the buffer will be initialized */
|
||||
struct _Buffer *BGL_MakeBuffer( int type, int ndimensions, int *dimensions, void *initbuffer );
|
||||
/*@ Return the size of buffer element, type must be one of GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT or GL_DOUBLE */
|
||||
/*@ returns -1 otherwise */
|
||||
int BGL_typeSize( int type );
|
||||
|
||||
/*@ Buffer Object */
|
||||
/*@ For Python access to OpenGL functions requiring a pointer. */
|
||||
|
||||
typedef struct _Buffer {
|
||||
PyObject_VAR_HEAD
|
||||
PyObject * parent;
|
||||
@@ -67,6 +73,8 @@ typedef struct _Buffer {
|
||||
} buf;
|
||||
} Buffer;
|
||||
|
||||
/*@ The type object */
|
||||
extern PyTypeObject BGL_bufferType;
|
||||
|
||||
/*@ By golly George! It looks like fancy pants macro time!!! */
|
||||
|
||||
@@ -94,7 +102,7 @@ typedef struct _Buffer {
|
||||
|
||||
#define buffer_str "O!"
|
||||
#define buffer_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define buffer_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define buffer_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define buffer_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
/* GL Pointer fields, handled by buffer type */
|
||||
@@ -102,62 +110,62 @@ typedef struct _Buffer {
|
||||
|
||||
#define GLbooleanP_str "O!"
|
||||
#define GLbooleanP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLbooleanP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLbooleanP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLbooleanP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLbyteP_str "O!"
|
||||
#define GLbyteP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLbyteP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLbyteP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLbyteP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLubyteP_str "O!"
|
||||
#define GLubyteP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLubyteP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLubyteP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLubyteP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLintP_str "O!"
|
||||
#define GLintP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLintP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLintP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLintP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLuintP_str "O!"
|
||||
#define GLuintP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLuintP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLuintP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLuintP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLshortP_str "O!"
|
||||
#define GLshortP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLshortP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLshortP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLshortP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLushortP_str "O!"
|
||||
#define GLushortP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLushortP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLushortP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLushortP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLfloatP_str "O!"
|
||||
#define GLfloatP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLfloatP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLfloatP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLfloatP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLdoubleP_str "O!"
|
||||
#define GLdoubleP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLdoubleP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLdoubleP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLdoubleP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLclampfP_str "O!"
|
||||
#define GLclampfP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLclampfP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLclampfP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLclampfP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define GLvoidP_str "O!"
|
||||
#define GLvoidP_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define GLvoidP_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define GLvoidP_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define GLvoidP_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
#define buffer_str "O!"
|
||||
#define buffer_var(number) (bgl_buffer##number)->buf.asvoid
|
||||
#define buffer_ref(number) &buffer_Type, &bgl_buffer##number
|
||||
#define buffer_ref(number) &BGL_bufferType, &bgl_buffer##number
|
||||
#define buffer_def(number) Buffer *bgl_buffer##number
|
||||
|
||||
/*@The standard GL typedefs are used as prototypes, we can't
|
||||
Reference in New Issue
Block a user