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() else()
target_link_libraries(minifb target_link_libraries(minifb
"-lX11" "-lX11"
#"-lXrandr" DPI NOT WORKING
) )
if(USE_OPENGL_API) if(USE_OPENGL_API)
target_link_libraries(minifb target_link_libraries(minifb

View File

@ -248,3 +248,25 @@ mfb_timer_init() {
g_timer_resolution = 1.0 / g_timer_frequency; 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; *dpi_y = 1;
} }
} }
} }

View File

@ -996,3 +996,30 @@ mfb_set_viewport(struct mfb_window *window, unsigned offset_x, unsigned offset_y
return false; 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/keysym.h>
#include <X11/Xatom.h> #include <X11/Xatom.h>
#include <X11/cursorfont.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 <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -789,3 +794,35 @@ mfb_set_viewport(struct mfb_window *window, unsigned offset_x, unsigned offset_y
return true; 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); kUnused(launchOptions);
if(g_window == 0x0) { 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_width = [UIScreen mainScreen].bounds.size.width * g_scale;
g_height = [UIScreen mainScreen].bounds.size.height * g_scale; g_height = [UIScreen mainScreen].bounds.size.height * g_scale;
g_window = mfb_open("noise", g_width, g_height); g_window = mfb_open("noise", g_width, g_height);