window_interface.odin 1006 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package karl2d
  2. Window_Interface :: struct {
  3. state_size: proc() -> int,
  4. init: proc(window_state: rawptr, window_width: int, window_height: int, window_title: string, allocator := context.allocator),
  5. shutdown: proc(),
  6. window_handle: proc() -> Window_Handle,
  7. process_events: proc(),
  8. get_events: proc() -> []Window_Event,
  9. clear_events: proc(),
  10. set_position: proc(x: int, y: int),
  11. set_size: proc(w, h: int),
  12. set_internal_state: proc(state: rawptr),
  13. }
  14. Window_Handle :: distinct uintptr
  15. Window_Event :: union {
  16. Window_Event_Close_Wanted,
  17. Window_Event_Key_Went_Down,
  18. Window_Event_Key_Went_Up,
  19. Window_Event_Mouse_Move,
  20. Window_Event_Mouse_Wheel,
  21. Window_Event_Resize,
  22. }
  23. Window_Event_Key_Went_Down :: struct {
  24. key: Keyboard_Key,
  25. }
  26. Window_Event_Key_Went_Up :: struct {
  27. key: Keyboard_Key,
  28. }
  29. Window_Event_Close_Wanted :: struct {}
  30. Window_Event_Mouse_Move :: struct {
  31. position: Vec2,
  32. }
  33. Window_Event_Mouse_Wheel :: struct {
  34. delta: f32,
  35. }
  36. Window_Event_Resize :: struct {
  37. width, height: int,
  38. }