revolver

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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 }