int keypress_event(viewport_t *viewport) { printf("Key pressed: %c\n", viewport->key_pressed); stop_status(); viewport_set_done(viewport); return 1; };
void interpret_status(int status) { if (WIFEXITED(status)) exit_status(WEXITSTATUS(status)); if (WIFSTOPPED(status)) stop_status(WSTOPSIG(status)); if (WIFSIGNALED(status)) signal_status(WTERMSIG(status)); }
void* viewport_loop(void *ptr) { viewport_t *viewport = (viewport_t *)ptr; SDL_Event event; //printf("viewport_loop 1\n"); while(!viewport->done) { int result = !SDL_WaitEvent(&event); //printf("viewport_loop 2\n"); if(result) viewport->done = 1; switch(event.type) { case SDL_KEYDOWN: { stop_status(); viewport_set_done(viewport); break; } case SDL_MOUSEMOTION: { SDL_MouseMotionEvent *mouse_event = (SDL_MouseMotionEvent*)&event; viewport->cursor_x = mouse_event->x; viewport->cursor_y = mouse_event->y; cursor_motion(viewport); break; } case SDL_MOUSEBUTTONDOWN: { SDL_MouseButtonEvent *mouse_event = (SDL_MouseButtonEvent*)&event; viewport->which_button = mouse_event->button - 1; viewport->button_down = 1; button_press(viewport); break; } case SDL_MOUSEBUTTONUP: viewport->button_down = 0; break; case SDL_QUIT: viewport->done = 1; break; } } }
int keypress_event(viewport_t *viewport) { int mod = viewport->key_pressed.mod; // printf("Key pressed: sym=%x mod=%x\n", viewport->key_pressed.sym, viewport->key_pressed.mod); switch(viewport->key_pressed.sym) { case 'y': if(mod & KMOD_SHIFT) viewport->y -= 8; else viewport->y += 8; break; case 'u': if(mod & KMOD_SHIFT) viewport->u -= 8; else viewport->u += 8; break; case 'v': if(mod & KMOD_SHIFT) viewport->v -= 8; else viewport->v += 8; break; case SDLK_LEFT: if(mod & KMOD_SHIFT) viewport->x2 -= 8; else if(mod & KMOD_CTRL) viewport->tex_x1 -= 0.1; else if(mod & KMOD_ALT) viewport->tex_x2 -= 0.1; else viewport->x1 -= 8; break; case SDLK_RIGHT: if(mod & KMOD_SHIFT) viewport->x2 += 8; else if(mod & KMOD_CTRL) viewport->tex_x1 += 0.1; else if(mod & KMOD_ALT) viewport->tex_x2 += 0.1; else viewport->x1 += 8; break; case SDLK_UP: if(mod & KMOD_SHIFT) viewport->y2 -= 8; else if(mod & KMOD_CTRL) viewport->tex_y1 -= 0.1; else if(mod & KMOD_ALT) viewport->tex_y2 -= 0.1; else viewport->y1 -= 8; break; case SDLK_DOWN: if(mod & KMOD_SHIFT) viewport->y2 += 8; else if(mod & KMOD_CTRL) viewport->tex_y1 += 0.1; else if(mod & KMOD_ALT) viewport->tex_y2 += 0.1; else viewport->y1 += 8; break; case 0x1b: stop_status(); viewport_set_done(viewport); break; } printf("x1=%x y1=%x x2=%x y2=%x y=%x u=%x v=%x \n", viewport->x1, viewport->y1, viewport->x2, viewport->y2, viewport->y, viewport->u, viewport->v); viewport_draw(viewport); return 1; };