HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
application.hpp
1// Copyright Take Vos 2019-2021.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "thread.hpp"
8#include "required.hpp"
9#include "timer.hpp"
10#include "datum.hpp"
11#include "GUI/gui_window_size.hpp"
12#include <span>
13#include <memory>
14#include <string>
15#include <any>
16#include <map>
17#include <thread>
18
19namespace tt {
20class audio_system;
21class font_book;
22class theme_book;
23class RenderDoc;
24class unicode_data;
25class application_delegate;
26class URL;
27
36{
37public:
38 static inline application *global;
39
43
47
50 os_handle instance;
51
54 gui_window_size initial_window_size = gui_window_size::normal;
55
59
62 date::time_zone const *timeZone = nullptr;
63
66 thread_id main_thread_id;
67
68 std::atomic<bool> inLoop;
69
83 os_handle instance
84 );
85
88 virtual int main();
89
90 virtual ~application();
91 application(const application &) = delete;
92 application &operator=(const application &) = delete;
93 application(application &&) = delete;
94 application &operator=(application &&) = delete;
95
98 virtual void run_from_main_loop(std::function<void()> function) = 0;
99
102 virtual void exit(int exit_code=0) = 0;
103
104protected:
107 virtual void init();
108
111 virtual void deinit();
112
116 virtual int loop() = 0;
117
118 virtual void init_foundation();
119 virtual void deinit_foundation();
120 virtual void init_audio();
121 virtual void deinit_audio();
122 virtual void init_text();
123 virtual void deinit_text();
124 virtual void init_gui();
125 virtual void deinit_gui();
126
127private:
128 typename timer::callback_ptr_type logger_maintenance_callback;
129 typename timer::callback_ptr_type clock_maintenance_callback;
130};
131
132}
133
Definition application.hpp:36
std::weak_ptr< application_delegate > delegate
Definition application.hpp:42
os_handle instance
Handle to the operating system's application-instance.
Definition application.hpp:50
virtual int main()
Start the application.
virtual void run_from_main_loop(std::function< void()> function)=0
gui_window_size initial_window_size
The initial window size for the first application window.
Definition application.hpp:54
application(std::weak_ptr< application_delegate > const &delegate, std::vector< std::string > const &arguments, os_handle instance)
This function will take ownership of the delegate and delete it during destruction.
std::vector< std::string > arguments
Definition application.hpp:46
date::time_zone const * timeZone
The system timezone.
Definition application.hpp:62
virtual void exit(int exit_code=0)=0
Exit the main loop and exit the application.
thread_id main_thread_id
Thread id of the main thread.
Definition application.hpp:66
datum configuration
The global configuration.
Definition application.hpp:58