+case "$target" in + *sparc* ) + AC_DEFINE(SUN_OGL_NO_VERTEX_MACROS,1,[Fix for Sun's GL]) + ;; +esac + Also added the include to the above .c files. I'm going to add it to everything in source just haven't gotten that far yet. Kent
2684 lines
85 KiB
C
2684 lines
85 KiB
C
/* python.c MIXED MODEL
|
|
*
|
|
* june 99
|
|
* $Id$
|
|
*
|
|
* ***** BEGIN GPL/BL DUAL 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
|
|
* of the License, or (at your option) any later version. The Blender
|
|
* Foundation also sells licenses for use in proprietary software under
|
|
* the Blender License. See http://www.blender.org/BL/ for information
|
|
* about this.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* 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.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL/BL DUAL LICENSE BLOCK *****
|
|
*/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#include "BLI_winstuff.h"
|
|
#endif
|
|
|
|
#include "MEM_guardedalloc.h"
|
|
|
|
#include "BMF_Api.h"
|
|
|
|
#include "DNA_screen_types.h"
|
|
#include "DNA_space_types.h"
|
|
#include "DNA_text_types.h"
|
|
|
|
#include "BKE_global.h"
|
|
|
|
#include "BIF_gl.h"
|
|
#include "BIF_screen.h"
|
|
#include "BIF_space.h"
|
|
#include "BIF_interface.h"
|
|
#include "BIF_mywindow.h"
|
|
|
|
#include "interface.h"
|
|
#include "mydevice.h" /* for all the event constants */
|
|
|
|
#include "Python.h"
|
|
#include "BPY_macros.h"
|
|
#include "BPY_main.h"
|
|
#include "BPY_tools.h"
|
|
|
|
int disable_force_draw= 0;
|
|
|
|
/* hack to flag that window redraw has happened inside slider callback: */
|
|
|
|
static void exit_pydraw (SpaceText *st);
|
|
static uiBlock *Get_uiBlock (void);
|
|
void initDraw (void);
|
|
|
|
/* Button Object */
|
|
|
|
typedef struct _Button {
|
|
PyObject_VAR_HEAD
|
|
|
|
int type; /* 1 == int, 2 == float, 3 == string */
|
|
int slen; /* length of string (if type == 3) */
|
|
union {
|
|
int asint;
|
|
float asfloat;
|
|
char *asstr;
|
|
} val;
|
|
} Button;
|
|
|
|
|
|
static void Button_dealloc(PyObject *self) {
|
|
Button *but= (Button*) self;
|
|
|
|
if(but->type==3) MEM_freeN(but->val.asstr);
|
|
|
|
PyMem_DEL(self);
|
|
}
|
|
|
|
static PyObject *Button_getattr(PyObject *self, char *name) {
|
|
Button *but= (Button*) self;
|
|
|
|
if(STREQ(name, "val")) {
|
|
if (but->type==1)
|
|
return Py_BuildValue("i", but->val.asint);
|
|
else if (but->type==2)
|
|
return Py_BuildValue("f", but->val.asfloat);
|
|
else if (but->type==3)
|
|
return Py_BuildValue("s", but->val.asstr);
|
|
}
|
|
PyErr_SetString(PyExc_AttributeError, name);
|
|
return NULL;
|
|
}
|
|
|
|
static int Button_setattr(PyObject *self, char *name, PyObject *v) {
|
|
Button *but= (Button*) self;
|
|
|
|
if(STREQ(name, "val")) {
|
|
if (but->type==1)
|
|
PyArg_Parse(v, "i", &but->val.asint);
|
|
else if (but->type==2)
|
|
PyArg_Parse(v, "f", &but->val.asfloat);
|
|
else if (but->type==3) {
|
|
char *newstr;
|
|
|
|
PyArg_Parse(v, "s", &newstr);
|
|
strncpy(but->val.asstr, newstr, but->slen);
|
|
}
|
|
} else {
|
|
PyErr_SetString(PyExc_AttributeError, name);
|
|
return -1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static PyObject *Button_repr(PyObject *self) {
|
|
return PyObject_Repr(Button_getattr(self, "val"));
|
|
}
|
|
|
|
PyTypeObject Button_Type = {
|
|
PyObject_HEAD_INIT(NULL)
|
|
0, /*ob_size*/
|
|
"Button", /*tp_name*/
|
|
sizeof(Button), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
(destructor) Button_dealloc, /*tp_dealloc*/
|
|
(printfunc) 0, /*tp_print*/
|
|
(getattrfunc) Button_getattr, /*tp_getattr*/
|
|
(setattrfunc) Button_setattr, /*tp_setattr*/
|
|
(cmpfunc) 0, /*tp_cmp*/
|
|
(reprfunc) Button_repr, /*tp_repr*/
|
|
};
|
|
|
|
|
|
static Button *newbutton (void) {
|
|
Button *but= (Button *) PyObject_NEW(Button, &Button_Type);
|
|
|
|
return but;
|
|
}
|
|
|
|
|
|
/* GUI interface routines */
|
|
|
|
static void exit_pydraw(SpaceText *st)
|
|
{
|
|
scrarea_queue_redraw(st->area);
|
|
|
|
if (st) {
|
|
Py_XDECREF((PyObject *) st->py_draw);
|
|
Py_XDECREF((PyObject *) st->py_event);
|
|
Py_XDECREF((PyObject *) st->py_button);
|
|
|
|
st->py_draw= st->py_event= st->py_button= NULL;
|
|
}
|
|
}
|
|
|
|
static void exec_callback(SpaceText *st, PyObject *callback, PyObject *args)
|
|
{
|
|
PyObject *result= PyEval_CallObject(callback, args);
|
|
|
|
if (result==NULL) {
|
|
st->text->compiled= NULL;
|
|
PyErr_Print();
|
|
exit_pydraw(st);
|
|
}
|
|
Py_XDECREF(result);
|
|
Py_DECREF(args);
|
|
}
|
|
|
|
/* the handler for drawing routines (see Register method) */
|
|
|
|
void BPY_spacetext_do_pywin_draw(SpaceText *st)
|
|
{
|
|
uiBlock *block;
|
|
char butblock[20];
|
|
|
|
sprintf(butblock, "win %d", curarea->win);
|
|
block= uiNewBlock(&curarea->uiblocks, butblock, UI_EMBOSSX, UI_HELV, curarea->win);
|
|
|
|
if (st->py_draw) {
|
|
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
|
exec_callback(st, st->py_draw, Py_BuildValue("()"));
|
|
glPopAttrib();
|
|
} else {
|
|
glClearColor(0.4375, 0.4375, 0.4375, 0.0);
|
|
glClear(GL_COLOR_BUFFER_BIT);
|
|
}
|
|
|
|
uiDrawBlock(block);
|
|
|
|
curarea->win_swap= WIN_BACK_OK;
|
|
}
|
|
|
|
/* the handler for button event routines (see Register method) */
|
|
|
|
static void spacetext_do_pywin_buttons(SpaceText *st, unsigned short event) {
|
|
if (st->py_button) {
|
|
exec_callback(st, st->py_button, Py_BuildValue("(i)", event));
|
|
}
|
|
}
|
|
|
|
/* calls the generic event handling methods registered with Register */
|
|
|
|
void BPY_spacetext_do_pywin_event(SpaceText *st, unsigned short event, short val) {
|
|
if (event==QKEY && G.qual & (LR_ALTKEY|LR_CTRLKEY|LR_SHIFTKEY)) {
|
|
exit_pydraw(st);
|
|
return;
|
|
}
|
|
|
|
if (val) {
|
|
if (uiDoBlocks(&curarea->uiblocks, event)!=UI_NOTHING ) event= 0;
|
|
|
|
if (event==UI_BUT_EVENT) {
|
|
spacetext_do_pywin_buttons(st, val);
|
|
}
|
|
}
|
|
|
|
if (st->py_event) {
|
|
exec_callback(st, st->py_event, Py_BuildValue("(ii)", event, val));
|
|
}
|
|
}
|
|
|
|
int BPY_spacetext_is_pywin(SpaceText *st) {
|
|
return (st->py_draw || st->py_event || st->py_button);
|
|
}
|
|
|
|
static char Method_Exit_doc[]=
|
|
"() - Exit the windowing interface";
|
|
static PyObject *Method_Exit (PyObject *self, PyObject *args)
|
|
{
|
|
SpaceText *st= curarea->spacedata.first;
|
|
#ifdef CLEAR_NAMESPACE
|
|
PyObject *d;
|
|
#endif
|
|
BPY_TRY(PyArg_ParseTuple(args, ""));
|
|
|
|
exit_pydraw(st);
|
|
#ifdef CLEAR_NAMESPACE
|
|
d = st->py_globaldict; // The current window's global namespace dictionary
|
|
if (d) {
|
|
PyDict_Clear(d);
|
|
Py_DECREF(d); // release dictionary
|
|
}
|
|
#endif
|
|
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
static char Method_Register_doc[]=
|
|
"(draw, event, button) - Register callbacks for windowing\n\
|
|
\n\
|
|
(draw) A function to draw the screen, taking no arguments\n\
|
|
(event) A function to handle events, taking 2 arguments (evt, val)\n\
|
|
(evt) The event number\n\
|
|
(val) The value modifier (for key and mouse press/release)\n\
|
|
(button) A function to handle button events, taking 1 argument (evt)\n\
|
|
(evt) The button number\n\
|
|
\n\
|
|
A None object can be passed if a callback is unused.";
|
|
|
|
static PyObject *Method_Register (PyObject *self, PyObject *args)
|
|
{
|
|
PyObject *newdrawc= NULL, *neweventc= NULL, *newbuttonc= NULL;
|
|
SpaceText *st= curarea->spacedata.first;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "O|OO", &newdrawc, &neweventc, &newbuttonc));
|
|
|
|
/* This is a hack again:
|
|
* Every python script should actually do a global variable cleanup at
|
|
* the end of execution.
|
|
* For scripts registering GUI callbacks, this does not work, because
|
|
* the global namespace of the interpreter still needs to be accessed
|
|
* from the callback.
|
|
* Workaround: a text object has a flag which allows the global name
|
|
* space to be cleared at the end of the script. This flag should be
|
|
* normally set when executed with Alt-P. For a script registering with
|
|
* the GUI though, clear the flag and set it when the GUI mode is left
|
|
* (Method_Exit).
|
|
*/
|
|
|
|
BPY_debug(("--- disable clear namespace"));
|
|
|
|
st->flags &= ~ST_CLEAR_NAMESPACE;
|
|
|
|
|
|
if (!PyCallable_Check(newdrawc)) newdrawc= NULL;
|
|
if (!PyCallable_Check(neweventc)) neweventc= NULL;
|
|
if (!PyCallable_Check(newbuttonc)) newbuttonc= NULL;
|
|
|
|
if (!(newdrawc || neweventc || newbuttonc))
|
|
return BPY_incr_ret(Py_None);
|
|
|
|
exit_pydraw(st);
|
|
|
|
Py_XINCREF(newdrawc);
|
|
Py_XINCREF(neweventc);
|
|
Py_XINCREF(newbuttonc);
|
|
|
|
st->py_draw= newdrawc;
|
|
st->py_event= neweventc;
|
|
st->py_button= newbuttonc;
|
|
|
|
scrarea_queue_redraw(st->area);
|
|
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
|
|
static char Method_Redraw_doc[]=
|
|
"([after]) - Queue a redraw event\n\
|
|
\n\
|
|
[after=0] Determines whether the redraw is processed before or after other input events.\n\
|
|
\n\
|
|
Redraw events are buffered so that regardless of how many events are queued\n\
|
|
the window only receives one redraw event.";
|
|
|
|
static PyObject *Method_Redraw (PyObject *self, PyObject *args)
|
|
{
|
|
int after= 0;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "|i", &after));
|
|
|
|
if (after) addafterqueue(curarea->win, REDRAW, 1);
|
|
else scrarea_queue_winredraw(curarea);
|
|
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
|
|
static char Method_Draw_doc[]=
|
|
"() - Force an immediate redraw\n\
|
|
\n\
|
|
Forced redraws are not buffered, in other words the window is redrawn\n\
|
|
exactly once for everytime this function is called.";
|
|
static PyObject *Method_Draw (PyObject *self, PyObject *args)
|
|
{
|
|
/* If forced drawing is disable queue a redraw event instead */
|
|
if (disable_force_draw) {
|
|
scrarea_queue_winredraw(curarea);
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, ""));
|
|
|
|
scrarea_do_windraw(curarea);
|
|
|
|
screen_swapbuffers();
|
|
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
|
|
|
|
static char Method_Create_doc[]=
|
|
"(value) - Create a default Button object\n\
|
|
\n\
|
|
(value) - The value to store in the button\n\
|
|
\n\
|
|
Valid values are ints, floats, and strings";
|
|
|
|
static PyObject *Method_Create (PyObject *self, PyObject *args)
|
|
{
|
|
Button *but;
|
|
PyObject *in;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "O", &in));
|
|
|
|
but= newbutton();
|
|
if(PyFloat_Check(in)) {
|
|
but->type= 2;
|
|
but->val.asfloat= PyFloat_AsDouble(in);
|
|
} else if (PyInt_Check(in)) {
|
|
but->type= 1;
|
|
but->val.asint= PyInt_AsLong(in);
|
|
} else if (PyString_Check(in)) {
|
|
char *newstr= PyString_AsString(in);
|
|
|
|
but->type= 3;
|
|
but->slen= strlen(newstr);
|
|
but->val.asstr= MEM_mallocN(but->slen+1, "button string");
|
|
|
|
strcpy(but->val.asstr, newstr);
|
|
}
|
|
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
static uiBlock *Get_uiBlock(void)
|
|
{
|
|
char butblock[32];
|
|
|
|
sprintf(butblock, "win %d", curarea->win);
|
|
|
|
return uiGetBlock(butblock, curarea);
|
|
}
|
|
|
|
static char Method_Button_doc[]=
|
|
"(name, event, x, y, width, height, [tooltip]) - Create a new Button (push) button\n\
|
|
\n\
|
|
(name) A string to display on the button\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
[tooltip=""] The button's tooltip";
|
|
|
|
static PyObject *Method_Button (PyObject *self, PyObject *args)
|
|
{
|
|
uiBlock *block;
|
|
char *name, *tip= NULL;
|
|
int event;
|
|
int x, y, w, h;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "siiiii|s", &name, &event, &x, &y, &w, &h, &tip));
|
|
|
|
block= Get_uiBlock();
|
|
|
|
if(block) uiDefBut(block, BUT, event, name, x, y, w, h, 0, 0, 0, 0, 0, tip);
|
|
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
static char Method_Menu_doc[]=
|
|
"(name, event, x, y, width, height, default, [tooltip]) - Create a new Menu button\n\
|
|
\n\
|
|
(name) A string to display on the button\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
(default) The number of the option to be selected by default\n\
|
|
[tooltip=""] The button's tooltip\n\
|
|
\n\
|
|
The menu options are specified through the name of the\n\
|
|
button. Options are followed by a format code and seperated\n\
|
|
by the '|' (pipe) character.\n\
|
|
Valid format codes are\n\
|
|
%t - The option should be used as the title\n\
|
|
%xN - The option should set the integer N in the button value.";
|
|
|
|
static PyObject *Method_Menu (PyObject *self, PyObject *args)
|
|
{
|
|
uiBlock *block;
|
|
char *name, *tip= NULL;
|
|
int event, def;
|
|
int x, y, w, h;
|
|
Button *but;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "siiiiii|s", &name, &event, &x, &y, &w, &h, &def, &tip));
|
|
|
|
but= newbutton();
|
|
but->type= 1;
|
|
but->val.asint= def;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) uiDefButI(block, MENU, event, name, x, y, w, h, &but->val.asint, 0, 0, 0, 0, tip);
|
|
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
static char Method_Toggle_doc[]=
|
|
"(name, event, x, y, width, height, default, [tooltip]) - Create a new Toggle button\n\
|
|
\n\
|
|
(name) A string to display on the button\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
(default) An integer (0 or 1) specifying the default state\n\
|
|
[tooltip=""] The button's tooltip";
|
|
|
|
static PyObject *Method_Toggle (PyObject *self, PyObject *args)
|
|
{
|
|
uiBlock *block;
|
|
char *name, *tip= NULL;
|
|
int event;
|
|
int x, y, w, h, def;
|
|
Button *but;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "siiiiii|s", &name, &event, &x, &y, &w, &h, &def, &tip));
|
|
|
|
but= newbutton();
|
|
but->type= 1;
|
|
but->val.asint= def;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) uiDefButI(block, TOG, event, name, x, y, w, h, &but->val.asint, 0, 0, 0, 0, tip);
|
|
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
|
|
/* DO NOT TOUCH THIS FUNCTION !
|
|
Redrawing a slider inside its own callback routine is actually forbidden
|
|
with the current toolkit architecture (button routines are not reentrant).
|
|
But it works anyway.
|
|
XXX This is condemned to be dinosource in future - it's a hack.
|
|
*/
|
|
|
|
static void py_slider_update(void *butv, void *data2_unused)
|
|
{
|
|
uiBut *but= butv;
|
|
|
|
disable_force_draw= 1;
|
|
/*
|
|
Disable forced drawing, otherwise the button object which
|
|
is still being used might be deleted
|
|
*/
|
|
|
|
// UIfrontbuf = 0;
|
|
// spacetext_do_pywin_buttons(curarea->spacedata.first, but->retval);
|
|
|
|
g_window_redrawn = 0;
|
|
curarea->win_swap= WIN_BACK_OK;
|
|
UIfrontbuf = 1;
|
|
spacetext_do_pywin_buttons(curarea->spacedata.first, uiButGetRetVal(but));
|
|
UIfrontbuf = 0;
|
|
|
|
if (!g_window_redrawn) /* if Redraw already called */
|
|
Windowmodule_Redraw(0, Py_BuildValue("(i)", SPACE_VIEW3D));
|
|
|
|
disable_force_draw= 0;
|
|
}
|
|
|
|
static char Method_Slider_doc[]=
|
|
"(name, event, x, y, width, height, initial, min, max, [update, tooltip]) - Create a new Slider button\n\
|
|
\n\
|
|
(name) A string to display on the button\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
(initial, min, max) Three values (int or float) specifying the initial and limit values.\n\
|
|
[update=1] A value controlling whether the slider will emit events as it is edited.\n\
|
|
A non-zero value (default) enables the events. A zero value supresses them.\n\
|
|
[tooltip=""] The button's tooltip";
|
|
|
|
static PyObject *Method_Slider (PyObject *self, PyObject *args)
|
|
{
|
|
uiBlock *block;
|
|
char *name, *tip= NULL;
|
|
int event;
|
|
int x, y, w, h, realtime=1;
|
|
Button *but;
|
|
PyObject *mino, *maxo, *inio;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "siiiiiOOO|is", &name, &event, &x, &y, &w, &h, &inio, &mino, &maxo, &realtime, &tip));
|
|
|
|
|
|
but= newbutton();
|
|
if (PyFloat_Check(inio)) {
|
|
float ini, min, max;
|
|
|
|
ini= PyFloat_AsDouble(inio);
|
|
min= PyFloat_AsDouble(mino);
|
|
max= PyFloat_AsDouble(maxo);
|
|
|
|
but->type= 2;
|
|
but->val.asfloat= ini;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) {
|
|
uiBut *ubut;
|
|
ubut= uiDefButF(block, NUMSLI, event, name, x, y, w, h, &but->val.asfloat, min, max, 0, 0, tip);
|
|
if (realtime) uiButSetFunc(ubut, py_slider_update, ubut, NULL);
|
|
}
|
|
}
|
|
else {
|
|
int ini, min, max;
|
|
|
|
ini= PyInt_AsLong(inio);
|
|
min= PyInt_AsLong(mino);
|
|
max= PyInt_AsLong(maxo);
|
|
|
|
but->type= 1;
|
|
but->val.asint= ini;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) {
|
|
uiBut *ubut;
|
|
ubut= uiDefButI(block, NUMSLI, event, name, x, y, w, h, &but->val.asint, min, max, 0, 0, tip);
|
|
if (realtime) uiButSetFunc(ubut, py_slider_update, ubut, NULL);
|
|
}
|
|
}
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
static char Method_Scrollbar_doc[]=
|
|
"(event, x, y, width, height, initial, min, max, [update, tooltip]) - Create a new Scrollbar\n\
|
|
\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
(initial, min, max) Three values (int or float) specifying the initial and limit values.\n\
|
|
[update=1] A value controlling whether the slider will emit events as it is edited.\n\
|
|
A non-zero value (default) enables the events. A zero value supresses them.\n\
|
|
[tooltip=""] The button's tooltip";
|
|
|
|
static PyObject *Method_Scrollbar (PyObject *self, PyObject *args)
|
|
{
|
|
char *tip= NULL;
|
|
uiBlock *block;
|
|
int event;
|
|
int x, y, w, h, realtime=1;
|
|
Button *but;
|
|
PyObject *mino, *maxo, *inio;
|
|
float ini, min, max;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "iiiiiOOO|is", &event, &x, &y, &w, &h, &inio, &mino, &maxo, &realtime, &tip));
|
|
|
|
if (!PyNumber_Check(inio) || !PyNumber_Check(inio) || !PyNumber_Check(inio))
|
|
return BPY_err_ret_ob(PyExc_AttributeError, "expected numbers for initial, min, and max");
|
|
|
|
but= newbutton();
|
|
|
|
if (PyFloat_Check(inio)) but->type= 2;
|
|
else but->type= 1;
|
|
|
|
ini= PyFloat_AsDouble(inio);
|
|
min= PyFloat_AsDouble(mino);
|
|
max= PyFloat_AsDouble(maxo);
|
|
|
|
if (but->type==2) {
|
|
but->val.asfloat= ini;
|
|
block= Get_uiBlock();
|
|
if(block) {
|
|
uiBut *ubut;
|
|
ubut= uiDefButF(block, SCROLL, event, "", x, y, w, h, &but->val.asfloat, min, max, 0, 0, tip);
|
|
if (realtime) uiButSetFunc(ubut, py_slider_update, ubut, NULL);
|
|
}
|
|
} else {
|
|
but->val.asint= ini;
|
|
block= Get_uiBlock();
|
|
if(block) {
|
|
uiBut *ubut;
|
|
ubut= uiDefButI(block, SCROLL, event, "", x, y, w, h, &but->val.asint, min, max, 0, 0, tip);
|
|
if (realtime) uiButSetFunc(ubut, py_slider_update, ubut, NULL);
|
|
}
|
|
}
|
|
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
static char Method_Number_doc[]=
|
|
"(name, event, x, y, width, height, initial, min, max, [tooltip]) - Create a new Number button\n\
|
|
\n\
|
|
(name) A string to display on the button\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
(initial, min, max) Three values (int or float) specifying the initial and limit values.\n\
|
|
[tooltip=""] The button's tooltip";
|
|
|
|
static PyObject *Method_Number (PyObject *self, PyObject *args)
|
|
{
|
|
uiBlock *block;
|
|
char *name, *tip= NULL;
|
|
int event;
|
|
int x, y, w, h;
|
|
Button *but;
|
|
PyObject *mino, *maxo, *inio;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "siiiiiOOO|s", &name, &event, &x, &y, &w, &h, &inio, &mino, &maxo, &tip));
|
|
|
|
but= newbutton();
|
|
|
|
if (PyFloat_Check(inio)) {
|
|
float ini, min, max;
|
|
|
|
ini= PyFloat_AsDouble(inio);
|
|
min= PyFloat_AsDouble(mino);
|
|
max= PyFloat_AsDouble(maxo);
|
|
|
|
but->type= 2;
|
|
but->val.asfloat= ini;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) uiDefButF(block, NUM, event, name, x, y, w, h, &but->val.asfloat, min, max, 0, 0, tip);
|
|
} else {
|
|
int ini, min, max;
|
|
|
|
ini= PyInt_AsLong(inio);
|
|
min= PyInt_AsLong(mino);
|
|
max= PyInt_AsLong(maxo);
|
|
|
|
but->type= 1;
|
|
but->val.asint= ini;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) uiDefButI(block, NUM, event, name, x, y, w, h, &but->val.asint, min, max, 0, 0, tip);
|
|
}
|
|
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
static char Method_String_doc[]=
|
|
"(name, event, x, y, width, height, initial, length, [tooltip]) - Create a new String button\n\
|
|
\n\
|
|
(name) A string to display on the button\n\
|
|
(event) The event number to pass to the button event function when activated\n\
|
|
(x, y) The lower left coordinate of the button\n\
|
|
(width, height) The button width and height\n\
|
|
(initial) The string to display initially\n\
|
|
(length) The maximum input length\n\
|
|
[tooltip=""] The button's tooltip";
|
|
|
|
static PyObject *Method_String (PyObject *self, PyObject *args)
|
|
{
|
|
uiBlock *block;
|
|
char *name, *tip= NULL, *newstr;
|
|
int event;
|
|
int x, y, w, h, len;
|
|
Button *but;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "siiiiisi|s", &name, &event, &x, &y, &w, &h, &newstr, &len, &tip));
|
|
|
|
but= newbutton();
|
|
but->type= 3;
|
|
but->slen= len;
|
|
but->val.asstr= MEM_mallocN(len+1, "button string");
|
|
|
|
strncpy(but->val.asstr, newstr, len);
|
|
but->val.asstr[len]= 0;
|
|
|
|
block= Get_uiBlock();
|
|
if(block) uiDefBut(block, TEX, event, name, x, y, w, h, but->val.asstr, 0, len, 0, 0, tip);
|
|
|
|
return (PyObject *) but;
|
|
}
|
|
|
|
static char Method_Text_doc[]=
|
|
"(text) - Draw text onscreen\n\
|
|
\n\
|
|
(text) The text to draw\n";
|
|
static PyObject *Method_Text (PyObject *self, PyObject *args)
|
|
{
|
|
char *text;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "s", &text));
|
|
|
|
BMF_DrawString(G.font, text);
|
|
|
|
return BPY_incr_ret(Py_None);
|
|
}
|
|
|
|
#undef MethodDef
|
|
#define MethodDef(func) _MethodDef(func, Method)
|
|
|
|
static struct PyMethodDef Draw_methods[] = {
|
|
MethodDef(Create),
|
|
MethodDef(Button),
|
|
MethodDef(Toggle),
|
|
MethodDef(Menu),
|
|
MethodDef(Slider),
|
|
MethodDef(Scrollbar),
|
|
MethodDef(Number),
|
|
MethodDef(String),
|
|
|
|
MethodDef(Text),
|
|
|
|
MethodDef(Exit),
|
|
MethodDef(Redraw),
|
|
MethodDef(Draw),
|
|
MethodDef(Register),
|
|
|
|
{NULL, NULL}
|
|
};
|
|
|
|
PyObject *init_py_draw(void)
|
|
{
|
|
PyObject *mod= Py_InitModule(SUBMODULE(Draw), Draw_methods);
|
|
PyObject *dict= PyModule_GetDict(mod);
|
|
|
|
Button_Type.ob_type= &PyType_Type;
|
|
|
|
BPY_ADDCONST(dict, LEFTMOUSE);
|
|
BPY_ADDCONST(dict, MIDDLEMOUSE);
|
|
BPY_ADDCONST(dict, RIGHTMOUSE);
|
|
BPY_ADDCONST(dict, MOUSEX);
|
|
BPY_ADDCONST(dict, MOUSEY);
|
|
BPY_ADDCONST(dict, TIMER0);
|
|
BPY_ADDCONST(dict, TIMER1);
|
|
BPY_ADDCONST(dict, TIMER2);
|
|
BPY_ADDCONST(dict, TIMER3);
|
|
BPY_ADDCONST(dict, KEYBD);
|
|
BPY_ADDCONST(dict, RAWKEYBD);
|
|
BPY_ADDCONST(dict, REDRAW);
|
|
BPY_ADDCONST(dict, INPUTCHANGE);
|
|
BPY_ADDCONST(dict, QFULL);
|
|
BPY_ADDCONST(dict, WINFREEZE);
|
|
BPY_ADDCONST(dict, WINTHAW);
|
|
BPY_ADDCONST(dict, WINCLOSE);
|
|
BPY_ADDCONST(dict, WINQUIT);
|
|
#ifndef IRISGL
|
|
BPY_ADDCONST(dict, Q_FIRSTTIME);
|
|
#endif
|
|
BPY_ADDCONST(dict, AKEY);
|
|
BPY_ADDCONST(dict, BKEY);
|
|
BPY_ADDCONST(dict, CKEY);
|
|
BPY_ADDCONST(dict, DKEY);
|
|
BPY_ADDCONST(dict, EKEY);
|
|
BPY_ADDCONST(dict, FKEY);
|
|
BPY_ADDCONST(dict, GKEY);
|
|
BPY_ADDCONST(dict, HKEY);
|
|
BPY_ADDCONST(dict, IKEY);
|
|
BPY_ADDCONST(dict, JKEY);
|
|
BPY_ADDCONST(dict, KKEY);
|
|
BPY_ADDCONST(dict, LKEY);
|
|
BPY_ADDCONST(dict, MKEY);
|
|
BPY_ADDCONST(dict, NKEY);
|
|
BPY_ADDCONST(dict, OKEY);
|
|
BPY_ADDCONST(dict, PKEY);
|
|
BPY_ADDCONST(dict, QKEY);
|
|
BPY_ADDCONST(dict, RKEY);
|
|
BPY_ADDCONST(dict, SKEY);
|
|
BPY_ADDCONST(dict, TKEY);
|
|
BPY_ADDCONST(dict, UKEY);
|
|
BPY_ADDCONST(dict, VKEY);
|
|
BPY_ADDCONST(dict, WKEY);
|
|
BPY_ADDCONST(dict, XKEY);
|
|
BPY_ADDCONST(dict, YKEY);
|
|
BPY_ADDCONST(dict, ZKEY);
|
|
BPY_ADDCONST(dict, ZEROKEY);
|
|
BPY_ADDCONST(dict, ONEKEY);
|
|
BPY_ADDCONST(dict, TWOKEY);
|
|
BPY_ADDCONST(dict, THREEKEY);
|
|
BPY_ADDCONST(dict, FOURKEY);
|
|
BPY_ADDCONST(dict, FIVEKEY);
|
|
BPY_ADDCONST(dict, SIXKEY);
|
|
BPY_ADDCONST(dict, SEVENKEY);
|
|
BPY_ADDCONST(dict, EIGHTKEY);
|
|
BPY_ADDCONST(dict, NINEKEY);
|
|
BPY_ADDCONST(dict, CAPSLOCKKEY);
|
|
BPY_ADDCONST(dict, LEFTCTRLKEY);
|
|
BPY_ADDCONST(dict, LEFTALTKEY);
|
|
BPY_ADDCONST(dict, RIGHTALTKEY);
|
|
BPY_ADDCONST(dict, RIGHTCTRLKEY);
|
|
BPY_ADDCONST(dict, RIGHTSHIFTKEY);
|
|
BPY_ADDCONST(dict, LEFTSHIFTKEY);
|
|
BPY_ADDCONST(dict, ESCKEY);
|
|
BPY_ADDCONST(dict, TABKEY);
|
|
BPY_ADDCONST(dict, RETKEY);
|
|
BPY_ADDCONST(dict, SPACEKEY);
|
|
BPY_ADDCONST(dict, LINEFEEDKEY);
|
|
BPY_ADDCONST(dict, BACKSPACEKEY);
|
|
BPY_ADDCONST(dict, DELKEY);
|
|
BPY_ADDCONST(dict, SEMICOLONKEY);
|
|
BPY_ADDCONST(dict, PERIODKEY);
|
|
BPY_ADDCONST(dict, COMMAKEY);
|
|
BPY_ADDCONST(dict, QUOTEKEY);
|
|
BPY_ADDCONST(dict, ACCENTGRAVEKEY);
|
|
BPY_ADDCONST(dict, MINUSKEY);
|
|
BPY_ADDCONST(dict, SLASHKEY);
|
|
BPY_ADDCONST(dict, BACKSLASHKEY);
|
|
BPY_ADDCONST(dict, EQUALKEY);
|
|
BPY_ADDCONST(dict, LEFTBRACKETKEY);
|
|
BPY_ADDCONST(dict, RIGHTBRACKETKEY);
|
|
BPY_ADDCONST(dict, LEFTARROWKEY);
|
|
BPY_ADDCONST(dict, DOWNARROWKEY);
|
|
BPY_ADDCONST(dict, RIGHTARROWKEY);
|
|
BPY_ADDCONST(dict, UPARROWKEY);
|
|
BPY_ADDCONST(dict, PAD2);
|
|
BPY_ADDCONST(dict, PAD4);
|
|
BPY_ADDCONST(dict, PAD6);
|
|
BPY_ADDCONST(dict, PAD8);
|
|
BPY_ADDCONST(dict, PAD1);
|
|
BPY_ADDCONST(dict, PAD3);
|
|
BPY_ADDCONST(dict, PAD5);
|
|
BPY_ADDCONST(dict, PAD7);
|
|
BPY_ADDCONST(dict, PAD9);
|
|
BPY_ADDCONST(dict, PADPERIOD);
|
|
BPY_ADDCONST(dict, PADSLASHKEY);
|
|
BPY_ADDCONST(dict, PADASTERKEY);
|
|
BPY_ADDCONST(dict, PAD0);
|
|
BPY_ADDCONST(dict, PADMINUS);
|
|
BPY_ADDCONST(dict, PADENTER);
|
|
BPY_ADDCONST(dict, PADPLUSKEY);
|
|
BPY_ADDCONST(dict, F1KEY);
|
|
BPY_ADDCONST(dict, F2KEY);
|
|
BPY_ADDCONST(dict, F3KEY);
|
|
BPY_ADDCONST(dict, F4KEY);
|
|
BPY_ADDCONST(dict, F5KEY);
|
|
BPY_ADDCONST(dict, F6KEY);
|
|
BPY_ADDCONST(dict, F7KEY);
|
|
BPY_ADDCONST(dict, F8KEY);
|
|
BPY_ADDCONST(dict, F9KEY);
|
|
BPY_ADDCONST(dict, F10KEY);
|
|
BPY_ADDCONST(dict, F11KEY);
|
|
BPY_ADDCONST(dict, F12KEY);
|
|
BPY_ADDCONST(dict, PAUSEKEY);
|
|
BPY_ADDCONST(dict, INSERTKEY);
|
|
BPY_ADDCONST(dict, HOMEKEY);
|
|
BPY_ADDCONST(dict, PAGEUPKEY);
|
|
BPY_ADDCONST(dict, PAGEDOWNKEY);
|
|
BPY_ADDCONST(dict, ENDKEY);
|
|
|
|
return mod;
|
|
}
|
|
|
|
|
|
/* Buffer Object */
|
|
|
|
/* For Python access to OpenGL functions requiring
|
|
* a pointer.
|
|
*/
|
|
|
|
PyTypeObject Buffer_Type;
|
|
|
|
typedef struct _Buffer {
|
|
PyObject_VAR_HEAD
|
|
|
|
PyObject *parent;
|
|
|
|
int type; /* GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT */
|
|
int ndimensions;
|
|
int *dimensions;
|
|
|
|
union {
|
|
char *asbyte;
|
|
short *asshort;
|
|
int *asint;
|
|
float *asfloat;
|
|
|
|
void *asvoid;
|
|
} buf;
|
|
} Buffer;
|
|
|
|
static int type_size(int type) {
|
|
switch (type) {
|
|
case GL_BYTE:
|
|
return sizeof(char);
|
|
case GL_SHORT:
|
|
return sizeof(short);
|
|
case GL_INT:
|
|
return sizeof(int);
|
|
case GL_FLOAT:
|
|
return sizeof(float);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
static Buffer *make_buffer(int type, int ndimensions, int *dimensions) {
|
|
Buffer *buffer;
|
|
void *buf= NULL;
|
|
int i, size, length;
|
|
|
|
length= 1;
|
|
for (i=0; i<ndimensions; i++) length*= dimensions[i];
|
|
|
|
size= type_size(type);
|
|
|
|
buf= MEM_mallocN(length*size, "Buffer buffer");
|
|
|
|
buffer= (Buffer *) PyObject_NEW(Buffer, &Buffer_Type);
|
|
buffer->parent= NULL;
|
|
buffer->ndimensions= ndimensions;
|
|
buffer->dimensions= dimensions;
|
|
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.0;
|
|
}
|
|
|
|
return buffer;
|
|
}
|
|
|
|
static int Buffer_ass_slice(PyObject *self, int begin, int end, PyObject *seq);
|
|
|
|
static char Method_Buffer_doc[]=
|
|
"(type, dimensions, [template]) - Create a new Buffer object\n\
|
|
\n\
|
|
(type) - The format to store data in\n\
|
|
(dimensions) - An int or sequence specifying the dimensions of the buffer\n\
|
|
[template] - A sequence of matching dimensions to the buffer to be created\n\
|
|
which will be used to initialize the Buffer.\n\
|
|
\n\
|
|
If a template is not passed in all fields will be initialized to 0.\n\
|
|
\n\
|
|
The type should be one of GL_BYTE, GL_SHORT, GL_INT, or GL_FLOAT.\n\
|
|
If the dimensions are specified as an int a linear buffer will be\n\
|
|
created. If a sequence is passed for the dimensions the buffer\n\
|
|
will have len(sequence) dimensions, where the size for each dimension\n\
|
|
is determined by the value in the sequence at that index.\n\
|
|
\n\
|
|
For example, passing [100, 100] will create a 2 dimensional\n\
|
|
square buffer. Passing [16, 16, 32] will create a 3 dimensional\n\
|
|
buffer which is twice as deep as it is wide or high.";
|
|
|
|
static PyObject *Method_Buffer (PyObject *self, PyObject *args)
|
|
{
|
|
PyObject *length_ob= NULL, *template= NULL;
|
|
Buffer *buffer;
|
|
|
|
int i, type;
|
|
int *dimensions = 0, ndimensions = 0;
|
|
|
|
BPY_TRY(PyArg_ParseTuple(args, "iO|O", &type, &length_ob, &template));
|
|
|
|
if (type!=GL_BYTE && type!=GL_SHORT && type!=GL_INT && type!=GL_FLOAT) {
|
|
PyErr_SetString(PyExc_AttributeError, "type");
|
|
return NULL;
|
|
}
|
|
|
|
if (PyNumber_Check(length_ob)) {
|
|
ndimensions= 1;
|
|
dimensions= MEM_mallocN(ndimensions*sizeof(int), "Buffer dimensions");
|
|
dimensions[0]= PyInt_AsLong(length_ob);
|
|
|
|
} else if (PySequence_Check(length_ob)) {
|
|
ndimensions= PySequence_Length(length_ob);
|
|
dimensions= MEM_mallocN(ndimensions*sizeof(int), "Buffer dimensions");
|
|
|
|
for (i=0; i<ndimensions; i++) {
|
|
PyObject *ob= PySequence_GetItem(length_ob, i);
|
|
|
|
if (!PyNumber_Check(ob)) dimensions[i]= 1;
|
|
else dimensions[i]= PyInt_AsLong(ob);
|
|
|
|
Py_DECREF(ob);
|
|
}
|
|
}
|
|
|
|
buffer= make_buffer(type, ndimensions, dimensions);
|
|
if (template && ndimensions) {
|
|
if (Buffer_ass_slice((PyObject *) buffer, 0, dimensions[0], template)) {
|
|
Py_DECREF(buffer);
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
return (PyObject *) buffer;
|
|
}
|
|
|
|
/**********/
|
|
|
|
|
|
/* Buffer sequence methods */
|
|
|
|
static int Buffer_len(PyObject *self) {
|
|
Buffer *buf= (Buffer *) self;
|
|
|
|
return buf->dimensions[0];
|
|
}
|
|
|
|
static PyObject *Buffer_item(PyObject *self, int i) {
|
|
Buffer *buf= (Buffer *) self;
|
|
|
|
if (i >= buf->dimensions[0]) {
|
|
PyErr_SetString(PyExc_IndexError, "array index out of range");
|
|
return NULL;
|
|
}
|
|
|
|
if (buf->ndimensions==1) {
|
|
switch (buf->type) {
|
|
case GL_BYTE: return Py_BuildValue("b", buf->buf.asbyte[i]);
|
|
case GL_SHORT: return Py_BuildValue("h", buf->buf.asshort[i]);
|
|
case GL_INT: return Py_BuildValue("i", buf->buf.asint[i]);
|
|
case GL_FLOAT: return Py_BuildValue("f", buf->buf.asfloat[i]);
|
|
}
|
|
} else {
|
|
Buffer *newbuf;
|
|
int j, length, size;
|
|
|
|
length= 1;
|
|
for (j=1; j<buf->ndimensions; j++) {
|
|
length*= buf->dimensions[j];
|
|
}
|
|
size= type_size(buf->type);
|
|
|
|
newbuf= (Buffer *) PyObject_NEW(Buffer, &Buffer_Type);
|
|
|
|
Py_INCREF(self);
|
|
newbuf->parent= self;
|
|
|
|
newbuf->ndimensions= buf->ndimensions-1;
|
|
newbuf->type= buf->type;
|
|
newbuf->buf.asvoid= buf->buf.asbyte + i*length*size;
|
|
|
|
newbuf->dimensions= MEM_mallocN(newbuf->ndimensions*sizeof(int), "Buffer dimensions");
|
|
memcpy(newbuf->dimensions, buf->dimensions+1, newbuf->ndimensions*sizeof(int));
|
|
|
|
return (PyObject *) newbuf;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
static PyObject *Buffer_slice(PyObject *self, int begin, int end)
|
|
{
|
|
Buffer *buf= (Buffer *) self;
|
|
PyObject *list;
|
|
int count;
|
|
|
|
if (begin<0) begin= 0;
|
|
if (end>buf->dimensions[0]) end= buf->dimensions[0];
|
|
if (begin>end) begin= end;
|
|
|
|
list= PyList_New(end-begin);
|
|
|
|
for (count= begin; count<end; count++)
|
|
PyList_SetItem(list, count-begin, Buffer_item(self, count));
|
|
|
|
return list;
|
|
}
|
|
|
|
static int Buffer_ass_item(PyObject *self, int i, PyObject *v) {
|
|
Buffer *buf= (Buffer *) self;
|
|
|
|
if (i >= buf->dimensions[0]) {
|
|
PyErr_SetString(PyExc_IndexError, "array assignment index out of range");
|
|
return -1;
|
|
}
|
|
|
|
if (buf->ndimensions!=1) {
|
|
PyObject *row= Buffer_item(self, i);
|
|
int ret;
|
|
|
|
if (!row) return -1;
|
|
|
|
ret= Buffer_ass_slice(row, 0, buf->dimensions[1], v);
|
|
Py_DECREF(row);
|
|
|
|
return ret;
|
|
}
|
|
|
|
if (buf->type==GL_BYTE) {
|
|
if (!PyArg_Parse(v, "b;Coordinates must be ints", &buf->buf.asbyte[i]))
|
|
return -1;
|
|
|
|
} else if (buf->type==GL_SHORT) {
|
|
if (!PyArg_Parse(v, "h;Coordinates must be ints", &buf->buf.asshort[i]))
|
|
return -1;
|
|
|
|
} else if (buf->type==GL_INT) {
|
|
if (!PyArg_Parse(v, "i;Coordinates must be ints", &buf->buf.asint[i]))
|
|
return -1;
|
|
|
|
} else if (buf->type==GL_FLOAT) {
|
|
if (!PyArg_Parse(v, "f;Coordinates must be floats", &buf->buf.asfloat[i]))
|
|
return -1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int Buffer_ass_slice(PyObject *self, int begin, int end, PyObject *seq)
|
|
{
|
|
Buffer *buf= (Buffer *) self;
|
|
PyObject *item;
|
|
int count, err=0;
|
|
|
|
if (begin<0) begin= 0;
|
|
if (end>buf->dimensions[0]) end= buf->dimensions[0];
|
|
if (begin>end) begin= end;
|
|
|
|
if (!PySequence_Check(seq)) {
|
|
PyErr_SetString(PyExc_TypeError, "illegal argument type for built-in operation");
|
|
return -1;
|
|
}
|
|
|
|
if (PySequence_Length(seq)!=(end-begin)) {
|
|
PyErr_SetString(PyExc_TypeError, "size mismatch in assignment");
|
|
return -1;
|
|
}
|
|
|
|
for (count= begin; count<end; count++) {
|
|
item= PySequence_GetItem(seq, count-begin);
|
|
err= Buffer_ass_item(self, count, item);
|
|
Py_DECREF(item);
|
|
|
|
if (err) break;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
static PySequenceMethods Buffer_SeqMethods = {
|
|
(inquiry) Buffer_len, /*sq_length*/
|
|
(binaryfunc) 0, /*sq_concat*/
|
|
(intargfunc) 0, /*sq_repeat*/
|
|
(intargfunc) Buffer_item, /*sq_item*/
|
|
(intintargfunc) Buffer_slice, /*sq_slice*/
|
|
(intobjargproc) Buffer_ass_item, /*sq_ass_item*/
|
|
(intintobjargproc) Buffer_ass_slice, /*sq_ass_slice*/
|
|
};
|
|
|
|
|
|
|
|
/**********/
|
|
|
|
static void Buffer_dealloc(PyObject *self) {
|
|
Buffer *buf= (Buffer *) self;
|
|
|
|
if (buf->parent) Py_DECREF(buf->parent);
|
|
else MEM_freeN(buf->buf.asvoid);
|
|
|
|
MEM_freeN(buf->dimensions);
|
|
|
|
PyMem_DEL(self);
|
|
}
|
|
|
|
static PyObject *Buffer_tolist(PyObject *self) {
|
|
int i, len= ((Buffer *)self)->dimensions[0];
|
|
PyObject *list= PyList_New(len);
|
|
|
|
for (i=0; i<len; i++) {
|
|
PyList_SetItem(list, i, Buffer_item(self, i));
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
static PyObject *Buffer_dimensions(PyObject *self) {
|
|
Buffer *buffer= (Buffer *) self;
|
|
PyObject *list= PyList_New(buffer->ndimensions);
|
|
int i;
|
|
|
|
for (i= 0; i<buffer->ndimensions; i++) {
|
|
PyList_SetItem(list, i, PyInt_FromLong(buffer->dimensions[i]));
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
static PyObject *Buffer_getattr(PyObject *self, char *name) {
|
|
if (strcmp(name, "list")==0) return Buffer_tolist(self);
|
|
else if (strcmp(name, "dimensions")==0) return Buffer_dimensions(self);
|
|
|
|
PyErr_SetString(PyExc_AttributeError, name);
|
|
return NULL;
|
|
}
|
|
|
|
static PyObject *Buffer_repr(PyObject *self) {
|
|
PyObject *list= Buffer_tolist(self);
|
|
PyObject *repr= PyObject_Repr(list);
|
|
Py_DECREF(list);
|
|
|
|
return repr;
|
|
}
|
|
|
|
PyTypeObject Buffer_Type = {
|
|
PyObject_HEAD_INIT(NULL)
|
|
0, /*ob_size*/
|
|
"Buffer", /*tp_name*/
|
|
sizeof(Buffer), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
(destructor) Buffer_dealloc, /*tp_dealloc*/
|
|
(printfunc) 0, /*tp_print*/
|
|
(getattrfunc) Buffer_getattr, /*tp_getattr*/
|
|
(setattrfunc) 0, /*tp_setattr*/
|
|
(cmpfunc) 0, /*tp_compare*/
|
|
(reprfunc) Buffer_repr, /*tp_repr*/
|
|
0, /*tp_as_number*/
|
|
&Buffer_SeqMethods, /*tp_as_sequence*/
|
|
};
|
|
|
|
#ifndef __APPLE__
|
|
/* By golly George! It looks like fancy pants macro time!!! */
|
|
|
|
/*
|
|
#define int_str "i"
|
|
#define int_var(number) bgl_int##number
|
|
#define int_ref(number) &bgl_int##number
|
|
#define int_def(number) int int_var(number)
|
|
|
|
#define float_str "f"
|
|
#define float_var(number) bgl_float##number
|
|
#define float_ref(number) &bgl_float##number
|
|
#define float_def(number) float float_var(number)
|
|
*/
|
|
|
|
/* TYPE_str is the string to pass to Py_ArgParse (for the format) */
|
|
/* TYPE_var is the name to pass to the GL function */
|
|
/* TYPE_ref is the pointer to pass to Py_ArgParse (to store in) */
|
|
/* TYPE_def is the C initialization of the variable */
|
|
|
|
#define void_str ""
|
|
#define void_var(num)
|
|
#define void_ref(num) &bgl_var##num
|
|
#define void_def(num) char bgl_var##num
|
|
|
|
#define buffer_str "O!"
|
|
#define buffer_var(number) (bgl_buffer##number)->buf.asvoid
|
|
#define buffer_ref(number) &Buffer_Type, &bgl_buffer##number
|
|
#define buffer_def(number) Buffer *bgl_buffer##number
|
|
|
|
/* GL Pointer fields, handled by buffer type */
|
|
/* GLdoubleP, GLfloatP, GLintP, GLuintP, GLshortP */
|
|
|
|
#define GLbooleanP_str "O!"
|
|
#define GLbooleanP_var(number) (bgl_buffer##number)->buf.asvoid
|
|
#define GLbooleanP_ref(number) &Buffer_Type, &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_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_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_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_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_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_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_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_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_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_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_def(number) Buffer *bgl_buffer##number
|
|
|
|
/* The standard GL typedefs are used as prototypes, we can't
|
|
* use the GL type directly because Py_ArgParse expects normal
|
|
* C types.
|
|
*
|
|
* Py_ArgParse doesn't grok writing into unsigned variables,
|
|
* so we use signed everything (even stuff that should be unsigned.
|
|
*/
|
|
|
|
/* typedef unsigned int GLenum; */
|
|
#define GLenum_str "i"
|
|
#define GLenum_var(num) bgl_var##num
|
|
#define GLenum_ref(num) &bgl_var##num
|
|
#define GLenum_def(num) /* unsigned */ int GLenum_var(num)
|
|
|
|
/* typedef unsigned int GLboolean; */
|
|
#define GLboolean_str "b"
|
|
#define GLboolean_var(num) bgl_var##num
|
|
#define GLboolean_ref(num) &bgl_var##num
|
|
#define GLboolean_def(num) /* unsigned */ char GLboolean_var(num)
|
|
|
|
/* typedef unsigned int GLbitfield; */
|
|
#define GLbitfield_str "i"
|
|
#define GLbitfield_var(num) bgl_var##num
|
|
#define GLbitfield_ref(num) &bgl_var##num
|
|
#define GLbitfield_def(num) /* unsigned */ int GLbitfield_var(num)
|
|
|
|
/* typedef signed char GLbyte; */
|
|
#define GLbyte_str "b"
|
|
#define GLbyte_var(num) bgl_var##num
|
|
#define GLbyte_ref(num) &bgl_var##num
|
|
#define GLbyte_def(num) signed char GLbyte_var(num)
|
|
|
|
/* typedef short GLshort; */
|
|
#define GLshort_str "h"
|
|
#define GLshort_var(num) bgl_var##num
|
|
#define GLshort_ref(num) &bgl_var##num
|
|
#define GLshort_def(num) short GLshort_var(num)
|
|
|
|
/* typedef int GLint; */
|
|
#define GLint_str "i"
|
|
#define GLint_var(num) bgl_var##num
|
|
#define GLint_ref(num) &bgl_var##num
|
|
#define GLint_def(num) int GLint_var(num)
|
|
|
|
/* typedef int GLsizei; */
|
|
#define GLsizei_str "i"
|
|
#define GLsizei_var(num) bgl_var##num
|
|
#define GLsizei_ref(num) &bgl_var##num
|
|
#define GLsizei_def(num) int GLsizei_var(num)
|
|
|
|
/* typedef unsigned char GLubyte; */
|
|
#define GLubyte_str "b"
|
|
#define GLubyte_var(num) bgl_var##num
|
|
#define GLubyte_ref(num) &bgl_var##num
|
|
#define GLubyte_def(num) /* unsigned */ char GLubyte_var(num)
|
|
|
|
/* typedef unsigned short GLushort; */
|
|
#define GLushort_str "h"
|
|
#define GLushort_var(num) bgl_var##num
|
|
#define GLushort_ref(num) &bgl_var##num
|
|
#define GLushort_def(num) /* unsigned */ short GLushort_var(num)
|
|
|
|
/* typedef unsigned int GLuint; */
|
|
#define GLuint_str "i"
|
|
#define GLuint_var(num) bgl_var##num
|
|
#define GLuint_ref(num) &bgl_var##num
|
|
#define GLuint_def(num) /* unsigned */ int GLuint_var(num)
|
|
|
|
/* typedef float GLfloat; */
|
|
#define GLfloat_str "f"
|
|
#define GLfloat_var(num) bgl_var##num
|
|
#define GLfloat_ref(num) &bgl_var##num
|
|
#define GLfloat_def(num) float GLfloat_var(num)
|
|
|
|
/* typedef float GLclampf; */
|
|
#define GLclampf_str "f"
|
|
#define GLclampf_var(num) bgl_var##num
|
|
#define GLclampf_ref(num) &bgl_var##num
|
|
#define GLclampf_def(num) float GLclampf_var(num)
|
|
|
|
/* typedef double GLdouble; */
|
|
#define GLdouble_str "d"
|
|
#define GLdouble_var(num) bgl_var##num
|
|
#define GLdouble_ref(num) &bgl_var##num
|
|
#define GLdouble_def(num) double GLdouble_var(num)
|
|
|
|
/* typedef double GLclampd; */
|
|
#define GLclampd_str "d"
|
|
#define GLclampd_var(num) bgl_var##num
|
|
#define GLclampd_ref(num) &bgl_var##num
|
|
#define GLclampd_def(num) double GLclampd_var(num)
|
|
|
|
/* typedef void GLvoid; */
|
|
/* #define GLvoid_str "" */
|
|
/* #define GLvoid_var(num) bgl_var##num */
|
|
/* #define GLvoid_ref(num) &bgl_var##num */
|
|
/* #define GLvoid_def(num) char bgl_var##num */
|
|
|
|
#define arg_def1(a1) a1##_def(1)
|
|
#define arg_def2(a1, a2) arg_def1(a1); a2##_def(2)
|
|
#define arg_def3(a1, a2, a3) arg_def2(a1, a2); a3##_def(3)
|
|
#define arg_def4(a1, a2, a3, a4) arg_def3(a1, a2, a3); a4##_def(4)
|
|
#define arg_def5(a1, a2, a3, a4, a5) arg_def4(a1, a2, a3, a4); a5##_def(5)
|
|
#define arg_def6(a1, a2, a3, a4, a5, a6)arg_def5(a1, a2, a3, a4, a5); a6##_def(6)
|
|
#define arg_def7(a1, a2, a3, a4, a5, a6, a7)arg_def6(a1, a2, a3, a4, a5, a6); a7##_def(7)
|
|
#define arg_def8(a1, a2, a3, a4, a5, a6, a7, a8)arg_def7(a1, a2, a3, a4, a5, a6, a7); a8##_def(8)
|
|
#define arg_def9(a1, a2, a3, a4, a5, a6, a7, a8, a9)arg_def8(a1, a2, a3, a4, a5, a6, a7, a8); a9##_def(9)
|
|
#define arg_def10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)arg_def9(a1, a2, a3, a4, a5, a6, a7, a8, a9); a10##_def(10)
|
|
|
|
#define arg_var1(a1) a1##_var(1)
|
|
#define arg_var2(a1, a2) arg_var1(a1), a2##_var(2)
|
|
#define arg_var3(a1, a2, a3) arg_var2(a1, a2), a3##_var(3)
|
|
#define arg_var4(a1, a2, a3, a4) arg_var3(a1, a2, a3), a4##_var(4)
|
|
#define arg_var5(a1, a2, a3, a4, a5) arg_var4(a1, a2, a3, a4), a5##_var(5)
|
|
#define arg_var6(a1, a2, a3, a4, a5, a6)arg_var5(a1, a2, a3, a4, a5), a6##_var(6)
|
|
#define arg_var7(a1, a2, a3, a4, a5, a6, a7)arg_var6(a1, a2, a3, a4, a5, a6), a7##_var(7)
|
|
#define arg_var8(a1, a2, a3, a4, a5, a6, a7, a8)arg_var7(a1, a2, a3, a4, a5, a6, a7), a8##_var(8)
|
|
#define arg_var9(a1, a2, a3, a4, a5, a6, a7, a8, a9)arg_var8(a1, a2, a3, a4, a5, a6, a7, a8), a9##_var(9)
|
|
#define arg_var10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)arg_var9(a1, a2, a3, a4, a5, a6, a7, a8, a9), a10##_var(10)
|
|
|
|
#define arg_ref1(a1) a1##_ref(1)
|
|
#define arg_ref2(a1, a2) arg_ref1(a1), a2##_ref(2)
|
|
#define arg_ref3(a1, a2, a3) arg_ref2(a1, a2), a3##_ref(3)
|
|
#define arg_ref4(a1, a2, a3, a4) arg_ref3(a1, a2, a3), a4##_ref(4)
|
|
#define arg_ref5(a1, a2, a3, a4, a5) arg_ref4(a1, a2, a3, a4), a5##_ref(5)
|
|
#define arg_ref6(a1, a2, a3, a4, a5, a6)arg_ref5(a1, a2, a3, a4, a5), a6##_ref(6)
|
|
#define arg_ref7(a1, a2, a3, a4, a5, a6, a7)arg_ref6(a1, a2, a3, a4, a5, a6), a7##_ref(7)
|
|
#define arg_ref8(a1, a2, a3, a4, a5, a6, a7, a8)arg_ref7(a1, a2, a3, a4, a5, a6, a7), a8##_ref(8)
|
|
#define arg_ref9(a1, a2, a3, a4, a5, a6, a7, a8, a9)arg_ref8(a1, a2, a3, a4, a5, a6, a7, a8), a9##_ref(9)
|
|
#define arg_ref10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)arg_ref9(a1, a2, a3, a4, a5, a6, a7, a8, a9), a10##_ref(10)
|
|
|
|
#define arg_str1(a1) a1##_str
|
|
#define arg_str2(a1, a2) arg_str1(a1) a2##_str
|
|
#define arg_str3(a1, a2, a3) arg_str2(a1, a2) a3##_str
|
|
#define arg_str4(a1, a2, a3, a4) arg_str3(a1, a2, a3) a4##_str
|
|
#define arg_str5(a1, a2, a3, a4, a5) arg_str4(a1, a2, a3, a4) a5##_str
|
|
#define arg_str6(a1, a2, a3, a4, a5, a6)arg_str5(a1, a2, a3, a4, a5) a6##_str
|
|
#define arg_str7(a1, a2, a3, a4, a5, a6, a7)arg_str6(a1, a2, a3, a4, a5, a6) a7##_str
|
|
#define arg_str8(a1, a2, a3, a4, a5, a6, a7, a8)arg_str7(a1, a2, a3, a4, a5, a6, a7) a8##_str
|
|
#define arg_str9(a1, a2, a3, a4, a5, a6, a7, a8, a9)arg_str8(a1, a2, a3, a4, a5, a6, a7, a8) a9##_str
|
|
#define arg_str10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)arg_str9(a1, a2, a3, a4, a5, a6, a7, a8, a9) a10##_str
|
|
|
|
#define ret_def_void
|
|
#define ret_set_void
|
|
#define ret_ret_void return BPY_incr_ret(Py_None)
|
|
|
|
#define ret_def_GLint int ret_int
|
|
#define ret_set_GLint ret_int=
|
|
#define ret_ret_GLint return PyInt_FromLong(ret_int);
|
|
|
|
#define ret_def_GLuint unsigned int ret_uint
|
|
#define ret_set_GLuint ret_uint=
|
|
#define ret_ret_GLuint return PyInt_FromLong((long) ret_uint);
|
|
|
|
#define ret_def_GLenum unsigned int ret_uint
|
|
#define ret_set_GLenum ret_uint=
|
|
#define ret_ret_GLenum return PyInt_FromLong((long) ret_uint);
|
|
|
|
#define ret_def_GLboolean unsigned char ret_bool
|
|
#define ret_set_GLboolean ret_bool=
|
|
#define ret_ret_GLboolean return PyInt_FromLong((long) ret_bool);
|
|
|
|
#define ret_def_GLstring const unsigned char *ret_str;
|
|
#define ret_set_GLstring ret_str=
|
|
#define ret_ret_GLstring return PyString_FromString(ret_str);
|
|
|
|
#define BGL_Wrap(nargs, funcname, ret, arg_list) \
|
|
static PyObject *Method_##funcname (PyObject *self, PyObject *args) {\
|
|
arg_def##nargs arg_list; \
|
|
ret_def_##ret; \
|
|
if(!PyArg_ParseTuple(args, arg_str##nargs arg_list, arg_ref##nargs arg_list)) return NULL;\
|
|
ret_set_##ret gl##funcname (arg_var##nargs arg_list);\
|
|
ret_ret_##ret; \
|
|
}
|
|
|
|
BGL_Wrap(2, Accum, void, (GLenum, GLfloat))
|
|
BGL_Wrap(2, AlphaFunc, void, (GLenum, GLclampf))
|
|
BGL_Wrap(3, AreTexturesResident, GLboolean, (GLsizei, GLuintP, GLbooleanP))
|
|
BGL_Wrap(1, Begin, void, (GLenum))
|
|
BGL_Wrap(2, BindTexture, void, (GLenum, GLuint))
|
|
BGL_Wrap(7, Bitmap, void, (GLsizei, GLsizei, GLfloat, GLfloat, GLfloat, GLfloat, GLubyteP))
|
|
BGL_Wrap(2, BlendFunc, void, (GLenum, GLenum))
|
|
BGL_Wrap(1, CallList, void, (GLuint))
|
|
BGL_Wrap(3, CallLists, void, (GLsizei, GLenum, GLvoidP))
|
|
BGL_Wrap(1, Clear, void, (GLbitfield))
|
|
BGL_Wrap(4, ClearAccum, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(4, ClearColor, void, (GLclampf, GLclampf, GLclampf, GLclampf))
|
|
BGL_Wrap(1, ClearDepth, void, (GLclampd))
|
|
BGL_Wrap(1, ClearIndex, void, (GLfloat))
|
|
BGL_Wrap(1, ClearStencil, void, (GLint))
|
|
BGL_Wrap(2, ClipPlane, void, (GLenum, GLdoubleP))
|
|
BGL_Wrap(3, Color3b, void, (GLbyte, GLbyte, GLbyte))
|
|
BGL_Wrap(1, Color3bv, void, (GLbyteP))
|
|
BGL_Wrap(3, Color3d, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, Color3dv, void, (GLdoubleP))
|
|
BGL_Wrap(3, Color3f, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, Color3fv, void, (GLfloatP))
|
|
BGL_Wrap(3, Color3i, void, (GLint, GLint, GLint))
|
|
BGL_Wrap(1, Color3iv, void, (GLintP))
|
|
BGL_Wrap(3, Color3s, void, (GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, Color3sv, void, (GLshortP))
|
|
BGL_Wrap(3, Color3ub, void, (GLubyte, GLubyte, GLubyte))
|
|
BGL_Wrap(1, Color3ubv, void, (GLubyteP))
|
|
BGL_Wrap(3, Color3ui, void, (GLuint, GLuint, GLuint))
|
|
BGL_Wrap(1, Color3uiv, void, (GLuintP))
|
|
BGL_Wrap(3, Color3us, void, (GLushort, GLushort, GLushort))
|
|
BGL_Wrap(1, Color3usv, void, (GLushortP))
|
|
BGL_Wrap(4, Color4b, void, (GLbyte, GLbyte, GLbyte, GLbyte))
|
|
BGL_Wrap(1, Color4bv, void, (GLbyteP))
|
|
BGL_Wrap(4, Color4d, void, (GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, Color4dv, void, (GLdoubleP))
|
|
BGL_Wrap(4, Color4f, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, Color4fv, void, (GLfloatP))
|
|
BGL_Wrap(4, Color4i, void, (GLint, GLint, GLint, GLint))
|
|
BGL_Wrap(1, Color4iv, void, (GLintP))
|
|
BGL_Wrap(4, Color4s, void, (GLshort, GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, Color4sv, void, (GLshortP))
|
|
BGL_Wrap(4, Color4ub, void, (GLubyte, GLubyte, GLubyte, GLubyte))
|
|
BGL_Wrap(1, Color4ubv, void, (GLubyteP))
|
|
BGL_Wrap(4, Color4ui, void, (GLuint, GLuint, GLuint, GLuint))
|
|
BGL_Wrap(1, Color4uiv, void, (GLuintP))
|
|
BGL_Wrap(4, Color4us, void, (GLushort, GLushort, GLushort, GLushort))
|
|
BGL_Wrap(1, Color4usv, void, (GLushortP))
|
|
BGL_Wrap(4, ColorMask, void, (GLboolean, GLboolean, GLboolean, GLboolean))
|
|
BGL_Wrap(2, ColorMaterial, void, (GLenum, GLenum))
|
|
BGL_Wrap(5, CopyPixels, void, (GLint, GLint, GLsizei, GLsizei, GLenum))
|
|
BGL_Wrap(1, CullFace, void, (GLenum))
|
|
BGL_Wrap(2, DeleteLists, void, (GLuint, GLsizei))
|
|
BGL_Wrap(2, DeleteTextures, void, (GLsizei, GLuintP))
|
|
BGL_Wrap(1, DepthFunc, void, (GLenum))
|
|
BGL_Wrap(1, DepthMask, void, (GLboolean))
|
|
BGL_Wrap(2, DepthRange, void, (GLclampd, GLclampd))
|
|
BGL_Wrap(1, Disable, void, (GLenum))
|
|
BGL_Wrap(1, DrawBuffer, void, (GLenum))
|
|
BGL_Wrap(5, DrawPixels, void, (GLsizei, GLsizei, GLenum, GLenum, GLvoidP))
|
|
BGL_Wrap(1, EdgeFlag, void, (GLboolean))
|
|
BGL_Wrap(1, EdgeFlagv, void, (GLbooleanP))
|
|
BGL_Wrap(1, Enable, void, (GLenum))
|
|
BGL_Wrap(1, End, void, (void))
|
|
BGL_Wrap(1, EndList, void, (void))
|
|
BGL_Wrap(1, EvalCoord1d, void, (GLdouble))
|
|
BGL_Wrap(1, EvalCoord1dv, void, (GLdoubleP))
|
|
BGL_Wrap(1, EvalCoord1f, void, (GLfloat))
|
|
BGL_Wrap(1, EvalCoord1fv, void, (GLfloatP))
|
|
BGL_Wrap(2, EvalCoord2d, void, (GLdouble, GLdouble))
|
|
BGL_Wrap(1, EvalCoord2dv, void, (GLdoubleP))
|
|
BGL_Wrap(2, EvalCoord2f, void, (GLfloat, GLfloat))
|
|
BGL_Wrap(1, EvalCoord2fv, void, (GLfloatP))
|
|
BGL_Wrap(3, EvalMesh1, void, (GLenum, GLint, GLint))
|
|
BGL_Wrap(5, EvalMesh2, void, (GLenum, GLint, GLint, GLint, GLint))
|
|
BGL_Wrap(1, EvalPoint1, void, (GLint))
|
|
BGL_Wrap(2, EvalPoint2, void, (GLint, GLint))
|
|
BGL_Wrap(3, FeedbackBuffer, void, (GLsizei, GLenum, GLfloatP))
|
|
BGL_Wrap(1, Finish, void, (void))
|
|
BGL_Wrap(1, Flush, void, (void))
|
|
BGL_Wrap(2, Fogf, void, (GLenum, GLfloat))
|
|
BGL_Wrap(2, Fogfv, void, (GLenum, GLfloatP))
|
|
BGL_Wrap(2, Fogi, void, (GLenum, GLint))
|
|
BGL_Wrap(2, Fogiv, void, (GLenum, GLintP))
|
|
BGL_Wrap(1, FrontFace, void, (GLenum))
|
|
BGL_Wrap(6, Frustum, void, (GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, GenLists, GLuint, (GLsizei))
|
|
BGL_Wrap(2, GenTextures, void, (GLsizei, GLuintP))
|
|
BGL_Wrap(2, GetBooleanv, void, (GLenum, GLbooleanP))
|
|
BGL_Wrap(2, GetClipPlane, void, (GLenum, GLdoubleP))
|
|
BGL_Wrap(2, GetDoublev, void, (GLenum, GLdoubleP))
|
|
BGL_Wrap(1, GetError, GLenum, (void))
|
|
BGL_Wrap(2, GetFloatv, void, (GLenum, GLfloatP))
|
|
BGL_Wrap(2, GetIntegerv, void, (GLenum, GLintP))
|
|
BGL_Wrap(3, GetLightfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, GetLightiv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(3, GetMapdv, void, (GLenum, GLenum, GLdoubleP))
|
|
BGL_Wrap(3, GetMapfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, GetMapiv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(3, GetMaterialfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, GetMaterialiv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(2, GetPixelMapfv, void, (GLenum, GLfloatP))
|
|
BGL_Wrap(2, GetPixelMapuiv, void, (GLenum, GLuintP))
|
|
BGL_Wrap(2, GetPixelMapusv, void, (GLenum, GLushortP))
|
|
BGL_Wrap(1, GetPolygonStipple, void, (GLubyteP))
|
|
BGL_Wrap(1, GetString, GLstring, (GLenum))
|
|
BGL_Wrap(3, GetTexEnvfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, GetTexEnviv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(3, GetTexGendv, void, (GLenum, GLenum, GLdoubleP))
|
|
BGL_Wrap(3, GetTexGenfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, GetTexGeniv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(5, GetTexImage, void, (GLenum, GLint, GLenum, GLenum, GLvoidP))
|
|
BGL_Wrap(4, GetTexLevelParameterfv, void, (GLenum, GLint, GLenum, GLfloatP))
|
|
BGL_Wrap(4, GetTexLevelParameteriv, void, (GLenum, GLint, GLenum, GLintP))
|
|
BGL_Wrap(3, GetTexParameterfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, GetTexParameteriv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(2, Hint, void, (GLenum, GLenum))
|
|
BGL_Wrap(1, IndexMask, void, (GLuint))
|
|
BGL_Wrap(1, Indexd, void, (GLdouble))
|
|
BGL_Wrap(1, Indexdv, void, (GLdoubleP))
|
|
BGL_Wrap(1, Indexf, void, (GLfloat))
|
|
BGL_Wrap(1, Indexfv, void, (GLfloatP))
|
|
BGL_Wrap(1, Indexi, void, (GLint))
|
|
BGL_Wrap(1, Indexiv, void, (GLintP))
|
|
BGL_Wrap(1, Indexs, void, (GLshort))
|
|
BGL_Wrap(1, Indexsv, void, (GLshortP))
|
|
BGL_Wrap(1, InitNames, void, (void))
|
|
BGL_Wrap(1, IsEnabled, GLboolean, (GLenum))
|
|
BGL_Wrap(1, IsList, GLboolean, (GLuint))
|
|
BGL_Wrap(1, IsTexture, GLboolean, (GLuint))
|
|
BGL_Wrap(2, LightModelf, void, (GLenum, GLfloat))
|
|
BGL_Wrap(2, LightModelfv, void, (GLenum, GLfloatP))
|
|
BGL_Wrap(2, LightModeli, void, (GLenum, GLint))
|
|
BGL_Wrap(2, LightModeliv, void, (GLenum, GLintP))
|
|
BGL_Wrap(3, Lightf, void, (GLenum, GLenum, GLfloat))
|
|
BGL_Wrap(3, Lightfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, Lighti, void, (GLenum, GLenum, GLint))
|
|
BGL_Wrap(3, Lightiv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(2, LineStipple, void, (GLint, GLushort))
|
|
BGL_Wrap(1, LineWidth, void, (GLfloat))
|
|
BGL_Wrap(1, ListBase, void, (GLuint))
|
|
BGL_Wrap(1, LoadIdentity, void, (void))
|
|
BGL_Wrap(1, LoadMatrixd, void, (GLdoubleP))
|
|
BGL_Wrap(1, LoadMatrixf, void, (GLfloatP))
|
|
BGL_Wrap(1, LoadName, void, (GLuint))
|
|
BGL_Wrap(1, LogicOp, void, (GLenum))
|
|
BGL_Wrap(6, Map1d, void, (GLenum, GLdouble, GLdouble, GLint, GLint, GLdoubleP))
|
|
BGL_Wrap(6, Map1f, void, (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloatP))
|
|
BGL_Wrap(10, Map2d, void, (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdoubleP))
|
|
BGL_Wrap(10, Map2f, void, (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloatP))
|
|
BGL_Wrap(3, MapGrid1d, void, (GLint, GLdouble, GLdouble))
|
|
BGL_Wrap(3, MapGrid1f, void, (GLint, GLfloat, GLfloat))
|
|
BGL_Wrap(6, MapGrid2d, void, (GLint, GLdouble, GLdouble, GLint, GLdouble, GLdouble))
|
|
BGL_Wrap(6, MapGrid2f, void, (GLint, GLfloat, GLfloat, GLint, GLfloat, GLfloat))
|
|
BGL_Wrap(3, Materialf, void, (GLenum, GLenum, GLfloat))
|
|
BGL_Wrap(3, Materialfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, Materiali, void, (GLenum, GLenum, GLint))
|
|
BGL_Wrap(3, Materialiv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(1, MatrixMode, void, (GLenum))
|
|
BGL_Wrap(1, MultMatrixd, void, (GLdoubleP))
|
|
BGL_Wrap(1, MultMatrixf, void, (GLfloatP))
|
|
BGL_Wrap(2, NewList, void, (GLuint, GLenum))
|
|
BGL_Wrap(3, Normal3b, void, (GLbyte, GLbyte, GLbyte))
|
|
BGL_Wrap(1, Normal3bv, void, (GLbyteP))
|
|
BGL_Wrap(3, Normal3d, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, Normal3dv, void, (GLdoubleP))
|
|
BGL_Wrap(3, Normal3f, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, Normal3fv, void, (GLfloatP))
|
|
BGL_Wrap(3, Normal3i, void, (GLint, GLint, GLint))
|
|
BGL_Wrap(1, Normal3iv, void, (GLintP))
|
|
BGL_Wrap(3, Normal3s, void, (GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, Normal3sv, void, (GLshortP))
|
|
BGL_Wrap(6, Ortho, void, (GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, PassThrough, void, (GLfloat))
|
|
BGL_Wrap(3, PixelMapfv, void, (GLenum, GLint, GLfloatP))
|
|
BGL_Wrap(3, PixelMapuiv, void, (GLenum, GLint, GLuintP))
|
|
BGL_Wrap(3, PixelMapusv, void, (GLenum, GLint, GLushortP))
|
|
BGL_Wrap(2, PixelStoref, void, (GLenum, GLfloat))
|
|
BGL_Wrap(2, PixelStorei, void, (GLenum, GLint))
|
|
BGL_Wrap(2, PixelTransferf, void, (GLenum, GLfloat))
|
|
BGL_Wrap(2, PixelTransferi, void, (GLenum, GLint))
|
|
BGL_Wrap(2, PixelZoom, void, (GLfloat, GLfloat))
|
|
BGL_Wrap(1, PointSize, void, (GLfloat))
|
|
BGL_Wrap(2, PolygonMode, void, (GLenum, GLenum))
|
|
BGL_Wrap(2, PolygonOffset, void, (GLfloat, GLfloat))
|
|
BGL_Wrap(1, PolygonStipple, void, (GLubyteP))
|
|
BGL_Wrap(1, PopAttrib, void, (void))
|
|
BGL_Wrap(1, PopMatrix, void, (void))
|
|
BGL_Wrap(1, PopName, void, (void))
|
|
BGL_Wrap(3, PrioritizeTextures, void, (GLsizei, GLuintP, GLclampfP))
|
|
BGL_Wrap(1, PushAttrib, void, (GLbitfield))
|
|
BGL_Wrap(1, PushMatrix, void, (void))
|
|
BGL_Wrap(1, PushName, void, (GLuint))
|
|
BGL_Wrap(2, RasterPos2d, void, (GLdouble, GLdouble))
|
|
BGL_Wrap(1, RasterPos2dv, void, (GLdoubleP))
|
|
BGL_Wrap(2, RasterPos2f, void, (GLfloat, GLfloat))
|
|
BGL_Wrap(1, RasterPos2fv, void, (GLfloatP))
|
|
BGL_Wrap(2, RasterPos2i, void, (GLint, GLint))
|
|
BGL_Wrap(1, RasterPos2iv, void, (GLintP))
|
|
BGL_Wrap(2, RasterPos2s, void, (GLshort, GLshort))
|
|
BGL_Wrap(1, RasterPos2sv, void, (GLshortP))
|
|
BGL_Wrap(3, RasterPos3d, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, RasterPos3dv, void, (GLdoubleP))
|
|
BGL_Wrap(3, RasterPos3f, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, RasterPos3fv, void, (GLfloatP))
|
|
BGL_Wrap(3, RasterPos3i, void, (GLint, GLint, GLint))
|
|
BGL_Wrap(1, RasterPos3iv, void, (GLintP))
|
|
BGL_Wrap(3, RasterPos3s, void, (GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, RasterPos3sv, void, (GLshortP))
|
|
BGL_Wrap(4, RasterPos4d, void, (GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, RasterPos4dv, void, (GLdoubleP))
|
|
BGL_Wrap(4, RasterPos4f, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, RasterPos4fv, void, (GLfloatP))
|
|
BGL_Wrap(4, RasterPos4i, void, (GLint, GLint, GLint, GLint))
|
|
BGL_Wrap(1, RasterPos4iv, void, (GLintP))
|
|
BGL_Wrap(4, RasterPos4s, void, (GLshort, GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, RasterPos4sv, void, (GLshortP))
|
|
BGL_Wrap(1, ReadBuffer, void, (GLenum))
|
|
BGL_Wrap(7, ReadPixels, void, (GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoidP))
|
|
BGL_Wrap(4, Rectd, void, (GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(2, Rectdv, void, (GLdoubleP, GLdoubleP))
|
|
BGL_Wrap(4, Rectf, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(2, Rectfv, void, (GLfloatP, GLfloatP))
|
|
BGL_Wrap(4, Recti, void, (GLint, GLint, GLint, GLint))
|
|
BGL_Wrap(2, Rectiv, void, (GLintP, GLintP))
|
|
BGL_Wrap(4, Rects, void, (GLshort, GLshort, GLshort, GLshort))
|
|
BGL_Wrap(2, Rectsv, void, (GLshortP, GLshortP))
|
|
BGL_Wrap(1, RenderMode, GLint, (GLenum))
|
|
BGL_Wrap(4, Rotated, void, (GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(4, Rotatef, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(3, Scaled, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(3, Scalef, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(4, Scissor, void, (GLint, GLint, GLsizei, GLsizei))
|
|
BGL_Wrap(2, SelectBuffer, void, (GLsizei, GLuintP))
|
|
BGL_Wrap(1, ShadeModel, void, (GLenum))
|
|
BGL_Wrap(3, StencilFunc, void, (GLenum, GLint, GLuint))
|
|
BGL_Wrap(1, StencilMask, void, (GLuint))
|
|
BGL_Wrap(3, StencilOp, void, (GLenum, GLenum, GLenum))
|
|
BGL_Wrap(1, TexCoord1d, void, (GLdouble))
|
|
BGL_Wrap(1, TexCoord1dv, void, (GLdoubleP))
|
|
BGL_Wrap(1, TexCoord1f, void, (GLfloat))
|
|
BGL_Wrap(1, TexCoord1fv, void, (GLfloatP))
|
|
BGL_Wrap(1, TexCoord1i, void, (GLint))
|
|
BGL_Wrap(1, TexCoord1iv, void, (GLintP))
|
|
BGL_Wrap(1, TexCoord1s, void, (GLshort))
|
|
BGL_Wrap(1, TexCoord1sv, void, (GLshortP))
|
|
BGL_Wrap(2, TexCoord2d, void, (GLdouble, GLdouble))
|
|
BGL_Wrap(1, TexCoord2dv, void, (GLdoubleP))
|
|
BGL_Wrap(2, TexCoord2f, void, (GLfloat, GLfloat))
|
|
BGL_Wrap(1, TexCoord2fv, void, (GLfloatP))
|
|
BGL_Wrap(2, TexCoord2i, void, (GLint, GLint))
|
|
BGL_Wrap(1, TexCoord2iv, void, (GLintP))
|
|
BGL_Wrap(2, TexCoord2s, void, (GLshort, GLshort))
|
|
BGL_Wrap(1, TexCoord2sv, void, (GLshortP))
|
|
BGL_Wrap(3, TexCoord3d, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, TexCoord3dv, void, (GLdoubleP))
|
|
BGL_Wrap(3, TexCoord3f, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, TexCoord3fv, void, (GLfloatP))
|
|
BGL_Wrap(3, TexCoord3i, void, (GLint, GLint, GLint))
|
|
BGL_Wrap(1, TexCoord3iv, void, (GLintP))
|
|
BGL_Wrap(3, TexCoord3s, void, (GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, TexCoord3sv, void, (GLshortP))
|
|
BGL_Wrap(4, TexCoord4d, void, (GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, TexCoord4dv, void, (GLdoubleP))
|
|
BGL_Wrap(4, TexCoord4f, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, TexCoord4fv, void, (GLfloatP))
|
|
BGL_Wrap(4, TexCoord4i, void, (GLint, GLint, GLint, GLint))
|
|
BGL_Wrap(1, TexCoord4iv, void, (GLintP))
|
|
BGL_Wrap(4, TexCoord4s, void, (GLshort, GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, TexCoord4sv, void, (GLshortP))
|
|
BGL_Wrap(3, TexEnvf, void, (GLenum, GLenum, GLfloat))
|
|
BGL_Wrap(3, TexEnvfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, TexEnvi, void, (GLenum, GLenum, GLint))
|
|
BGL_Wrap(3, TexEnviv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(3, TexGend, void, (GLenum, GLenum, GLdouble))
|
|
BGL_Wrap(3, TexGendv, void, (GLenum, GLenum, GLdoubleP))
|
|
BGL_Wrap(3, TexGenf, void, (GLenum, GLenum, GLfloat))
|
|
BGL_Wrap(3, TexGenfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, TexGeni, void, (GLenum, GLenum, GLint))
|
|
BGL_Wrap(3, TexGeniv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(8, TexImage1D, void, (GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, GLvoidP))
|
|
BGL_Wrap(9, TexImage2D, void, (GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, GLvoidP))
|
|
BGL_Wrap(3, TexParameterf, void, (GLenum, GLenum, GLfloat))
|
|
BGL_Wrap(3, TexParameterfv, void, (GLenum, GLenum, GLfloatP))
|
|
BGL_Wrap(3, TexParameteri, void, (GLenum, GLenum, GLint))
|
|
BGL_Wrap(3, TexParameteriv, void, (GLenum, GLenum, GLintP))
|
|
BGL_Wrap(3, Translated, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(3, Translatef, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(2, Vertex2d, void, (GLdouble, GLdouble))
|
|
BGL_Wrap(1, Vertex2dv, void, (GLdoubleP))
|
|
BGL_Wrap(2, Vertex2f, void, (GLfloat, GLfloat))
|
|
BGL_Wrap(1, Vertex2fv, void, (GLfloatP))
|
|
BGL_Wrap(2, Vertex2i, void, (GLint, GLint))
|
|
BGL_Wrap(1, Vertex2iv, void, (GLintP))
|
|
BGL_Wrap(2, Vertex2s, void, (GLshort, GLshort))
|
|
BGL_Wrap(1, Vertex2sv, void, (GLshortP))
|
|
BGL_Wrap(3, Vertex3d, void, (GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, Vertex3dv, void, (GLdoubleP))
|
|
BGL_Wrap(3, Vertex3f, void, (GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, Vertex3fv, void, (GLfloatP))
|
|
BGL_Wrap(3, Vertex3i, void, (GLint, GLint, GLint))
|
|
BGL_Wrap(1, Vertex3iv, void, (GLintP))
|
|
BGL_Wrap(3, Vertex3s, void, (GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, Vertex3sv, void, (GLshortP))
|
|
BGL_Wrap(4, Vertex4d, void, (GLdouble, GLdouble, GLdouble, GLdouble))
|
|
BGL_Wrap(1, Vertex4dv, void, (GLdoubleP))
|
|
BGL_Wrap(4, Vertex4f, void, (GLfloat, GLfloat, GLfloat, GLfloat))
|
|
BGL_Wrap(1, Vertex4fv, void, (GLfloatP))
|
|
BGL_Wrap(4, Vertex4i, void, (GLint, GLint, GLint, GLint))
|
|
BGL_Wrap(1, Vertex4iv, void, (GLintP))
|
|
BGL_Wrap(4, Vertex4s, void, (GLshort, GLshort, GLshort, GLshort))
|
|
BGL_Wrap(1, Vertex4sv, void, (GLshortP))
|
|
BGL_Wrap(4, Viewport, void, (GLint, GLint, GLsizei, GLsizei))
|
|
#endif
|
|
|
|
/* XXX */
|
|
#undef MethodDef
|
|
#define MethodDef(func) {"gl"#func, Method_##func, METH_VARARGS}
|
|
|
|
static struct PyMethodDef BGL_methods[] = {
|
|
{"Buffer", Method_Buffer, METH_VARARGS, Method_Buffer_doc},
|
|
#ifndef __APPLE__
|
|
MethodDef( Accum),
|
|
MethodDef( AlphaFunc),
|
|
MethodDef( AreTexturesResident),
|
|
MethodDef( Begin),
|
|
MethodDef( BindTexture),
|
|
MethodDef( Bitmap),
|
|
MethodDef( BlendFunc),
|
|
MethodDef( CallList),
|
|
MethodDef( CallLists),
|
|
MethodDef( Clear),
|
|
MethodDef( ClearAccum),
|
|
MethodDef( ClearColor),
|
|
MethodDef( ClearDepth),
|
|
MethodDef( ClearIndex),
|
|
MethodDef( ClearStencil),
|
|
MethodDef( ClipPlane),
|
|
MethodDef( Color3b),
|
|
MethodDef( Color3bv),
|
|
MethodDef( Color3d),
|
|
MethodDef( Color3dv),
|
|
MethodDef( Color3f),
|
|
MethodDef( Color3fv),
|
|
MethodDef( Color3i),
|
|
MethodDef( Color3iv),
|
|
MethodDef( Color3s),
|
|
MethodDef( Color3sv),
|
|
MethodDef( Color3ub),
|
|
MethodDef( Color3ubv),
|
|
MethodDef( Color3ui),
|
|
MethodDef( Color3uiv),
|
|
MethodDef( Color3us),
|
|
MethodDef( Color3usv),
|
|
MethodDef( Color4b),
|
|
MethodDef( Color4bv),
|
|
MethodDef( Color4d),
|
|
MethodDef( Color4dv),
|
|
MethodDef( Color4f),
|
|
MethodDef( Color4fv),
|
|
MethodDef( Color4i),
|
|
MethodDef( Color4iv),
|
|
MethodDef( Color4s),
|
|
MethodDef( Color4sv),
|
|
MethodDef( Color4ub),
|
|
MethodDef( Color4ubv),
|
|
MethodDef( Color4ui),
|
|
MethodDef( Color4uiv),
|
|
MethodDef( Color4us),
|
|
MethodDef( Color4usv),
|
|
MethodDef( ColorMask),
|
|
MethodDef( ColorMaterial),
|
|
MethodDef( CopyPixels),
|
|
MethodDef( CullFace),
|
|
MethodDef( DeleteLists),
|
|
MethodDef( DeleteTextures),
|
|
MethodDef( DepthFunc),
|
|
MethodDef( DepthMask),
|
|
MethodDef( DepthRange),
|
|
MethodDef( Disable),
|
|
MethodDef( DrawBuffer),
|
|
MethodDef( DrawPixels),
|
|
MethodDef( EdgeFlag),
|
|
MethodDef( EdgeFlagv),
|
|
MethodDef( Enable),
|
|
MethodDef( End),
|
|
MethodDef( EndList),
|
|
MethodDef( EvalCoord1d),
|
|
MethodDef( EvalCoord1dv),
|
|
MethodDef( EvalCoord1f),
|
|
MethodDef( EvalCoord1fv),
|
|
MethodDef( EvalCoord2d),
|
|
MethodDef( EvalCoord2dv),
|
|
MethodDef( EvalCoord2f),
|
|
MethodDef( EvalCoord2fv),
|
|
MethodDef( EvalMesh1),
|
|
MethodDef( EvalMesh2),
|
|
MethodDef( EvalPoint1),
|
|
MethodDef( EvalPoint2),
|
|
MethodDef( FeedbackBuffer),
|
|
MethodDef( Finish),
|
|
MethodDef( Flush),
|
|
MethodDef( Fogf),
|
|
MethodDef( Fogfv),
|
|
MethodDef( Fogi),
|
|
MethodDef( Fogiv),
|
|
MethodDef( FrontFace),
|
|
MethodDef( Frustum),
|
|
MethodDef( GenLists),
|
|
MethodDef( GenTextures),
|
|
MethodDef( GetBooleanv),
|
|
MethodDef( GetClipPlane),
|
|
MethodDef( GetDoublev),
|
|
MethodDef( GetError),
|
|
MethodDef( GetFloatv),
|
|
MethodDef( GetIntegerv),
|
|
MethodDef( GetLightfv),
|
|
MethodDef( GetLightiv),
|
|
MethodDef( GetMapdv),
|
|
MethodDef( GetMapfv),
|
|
MethodDef( GetMapiv),
|
|
MethodDef( GetMaterialfv),
|
|
MethodDef( GetMaterialiv),
|
|
MethodDef( GetPixelMapfv),
|
|
MethodDef( GetPixelMapuiv),
|
|
MethodDef( GetPixelMapusv),
|
|
MethodDef( GetPolygonStipple),
|
|
MethodDef( GetString),
|
|
MethodDef( GetTexEnvfv),
|
|
MethodDef( GetTexEnviv),
|
|
MethodDef( GetTexGendv),
|
|
MethodDef( GetTexGenfv),
|
|
MethodDef( GetTexGeniv),
|
|
MethodDef( GetTexImage),
|
|
MethodDef( GetTexLevelParameterfv),
|
|
MethodDef( GetTexLevelParameteriv),
|
|
MethodDef( GetTexParameterfv),
|
|
MethodDef( GetTexParameteriv),
|
|
MethodDef( Hint),
|
|
MethodDef( IndexMask),
|
|
MethodDef( Indexd),
|
|
MethodDef( Indexdv),
|
|
MethodDef( Indexf),
|
|
MethodDef( Indexfv),
|
|
MethodDef( Indexi),
|
|
MethodDef( Indexiv),
|
|
MethodDef( Indexs),
|
|
MethodDef( Indexsv),
|
|
MethodDef( InitNames),
|
|
MethodDef( IsEnabled),
|
|
MethodDef( IsList),
|
|
MethodDef( IsTexture),
|
|
MethodDef( LightModelf),
|
|
MethodDef( LightModelfv),
|
|
MethodDef( LightModeli),
|
|
MethodDef( LightModeliv),
|
|
MethodDef( Lightf),
|
|
MethodDef( Lightfv),
|
|
MethodDef( Lighti),
|
|
MethodDef( Lightiv),
|
|
MethodDef( LineStipple),
|
|
MethodDef( LineWidth),
|
|
MethodDef( ListBase),
|
|
MethodDef( LoadIdentity),
|
|
MethodDef( LoadMatrixd),
|
|
MethodDef( LoadMatrixf),
|
|
MethodDef( LoadName),
|
|
MethodDef( LogicOp),
|
|
MethodDef( Map1d),
|
|
MethodDef( Map1f),
|
|
MethodDef( Map2d),
|
|
MethodDef( Map2f),
|
|
MethodDef( MapGrid1d),
|
|
MethodDef( MapGrid1f),
|
|
MethodDef( MapGrid2d),
|
|
MethodDef( MapGrid2f),
|
|
MethodDef( Materialf),
|
|
MethodDef( Materialfv),
|
|
MethodDef( Materiali),
|
|
MethodDef( Materialiv),
|
|
MethodDef( MatrixMode),
|
|
MethodDef( MultMatrixd),
|
|
MethodDef( MultMatrixf),
|
|
MethodDef( NewList),
|
|
MethodDef( Normal3b),
|
|
MethodDef( Normal3bv),
|
|
MethodDef( Normal3d),
|
|
MethodDef( Normal3dv),
|
|
MethodDef( Normal3f),
|
|
MethodDef( Normal3fv),
|
|
MethodDef( Normal3i),
|
|
MethodDef( Normal3iv),
|
|
MethodDef( Normal3s),
|
|
MethodDef( Normal3sv),
|
|
MethodDef( Ortho),
|
|
MethodDef( PassThrough),
|
|
MethodDef( PixelMapfv),
|
|
MethodDef( PixelMapuiv),
|
|
MethodDef( PixelMapusv),
|
|
MethodDef( PixelStoref),
|
|
MethodDef( PixelStorei),
|
|
MethodDef( PixelTransferf),
|
|
MethodDef( PixelTransferi),
|
|
MethodDef( PixelZoom),
|
|
MethodDef( PointSize),
|
|
MethodDef( PolygonMode),
|
|
MethodDef( PolygonOffset),
|
|
MethodDef( PolygonStipple),
|
|
MethodDef( PopAttrib),
|
|
MethodDef( PopMatrix),
|
|
MethodDef( PopName),
|
|
MethodDef( PrioritizeTextures),
|
|
MethodDef( PushAttrib),
|
|
MethodDef( PushMatrix),
|
|
MethodDef( PushName),
|
|
MethodDef( RasterPos2d),
|
|
MethodDef( RasterPos2dv),
|
|
MethodDef( RasterPos2f),
|
|
MethodDef( RasterPos2fv),
|
|
MethodDef( RasterPos2i),
|
|
MethodDef( RasterPos2iv),
|
|
MethodDef( RasterPos2s),
|
|
MethodDef( RasterPos2sv),
|
|
MethodDef( RasterPos3d),
|
|
MethodDef( RasterPos3dv),
|
|
MethodDef( RasterPos3f),
|
|
MethodDef( RasterPos3fv),
|
|
MethodDef( RasterPos3i),
|
|
MethodDef( RasterPos3iv),
|
|
MethodDef( RasterPos3s),
|
|
MethodDef( RasterPos3sv),
|
|
MethodDef( RasterPos4d),
|
|
MethodDef( RasterPos4dv),
|
|
MethodDef( RasterPos4f),
|
|
MethodDef( RasterPos4fv),
|
|
MethodDef( RasterPos4i),
|
|
MethodDef( RasterPos4iv),
|
|
MethodDef( RasterPos4s),
|
|
MethodDef( RasterPos4sv),
|
|
MethodDef( ReadBuffer),
|
|
MethodDef( ReadPixels),
|
|
MethodDef( Rectd),
|
|
MethodDef( Rectdv),
|
|
MethodDef( Rectf),
|
|
MethodDef( Rectfv),
|
|
MethodDef( Recti),
|
|
MethodDef( Rectiv),
|
|
MethodDef( Rects),
|
|
MethodDef( Rectsv),
|
|
MethodDef( RenderMode),
|
|
MethodDef( Rotated),
|
|
MethodDef( Rotatef),
|
|
MethodDef( Scaled),
|
|
MethodDef( Scalef),
|
|
MethodDef( Scissor),
|
|
MethodDef( SelectBuffer),
|
|
MethodDef( ShadeModel),
|
|
MethodDef( StencilFunc),
|
|
MethodDef( StencilMask),
|
|
MethodDef( StencilOp),
|
|
MethodDef( TexCoord1d),
|
|
MethodDef( TexCoord1dv),
|
|
MethodDef( TexCoord1f),
|
|
MethodDef( TexCoord1fv),
|
|
MethodDef( TexCoord1i),
|
|
MethodDef( TexCoord1iv),
|
|
MethodDef( TexCoord1s),
|
|
MethodDef( TexCoord1sv),
|
|
MethodDef( TexCoord2d),
|
|
MethodDef( TexCoord2dv),
|
|
MethodDef( TexCoord2f),
|
|
MethodDef( TexCoord2fv),
|
|
MethodDef( TexCoord2i),
|
|
MethodDef( TexCoord2iv),
|
|
MethodDef( TexCoord2s),
|
|
MethodDef( TexCoord2sv),
|
|
MethodDef( TexCoord3d),
|
|
MethodDef( TexCoord3dv),
|
|
MethodDef( TexCoord3f),
|
|
MethodDef( TexCoord3fv),
|
|
MethodDef( TexCoord3i),
|
|
MethodDef( TexCoord3iv),
|
|
MethodDef( TexCoord3s),
|
|
MethodDef( TexCoord3sv),
|
|
MethodDef( TexCoord4d),
|
|
MethodDef( TexCoord4dv),
|
|
MethodDef( TexCoord4f),
|
|
MethodDef( TexCoord4fv),
|
|
MethodDef( TexCoord4i),
|
|
MethodDef( TexCoord4iv),
|
|
MethodDef( TexCoord4s),
|
|
MethodDef( TexCoord4sv),
|
|
MethodDef( TexEnvf),
|
|
MethodDef( TexEnvfv),
|
|
MethodDef( TexEnvi),
|
|
MethodDef( TexEnviv),
|
|
MethodDef( TexGend),
|
|
MethodDef( TexGendv),
|
|
MethodDef( TexGenf),
|
|
MethodDef( TexGenfv),
|
|
MethodDef( TexGeni),
|
|
MethodDef( TexGeniv),
|
|
MethodDef( TexImage1D),
|
|
MethodDef( TexImage2D),
|
|
MethodDef( TexParameterf),
|
|
MethodDef( TexParameterfv),
|
|
MethodDef( TexParameteri),
|
|
MethodDef( TexParameteriv),
|
|
MethodDef( Translated),
|
|
MethodDef( Translatef),
|
|
MethodDef( Vertex2d),
|
|
MethodDef( Vertex2dv),
|
|
MethodDef( Vertex2f),
|
|
MethodDef( Vertex2fv),
|
|
MethodDef( Vertex2i),
|
|
MethodDef( Vertex2iv),
|
|
MethodDef( Vertex2s),
|
|
MethodDef( Vertex2sv),
|
|
MethodDef( Vertex3d),
|
|
MethodDef( Vertex3dv),
|
|
MethodDef( Vertex3f),
|
|
MethodDef( Vertex3fv),
|
|
MethodDef( Vertex3i),
|
|
MethodDef( Vertex3iv),
|
|
MethodDef( Vertex3s),
|
|
MethodDef( Vertex3sv),
|
|
MethodDef( Vertex4d),
|
|
MethodDef( Vertex4dv),
|
|
MethodDef( Vertex4f),
|
|
MethodDef( Vertex4fv),
|
|
MethodDef( Vertex4i),
|
|
MethodDef( Vertex4iv),
|
|
MethodDef( Vertex4s),
|
|
MethodDef( Vertex4sv),
|
|
MethodDef( Viewport),
|
|
#endif
|
|
|
|
{NULL, NULL}
|
|
};
|
|
|
|
PyObject *init_py_bgl(void)
|
|
{
|
|
PyObject *mod= Py_InitModule(SUBMODULE(BGL), BGL_methods);
|
|
PyObject *dict= PyModule_GetDict(mod);
|
|
|
|
Buffer_Type.ob_type= &PyType_Type;
|
|
|
|
BPY_ADDCONST(dict, GL_CURRENT_BIT);
|
|
BPY_ADDCONST(dict, GL_POINT_BIT);
|
|
BPY_ADDCONST(dict, GL_LINE_BIT);
|
|
BPY_ADDCONST(dict, GL_POLYGON_BIT);
|
|
BPY_ADDCONST(dict, GL_POLYGON_STIPPLE_BIT);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MODE_BIT);
|
|
BPY_ADDCONST(dict, GL_LIGHTING_BIT);
|
|
BPY_ADDCONST(dict, GL_FOG_BIT);
|
|
BPY_ADDCONST(dict, GL_DEPTH_BUFFER_BIT);
|
|
BPY_ADDCONST(dict, GL_ACCUM_BUFFER_BIT);
|
|
BPY_ADDCONST(dict, GL_STENCIL_BUFFER_BIT);
|
|
BPY_ADDCONST(dict, GL_VIEWPORT_BIT);
|
|
BPY_ADDCONST(dict, GL_TRANSFORM_BIT);
|
|
BPY_ADDCONST(dict, GL_ENABLE_BIT);
|
|
BPY_ADDCONST(dict, GL_COLOR_BUFFER_BIT);
|
|
BPY_ADDCONST(dict, GL_HINT_BIT);
|
|
BPY_ADDCONST(dict, GL_EVAL_BIT);
|
|
BPY_ADDCONST(dict, GL_LIST_BIT);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_BIT);
|
|
BPY_ADDCONST(dict, GL_SCISSOR_BIT);
|
|
BPY_ADDCONST(dict, GL_ALL_ATTRIB_BITS);
|
|
|
|
BPY_ADDCONST(dict, GL_FALSE);
|
|
BPY_ADDCONST(dict, GL_TRUE);
|
|
|
|
BPY_ADDCONST(dict, GL_POINTS);
|
|
BPY_ADDCONST(dict, GL_LINES);
|
|
BPY_ADDCONST(dict, GL_LINE_LOOP);
|
|
BPY_ADDCONST(dict, GL_LINE_STRIP);
|
|
BPY_ADDCONST(dict, GL_TRIANGLES);
|
|
BPY_ADDCONST(dict, GL_TRIANGLE_STRIP);
|
|
BPY_ADDCONST(dict, GL_TRIANGLE_FAN);
|
|
BPY_ADDCONST(dict, GL_QUADS);
|
|
BPY_ADDCONST(dict, GL_QUAD_STRIP);
|
|
BPY_ADDCONST(dict, GL_POLYGON);
|
|
|
|
BPY_ADDCONST(dict, GL_ACCUM);
|
|
BPY_ADDCONST(dict, GL_LOAD);
|
|
BPY_ADDCONST(dict, GL_RETURN);
|
|
BPY_ADDCONST(dict, GL_MULT);
|
|
BPY_ADDCONST(dict, GL_ADD);
|
|
|
|
BPY_ADDCONST(dict, GL_NEVER);
|
|
BPY_ADDCONST(dict, GL_LESS);
|
|
BPY_ADDCONST(dict, GL_EQUAL);
|
|
BPY_ADDCONST(dict, GL_LEQUAL);
|
|
BPY_ADDCONST(dict, GL_GREATER);
|
|
BPY_ADDCONST(dict, GL_NOTEQUAL);
|
|
BPY_ADDCONST(dict, GL_GEQUAL);
|
|
BPY_ADDCONST(dict, GL_ALWAYS);
|
|
|
|
BPY_ADDCONST(dict, GL_ZERO);
|
|
BPY_ADDCONST(dict, GL_ONE);
|
|
BPY_ADDCONST(dict, GL_SRC_COLOR);
|
|
BPY_ADDCONST(dict, GL_ONE_MINUS_SRC_COLOR);
|
|
BPY_ADDCONST(dict, GL_SRC_ALPHA);
|
|
BPY_ADDCONST(dict, GL_ONE_MINUS_SRC_ALPHA);
|
|
BPY_ADDCONST(dict, GL_DST_ALPHA);
|
|
BPY_ADDCONST(dict, GL_ONE_MINUS_DST_ALPHA);
|
|
|
|
BPY_ADDCONST(dict, GL_DST_COLOR);
|
|
BPY_ADDCONST(dict, GL_ONE_MINUS_DST_COLOR);
|
|
BPY_ADDCONST(dict, GL_SRC_ALPHA_SATURATE);
|
|
|
|
BPY_ADDCONST(dict, GL_NONE);
|
|
BPY_ADDCONST(dict, GL_FRONT_LEFT);
|
|
BPY_ADDCONST(dict, GL_FRONT_RIGHT);
|
|
BPY_ADDCONST(dict, GL_BACK_LEFT);
|
|
BPY_ADDCONST(dict, GL_BACK_RIGHT);
|
|
BPY_ADDCONST(dict, GL_FRONT);
|
|
BPY_ADDCONST(dict, GL_BACK);
|
|
BPY_ADDCONST(dict, GL_LEFT);
|
|
BPY_ADDCONST(dict, GL_RIGHT);
|
|
BPY_ADDCONST(dict, GL_FRONT_AND_BACK);
|
|
BPY_ADDCONST(dict, GL_AUX0);
|
|
BPY_ADDCONST(dict, GL_AUX1);
|
|
BPY_ADDCONST(dict, GL_AUX2);
|
|
BPY_ADDCONST(dict, GL_AUX3);
|
|
|
|
BPY_ADDCONST(dict, GL_NO_ERROR);
|
|
BPY_ADDCONST(dict, GL_INVALID_ENUM);
|
|
BPY_ADDCONST(dict, GL_INVALID_VALUE);
|
|
BPY_ADDCONST(dict, GL_INVALID_OPERATION);
|
|
BPY_ADDCONST(dict, GL_STACK_OVERFLOW);
|
|
BPY_ADDCONST(dict, GL_STACK_UNDERFLOW);
|
|
BPY_ADDCONST(dict, GL_OUT_OF_MEMORY);
|
|
|
|
BPY_ADDCONST(dict, GL_2D);
|
|
BPY_ADDCONST(dict, GL_3D);
|
|
BPY_ADDCONST(dict, GL_3D_COLOR);
|
|
BPY_ADDCONST(dict, GL_3D_COLOR_TEXTURE);
|
|
BPY_ADDCONST(dict, GL_4D_COLOR_TEXTURE);
|
|
|
|
BPY_ADDCONST(dict, GL_PASS_THROUGH_TOKEN);
|
|
BPY_ADDCONST(dict, GL_POINT_TOKEN);
|
|
BPY_ADDCONST(dict, GL_LINE_TOKEN);
|
|
BPY_ADDCONST(dict, GL_POLYGON_TOKEN);
|
|
BPY_ADDCONST(dict, GL_BITMAP_TOKEN);
|
|
BPY_ADDCONST(dict, GL_DRAW_PIXEL_TOKEN);
|
|
BPY_ADDCONST(dict, GL_COPY_PIXEL_TOKEN);
|
|
BPY_ADDCONST(dict, GL_LINE_RESET_TOKEN);
|
|
|
|
BPY_ADDCONST(dict, GL_EXP);
|
|
BPY_ADDCONST(dict, GL_EXP2);
|
|
|
|
BPY_ADDCONST(dict, GL_CW);
|
|
BPY_ADDCONST(dict, GL_CCW);
|
|
|
|
BPY_ADDCONST(dict, GL_COEFF);
|
|
BPY_ADDCONST(dict, GL_ORDER);
|
|
BPY_ADDCONST(dict, GL_DOMAIN);
|
|
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_I);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_S_TO_S);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_R);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_G);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_B);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_A);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_R_TO_R);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_G_TO_G);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_B_TO_B);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_A_TO_A);
|
|
|
|
BPY_ADDCONST(dict, GL_CURRENT_COLOR);
|
|
BPY_ADDCONST(dict, GL_CURRENT_INDEX);
|
|
BPY_ADDCONST(dict, GL_CURRENT_NORMAL);
|
|
BPY_ADDCONST(dict, GL_CURRENT_TEXTURE_COORDS);
|
|
BPY_ADDCONST(dict, GL_CURRENT_RASTER_COLOR);
|
|
BPY_ADDCONST(dict, GL_CURRENT_RASTER_INDEX);
|
|
BPY_ADDCONST(dict, GL_CURRENT_RASTER_TEXTURE_COORDS);
|
|
BPY_ADDCONST(dict, GL_CURRENT_RASTER_POSITION);
|
|
BPY_ADDCONST(dict, GL_CURRENT_RASTER_POSITION_VALID);
|
|
BPY_ADDCONST(dict, GL_CURRENT_RASTER_DISTANCE);
|
|
BPY_ADDCONST(dict, GL_POINT_SMOOTH);
|
|
BPY_ADDCONST(dict, GL_POINT_SIZE);
|
|
BPY_ADDCONST(dict, GL_POINT_SIZE_RANGE);
|
|
BPY_ADDCONST(dict, GL_POINT_SIZE_GRANULARITY);
|
|
BPY_ADDCONST(dict, GL_LINE_SMOOTH);
|
|
BPY_ADDCONST(dict, GL_LINE_WIDTH);
|
|
BPY_ADDCONST(dict, GL_LINE_WIDTH_RANGE);
|
|
BPY_ADDCONST(dict, GL_LINE_WIDTH_GRANULARITY);
|
|
BPY_ADDCONST(dict, GL_LINE_STIPPLE);
|
|
BPY_ADDCONST(dict, GL_LINE_STIPPLE_PATTERN);
|
|
BPY_ADDCONST(dict, GL_LINE_STIPPLE_REPEAT);
|
|
BPY_ADDCONST(dict, GL_LIST_MODE);
|
|
BPY_ADDCONST(dict, GL_MAX_LIST_NESTING);
|
|
BPY_ADDCONST(dict, GL_LIST_BASE);
|
|
BPY_ADDCONST(dict, GL_LIST_INDEX);
|
|
BPY_ADDCONST(dict, GL_POLYGON_MODE);
|
|
BPY_ADDCONST(dict, GL_POLYGON_SMOOTH);
|
|
BPY_ADDCONST(dict, GL_POLYGON_STIPPLE);
|
|
BPY_ADDCONST(dict, GL_EDGE_FLAG);
|
|
BPY_ADDCONST(dict, GL_CULL_FACE);
|
|
BPY_ADDCONST(dict, GL_CULL_FACE_MODE);
|
|
BPY_ADDCONST(dict, GL_FRONT_FACE);
|
|
BPY_ADDCONST(dict, GL_LIGHTING);
|
|
BPY_ADDCONST(dict, GL_LIGHT_MODEL_LOCAL_VIEWER);
|
|
BPY_ADDCONST(dict, GL_LIGHT_MODEL_TWO_SIDE);
|
|
BPY_ADDCONST(dict, GL_LIGHT_MODEL_AMBIENT);
|
|
BPY_ADDCONST(dict, GL_SHADE_MODEL);
|
|
BPY_ADDCONST(dict, GL_COLOR_MATERIAL_FACE);
|
|
BPY_ADDCONST(dict, GL_COLOR_MATERIAL_PARAMETER);
|
|
BPY_ADDCONST(dict, GL_COLOR_MATERIAL);
|
|
BPY_ADDCONST(dict, GL_FOG);
|
|
BPY_ADDCONST(dict, GL_FOG_INDEX);
|
|
BPY_ADDCONST(dict, GL_FOG_DENSITY);
|
|
BPY_ADDCONST(dict, GL_FOG_START);
|
|
BPY_ADDCONST(dict, GL_FOG_END);
|
|
BPY_ADDCONST(dict, GL_FOG_MODE);
|
|
BPY_ADDCONST(dict, GL_FOG_COLOR);
|
|
BPY_ADDCONST(dict, GL_DEPTH_RANGE);
|
|
BPY_ADDCONST(dict, GL_DEPTH_TEST);
|
|
BPY_ADDCONST(dict, GL_DEPTH_WRITEMASK);
|
|
BPY_ADDCONST(dict, GL_DEPTH_CLEAR_VALUE);
|
|
BPY_ADDCONST(dict, GL_DEPTH_FUNC);
|
|
BPY_ADDCONST(dict, GL_ACCUM_CLEAR_VALUE);
|
|
BPY_ADDCONST(dict, GL_STENCIL_TEST);
|
|
BPY_ADDCONST(dict, GL_STENCIL_CLEAR_VALUE);
|
|
BPY_ADDCONST(dict, GL_STENCIL_FUNC);
|
|
BPY_ADDCONST(dict, GL_STENCIL_VALUE_MASK);
|
|
BPY_ADDCONST(dict, GL_STENCIL_FAIL);
|
|
BPY_ADDCONST(dict, GL_STENCIL_PASS_DEPTH_FAIL);
|
|
BPY_ADDCONST(dict, GL_STENCIL_PASS_DEPTH_PASS);
|
|
BPY_ADDCONST(dict, GL_STENCIL_REF);
|
|
BPY_ADDCONST(dict, GL_STENCIL_WRITEMASK);
|
|
BPY_ADDCONST(dict, GL_MATRIX_MODE);
|
|
BPY_ADDCONST(dict, GL_NORMALIZE);
|
|
BPY_ADDCONST(dict, GL_VIEWPORT);
|
|
BPY_ADDCONST(dict, GL_MODELVIEW_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_PROJECTION_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_MODELVIEW_MATRIX);
|
|
BPY_ADDCONST(dict, GL_PROJECTION_MATRIX);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_MATRIX);
|
|
BPY_ADDCONST(dict, GL_ATTRIB_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_ALPHA_TEST);
|
|
BPY_ADDCONST(dict, GL_ALPHA_TEST_FUNC);
|
|
BPY_ADDCONST(dict, GL_ALPHA_TEST_REF);
|
|
BPY_ADDCONST(dict, GL_DITHER);
|
|
BPY_ADDCONST(dict, GL_BLEND_DST);
|
|
BPY_ADDCONST(dict, GL_BLEND_SRC);
|
|
BPY_ADDCONST(dict, GL_BLEND);
|
|
BPY_ADDCONST(dict, GL_LOGIC_OP_MODE);
|
|
BPY_ADDCONST(dict, GL_LOGIC_OP);
|
|
BPY_ADDCONST(dict, GL_AUX_BUFFERS);
|
|
BPY_ADDCONST(dict, GL_DRAW_BUFFER);
|
|
BPY_ADDCONST(dict, GL_READ_BUFFER);
|
|
BPY_ADDCONST(dict, GL_SCISSOR_BOX);
|
|
BPY_ADDCONST(dict, GL_SCISSOR_TEST);
|
|
BPY_ADDCONST(dict, GL_INDEX_CLEAR_VALUE);
|
|
BPY_ADDCONST(dict, GL_INDEX_WRITEMASK);
|
|
BPY_ADDCONST(dict, GL_COLOR_CLEAR_VALUE);
|
|
BPY_ADDCONST(dict, GL_COLOR_WRITEMASK);
|
|
BPY_ADDCONST(dict, GL_INDEX_MODE);
|
|
BPY_ADDCONST(dict, GL_RGBA_MODE);
|
|
BPY_ADDCONST(dict, GL_DOUBLEBUFFER);
|
|
BPY_ADDCONST(dict, GL_STEREO);
|
|
BPY_ADDCONST(dict, GL_RENDER_MODE);
|
|
BPY_ADDCONST(dict, GL_PERSPECTIVE_CORRECTION_HINT);
|
|
BPY_ADDCONST(dict, GL_POINT_SMOOTH_HINT);
|
|
BPY_ADDCONST(dict, GL_LINE_SMOOTH_HINT);
|
|
BPY_ADDCONST(dict, GL_POLYGON_SMOOTH_HINT);
|
|
BPY_ADDCONST(dict, GL_FOG_HINT);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_GEN_S);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_GEN_T);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_GEN_R);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_GEN_Q);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_I_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_S_TO_S_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_R_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_G_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_B_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_I_TO_A_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_R_TO_R_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_G_TO_G_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_B_TO_B_SIZE);
|
|
BPY_ADDCONST(dict, GL_PIXEL_MAP_A_TO_A_SIZE);
|
|
BPY_ADDCONST(dict, GL_UNPACK_SWAP_BYTES);
|
|
BPY_ADDCONST(dict, GL_UNPACK_LSB_FIRST);
|
|
BPY_ADDCONST(dict, GL_UNPACK_ROW_LENGTH);
|
|
BPY_ADDCONST(dict, GL_UNPACK_SKIP_ROWS);
|
|
BPY_ADDCONST(dict, GL_UNPACK_SKIP_PIXELS);
|
|
BPY_ADDCONST(dict, GL_UNPACK_ALIGNMENT);
|
|
BPY_ADDCONST(dict, GL_PACK_SWAP_BYTES);
|
|
BPY_ADDCONST(dict, GL_PACK_LSB_FIRST);
|
|
BPY_ADDCONST(dict, GL_PACK_ROW_LENGTH);
|
|
BPY_ADDCONST(dict, GL_PACK_SKIP_ROWS);
|
|
BPY_ADDCONST(dict, GL_PACK_SKIP_PIXELS);
|
|
BPY_ADDCONST(dict, GL_PACK_ALIGNMENT);
|
|
BPY_ADDCONST(dict, GL_MAP_COLOR);
|
|
BPY_ADDCONST(dict, GL_MAP_STENCIL);
|
|
BPY_ADDCONST(dict, GL_INDEX_SHIFT);
|
|
BPY_ADDCONST(dict, GL_INDEX_OFFSET);
|
|
BPY_ADDCONST(dict, GL_RED_SCALE);
|
|
BPY_ADDCONST(dict, GL_RED_BIAS);
|
|
BPY_ADDCONST(dict, GL_ZOOM_X);
|
|
BPY_ADDCONST(dict, GL_ZOOM_Y);
|
|
BPY_ADDCONST(dict, GL_GREEN_SCALE);
|
|
BPY_ADDCONST(dict, GL_GREEN_BIAS);
|
|
BPY_ADDCONST(dict, GL_BLUE_SCALE);
|
|
BPY_ADDCONST(dict, GL_BLUE_BIAS);
|
|
BPY_ADDCONST(dict, GL_ALPHA_SCALE);
|
|
BPY_ADDCONST(dict, GL_ALPHA_BIAS);
|
|
BPY_ADDCONST(dict, GL_DEPTH_SCALE);
|
|
BPY_ADDCONST(dict, GL_DEPTH_BIAS);
|
|
BPY_ADDCONST(dict, GL_MAX_EVAL_ORDER);
|
|
BPY_ADDCONST(dict, GL_MAX_LIGHTS);
|
|
BPY_ADDCONST(dict, GL_MAX_CLIP_PLANES);
|
|
BPY_ADDCONST(dict, GL_MAX_TEXTURE_SIZE);
|
|
BPY_ADDCONST(dict, GL_MAX_PIXEL_MAP_TABLE);
|
|
BPY_ADDCONST(dict, GL_MAX_ATTRIB_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_MAX_MODELVIEW_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_MAX_NAME_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_MAX_PROJECTION_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_MAX_TEXTURE_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_MAX_VIEWPORT_DIMS);
|
|
BPY_ADDCONST(dict, GL_SUBPIXEL_BITS);
|
|
BPY_ADDCONST(dict, GL_INDEX_BITS);
|
|
BPY_ADDCONST(dict, GL_RED_BITS);
|
|
BPY_ADDCONST(dict, GL_GREEN_BITS);
|
|
BPY_ADDCONST(dict, GL_BLUE_BITS);
|
|
BPY_ADDCONST(dict, GL_ALPHA_BITS);
|
|
BPY_ADDCONST(dict, GL_DEPTH_BITS);
|
|
BPY_ADDCONST(dict, GL_STENCIL_BITS);
|
|
BPY_ADDCONST(dict, GL_ACCUM_RED_BITS);
|
|
BPY_ADDCONST(dict, GL_ACCUM_GREEN_BITS);
|
|
BPY_ADDCONST(dict, GL_ACCUM_BLUE_BITS);
|
|
BPY_ADDCONST(dict, GL_ACCUM_ALPHA_BITS);
|
|
BPY_ADDCONST(dict, GL_NAME_STACK_DEPTH);
|
|
BPY_ADDCONST(dict, GL_AUTO_NORMAL);
|
|
BPY_ADDCONST(dict, GL_MAP1_COLOR_4);
|
|
BPY_ADDCONST(dict, GL_MAP1_INDEX);
|
|
BPY_ADDCONST(dict, GL_MAP1_NORMAL);
|
|
BPY_ADDCONST(dict, GL_MAP1_TEXTURE_COORD_1);
|
|
BPY_ADDCONST(dict, GL_MAP1_TEXTURE_COORD_2);
|
|
BPY_ADDCONST(dict, GL_MAP1_TEXTURE_COORD_3);
|
|
BPY_ADDCONST(dict, GL_MAP1_TEXTURE_COORD_4);
|
|
BPY_ADDCONST(dict, GL_MAP1_VERTEX_3);
|
|
BPY_ADDCONST(dict, GL_MAP1_VERTEX_4);
|
|
BPY_ADDCONST(dict, GL_MAP2_COLOR_4);
|
|
BPY_ADDCONST(dict, GL_MAP2_INDEX);
|
|
BPY_ADDCONST(dict, GL_MAP2_NORMAL);
|
|
BPY_ADDCONST(dict, GL_MAP2_TEXTURE_COORD_1);
|
|
BPY_ADDCONST(dict, GL_MAP2_TEXTURE_COORD_2);
|
|
BPY_ADDCONST(dict, GL_MAP2_TEXTURE_COORD_3);
|
|
BPY_ADDCONST(dict, GL_MAP2_TEXTURE_COORD_4);
|
|
BPY_ADDCONST(dict, GL_MAP2_VERTEX_3);
|
|
BPY_ADDCONST(dict, GL_MAP2_VERTEX_4);
|
|
BPY_ADDCONST(dict, GL_MAP1_GRID_DOMAIN);
|
|
BPY_ADDCONST(dict, GL_MAP1_GRID_SEGMENTS);
|
|
BPY_ADDCONST(dict, GL_MAP2_GRID_DOMAIN);
|
|
BPY_ADDCONST(dict, GL_MAP2_GRID_SEGMENTS);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_1D);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_2D);
|
|
|
|
BPY_ADDCONST(dict, GL_TEXTURE_WIDTH);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_HEIGHT);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_COMPONENTS);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_BORDER_COLOR);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_BORDER);
|
|
|
|
BPY_ADDCONST(dict, GL_DONT_CARE);
|
|
BPY_ADDCONST(dict, GL_FASTEST);
|
|
BPY_ADDCONST(dict, GL_NICEST);
|
|
|
|
BPY_ADDCONST(dict, GL_AMBIENT);
|
|
BPY_ADDCONST(dict, GL_DIFFUSE);
|
|
BPY_ADDCONST(dict, GL_SPECULAR);
|
|
BPY_ADDCONST(dict, GL_POSITION);
|
|
BPY_ADDCONST(dict, GL_SPOT_DIRECTION);
|
|
BPY_ADDCONST(dict, GL_SPOT_EXPONENT);
|
|
BPY_ADDCONST(dict, GL_SPOT_CUTOFF);
|
|
BPY_ADDCONST(dict, GL_CONSTANT_ATTENUATION);
|
|
BPY_ADDCONST(dict, GL_LINEAR_ATTENUATION);
|
|
BPY_ADDCONST(dict, GL_QUADRATIC_ATTENUATION);
|
|
|
|
BPY_ADDCONST(dict, GL_COMPILE);
|
|
BPY_ADDCONST(dict, GL_COMPILE_AND_EXECUTE);
|
|
|
|
BPY_ADDCONST(dict, GL_BYTE);
|
|
BPY_ADDCONST(dict, GL_UNSIGNED_BYTE);
|
|
BPY_ADDCONST(dict, GL_SHORT);
|
|
BPY_ADDCONST(dict, GL_UNSIGNED_SHORT);
|
|
BPY_ADDCONST(dict, GL_INT);
|
|
BPY_ADDCONST(dict, GL_UNSIGNED_INT);
|
|
BPY_ADDCONST(dict, GL_FLOAT);
|
|
BPY_ADDCONST(dict, GL_2_BYTES);
|
|
BPY_ADDCONST(dict, GL_3_BYTES);
|
|
BPY_ADDCONST(dict, GL_4_BYTES);
|
|
|
|
BPY_ADDCONST(dict, GL_CLEAR);
|
|
BPY_ADDCONST(dict, GL_AND);
|
|
BPY_ADDCONST(dict, GL_AND_REVERSE);
|
|
BPY_ADDCONST(dict, GL_COPY);
|
|
BPY_ADDCONST(dict, GL_AND_INVERTED);
|
|
BPY_ADDCONST(dict, GL_NOOP);
|
|
BPY_ADDCONST(dict, GL_XOR);
|
|
BPY_ADDCONST(dict, GL_OR);
|
|
BPY_ADDCONST(dict, GL_NOR);
|
|
BPY_ADDCONST(dict, GL_EQUIV);
|
|
BPY_ADDCONST(dict, GL_INVERT);
|
|
BPY_ADDCONST(dict, GL_OR_REVERSE);
|
|
BPY_ADDCONST(dict, GL_COPY_INVERTED);
|
|
BPY_ADDCONST(dict, GL_OR_INVERTED);
|
|
BPY_ADDCONST(dict, GL_NAND);
|
|
BPY_ADDCONST(dict, GL_SET);
|
|
|
|
BPY_ADDCONST(dict, GL_EMISSION);
|
|
BPY_ADDCONST(dict, GL_SHININESS);
|
|
BPY_ADDCONST(dict, GL_AMBIENT_AND_DIFFUSE);
|
|
BPY_ADDCONST(dict, GL_COLOR_INDEXES);
|
|
|
|
BPY_ADDCONST(dict, GL_MODELVIEW);
|
|
BPY_ADDCONST(dict, GL_PROJECTION);
|
|
BPY_ADDCONST(dict, GL_TEXTURE);
|
|
|
|
BPY_ADDCONST(dict, GL_COLOR);
|
|
BPY_ADDCONST(dict, GL_DEPTH);
|
|
BPY_ADDCONST(dict, GL_STENCIL);
|
|
|
|
BPY_ADDCONST(dict, GL_COLOR_INDEX);
|
|
BPY_ADDCONST(dict, GL_STENCIL_INDEX);
|
|
BPY_ADDCONST(dict, GL_DEPTH_COMPONENT);
|
|
BPY_ADDCONST(dict, GL_RED);
|
|
BPY_ADDCONST(dict, GL_GREEN);
|
|
BPY_ADDCONST(dict, GL_BLUE);
|
|
BPY_ADDCONST(dict, GL_ALPHA);
|
|
BPY_ADDCONST(dict, GL_RGB);
|
|
BPY_ADDCONST(dict, GL_RGBA);
|
|
BPY_ADDCONST(dict, GL_LUMINANCE);
|
|
BPY_ADDCONST(dict, GL_LUMINANCE_ALPHA);
|
|
|
|
BPY_ADDCONST(dict, GL_BITMAP);
|
|
|
|
BPY_ADDCONST(dict, GL_POINT);
|
|
BPY_ADDCONST(dict, GL_LINE);
|
|
BPY_ADDCONST(dict, GL_FILL);
|
|
|
|
BPY_ADDCONST(dict, GL_RENDER);
|
|
BPY_ADDCONST(dict, GL_FEEDBACK);
|
|
BPY_ADDCONST(dict, GL_SELECT);
|
|
|
|
BPY_ADDCONST(dict, GL_FLAT);
|
|
BPY_ADDCONST(dict, GL_SMOOTH);
|
|
|
|
BPY_ADDCONST(dict, GL_KEEP);
|
|
BPY_ADDCONST(dict, GL_REPLACE);
|
|
BPY_ADDCONST(dict, GL_INCR);
|
|
BPY_ADDCONST(dict, GL_DECR);
|
|
|
|
BPY_ADDCONST(dict, GL_VENDOR);
|
|
BPY_ADDCONST(dict, GL_RENDERER);
|
|
BPY_ADDCONST(dict, GL_VERSION);
|
|
BPY_ADDCONST(dict, GL_EXTENSIONS);
|
|
|
|
BPY_ADDCONST(dict, GL_S);
|
|
BPY_ADDCONST(dict, GL_T);
|
|
BPY_ADDCONST(dict, GL_R);
|
|
BPY_ADDCONST(dict, GL_Q);
|
|
|
|
BPY_ADDCONST(dict, GL_MODULATE);
|
|
BPY_ADDCONST(dict, GL_DECAL);
|
|
|
|
BPY_ADDCONST(dict, GL_TEXTURE_ENV_MODE);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_ENV_COLOR);
|
|
|
|
BPY_ADDCONST(dict, GL_TEXTURE_ENV);
|
|
|
|
BPY_ADDCONST(dict, GL_EYE_LINEAR);
|
|
BPY_ADDCONST(dict, GL_OBJECT_LINEAR);
|
|
BPY_ADDCONST(dict, GL_SPHERE_MAP);
|
|
|
|
BPY_ADDCONST(dict, GL_TEXTURE_GEN_MODE);
|
|
BPY_ADDCONST(dict, GL_OBJECT_PLANE);
|
|
BPY_ADDCONST(dict, GL_EYE_PLANE);
|
|
|
|
BPY_ADDCONST(dict, GL_NEAREST);
|
|
BPY_ADDCONST(dict, GL_LINEAR);
|
|
|
|
BPY_ADDCONST(dict, GL_NEAREST_MIPMAP_NEAREST);
|
|
BPY_ADDCONST(dict, GL_LINEAR_MIPMAP_NEAREST);
|
|
BPY_ADDCONST(dict, GL_NEAREST_MIPMAP_LINEAR);
|
|
BPY_ADDCONST(dict, GL_LINEAR_MIPMAP_LINEAR);
|
|
|
|
BPY_ADDCONST(dict, GL_TEXTURE_MAG_FILTER);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_MIN_FILTER);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_WRAP_S);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_WRAP_T);
|
|
|
|
BPY_ADDCONST(dict, GL_CLAMP);
|
|
BPY_ADDCONST(dict, GL_REPEAT);
|
|
|
|
BPY_ADDCONST(dict, GL_CLIP_PLANE0);
|
|
BPY_ADDCONST(dict, GL_CLIP_PLANE1);
|
|
BPY_ADDCONST(dict, GL_CLIP_PLANE2);
|
|
BPY_ADDCONST(dict, GL_CLIP_PLANE3);
|
|
BPY_ADDCONST(dict, GL_CLIP_PLANE4);
|
|
BPY_ADDCONST(dict, GL_CLIP_PLANE5);
|
|
|
|
BPY_ADDCONST(dict, GL_LIGHT0);
|
|
BPY_ADDCONST(dict, GL_LIGHT1);
|
|
BPY_ADDCONST(dict, GL_LIGHT2);
|
|
BPY_ADDCONST(dict, GL_LIGHT3);
|
|
BPY_ADDCONST(dict, GL_LIGHT4);
|
|
BPY_ADDCONST(dict, GL_LIGHT5);
|
|
BPY_ADDCONST(dict, GL_LIGHT6);
|
|
BPY_ADDCONST(dict, GL_LIGHT7);
|
|
|
|
BPY_ADDCONST(dict, GL_POLYGON_OFFSET_UNITS);
|
|
BPY_ADDCONST(dict, GL_POLYGON_OFFSET_POINT);
|
|
BPY_ADDCONST(dict, GL_POLYGON_OFFSET_LINE);
|
|
BPY_ADDCONST(dict, GL_POLYGON_OFFSET_FILL);
|
|
BPY_ADDCONST(dict, GL_POLYGON_OFFSET_FACTOR);
|
|
|
|
BPY_ADDCONST(dict, GL_TEXTURE_PRIORITY);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_RESIDENT);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_BINDING_1D);
|
|
BPY_ADDCONST(dict, GL_TEXTURE_BINDING_2D);
|
|
|
|
return mod;
|
|
}
|
|
|
|
void initDraw(void)
|
|
{
|
|
init_py_draw();
|
|
init_py_bgl();
|
|
}
|