/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #pragma once #include "IWindow.hpp" namespace OpenVulkano { class BaseWindow : virtual public IWindow { protected: const uint32_t windowId; WindowConfiguration windowConfig; bool destroyed = false; public: BaseWindow() : windowId(CreateWindowId()) {} virtual ~BaseWindow() = default; const WindowConfiguration& GetWindowConfiguration() override { return windowConfig; } void SetSize(uint32_t width, uint32_t height) override = 0; bool HasTitle() override { return WindowMode::WINDOWED == GetWindowMode(); } const std::string& GetTitle() override { return windowConfig.title; } WindowMode GetWindowMode() override { return windowConfig.windowMode; } void SetPosition(int posX, int posY) override = 0; void Show() override = 0; void Hide() override = 0; void Show(const bool show) override { if (show) Show(); else Hide(); } IVulkanWindow* GetVulkanWindow() override { return nullptr; } IOpenGlWindow* GetOpenGlWindow() override { return nullptr; } [[nodiscard]] uint32_t GetWindowId() const override { return windowId; } bool WindowHasBeenDestroyed() const final { return destroyed; } void SetWindowHasBeenDestroyed() final { destroyed = true; } }; }