forked from LeenkxTeam/LNXSDK
Update Files
This commit is contained in:
94
Kha/Kinc/Backends/System/Pi/Sources/kinc/backend/display.cpp
Normal file
94
Kha/Kinc/Backends/System/Pi/Sources/kinc/backend/display.cpp
Normal file
@ -0,0 +1,94 @@
|
||||
#include <Kore/Log.h>
|
||||
|
||||
#include "Display.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
|
||||
namespace Kore {
|
||||
namespace Display {
|
||||
void fatalError(const char *message) {
|
||||
printf("main: %s\n", message);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
enum { MAXIMUM_DISPLAY_COUNT = 10 };
|
||||
|
||||
DeviceInfo displays[MAXIMUM_DISPLAY_COUNT];
|
||||
int displayCounter = -1;
|
||||
bool initialized = false;
|
||||
|
||||
void enumDisplayMonitors(DeviceInfo screens[], int &displayCounter);
|
||||
|
||||
void enumerate() {
|
||||
if (initialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
enumDisplayMonitors(displays, displayCounter);
|
||||
}
|
||||
|
||||
int count() {
|
||||
return displayCounter + 1;
|
||||
}
|
||||
|
||||
int width(int index) {
|
||||
return displays[index].width;
|
||||
}
|
||||
|
||||
int height(int index) {
|
||||
return displays[index].height;
|
||||
}
|
||||
|
||||
int x(int index) {
|
||||
return displays[index].x;
|
||||
}
|
||||
|
||||
int y(int index) {
|
||||
return displays[index].y;
|
||||
}
|
||||
|
||||
bool isPrimary(int index) {
|
||||
return displays[index].isPrimary;
|
||||
}
|
||||
|
||||
const DeviceInfo *primaryScreen() {
|
||||
for (int index = 0; index < MAXIMUM_DISPLAY_COUNT; ++index) {
|
||||
const DeviceInfo &info = displays[index];
|
||||
|
||||
if (info.isAvailable && info.isPrimary) {
|
||||
return &info;
|
||||
}
|
||||
}
|
||||
|
||||
if (!displays[0].isAvailable) {
|
||||
log(Warning, "No display attached?");
|
||||
// TODO (DK) throw exception?
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
log(Warning, "No primary display defined, returning first display");
|
||||
return &displays[0];
|
||||
}
|
||||
|
||||
const DeviceInfo *screenById(int id) {
|
||||
for (int index = 0; index < MAXIMUM_DISPLAY_COUNT; ++index) {
|
||||
const DeviceInfo &info = displays[index];
|
||||
|
||||
if (info.number == id) {
|
||||
return &info;
|
||||
}
|
||||
}
|
||||
|
||||
if (!displays[0].isAvailable) {
|
||||
log(Warning, "No display available");
|
||||
// TODO (DK) throw exception?
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
log(Warning, "No display with id \"%i\" found, returning first display", id);
|
||||
return &displays[0];
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user