Added to iOS

not working on X11 & Wayland
This commit is contained in:
Carlos Aragones 2020-09-21 14:38:51 +02:00
parent 17c375002f
commit d9a9fe554f
6 changed files with 89 additions and 2 deletions

View File

@ -230,6 +230,7 @@ elseif(UNIX)
else()
target_link_libraries(minifb
"-lX11"
#"-lXrandr" DPI NOT WORKING
)
if(USE_OPENGL_API)
target_link_libraries(minifb

View File

@ -248,3 +248,25 @@ mfb_timer_init() {
g_timer_resolution = 1.0 / g_timer_frequency;
}
//-------------------------------------
void
mfb_get_monitor_dpi(struct mfb_window *window, float *dpi_x, float *dpi_y) {
(void) window;
float scale = 1.0f;
scale = [[UIScreen mainScreen] scale];
if (dpi_x) {
*dpi_x = scale;
if(*dpi_x == 0) {
*dpi_x = 1;
}
}
if (dpi_y) {
*dpi_y = scale;
if (*dpi_y == 0) {
*dpi_y = 1;
}
}
}

View File

@ -579,6 +579,5 @@ mfb_get_monitor_dpi(struct mfb_window *window, float *dpi_x, float *dpi_y) {
*dpi_y = 1;
}
}
}

View File

@ -996,3 +996,30 @@ mfb_set_viewport(struct mfb_window *window, unsigned offset_x, unsigned offset_y
return false;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
mfb_get_monitor_dpi(struct mfb_window *window, float *dpi_x, float *dpi_y) {
float x = 96.0, y = 96.0;
if(window != 0x0) {
//SWindowData *window_data = (SWindowData *) window;
//SWindowData_X11 *window_data_x11 = (SWindowData_X11 *) window_data->specific;
// I cannot find a way to get dpi under VirtualBox
}
if (dpi_x) {
*dpi_x = x / 96.0f;
if(*dpi_x == 0) {
*dpi_x = 1.0f;
}
}
if (dpi_y) {
*dpi_y = y / 96.0f;
if (*dpi_y == 0) {
*dpi_y = 1.0f;
}
}
}

View File

@ -4,6 +4,11 @@
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include <X11/cursorfont.h>
// I cannot find a way to get dpi under VirtualBox
//#include <X11/Xresource.h>
//#include <X11/extensions/Xrandr.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -789,3 +794,35 @@ mfb_set_viewport(struct mfb_window *window, unsigned offset_x, unsigned offset_y
return true;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void
mfb_get_monitor_dpi(struct mfb_window *window, float *dpi_x, float *dpi_y) {
float x = 96.0, y = 96.0;
if(window != 0x0) {
//SWindowData *window_data = (SWindowData *) window;
//SWindowData_X11 *window_data_x11 = (SWindowData_X11 *) window_data->specific;
// I cannot find a way to get dpi under VirtualBox
// XrmGetResource "Xft.dpi", "Xft.Dpi"
// XRRGetOutputInfo
// DisplayWidthMM, DisplayHeightMM
// All returning invalid values or 0
}
if (dpi_x) {
*dpi_x = x / 96.0f;
if(*dpi_x == 0) {
*dpi_x = 1.0f;
}
}
if (dpi_y) {
*dpi_y = y / 96.0f;
if (*dpi_y == 0) {
*dpi_y = 1.0f;
}
}
}

View File

@ -91,7 +91,8 @@ resize(struct mfb_window *window, int width, int height) {
kUnused(launchOptions);
if(g_window == 0x0) {
g_scale = [UIScreen mainScreen].scale;
mfb_get_monitor_dpi(0x0, &g_scale, 0x0);
//g_scale = [UIScreen mainScreen].scale;
g_width = [UIScreen mainScreen].bounds.size.width * g_scale;
g_height = [UIScreen mainScreen].bounds.size.height * g_scale;
g_window = mfb_open("noise", g_width, g_height);