113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| #import <Cocoa/Cocoa.h>
 | |
| 
 | |
| #include <kinc/display.h>
 | |
| #include <kinc/log.h>
 | |
| 
 | |
| #define maxDisplays 10
 | |
| // Display displays[maxDisplays];
 | |
| 
 | |
| /*void initMacDisplays() {
 | |
|     for (int i = 0; i < maxDisplays; ++i) {
 | |
|         displays[i]._data.index = i;
 | |
|     }
 | |
| }*/
 | |
| 
 | |
| int kinc_count_displays(void) {
 | |
| 	NSArray *screens = [NSScreen screens];
 | |
| 	return (int)[screens count];
 | |
| }
 | |
| 
 | |
| int kinc_primary_display(void) {
 | |
| 	NSArray *screens = [NSScreen screens];
 | |
| 	NSScreen *mainScreen = [NSScreen mainScreen];
 | |
| 	for (int i = 0; i < maxDisplays; ++i) {
 | |
| 		if (mainScreen == screens[i]) {
 | |
| 			return i;
 | |
| 		}
 | |
| 	}
 | |
| 	return -1;
 | |
| }
 | |
| 
 | |
| void kinc_display_init(void) {}
 | |
| 
 | |
| kinc_display_mode_t kinc_display_available_mode(int display, int mode) {
 | |
| 	kinc_display_mode_t dm;
 | |
| 	dm.width = 800;
 | |
| 	dm.height = 600;
 | |
| 	dm.frequency = 60;
 | |
| 	dm.bits_per_pixel = 32;
 | |
| 	return dm;
 | |
| }
 | |
| 
 | |
| int kinc_display_count_available_modes(int display) {
 | |
| 	return 1;
 | |
| }
 | |
| 
 | |
| bool kinc_display_available(int display) {
 | |
| 	return true;
 | |
| }
 | |
| 
 | |
| const char *kinc_display_name(int display) {
 | |
| 	return "Display";
 | |
| }
 | |
| 
 | |
| kinc_display_mode_t kinc_display_current_mode(int display) {
 | |
| 	NSArray *screens = [NSScreen screens];
 | |
| 	NSScreen *screen = screens[display];
 | |
| 	NSRect screenRect = [screen frame];
 | |
| 	kinc_display_mode_t dm;
 | |
| 	dm.width = screenRect.size.width;
 | |
| 	dm.height = screenRect.size.height;
 | |
| 	dm.frequency = 60;
 | |
| 	dm.bits_per_pixel = 32;
 | |
| 
 | |
| 	NSDictionary *description = [screen deviceDescription];
 | |
| 	NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue];
 | |
| 	NSNumber *screenNumber = [description objectForKey:@"NSScreenNumber"];
 | |
| 	CGSize displayPhysicalSize = CGDisplayScreenSize([screenNumber unsignedIntValue]); // in millimeters
 | |
| 	double ppi = displayPixelSize.width / (displayPhysicalSize.width * 0.039370);      // Convert MM to INCH
 | |
| 	dm.pixels_per_inch = round(ppi);
 | |
| 
 | |
| 	return dm;
 | |
| }
 | |
| 
 | |
| //**
 | |
| /*
 | |
| int Display::x() {
 | |
|     NSArray* screens = [NSScreen screens];
 | |
|     NSScreen* screen = screens[_data.index];
 | |
|     NSRect rect = [screen frame];
 | |
|     return rect.origin.x;
 | |
| }
 | |
| 
 | |
| int Display::y() {
 | |
|     NSArray* screens = [NSScreen screens];
 | |
|     NSScreen* screen = screens[_data.index];
 | |
|     NSRect rect = [screen frame];
 | |
|     return rect.origin.y;
 | |
| }
 | |
| 
 | |
| int Display::width() {
 | |
|     NSArray* screenArray = [NSScreen screens];
 | |
|     NSScreen* screen = [screenArray objectAtIndex:_data.index];
 | |
|     NSRect screenRect = [screen visibleFrame];
 | |
|     return screenRect.size.width;
 | |
| }
 | |
| 
 | |
| int Display::height() {
 | |
|     NSArray* screenArray = [NSScreen screens];
 | |
|     // unsigned screenCount = [screenArray count];
 | |
|     NSScreen* screen = [screenArray objectAtIndex:_data.index];
 | |
|     NSRect screenRect = [screen visibleFrame];
 | |
|     return screenRect.size.height;
 | |
| }
 | |
| 
 | |
| int Display::frequency() {
 | |
|     return 60;
 | |
| }
 | |
| 
 | |
| int Display::pixelsPerInch() {
 | |
|     return 96;
 | |
| }
 | |
| */
 |