glviewvol

annotate src/main.cc @ 8:fb6d93471352

main thing done
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 30 Dec 2014 20:03:32 +0200
parents 71b479ffb9f7
children 73edd1b7c2da
rev   line source
nuclear@0 1 // GLUT frontend
nuclear@0 2 #ifdef USE_GLUT
nuclear@0 3
nuclear@0 4 #include <stdlib.h>
nuclear@0 5 #include "opengl.h"
nuclear@0 6
nuclear@0 7 #ifdef __APPLE__
nuclear@0 8 #include <GLUT/glut.h>
nuclear@0 9 #else
nuclear@0 10 #include <GL/glut.h>
nuclear@0 11 #endif
nuclear@0 12
nuclear@0 13 #include "dicomview.h"
nuclear@3 14 #include "opt.h"
nuclear@0 15
nuclear@0 16 static void display();
nuclear@0 17 static void reshape(int x, int y);
nuclear@0 18 static void key_down(unsigned char key, int x, int y);
nuclear@0 19 static void key_up(unsigned char key, int x, int y);
nuclear@0 20 static void mouse(int bn, int state, int x, int y);
nuclear@0 21 static void motion(int x, int y);
nuclear@0 22
nuclear@4 23 static int win_width, win_height;
nuclear@7 24 static unsigned int mod;
nuclear@4 25
nuclear@0 26 int main(int argc, char **argv)
nuclear@0 27 {
nuclear@0 28 glutInit(&argc, argv);
nuclear@3 29
nuclear@3 30 if(parse_args(argc, argv) == -1) {
nuclear@3 31 return 1;
nuclear@3 32 }
nuclear@3 33
nuclear@6 34 glutInitWindowSize(opt.xsz, opt.ysz);
nuclear@0 35 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
nuclear@0 36 glutCreateWindow("dicom viewer");
nuclear@0 37
nuclear@0 38 glutDisplayFunc(display);
nuclear@0 39 glutReshapeFunc(reshape);
nuclear@1 40 glutKeyboardFunc(key_down);
nuclear@1 41 glutKeyboardUpFunc(key_up);
nuclear@0 42 glutMouseFunc(mouse);
nuclear@0 43 glutMotionFunc(motion);
nuclear@7 44 glutPassiveMotionFunc(motion);
nuclear@0 45
nuclear@0 46 glewInit();
nuclear@0 47
nuclear@0 48 if(init() == -1) {
nuclear@0 49 return 1;
nuclear@0 50 }
nuclear@0 51
nuclear@0 52 glutMainLoop();
nuclear@0 53 return 0;
nuclear@0 54 }
nuclear@0 55
nuclear@0 56 void swap_buffers()
nuclear@0 57 {
nuclear@0 58 glutSwapBuffers();
nuclear@0 59 }
nuclear@0 60
nuclear@0 61 void redisplay()
nuclear@0 62 {
nuclear@0 63 glutPostRedisplay();
nuclear@0 64 }
nuclear@0 65
nuclear@0 66 void quit()
nuclear@0 67 {
nuclear@0 68 cleanup();
nuclear@0 69 exit(0);
nuclear@0 70 }
nuclear@0 71
nuclear@4 72 void get_window_size(int *xsz, int *ysz)
nuclear@4 73 {
nuclear@4 74 *xsz = win_width;
nuclear@4 75 *ysz = win_height;
nuclear@4 76 }
nuclear@4 77
nuclear@7 78 unsigned int get_modifiers()
nuclear@7 79 {
nuclear@7 80 return mod;
nuclear@7 81 }
nuclear@7 82
nuclear@0 83 static void display()
nuclear@0 84 {
nuclear@0 85 ev_display();
nuclear@0 86 }
nuclear@0 87
nuclear@0 88 static void reshape(int x, int y)
nuclear@0 89 {
nuclear@4 90 win_width = x;
nuclear@4 91 win_height = y;
nuclear@0 92 ev_reshape(x, y);
nuclear@0 93 }
nuclear@0 94
nuclear@0 95 static void key_down(unsigned char key, int x, int y)
nuclear@0 96 {
nuclear@7 97 mod = glutGetModifiers();
nuclear@8 98
nuclear@8 99 switch(key) {
nuclear@8 100 case 'i':
nuclear@8 101 {
nuclear@8 102 static bool fullrate;
nuclear@8 103 fullrate = !fullrate;
nuclear@8 104 glutIdleFunc(fullrate ? glutPostRedisplay : 0);
nuclear@8 105 }
nuclear@8 106 break;
nuclear@8 107 }
nuclear@8 108
nuclear@0 109 ev_keyboard(key, 1, x, y);
nuclear@0 110 }
nuclear@0 111
nuclear@0 112 static void key_up(unsigned char key, int x, int y)
nuclear@0 113 {
nuclear@7 114 mod = glutGetModifiers();
nuclear@0 115 ev_keyboard(key, 0, x, y);
nuclear@0 116 }
nuclear@0 117
nuclear@0 118 static void mouse(int bn, int state, int x, int y)
nuclear@0 119 {
nuclear@7 120 mod = glutGetModifiers();
nuclear@0 121 ev_mouse_button(bn - GLUT_LEFT_BUTTON, state == GLUT_DOWN ? 1 : 0, x, y);
nuclear@0 122 }
nuclear@0 123
nuclear@0 124 static void motion(int x, int y)
nuclear@0 125 {
nuclear@0 126 ev_mouse_motion(x, y);
nuclear@0 127 }
nuclear@0 128
nuclear@0 129 #endif // USE_GLUT