static void process_events( void ) { /* Our SDL event placeholder. */ SDL_Event event; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_MOUSEMOTION: s.pos.x = 30*( event.motion.x - width /2) / (double)width; s.pos.y = -12*( event.motion.y - height/2) / (double)height; printf("%f %f\n",s.pos.x,s.pos.y); break; case SDL_KEYDOWN: /* Handle key presses. */ handle_key_down( &event.key.keysym ); break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ quit_tutorial( 0 ); break; } } }
static void process_events( void ) { /* Our SDL event placeholder. */ SDL_Event event; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYDOWN: /* Handle key presses. */ handle_key_down( &event.key.keysym ); break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ quit_tutorial( 0 ); break; case SDL_VIDEORESIZE: { glViewport(0, 0, (GLsizei) event.resize.w, (GLsizei) event.resize.h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); float w = (float)event.resize.w; float h = (float)event.resize.h; gluPerspective( 60.0, w/h, 1.0, 1024.0 ); glMatrixMode(GL_MODELVIEW); g_pTextDriver->getScreenParams(event.resize.w, event.resize.h); } break; } } }
static void process_events( void ) { /* Our SDL event placeholder. */ SDL_Event event; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYUP: handle_key_up( &event.key.keysym ); break; case SDL_KEYDOWN: /* Handle key presses. */ handle_key_down( &event.key.keysym ); break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ quit_tutorial( 0 ); break; } } }
int moth_gui::read_book(moth_book *book) { SDL_Event event; this->book = book; create_textures(); index.name = "START"; book->build_index(index); while(running) { while(SDL_PollEvent(&event)) { switch( event.type ) { case SDL_KEYDOWN: handle_key_down(&event.key.keysym); break; case SDL_KEYUP: handle_key_up(&event.key.keysym); break; case SDL_MOUSEMOTION: handle_mouse_motion(&event.motion); break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: handle_mouse_button(&event.button); break; case SDL_VIDEORESIZE: handle_resize(&event.resize); break; case SDL_QUIT: running = 0; break; } } show_pages(); } return SUCCESS; }
void View::key_down(SDL_keysym key) { cout << "key down!: " << key.sym << endl; if (!handle_key_down(key)) { // throw Unhandled_Key(key); } }
static void process_events( void ) { /* Our SDL event placeholder. */ SDL_Event event; g_mouse.rel_x = g_mouse.rel_y = 0; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { if(UI::Update(&event)) continue; switch( event.type ) { case SDL_KEYDOWN: handle_key_down( &event.key.keysym ); break; case SDL_MOUSEMOTION: g_mouse.x = event.motion.x; g_mouse.y = event.motion.y; g_mouse.rel_x = event.motion.xrel; g_mouse.rel_y = event.motion.yrel; break; case SDL_MOUSEBUTTONDOWN: if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) g_camera.dist += event.button.button == SDL_BUTTON_WHEELUP ? 2 : -2; else g_mouse.buttons[event.button.button-1] = true; break; case SDL_MOUSEBUTTONUP: if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) g_camera.dist += event.button.button == SDL_BUTTON_WHEELUP ? 2 : -2; else g_mouse.buttons[event.button.button-1] = false; break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ quit_tutorial( 0 ); break; case SDL_VIDEORESIZE: { glViewport(0, 0, (GLsizei) event.resize.w, (GLsizei) event.resize.h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); float w = (float)event.resize.w; float h = (float)event.resize.h; g_width = event.resize.w; g_height = event.resize.h; //gluPerspective( 60.0, w/h, 1.0, 1024.0 ); gluOrtho2D(-1.0*w/h,1.0*w/h,-1,1); glMatrixMode(GL_MODELVIEW); g_pTextDriver->getScreenParams(event.resize.w, event.resize.h); } break; } } }
static void process_events (void) { SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: handle_key_down(&event.key.keysym); break; case SDL_QUIT: quit(0); break; } } }
int process_events(void) { SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_KEYDOWN: return handle_key_down(event.key.keysym); break; case SDL_QUIT: return -1; break; } } return 0; }
/* General event callback */ static void process_events () { SDL_Event event; /* Grab all the events off the queue */ while (SDL_PollEvent(&event)) { switch( event.type ) { case SDL_KEYDOWN: /* key presses */ handle_key_down( &event.key.keysym ); break; case SDL_QUIT: /* quit requests (like Ctrl-c) */ running = 0; break; } } }
static void process_events() { /* Our SDL event placeholder. */ SDL_Event event; /* Grab all the events off the queue. */ while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: /* Handle key presses. */ handle_key_down(&event.key.keysym); break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ quit(0); break; case SDL_VIDEORESIZE: real_screen_width = event.resize.w; real_screen_height = event.resize.h; screen = SDL_SetVideoMode(real_screen_width, real_screen_height, bpp, SDL_OPENGL | SDL_RESIZABLE); sng_set_screen_size(real_screen_width, real_screen_height); break; case SDL_MOUSEBUTTONDOWN: { int button = sdl_button_to_int(event.button.button); if (button > 0) main_da_button_press(button, event.button.x, event.button.y); } break; case SDL_MOUSEBUTTONUP: { int button = sdl_button_to_int(event.button.button); if (button > 0) main_da_button_release(button, event.button.x, event.button.y); } break; case SDL_MOUSEMOTION: main_da_motion_notify(event.motion.x, event.motion.y); break; } } }
void process_events( void ) { /* Our SDL event placeholder. */ SDL_Event event; /* Grab all the events off the queue. */ while( SDL_PollEvent( &event ) ) { switch( event.type ) { case SDL_KEYDOWN: /* Handle key presses. */ handle_key_down( &event.key.keysym ); break; case SDL_QUIT: /* Handle quit requests */ quit(1); break; case SDL_MOUSEBUTTONDOWN: handle_mouse_down(&event.button); break; } } }
static void process_events(void) { /* Our SDL event placeholder. */ SDL_Event event; /* Only poll + sleep if we are autoscrolling or doing * something else that is interactive */ if (((autoscroll) && autoscroll_var) || key_button_down) { if (!SDL_PollEvent(&event)) { /* If we add a sleep, the scrolling won't be super smooth. * Regardless, I think we need to find something to make sure we * don't eat 100% cpu just checking for events. * * I found that 10ms is not a bad wait. Theoretically we want to * wait 1000ms / fps (usually 60) -> 16ms. * */ usleep(16000); if (autoscroll) { if (key_button_down & LEAST_KEY_DOWN) autoscroll_var += 1; if (key_button_down & LEAST_KEY_UP) autoscroll_var -= 1; scroll -= autoscroll_var; } else { if (key_button_down & LEAST_KEY_DOWN) scroll -= 5; if (key_button_down & LEAST_KEY_UP) scroll += 5; } redraw = 1; } } else { SDL_WaitEvent(&event); } next_event: switch (event.type) { case SDL_KEYDOWN: /* Handle key presses. */ handle_key_down(&event.key.keysym); break; case SDL_KEYUP: handle_key_up(&event.key.keysym); break; case SDL_QUIT: /* Handle quit requests (like Ctrl-c). */ quit_tutorial(0); break; case SDL_VIDEORESIZE: handle_resize(event.resize); break; case SDL_VIDEOEXPOSE: redraw = 1; break; case SDL_MOUSEBUTTONDOWN: handle_mouse_down(&event.button); break; case SDL_MOUSEBUTTONUP: handle_mouse_up(&event.button); break; case SDL_MOUSEMOTION: handle_mouse_motion(&event.motion); break; /* A thread completed its rendering * * The thread structure of the completed job is contained * within the data1 pointer of the event. */ case LEAST_PAGE_COMPLETE: finish_page_render((struct least_thread*)event.user.data1); redraw = 1; break; } /* Clear event, just in case SDL doesn't do this (TODO) */ memset(&event, 0, sizeof(SDL_Event)); /* If there are more events, handle them before drawing. * This is required for scrolling with the mouse - without this, * it is pretty slow and lags. */ if (SDL_PollEvent(&event)) { goto next_event; } }
int main(int argc, char* argv[]) { Display* display; Window win; char *display_name = getenv("DISPLAY"); GC gc, rev_gc; Atom wmDelete; struct CEventDescriptor event = { .Type = EVENT_NULL }; InitGUIServer(); ClearScreen(); while (!ProcessGUIServer(&event)) ; display = XOpenDisplay(display_name); if (display == NULL) { fprintf(stderr, "%s: cannot connect to X server '%s'\n", argv[0], display_name); exit(1); } win = create_simple_window(display, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); wmDelete = XInternAtom(display, "WM_DELETE_WINDOW", True); XSetWMProtocols(display, win, &wmDelete, 1); gc = create_gc(display, win, 0); rev_gc = create_gc(display, win, 1); XSelectInput(display, win, ExposureMask | KeyPressMask | ButtonPressMask | StructureNotifyMask); { int done = 0; XEvent an_event; while (!done) { XNextEvent(display, &an_event); switch (an_event.type) { case Expose: handle_expose(display, gc, rev_gc, (XExposeEvent*)&an_event.xexpose); break; case ButtonPress: handle_button_down(display, gc, rev_gc, (XButtonEvent*)&an_event.xbutton); break; case KeyPress: done = handle_key_down(display, gc, rev_gc, (XKeyEvent*)&an_event.xkey); break; case ClientMessage: done = True; break; default: break; } } } XFreeGC(display, gc); XFreeGC(display, rev_gc); XCloseDisplay(display); return 0; }