Foundation
Loading...
Searching...
No Matches
Application.hpp
Go to the documentation of this file.
1#pragma once
2#include <Core/Core.hpp>
3#include <Bits/Chrono.hpp>
4#include "Enums.hpp"
8namespace Foundation::Native {
9 using namespace Core;
10 using namespace Bits;
11 class Application;
16 friend class NativeApplication;
17 void* mWindow{ nullptr };
18 NativeWindow(uint32_t width, uint32_t height, const char* title);
19 public:
20 NativeWindow() = default;
21 NativeWindow(const NativeWindow&) = delete;
23 mWindow(other.mWindow) {
24 other.mWindow = nullptr;
25 }
26 NativeWindow& operator=(NativeWindow&& other) noexcept {
27 mWindow = other.mWindow;
28 other.mWindow = nullptr;
29 return *this;
30 }
32
36 void SetWindowTitle(const char* title) const;
37
38 [[nodiscard]] bool WindowShouldClose() const;
39
40 [[nodiscard]] void* GetNative() const { return mWindow; }
41 constexpr explicit operator bool() const { return mWindow != nullptr; }
42 };
43
49 int mInitialized = 0;
50 size_t mStartCounter = 0;
51 public:
55 [[nodiscard]] static NativeWindow CreateNativeWindow(uint32_t width, uint32_t height, const char* title);
60 template<typename T = float> T GetApplicationTime() const { return (getPerformanceCounter() - mStartCounter) / 1e9; }
66 virtual ~NativeApplication();
67 };
74 const char* title, const char* message,
78 );
79}
Application base class. Handles initialization and shutdown of the native platform,...
Definition Application.hpp:48
static NativeWindow CreateNativeWindow(uint32_t width, uint32_t height, const char *title)
Creates a window with the specified width, height, and title.
Definition Application.cpp:60
NativeApplication()
Definition Application.cpp:50
int mInitialized
Definition Application.hpp:49
size_t GetApplicationCounter() const
Returns a high-resolution time in nanoseconds since the application started.
Definition Application.hpp:64
T GetApplicationTime() const
Returns a high-resolution time in seconds since the application started.
Definition Application.hpp:60
size_t mStartCounter
Definition Application.hpp:50
virtual ~NativeApplication()
Definition Application.cpp:56
Class representing a window for the platform.
Definition Application.hpp:15
bool WindowShouldClose() const
Definition Application.cpp:44
NativeWindow(const NativeWindow &)=delete
void * GetNative() const
Definition Application.hpp:40
Pair< uint32_t, uint32_t > GetWindowSize() const
Definition Application.cpp:22
void * mWindow
Definition Application.hpp:17
NativeWindow & operator=(NativeWindow &&other) noexcept
Definition Application.hpp:26
void SetWindowTitle(const char *title) const
Definition Application.cpp:40
~NativeWindow()
Definition Application.cpp:18
Pair< uint32_t, uint32_t > GetFramebufferSize() const
Definition Application.cpp:28
Pair< uint32_t, uint32_t > GetWindowPosition() const
Definition Application.cpp:34
NativeWindow(NativeWindow &&other) noexcept
Definition Application.hpp:22
size_t getPerformanceCounter()
Definition Chrono.hpp:8
std::unique_ptr< T, StlDeleter< T > > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:161
Platform-dependent application abstractions.
Definition Application.cpp:5
MessageBoxType
Definition Enums.hpp:3
MessageBoxIcon
Definition Enums.hpp:9
MessageBoxResult CreateMessageBox(const char *title, const char *message, MessageBoxType type, MessageBoxIcon icon, MessageBoxResult default_result)
Creates a message box with the specified title and message.
Definition Application.cpp:66
MessageBoxResult
Definition Enums.hpp:15