|
@@ -123,6 +123,7 @@ static void WindowIconifyCallback(GLFWwindow *window, int iconified);
|
|
static void WindowMaximizeCallback(GLFWwindow* window, int maximized); // GLFW3 Window Maximize Callback, runs when window is maximized
|
|
static void WindowMaximizeCallback(GLFWwindow* window, int maximized); // GLFW3 Window Maximize Callback, runs when window is maximized
|
|
static void WindowFocusCallback(GLFWwindow *window, int focused); // GLFW3 WindowFocus Callback, runs when window get/lose focus
|
|
static void WindowFocusCallback(GLFWwindow *window, int focused); // GLFW3 WindowFocus Callback, runs when window get/lose focus
|
|
static void WindowDropCallback(GLFWwindow *window, int count, const char **paths); // GLFW3 Window Drop Callback, runs when drop files into window
|
|
static void WindowDropCallback(GLFWwindow *window, int count, const char **paths); // GLFW3 Window Drop Callback, runs when drop files into window
|
|
|
|
+static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float scaley); // GLFW3 Window Content Scale Callback, runs when window changes scale
|
|
|
|
|
|
// Input callbacks events
|
|
// Input callbacks events
|
|
static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods); // GLFW3 Keyboard Callback, runs on key pressed
|
|
static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, int mods); // GLFW3 Keyboard Callback, runs on key pressed
|
|
@@ -941,31 +942,8 @@ Vector2 GetWindowPosition(void)
|
|
// Get window scale DPI factor for current monitor
|
|
// Get window scale DPI factor for current monitor
|
|
Vector2 GetWindowScaleDPI(void)
|
|
Vector2 GetWindowScaleDPI(void)
|
|
{
|
|
{
|
|
- float xdpi = 1.0;
|
|
|
|
- float ydpi = 1.0;
|
|
|
|
- Vector2 scale = { 1.0f, 1.0f };
|
|
|
|
- Vector2 windowPos = GetWindowPosition();
|
|
|
|
-
|
|
|
|
- int monitorCount = 0;
|
|
|
|
- GLFWmonitor **monitors = glfwGetMonitors(&monitorCount);
|
|
|
|
-
|
|
|
|
- // Check window monitor
|
|
|
|
- for (int i = 0; i < monitorCount; i++)
|
|
|
|
- {
|
|
|
|
- glfwGetMonitorContentScale(monitors[i], &xdpi, &ydpi);
|
|
|
|
-
|
|
|
|
- int xpos, ypos, width, height;
|
|
|
|
- glfwGetMonitorWorkarea(monitors[i], &xpos, &ypos, &width, &height);
|
|
|
|
-
|
|
|
|
- if ((windowPos.x >= xpos) && (windowPos.x < xpos + width) &&
|
|
|
|
- (windowPos.y >= ypos) && (windowPos.y < ypos + height))
|
|
|
|
- {
|
|
|
|
- scale.x = xdpi;
|
|
|
|
- scale.y = ydpi;
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ Vector2 scale = {0};
|
|
|
|
+ glfwGetWindowContentScale(platform.handle, &scale.x, &scale.y);
|
|
return scale;
|
|
return scale;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1553,6 +1531,11 @@ int InitPlatform(void)
|
|
glfwSetWindowFocusCallback(platform.handle, WindowFocusCallback);
|
|
glfwSetWindowFocusCallback(platform.handle, WindowFocusCallback);
|
|
glfwSetDropCallback(platform.handle, WindowDropCallback);
|
|
glfwSetDropCallback(platform.handle, WindowDropCallback);
|
|
|
|
|
|
|
|
+ if ((CORE.Window.flags & FLAG_WINDOW_HIGHDPI) > 0)
|
|
|
|
+ {
|
|
|
|
+ glfwSetWindowContentScaleCallback(platform.handle, WindowContentScaleCallback);
|
|
|
|
+ }
|
|
|
|
+
|
|
// Set input callback events
|
|
// Set input callback events
|
|
glfwSetKeyCallback(platform.handle, KeyCallback);
|
|
glfwSetKeyCallback(platform.handle, KeyCallback);
|
|
glfwSetCharCallback(platform.handle, CharCallback);
|
|
glfwSetCharCallback(platform.handle, CharCallback);
|
|
@@ -1638,6 +1621,11 @@ static void WindowSizeCallback(GLFWwindow *window, int width, int height)
|
|
// NOTE: Postprocessing texture is not scaled to new size
|
|
// NOTE: Postprocessing texture is not scaled to new size
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float scaley)
|
|
|
|
+{
|
|
|
|
+ CORE.Window.screenScale = MatrixScale(scalex, scaley, 1.0f);
|
|
|
|
+}
|
|
|
|
+
|
|
// GLFW3 WindowIconify Callback, runs when window is minimized/restored
|
|
// GLFW3 WindowIconify Callback, runs when window is minimized/restored
|
|
static void WindowIconifyCallback(GLFWwindow *window, int iconified)
|
|
static void WindowIconifyCallback(GLFWwindow *window, int iconified)
|
|
{
|
|
{
|