events.c (2423B)
1 ////////////////////////////////////////////////////////////////// 2 // events.c 3 #define RV_RENDER_OPENGL 0 4 #include "revolver_inc.h" 5 #include "revolver_inc.c" 6 7 int main(void) { 8 rv_window_desc_t desc = {.name = S("App"), .attach_render = true}; 9 rv_window_handle_t* window = rv_create_window(desc); 10 11 while (1) { 12 rv_temp_arena scratch = rv_scratch_begin(0, 0); 13 f64 t = rv_time(); 14 for (rv_event_t* e = rv_get_events(scratch.arena, 0); e; e = e->next) { 15 printf("%4.4lf : ", t); 16 switch (e->type) { 17 case RV_EVENT_INVALID: { 18 rv_unreachable(); 19 } break; 20 case RV_EVENT_BUTTON_PRESS: { 21 rv_vec2 mpos = rv_window_mouse_pos(window); 22 printf("button %d pressed (state: %lu) at <x:%.0f, y:%.0f>", e->button_press.button, rv_keyboard_context.current_mouse_state, mpos.x, mpos.y); 23 } break; 24 case RV_EVENT_BUTTON_RELEASE: { 25 rv_vec2 mpos = rv_window_mouse_pos(window); 26 printf("button %d released (state: %lu) at <x:%.0f, y:%.0f>", e->button_release.button, rv_keyboard_context.current_mouse_state, mpos.x, mpos.y); 27 } break; 28 case RV_EVENT_KEY_PRESS: { 29 printf("pressed key %d '%.*s' (mods: %d) on window %p", e->key_press.keycode, rv_s8v(e->key_press.string), e->key_press.mods, e->key_press.window); 30 } break; 31 case RV_EVENT_KEY_RELEASE: { 32 printf("released key %d '%.*s' (mods: %d) on window %p", e->key_release.keycode, rv_s8v(e->key_release.string), e->key_release.mods, e->key_release.window); 33 } break; 34 case RV_EVENT_WINDOW_CLOSE: { 35 if (e->window_close == window) { 36 rv_abort_msg(0, "close request"); 37 } 38 } break; 39 case RV_EVENT_WINDOW_RESIZE: { 40 rv_vec2 size = rv_window_size(window); 41 printf("size: <w:%f, h:%f> on window %p", size.x, size.y, e->window_resize); 42 } break; 43 case RV_EVENT_WINDOW_ENTER: { 44 printf("window entered %p", e->window_enter); 45 } break; 46 case RV_EVENT_WINDOW_LEAVE: { 47 printf("window leaved %p", e->window_leave); 48 } break; 49 } 50 printf("\n"); 51 } 52 rv_scratch_end(scratch); 53 } 54 55 return 0; 56 }