ASAPCabinetFE
 
Loading...
Searching...
No Matches
window_manager.h
Go to the documentation of this file.
1
10#ifndef WINDOW_MANAGER_H
11#define WINDOW_MANAGER_H
12
13#include "iwindow_manager.h"
15
25public:
34 explicit WindowManager(const Settings& settings);
35
41 ~WindowManager() = default;
42
48 SDL_Window* getPlayfieldWindow() override { return playfieldWindow_.get(); }
49
55 SDL_Window* getBackglassWindow() override { return backglassWindow_.get(); }
56
62 SDL_Window* getDMDWindow() override { return dmdWindow_.get(); }
63
69 SDL_Window* getTopperWindow() override { return topperWindow_.get(); }
70
76 SDL_Renderer* getPlayfieldRenderer() override { return playfieldRenderer_.get(); }
77
83 SDL_Renderer* getBackglassRenderer() override { return backglassRenderer_.get(); }
84
90 SDL_Renderer* getDMDRenderer() override { return dmdRenderer_.get(); }
91
97 SDL_Renderer* getTopperRenderer() override { return topperRenderer_.get(); }
98
107 void updateWindows(const Settings& settings) override;
108
123 void getWindowSetup(int& playfieldX, int& playfieldY, int& playfieldWidth, int& playfieldHeight,
124 int& backglassX, int& backglassY, int& backglassWidth, int& backglassHeight,
125 int& dmdX, int& dmdY, int& dmdWidth, int& dmdHeight,
126 int& topperX, int& topperY, int& topperWidth, int& topperHeight) override;
127
128private:
132 struct WindowInfo {
133 std::unique_ptr<SDL_Window, void(*)(SDL_Window*)>& window;
134 std::unique_ptr<SDL_Renderer, void(*)(SDL_Renderer*)>& renderer;
135 const char* title;
136 bool show;
137 int width;
138 int height;
139 int x;
140 int y;
141 };
142
159 void createOrUpdateWindow(std::unique_ptr<SDL_Window, void(*)(SDL_Window*)>& window,
160 std::unique_ptr<SDL_Renderer, void(*)(SDL_Renderer*)>& renderer,
161 const char* title,
162 int width, int height,
163 int posX, int posY, float dpiScale, bool enableDpiScaling);
164
165 std::unique_ptr<SDL_Window, void(*)(SDL_Window*)> playfieldWindow_;
166 std::unique_ptr<SDL_Window, void(*)(SDL_Window*)> backglassWindow_;
167 std::unique_ptr<SDL_Window, void(*)(SDL_Window*)> dmdWindow_;
168 std::unique_ptr<SDL_Window, void(*)(SDL_Window*)> topperWindow_;
169 std::unique_ptr<SDL_Renderer, void(*)(SDL_Renderer*)> playfieldRenderer_;
170 std::unique_ptr<SDL_Renderer, void(*)(SDL_Renderer*)> backglassRenderer_;
171 std::unique_ptr<SDL_Renderer, void(*)(SDL_Renderer*)> dmdRenderer_;
172 std::unique_ptr<SDL_Renderer, void(*)(SDL_Renderer*)> topperRenderer_;
173};
174
175#endif // WINDOW_MANAGER_H
Interface for managing SDL windows and renderers.
Definition iwindow_manager.h:27
Manages SDL windows and renderers for VPX displays.
Definition window_manager.h:24
SDL_Renderer * getDMDRenderer() override
Gets the DMD renderer.
Definition window_manager.h:90
SDL_Renderer * getPlayfieldRenderer() override
Gets the playfield renderer.
Definition window_manager.h:76
SDL_Renderer * getTopperRenderer() override
Gets the topper renderer.
Definition window_manager.h:97
SDL_Window * getBackglassWindow() override
Gets the backglass window.
Definition window_manager.h:55
SDL_Renderer * getBackglassRenderer() override
Gets the backglass renderer.
Definition window_manager.h:83
SDL_Window * getDMDWindow() override
Gets the DMD window.
Definition window_manager.h:62
SDL_Window * getPlayfieldWindow() override
Gets the playfield window.
Definition window_manager.h:48
void updateWindows(const Settings &settings) override
Updates windows with new settings.
Definition window_manager.cpp:23
SDL_Window * getTopperWindow() override
Gets the topper window.
Definition window_manager.h:69
~WindowManager()=default
Destroys the WindowManager instance.
void getWindowSetup(int &playfieldX, int &playfieldY, int &playfieldWidth, int &playfieldHeight, int &backglassX, int &backglassY, int &backglassWidth, int &backglassHeight, int &dmdX, int &dmdY, int &dmdWidth, int &dmdHeight, int &topperX, int &topperY, int &topperWidth, int &topperHeight) override
Gets the positions of all windows.
Definition window_manager.cpp:130
Defines the IConfigService interface for managing configuration in ASAPCabinetFE.
Defines the IWindowManager interface for managing SDL windows and renderers in ASAPCabinetFE.
Definition settings.h:12