Sfoglia il codice sorgente

highdpi fixes

pull/5582/head
CrackedPixel 3 giorni fa
parent
commit
36c01897fb
1 ha cambiato i file con 34 aggiunte e 7 eliminazioni
  1. +34
    -7
      src/platforms/rcore_desktop_rgfw.c

+ 34
- 7
src/platforms/rcore_desktop_rgfw.c Vedi File

@ -153,7 +153,7 @@ extern "C" {
typedef struct {
double startTime;
RGFW_window *window; // Native display device (physical screen connection)
RGFW_monitor *mon;
RGFW_monitor *monitor;
mg_gamepads minigamepad;
} PlatformData;
@ -459,22 +459,22 @@ void ToggleFullscreen(void)
CORE.Window.previousPosition = CORE.Window.position;
CORE.Window.previousScreen = CORE.Window.screen;
platform.mon = RGFW_window_getMonitor(platform.window);
platform.monitor = RGFW_window_getMonitor(platform.window);
FLAG_SET(CORE.Window.flags, FLAG_FULLSCREEN_MODE);
RGFW_monitor_scaleToWindow(platform.mon, platform.window);
RGFW_monitor_scaleToWindow(platform.monitor, platform.window);
RGFW_window_setFullscreen(platform.window, 1);
}
else
{
FLAG_CLEAR(CORE.Window.flags, FLAG_FULLSCREEN_MODE);
if (platform.mon->mode.w)
if (platform.monitor->mode.w)
{
RGFW_monitor *monitor = RGFW_window_getMonitor(platform.window);
RGFW_monitor_requestMode(monitor, &platform.mon->mode, RGFW_monitorScale);
RGFW_monitor_requestMode(monitor, &platform.monitor->mode, RGFW_monitorScale);
platform.mon->mode.w = 0;
platform.monitor->mode.w = 0;
}
// we update the window position right away
@ -881,7 +881,11 @@ const char *GetMonitorName(int monitor)
// Get window position XY on monitor
Vector2 GetWindowPosition(void)
{
if (platform.window == NULL) return (Vector2){ 0.0f, 0.0f };
if (platform.window == NULL)
{
return (Vector2){ 0.0f, 0.0f };
}
return (Vector2){ (float)platform.window->x, (float)platform.window->y };
}
@ -1450,6 +1454,12 @@ int InitPlatform(void)
if (!FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_UNFOCUSED)) FLAG_SET(flags, RGFW_windowFocusOnShow | RGFW_windowFocus);
if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI))
{
CORE.Window.screen.width = CORE.Window.screen.width * GetWindowScaleDPI().x;
CORE.Window.screen.height = CORE.Window.screen.height * GetWindowScaleDPI().y;
}
RGFW_setGlobalHints_OpenGL(hints);
platform.window = RGFW_createWindow((CORE.Window.title != 0)? CORE.Window.title : " ", 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, flags | RGFW_windowOpenGL);
platform.startTime = get_time_seconds();
@ -1497,6 +1507,17 @@ int InitPlatform(void)
CORE.Window.currentFbo.width = CORE.Window.render.width;
CORE.Window.currentFbo.height = CORE.Window.render.height;
// adjust scale if using highdpi
if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) {
Vector2 scaleDpi = GetWindowScaleDPI();
SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y);
CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f);
CORE.Window.screen.width /= scaleDpi.x;
CORE.Window.screen.height /= scaleDpi.y;
}
TRACELOG(LOG_INFO, "DISPLAY: Device initialized successfully");
TRACELOG(LOG_INFO, " > Display size: %i x %i", CORE.Window.display.width, CORE.Window.display.height);
TRACELOG(LOG_INFO, " > Screen size: %i x %i", CORE.Window.screen.width, CORE.Window.screen.height);
@ -1516,6 +1537,12 @@ int InitPlatform(void)
// Initialize storage system
//----------------------------------------------------------------------------
#if defined(__APPLE__)
// mac defaults to the users home folder for some reason
// this is done to help them read relative paths to the binary
ChangeDirectory(GetApplicationDirectory());
#endif
CORE.Storage.basePath = GetWorkingDirectory();
//----------------------------------------------------------------------------

Caricamento…
Annulla
Salva