From 574a5ebb55ae760dff0a970d6944e249bfbd2164 Mon Sep 17 00:00:00 2001
From: Alexander Gauggel <agauggel@uni-koblenz.de>
Date: Sat, 26 Jun 2021 17:12:54 +0200
Subject: [PATCH] [#82] Add fullscreen toggle

---
 projects/voxelization/src/main.cpp | 41 ++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/projects/voxelization/src/main.cpp b/projects/voxelization/src/main.cpp
index 52bf0976..edc50c55 100644
--- a/projects/voxelization/src/main.cpp
+++ b/projects/voxelization/src/main.cpp
@@ -27,6 +27,47 @@ int main(int argc, const char** argv) {
 		true
 	);
 
+	bool    isFullscreen            = false;
+	int     windowedWidthBackup     = windowWidth;
+	int     windowedHeightBackup    = windowHeight;
+	int     windowedPosXBackup;
+	int     windowedPosYBackup;
+    glfwGetWindowPos(window.getWindow(), &windowedPosXBackup, &windowedPosYBackup);
+
+	window.e_key.add([&](int key, int scancode, int action, int mods) {
+		if (key == GLFW_KEY_F11 && action == GLFW_PRESS) {
+			if (isFullscreen) {
+				glfwSetWindowMonitor(
+					window.getWindow(),
+					nullptr,
+					windowedPosXBackup,
+					windowedPosYBackup,
+					windowedWidthBackup,
+					windowedHeightBackup,
+					GLFW_DONT_CARE);
+			}
+			else {
+				windowedWidthBackup     = windowWidth;
+				windowedHeightBackup    = windowHeight;
+
+				glfwGetWindowPos(window.getWindow(), &windowedPosXBackup, &windowedPosYBackup);
+
+				GLFWmonitor*        monitor     = glfwGetPrimaryMonitor();
+				const GLFWvidmode*  videoMode   = glfwGetVideoMode(monitor);
+
+				glfwSetWindowMonitor(
+					window.getWindow(),
+					glfwGetPrimaryMonitor(),
+					0,
+					0,
+					videoMode->width,
+					videoMode->height,
+					videoMode->refreshRate);
+			}
+			isFullscreen = !isFullscreen;
+		}
+	});
+
 	vkcv::camera::CameraManager cameraManager(window);
 	uint32_t camIndex  = cameraManager.addCamera(vkcv::camera::ControllerType::PILOT);
 	uint32_t camIndex2 = cameraManager.addCamera(vkcv::camera::ControllerType::TRACKBALL);
-- 
GitLab