0
@@ -25,7 +25,52 @@ BOOL active=TRUE;
0
+ BOOL doesPassiveMotion;
0
+IoObject * (__cdecl *IoGLUT_glutEventTarget_)(IoGLUT *, IoObject *, IoMessage *);
0
+void (__cdecl *IoGlutKeyboardFunc)(unsigned char key, int xv, int yv);
0
+void (__cdecl *IoGlutSpecialFunc)(int key, int xv, int yv);
0
+void (__cdecl *IoGlutKeyboardUpFunc)(unsigned char key, int xv, int yv);
0
+void (__cdecl *IoGlutSpecialUpFunc)(int key, int xv, int yv);
0
+void (__cdecl *IoGlutEntryFunc)(int state);
0
+void (__cdecl *IoGlutMotionFunc)(int xv, int yv);
0
+void (__cdecl *IoGlutPassiveMotionFunc)(int xv, int yv);
0
+void (__cdecl *IoGlutMouseFunc)(int button, int state, int xv, int yv);
0
+void (__cdecl *IoGlutDisplayFunc)(void);
0
+void (__cdecl *IoGlutReshapeFunc)(int width, int height);
0
+void (__cdecl *IoGlutTimerFunc)(int vv);
0
+ if (ioGlutFuncs.IoGLUT_glutEventTarget_ == NULL)
0
+ HMODULE hLib = LoadLibrary(_T("\\usr\\local\\lib\\io\\addons\\OpenGL\\_build\\dll\\libioopengl.dll"));
0
+ ioGlutFuncs.IoGLUT_glutEventTarget_ = (void *)GetProcAddress(hLib, "IoGLUT_glutEventTarget_");
0
+ ioGlutFuncs.IoGlutSpecialFunc = (void *)GetProcAddress(hLib, "IoGlutSpecialFunc");
0
+ ioGlutFuncs.IoGlutKeyboardUpFunc = (void *)GetProcAddress(hLib, "IoGlutKeyboardUpFunc");
0
+ ioGlutFuncs.IoGlutEntryFunc = (void *)GetProcAddress(hLib, "IoGlutEntryFunc");
0
+ ioGlutFuncs.IoGlutMotionFunc = (void *)GetProcAddress(hLib, "IoGlutMotionFunc");
0
+ ioGlutFuncs.IoGlutPassiveMotionFunc = (void *)GetProcAddress(hLib, "IoGlutPassiveMotionFunc");
0
+ ioGlutFuncs.IoGlutMouseFunc = (void *)GetProcAddress(hLib, "IoGlutMouseFunc");
0
+ ioGlutFuncs.IoGlutDisplayFunc = (void *)GetProcAddress(hLib, "IoGlutDisplayFunc");
0
+ ioGlutFuncs.IoGlutReshapeFunc = (void *)GetProcAddress(hLib, "IoGlutReshapeFunc");
0
+ ioGlutFuncs.IoGlutTimerFunc = (void *)GetProcAddress(hLib, "IoGlutTimerFunc");
0
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
0
void ReSizeGLScene(GLsizei width, GLsizei height)
0
@@ -54,6 +99,9 @@ int InitGL()
0
+ if (glutOptions.doesDisplay)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutDisplayFunc();
0
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
0
@@ -72,6 +120,7 @@ int DrawGLScene()
0
@@ -303,7 +352,6 @@ LRESULT CALLBACK WndProc( HWND hWnd,
0
@@ -317,7 +365,72 @@ LRESULT CALLBACK WndProc( HWND hWnd,
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (wParam & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON))
0
+ if (glutOptions.doesMotion)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMotionFunc(x, y);
0
+ if (glutOptions.doesPassiveMotion)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutPassiveMotionFunc(x, y);
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (glutOptions.doesMouse)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMouseFunc(GLUT_LEFT_BUTTON, GLUT_DOWN, x, y);
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (glutOptions.doesMouse)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMouseFunc(GLUT_RIGHT_BUTTON, GLUT_DOWN, x, y);
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (glutOptions.doesMouse)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMouseFunc(GLUT_MIDDLE_BUTTON, GLUT_DOWN, x, y);
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (glutOptions.doesMouse)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMouseFunc(GLUT_LEFT_BUTTON, GLUT_UP, x, y);
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (glutOptions.doesMouse)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMouseFunc(GLUT_RIGHT_BUTTON, GLUT_UP, x, y);
0
+ int x = LOWORD(lParam);
0
+ int y = HIWORD(lParam);
0
+ if (glutOptions.doesMouse)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutMouseFunc(GLUT_MIDDLE_BUTTON, GLUT_UP, x, y);
0
@@ -338,7 +451,8 @@ LRESULT CALLBACK WndProc( HWND hWnd,
0
- ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));
0
+ if (glutOptions.doesReshape)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutReshapeFunc(LOWORD(lParam),HIWORD(lParam));
0
@@ -402,38 +516,58 @@ void StopIO()
0
void GLIoView_postRedisplay(IoGL *self, IoObject *locals, IoMessage *m)
0
+// glutOptions.doesDisplay = TRUE; !
0
void GLIoView_glutReshapeFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesReshape = TRUE;
0
void GLIoView_glutDisplayFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesDisplay = TRUE;
0
void GLIoView_glutEntryFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesEntry = TRUE;
0
void GLIoView_glutMouseFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesMouse = TRUE;
0
void GLIoView_glutMotionFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesMotion = TRUE;
0
void GLIoView_glutKeyboardFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesKeyboard = TRUE;
0
void GLIoView_glutPassiveMotionFunc(IoGL *self, IoObject *locals, IoMessage *m)
0
+ glutOptions.doesPassiveMotion = TRUE;
0
+void CALLBACK timerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutTimerFunc(g_timerVal);
0
void GLIoView_registerTimer(IoGL *self, IoObject *locals, IoMessage *m)
0
+ int millisecs = IoMessage_locals_intArgAt_(m, locals, 0);
0
+ int val = IoMessage_locals_intArgAt_(m, locals, 1);
0
+ SetTimer(NULL, 1, millisecs, timerProc);
0
void GLIoView_noop(IoGL *self, IoObject *locals, IoMessage *m)
0
@@ -445,6 +579,7 @@ void GLIoView_noop(IoGL *self, IoObject *locals, IoMessage *m)
0
void overrideIoGLMethods()
0
IoObject *cxt = IoState_doCString_(ioState, "GLUT");
0
IoCFunction *noopfunc = IOCFUNCTION_GL(GLIoView_noop);
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutDisplayFunc"),
0
@@ -478,10 +613,10 @@ void overrideIoGLMethods()
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutInitWindowSize"), noopfunc);
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutCreateWindow"), noopfunc);
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutInitWindowPosition"), noopfunc);
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutEventTarget"),
0
IOCFUNCTION_GL(IoGLUT_glutEventTarget_));
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutInitDisplayMode"), noopfunc);
0
IoObject_setSlot_to_(cxt, IoState_symbolWithCString_(ioState, "glutSwapBuffers"),
0
IOCFUNCTION_GL(GLIoView_postRedisplay));
0
@@ -491,10 +626,10 @@ int main(int argc, char **argv)
0
ioState = IoState_new();
0
-// IoState_argc_argv_(ioState, argc, argv);
0
-// IoState_runCLI(ioState);
0
+ overrideIoGLMethods();
0
// IoState_doFile_(ioState, "main.io");
0
+ IoState_argc_argv_(ioState, argc, argv);
0
+ IoState_runCLI(ioState);
0
if (ioState) IoState_free(ioState);
0
@@ -504,7 +639,8 @@ int StartGL()
0
- StartIO(_T("main.io"));
0
+// StartIO(_T("main.io"));
0
+// IoState_doFile_(ioState, "main.io");
0
// Create Our OpenGL Window
0
if (!CreateGLWindow(_T("NeHe's OpenGL Framework"),640,480,32,fullscreen))
0
@@ -512,6 +648,8 @@ int StartGL()
0
+ if (glutOptions.doesReshape)
0
+ if (loadIoGlutDll()) ioGlutFuncs.IoGlutReshapeFunc(640,480);
Comments
No one has commented yet.