Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
pogl_glut.xs view on Meta::CPAN
begin_decl_gwh(Dials, (int dial, int value), 2)
GLUT_PUSH_NEW_IV(dial);
GLUT_PUSH_NEW_IV(value);
end_decl_gwh()
/* Callback for glutTabletMotionFunc */
begin_decl_gwh(TabletMotion, (int x, int y), 2)
GLUT_PUSH_NEW_IV(x);
GLUT_PUSH_NEW_IV(y);
end_decl_gwh()
/* Callback for glutTabletButtonFunc */
begin_decl_gwh(TabletButton, (int button, int state, int x, int y), 4)
GLUT_PUSH_NEW_IV(button);
GLUT_PUSH_NEW_IV(state);
GLUT_PUSH_NEW_IV(x);
GLUT_PUSH_NEW_IV(y);
end_decl_gwh()
/* Callback for glutIdleFunc */
begin_decl_ggh(Idle, (void), 0)
end_decl_ggh()
/* Callback for glutMenuStatusFunc */
begin_decl_ggh(MenuStatus, (int status, int x, int y), 3)
GLUT_PUSH_NEW_IV(status);
GLUT_PUSH_NEW_IV(x);
GLUT_PUSH_NEW_IV(y);
end_decl_ggh()
/* Callback for glutMenuStateFunc */
begin_decl_ggh(MenuState, (int status), 1)
GLUT_PUSH_NEW_IV(status);
end_decl_ggh()
/* Callback for glutMenuDestroyFunc */ /* Open/FreeGLUT -chm */
begin_decl_gwh(MenuDestroy, (void), 0)
end_decl_gwh()
/* Callback for glutCloseFunc */
#ifdef HAVE_AGL_GLUT
static void generic_glut_WMClose_handler(void)
#else
static void generic_glut_Close_handler(void)
#endif
{
int win = glutGetWindow();
AV * handler_data = (AV*)get_glut_win_handler(win, HANDLE_GLUT_Close);
SV * handler = *av_fetch(handler_data, 0, 0);
dSP;
GLUT_PUSHMARK(sp);
GLUT_EXTEND_STACK(sp,1);
GLUT_PUSH_NEW_IV(win);
PUTBACK;
DO_perl_call_sv(handler, G_DISCARD);
}
/* Callback for glutTimerFunc */
static void generic_glut_timer_handler(int value)
{
AV * handler_data = (AV*)value;
SV * handler;
int i;
dSP;
handler = *av_fetch(handler_data, 0, 0);
GLUT_PUSHMARK(sp);
GLUT_EXTEND_STACK(sp,av_len(handler_data));
for (i=1;i<=av_len(handler_data);i++)
GLUT_PUSH_NEW_SV(*av_fetch(handler_data, i, 0));
PUTBACK;
DO_perl_call_sv(handler, G_DISCARD);
SvREFCNT_dec(handler_data);
}
static AV * glut_menu_handlers = 0;
/* Callback for glutMenuFunc */
static void generic_glut_menu_handler(int value)
{
AV * handler_data;
SV * handler;
SV ** h;
int i;
dSP;
h = av_fetch(glut_menu_handlers, glutGetMenu(), FALSE);
if (!h || !SvOK(*h) || !SvROK(*h))
croak("Unable to locate menu handler");
handler_data = (AV*)SvRV(*h);
handler = *av_fetch(handler_data, 0, 0);
GLUT_PUSHMARK(sp);
GLUT_EXTEND_STACK(sp,av_len(handler_data) + 1);
for (i=1;i<=av_len(handler_data);i++)
GLUT_PUSH_NEW_SV(*av_fetch(handler_data, i, 0));
GLUT_PUSH_NEW_IV(value);
PUTBACK;
DO_perl_call_sv(handler, G_DISCARD);
}
/* End of set up for GLUT callback stuff */
MODULE = Acme::MITHALDU::BleedingOpenGL::GLUT PACKAGE = Acme::MITHALDU::BleedingOpenGL
#// Test for done with glutInit
int
done_glutInit()
CODE:
RETVAL = _done_glutInit;
OUTPUT:
pogl_glut.xs view on Meta::CPAN
#//# glutTabletMotionFunc(\&callback);
void
glutTabletMotionFunc(handler=0, ...)
SV * handler
CODE:
decl_gwh_xs(TabletMotion)
#//# glutTabletButtonFunc(\&callback);
void
glutTabletButtonFunc(handler=0, ...)
SV * handler
CODE:
decl_gwh_xs(TabletButton)
#endif
#if GLUT_API_VERSION >= 3
#//# glutMenuStatusFunc(\&callback);
void
glutMenuStatusFunc(handler=0, ...)
SV * handler
CODE:
decl_ggh_xs(MenuStatus)
#endif
#//# glutMenuStateFunc(\&callback);
void
glutMenuStateFunc(handler=0, ...)
SV * handler
CODE:
{
#if defined HAVE_FREEGLUT
decl_ggh_xs(MenuState)
#endif
}
#//# glutIdleFunc(\&callback);
void
glutIdleFunc(handler=0, ...)
SV * handler
CODE:
decl_ggh_xs(Idle)
#//# glutTimerFunc($msecs, \&callback);
void
glutTimerFunc(msecs, handler=0, ...)
unsigned int msecs
SV * handler
CODE:
{
if (!handler || !SvOK(handler)) {
croak("A handler must be specified");
} else {
AV * handler_data = newAV();
PackCallbackST(handler_data, 1);
glutTimerFunc(msecs, generic_glut_timer_handler, (int)handler_data);
}
ENSURE_callback_thread;}
# Colors
#//# glutSetColor($cell, $red, $green, $blue)
void
glutSetColor(cell, red, green, blue)
int cell
GLfloat red
GLfloat green
GLfloat blue
#//# glutGetColor($cell, $component);
GLfloat
glutGetColor(cell, component)
int cell
int component
#//# glutCopyColormap($win);
void
glutCopyColormap(win)
int win
# State
#//# glutGet($state);
int
glutGet(state)
GLenum state
#if GLUT_API_VERSION >= 3
#//# glutLayerGet(info);
int
glutLayerGet(info)
GLenum info
#endif
int
glutDeviceGet(info)
GLenum info
#if GLUT_API_VERSION >= 3
#//# glutGetModifiers();
int
glutGetModifiers()
#endif
#if GLUT_API_VERSION >= 2
#//# glutExtensionSupported($extension);
int
glutExtensionSupported(extension)
char * extension
( run in 1.497 second using v1.01-cache-2.11-cpan-39bf76dae61 )