summaryrefslogtreecommitdiffhomepage
path: root/src/core.c
diff options
context:
space:
mode:
authorJuan Medina <[email protected]>2020-09-01 19:29:13 +0100
committerGitHub <[email protected]>2020-09-01 20:29:13 +0200
commitdcbe481a2845dc33d2e716703a9d8344fea3c28d (patch)
treefee8659d7c8caf8454867dade155d330cfe9a35f /src/core.c
parente4d891fa3709b971e2d4df2b002000a663a5b608 (diff)
downloadraylib-dcbe481a2845dc33d2e716703a9d8344fea3c28d.tar.gz
raylib-dcbe481a2845dc33d2e716703a9d8344fea3c28d.zip
adding new windows functions (#1357)
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/core.c b/src/core.c
index 16b13934..f40e487e 100644
--- a/src/core.c
+++ b/src/core.c
@@ -350,6 +350,7 @@ typedef struct CoreData {
const char *title; // Window text title const pointer
bool ready; // Flag to check if window has been initialized successfully
bool minimized; // Flag to check if window has been minimized
+ bool maximized; // Flag to check if window has been maximized
bool focused; // Flag to check if window has been focused
bool resized; // Flag to check if window has been resized
bool fullscreen; // Flag to check if fullscreen mode required
@@ -501,6 +502,7 @@ static void WindowSizeCallback(GLFWwindow *window, int width, int height);
static void WindowIconifyCallback(GLFWwindow *window, int iconified); // GLFW3 WindowIconify Callback, runs when window is minimized/restored
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 WindowMaximizeCallback(GLFWwindow *window, int maximized); // GLFW3 Window Maximize Callback, runs when window is maximized
#endif
#if defined(PLATFORM_ANDROID)
@@ -874,6 +876,16 @@ bool IsWindowMinimized(void)
#endif
}
+// Check if window has been maximized (only PLATFORM_DESKTOP)
+bool IsWindowMaximized(void)
+{
+#if defined(PLATFORM_DESKTOP)
+ return CORE.Window.maximized;
+#else
+ return false;
+#endif
+}
+
// Check if window has the focus
bool IsWindowFocused(void)
{
@@ -1075,6 +1087,44 @@ void HideWindow(void)
#endif
}
+// Decorate the window (only PLATFORM_DESKTOP)
+void DecorateWindow(void)
+{
+#if defined(PLATFORM_DESKTOP)
+ glfwSetWindowAttrib(CORE.Window.handle, GLFW_DECORATED, GLFW_TRUE);
+#endif
+}
+
+// // Undecorate the window (only PLATFORM_DESKTOP)
+void UndecorateWindow(void)
+{
+#if defined(PLATFORM_DESKTOP)
+ glfwSetWindowAttrib(CORE.Window.handle, GLFW_DECORATED, GLFW_FALSE);
+#endif
+}
+
+// Maximize the window, if resizable (only PLATFORM_DESKTOP)
+void MaximizeWindow(void)
+{
+#if defined(PLATFORM_DESKTOP)
+ if (glfwGetWindowAttrib(CORE.Window.handle, GLFW_RESIZABLE) == GLFW_TRUE)
+ {
+ glfwMaximizeWindow(CORE.Window.handle);
+ }
+#endif
+}
+
+// Restore the window, if resizable (only PLATFORM_DESKTOP)
+void RestoreWindow(void)
+{
+#if defined(PLATFORM_DESKTOP)
+ if (glfwGetWindowAttrib(CORE.Window.handle, GLFW_RESIZABLE) == GLFW_TRUE)
+ {
+ glfwRestoreWindow(CORE.Window.handle);
+ }
+#endif
+}
+
// Get current screen width
int GetScreenWidth(void)
{
@@ -2880,6 +2930,7 @@ static bool InitGraphicsDevice(int width, int height)
glfwSetWindowIconifyCallback(CORE.Window.handle, WindowIconifyCallback);
glfwSetWindowFocusCallback(CORE.Window.handle, WindowFocusCallback);
glfwSetDropCallback(CORE.Window.handle, WindowDropCallback);
+ glfwSetWindowMaximizeCallback(CORE.Window.handle, WindowMaximizeCallback);
glfwMakeContextCurrent(CORE.Window.handle);
@@ -3937,6 +3988,12 @@ static void WindowDropCallback(GLFWwindow *window, int count, const char **paths
CORE.Window.dropFilesCount = count;
}
+
+static void WindowMaximizeCallback(GLFWwindow *window, int maximized)
+{
+ if (maximized) CORE.Window.maximized = true; // The window was maximized
+ else CORE.Window.maximized = false; // The window was restored
+}
#endif
#if defined(PLATFORM_ANDROID)