forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#import <Cocoa/Cocoa.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <kinc/backend/windowdata.h>
							 | 
						||
| 
								 | 
							
								#include <kinc/input/mouse.h>
							 | 
						||
| 
								 | 
							
								#include <kinc/window.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_internal_mouse_lock(int window) {
							 | 
						||
| 
								 | 
							
									kinc_mouse_hide();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_internal_mouse_unlock(void) {
							 | 
						||
| 
								 | 
							
									kinc_mouse_show();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bool kinc_mouse_can_lock(void) {
							 | 
						||
| 
								 | 
							
									return true;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_mouse_show(void) {
							 | 
						||
| 
								 | 
							
									CGDisplayShowCursor(kCGDirectMainDisplay);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_mouse_hide(void) {
							 | 
						||
| 
								 | 
							
									CGDisplayHideCursor(kCGDirectMainDisplay);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_mouse_set_position(int windowId, int x, int y) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									NSWindow *window = kinc_get_mac_window_handle(windowId);
							 | 
						||
| 
								 | 
							
									float scale = [window backingScaleFactor];
							 | 
						||
| 
								 | 
							
									NSRect rect = [[NSScreen mainScreen] frame];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									CGPoint point;
							 | 
						||
| 
								 | 
							
									point.x = window.frame.origin.x + (x / scale);
							 | 
						||
| 
								 | 
							
									point.y = rect.size.height - (window.frame.origin.y + (y / scale));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									CGDisplayMoveCursorToPoint(windowId, point);
							 | 
						||
| 
								 | 
							
									CGAssociateMouseAndMouseCursorPosition(true);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_mouse_get_position(int windowId, int *x, int *y) {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									NSWindow *window = kinc_get_mac_window_handle(windowId);
							 | 
						||
| 
								 | 
							
									NSPoint point = [window mouseLocationOutsideOfEventStream];
							 | 
						||
| 
								 | 
							
									*x = (int)point.x;
							 | 
						||
| 
								 | 
							
									*y = (int)point.y;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void kinc_mouse_set_cursor(int cursor_index) {}
							 |