47 lines
1.1 KiB
C++
47 lines
1.1 KiB
C++
// =============================================
|
|
// Aster: window.h
|
|
// Copyright (c) 2020-2024 Anish Bhobe
|
|
// =============================================
|
|
|
|
#pragma once
|
|
|
|
#include "global.h"
|
|
|
|
#include "size.h"
|
|
|
|
#include <EASTL/fixed_string.h>
|
|
|
|
struct Window final
|
|
{
|
|
// fields
|
|
GLFWwindow *m_Window = nullptr;
|
|
NameString m_Name;
|
|
|
|
static std::atomic_uint64_t m_WindowCount;
|
|
static std::atomic_bool m_IsGlfwInit;
|
|
|
|
// Methods
|
|
[[nodiscard]] bool
|
|
Poll() const noexcept
|
|
{
|
|
glfwPollEvents();
|
|
return !glfwWindowShouldClose(m_Window);
|
|
}
|
|
|
|
void RequestExit() const noexcept;
|
|
void SetWindowSize(const vk::Extent2D &extent) const noexcept;
|
|
void SetWindowSize(u32 width, u32 height) const noexcept;
|
|
/// Actual size of the framebuffer being used for the window render.
|
|
[[nodiscard]] Size2D GetSize() const;
|
|
|
|
// Ctor/Dtor
|
|
Window(cstr title, Size2D extent, b8 isFullScreen = false);
|
|
~Window();
|
|
|
|
// Move
|
|
Window(Window &&other) noexcept;
|
|
Window &operator=(Window &&other) noexcept;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(Window);
|
|
};
|