2025-01-26 18:33:45 +01:00

182 lines
3.5 KiB
C

/*
Raydium - CQFD Corp.
http://raydium.org/
License: GPL - GNU General Public License, see "gpl.txt" file.
*/
// avoid "real GLUT"
#ifndef GLUT_API_VERSION
#ifndef DONT_INCLUDE_HEADERS
#include "index.h"
#else
#include "headers/myglut.h"
#endif
#ifndef raydium_log
void raydium_log(char *format, ...);
#endif
int _glutWindowSize[2];
signed char _glutMouseVisible;
#ifdef WIN32
#include "myglut-win32.c"
#else
#include "myglut-x11.c"
#endif
//glutInitDisplayMode
//glutGameModeString
//glutEnterGameMode
//glutInitWindowSize
//glutCreateWindow
// are replaced by .. myglutCreateWindow
void myglutCreateWindow(GLuint tx, GLuint ty, signed char rendering, char *name)
{
switch(rendering)
{
case RAYDIUM_RENDERING_NONE:
return;
case RAYDIUM_RENDERING_WINDOW:
pwInit(-1,-1,tx,ty,0,name,1,0);
break;
case RAYDIUM_RENDERING_FULLSCREEN:
pwInit(0,0,-1,-1,0,name,0,0);
break;
}
}
//glutMainLoop
void glutMainLoop(void)
{
//#ifdef WIN32
// since windows is firing WM_SIZE too quickly ...
if(glutReshapeFuncCB)
glutReshapeFuncCB(_glutWindowSize[0],_glutWindowSize[1]);
//#endif
do{
glutIdleFuncCB();
myglutGetEvents();
}while(1);
}
// glutWireSphere
void glutWireSphere(GLdouble radius, GLint slices, GLint stacks)
{
static GLUquadricObj *quadObj=NULL;
if(!quadObj)
quadObj=gluNewQuadric();
gluQuadricDrawStyle(quadObj, GLU_LINE);
gluQuadricNormals(quadObj, GLU_SMOOTH);
gluSphere(quadObj, radius, slices, stacks);
}
//glutGet
int glutGet(int enu)
{
switch(enu)
{
case GLUT_WINDOW_CURSOR:
return _glutMouseVisible;
case GLUT_WINDOW_WIDTH:
return _glutWindowSize[0];
case GLUT_WINDOW_HEIGHT:
return _glutWindowSize[1];
default:
raydium_log("(my)glutGet: ERROR: unknown 'enu' %i",enu);
}
return 0;
}
//glutIgnoreKeyRepeat (1 = yes)
void glutIgnoreKeyRepeat(int ignore)
{
//glutIgnoreKeyRepeatFlag=(ignore?1:0);
}
//glutReshapeFunc - void (GLUTCALLBACK *func)(int width, int height)
void glutReshapeFunc(void *func)
{
glutReshapeFuncCB=func;
}
//glutKeyboardFunc - void (GLUTCALLBACK *func)(unsigned char key, int x, int y)
void glutKeyboardFunc(void *func)
{
glutKeyboardFuncCB=func;
}
//glutSpecialUpFunc - void (GLUTCALLBACK *func)(int key, int x, int y)
void glutSpecialUpFunc(void *func)
{
glutSpecialUpFuncCB=func;
}
//glutSpecialFunc - void (GLUTCALLBACK *func)(int key, int x, int y)
void glutSpecialFunc(void *func)
{
glutSpecialFuncCB=func;
}
//glutMotionFunc - void (GLUTCALLBACK *func)(int x, int y)
void glutMotionFunc(void *func)
{
glutMotionFuncCB=func;
}
//glutPassiveMotionFunc - void (GLUTCALLBACK *func)(int x, int y)
void glutPassiveMotionFunc(void *func)
{
glutPassiveMotionFuncCB=func;
}
//glutMouseFunc - void (GLUTCALLBACK *func)(int button, int state, int x, int y)
void glutMouseFunc(void *func)
{
glutMouseFuncCB=func;
}
//glutDisplayFunc - void (GLUTCALLBACK *func)(void)
void glutDisplayFunc(void *func)
{
glutDisplayFuncCB=func;
}
//glutIdleFunc - void (GLUTCALLBACK *func)(void)
void glutIdleFunc(void *func)
{
glutIdleFuncCB=func;
}
//glutExtensionSupported - int (GLUTCALLBACK *func)(const char *name);
int glutExtensionSupported(const char *name)
{
char *ext;
int i;
int start=0;
char curr[128];
ext=(char *)glGetString(GL_EXTENSIONS);
if(!ext) return 0;
for(i=0;i<=strlen(ext);i++)
{
if(ext[i]==' ' || ext[i]==0)
{
strncpy(curr,ext+start,i-start);
curr[i-start]=0;
//printf("-%s-\n",curr);
if(!strcasecmp(curr,name))
return 1;
start=i+1;
}
}
return 0;
}
#endif