Skip to content
Snippets Groups Projects
WindowManager.hpp 924 B
#pragma once

#include <vector>
#include <GLFW/glfw3.h>

#include "vkcv/Window.hpp"
#include "vkcv/Handles.hpp"

namespace vkcv {
	class Core;

	class WindowManager {
		friend class Core;

	private:

		void destroyWindowById(uint64_t id);

	public:
		WindowManager() noexcept;

		~WindowManager() noexcept;

		WindowManager(WindowManager &&other) = delete;

		WindowManager(const WindowManager &other) = delete;

		WindowManager &operator=(WindowManager &&other) = delete;

		WindowManager &operator=(const WindowManager &other) = delete;

		WindowHandle createWindow(Core &core, const char *applicationName, uint32_t windowWidth, uint32_t windowHeight,
								  bool resizeable);

		[[nodiscard]]
		Window &getWindow(const WindowHandle handle) const;

		/**
		 * Forwards the event poll to "vkcv/Window.hpp"
		 */
		static void pollEvents();

		static bool hasOpenWindow();

		static const Window getFocusedWindow();
	};
}