mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _NME_WMAN_H
 | |
| #define _NME_WMAN_H
 | |
| 
 | |
| // Internal window manager API
 | |
| 
 | |
| #include "NCompat.h"
 | |
| 
 | |
| START_HEAD
 | |
| 
 | |
| #include "NPos.h"
 | |
| #include "NUtil.h"
 | |
| #include "NTypes.h"
 | |
| 
 | |
| NTS(NWMan_event);
 | |
| 
 | |
| NSTRUCT(NWMan, {
 | |
|     // Init stuff
 | |
|     bool (*init)();
 | |
|     bool (*destroy)();
 | |
| 
 | |
|     // Window stuff
 | |
|     bool (*create_window)();
 | |
|     bool (*destroy_window)();
 | |
| 
 | |
|     void (*swap_buffers)();
 | |
| 
 | |
|     // Event stuff
 | |
|     bool (*next_event)(NWMan_event* event);
 | |
| 
 | |
|     // Time stuff
 | |
|     uint (*get_millis)();
 | |
|     void (*sleep)(uint millis);
 | |
| 
 | |
|     // Info
 | |
|     int rshift_key;
 | |
|     int lshift_key;
 | |
|     int left_key;
 | |
|     int right_key;
 | |
| });
 | |
| 
 | |
| NENUM(NWMan_event_type, {
 | |
|     N_WMAN_MOUSE_MOVE = 0,
 | |
|     N_WMAN_MOUSE_BUTTON = 1,
 | |
|     N_WMAN_MOUSE_WHEEL = 2,
 | |
| 
 | |
|     N_WMAN_KEYBOARD = 10,
 | |
| 
 | |
|     N_WMAN_QUIT = 20,
 | |
|     N_WMAN_RESIZE = 21,
 | |
|     N_WMAN_FOCUS = 22
 | |
| });
 | |
| 
 | |
| #define N_WMAN_MOUSE_LEFT 0
 | |
| #define N_WMAN_MOUSE_RIGHT 1
 | |
| #define N_WMAN_MOUSE_MIDDLE 2
 | |
| 
 | |
| NSTRUCT(NWMan_event, {
 | |
|     NWMan_event_type type;
 | |
| 
 | |
|     union {
 | |
|         // Mouse
 | |
| 
 | |
|         NPos2i mouse_pos;
 | |
| 
 | |
|         struct {
 | |
|             short id;
 | |
|             bool state;
 | |
|         } mouse_button;
 | |
| 
 | |
|         signed char mouse_wheel; // 1 if up, -1 if down
 | |
| 
 | |
|         // Keyboard
 | |
| 
 | |
|         struct {
 | |
|             int key;
 | |
|             bool state;
 | |
|         } keyboard;
 | |
| 
 | |
|         // Window
 | |
| 
 | |
|         bool window_quit; // Will always be true if WM_QUIT
 | |
| 
 | |
|         NPos2i window_size;
 | |
| 
 | |
|         bool window_focus;
 | |
|     };
 | |
| });
 | |
| 
 | |
| NWMan_event NWMan_event_new(NWMan_event_type type);
 | |
| 
 | |
| 
 | |
| bool NWMan_init();
 | |
| bool NWMan_destroy();
 | |
| 
 | |
| extern NWMan N_WMan;
 | |
| 
 | |
| END_HEAD
 | |
| 
 | |
| #endif
 |