highdpi fixes
This commit is contained in:
parent
7fff975121
commit
36c01897fb
|
|
@ -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();
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user