Pioneer
Loading...
Searching...
No Matches
GuiApplication.h
Go to the documentation of this file.
1// Copyright © 2008-2024 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#pragma once
5
6#include "Application.h"
7#include "RefCounted.h"
8#include "SDL_events.h"
9
10#include "graphics/Graphics.h"
11
12class IniConfig;
13
14namespace Input {
15 class Manager;
16}
17
18namespace PiGui {
19 class Instance;
20}
21
22namespace Graphics {
23 class Renderer;
24 class RenderTarget;
25}
26
28public:
29 GuiApplication(std::string title);
31
32 Graphics::Renderer *GetRenderer() { return m_renderer.get(); }
33 Input::Manager *GetInput() { return m_input.get(); }
34 PiGui::Instance *GetPiGui() { return m_pigui.Get(); }
35
36 Graphics::RenderTarget *GetRenderTarget() { return m_renderTarget.get(); }
37
38 const Graphics::Settings &GetGraphicsSettings() { return m_settings; }
39
40protected:
41
42 // Call this from your OnStartup() method
43 void SetupProfiler(IniConfig *config);
44
45 // TODO: unify config handling, possibly make the config an Application member
46 // Call this from your OnStartup() method
47 Graphics::Renderer *StartupRenderer(IniConfig *config, bool hidden = false);
48
49 // Call this from your OnStartup() method
51
52 // Call this from your OnStartup() method
54
55 // Call this from your OnShutdown() method
56 void ShutdownRenderer();
57
58 // Call this from your OnShutdown() method
59 void ShutdownInput();
60
61 // Call this from your OnShutdown() method
62 void ShutdownPiGui();
63
64 // Hook to bind the RT and clear the screen.
65 // If you override BeginFrame, make sure you call this.
66 void BeginFrame() override;
67
68 // Hook to end the frame and draw to the application framebuffer.
69 // If you override EndFrame, make sure you call this.
70 void EndFrame() override;
71
72 // Consume events from SDL and dispatch to pigui / input
73 void HandleEvents();
74 // the function from above actually calls the following two:
75 void PollEvents(); // writes events to ImGui and Input structures, also generate signals for low-level handling
76 void DispatchEvents(); // triggers action-related signals, updates actions and axes
77
78 // Override point to handle an application quit notification
79 virtual void HandleQuit(SDL_QuitEvent &ev) { RequestQuit(); }
80
81private:
82 Graphics::RenderTarget *CreateRenderTarget(const Graphics::Settings &settings);
83
85 std::unique_ptr<Input::Manager> m_input;
86
87 std::string m_applicationTitle;
88
89 std::unique_ptr<Graphics::Renderer> m_renderer;
90 std::unique_ptr<Graphics::RenderTarget> m_renderTarget;
91 Graphics::Settings m_settings;
92};
Definition: Application.h:16
void RequestQuit()
Definition: Application.h:119
Definition: RenderTarget.h:38
Definition: Renderer.h:45
Definition: GuiApplication.h:27
void ShutdownRenderer()
Definition: GuiApplication.cpp:170
void BeginFrame() override
Definition: GuiApplication.cpp:28
void HandleEvents()
Definition: GuiApplication.cpp:109
const Graphics::Settings & GetGraphicsSettings()
Definition: GuiApplication.h:38
Graphics::RenderTarget * GetRenderTarget()
Definition: GuiApplication.h:36
Input::Manager * StartupInput(IniConfig *config)
Definition: GuiApplication.cpp:179
void SetupProfiler(IniConfig *config)
Definition: GuiApplication.cpp:115
PiGui::Instance * GetPiGui()
Definition: GuiApplication.h:34
Input::Manager * GetInput()
Definition: GuiApplication.h:33
void EndFrame() override
Definition: GuiApplication.cpp:39
void PollEvents()
Definition: GuiApplication.cpp:60
PiGui::Instance * StartupPiGui()
Definition: GuiApplication.cpp:193
~GuiApplication()
Definition: GuiApplication.cpp:25
void ShutdownInput()
Definition: GuiApplication.cpp:187
void DispatchEvents()
Definition: GuiApplication.cpp:104
Graphics::Renderer * GetRenderer()
Definition: GuiApplication.h:32
void ShutdownPiGui()
Definition: GuiApplication.cpp:201
Graphics::Renderer * StartupRenderer(IniConfig *config, bool hidden=false)
Definition: GuiApplication.cpp:128
virtual void HandleQuit(SDL_QuitEvent &ev)
Definition: GuiApplication.h:79
Definition: IniConfig.h:16
Definition: Input.h:124
Definition: PiGui.h:140
Definition: RefCounted.h:36
T * Get() const
Definition: SmartPtr.h:37
Definition: Background.h:14
Definition: GuiApplication.h:14
Definition: GuiApplication.h:18
Definition: Graphics.h:27