From cb6957e78683cbe4887dac80c1ff23dc9523c4cf Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 6 Apr 2025 12:41:58 +0100 Subject: Drop WindowContent::render const ImGui promotes "doing things immediately" and this const makes that very awkward. --- ui/gameMainWindow.cpp | 2 +- ui/gameMainWindow.h | 2 +- ui/windowContent.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'ui') diff --git a/ui/gameMainWindow.cpp b/ui/gameMainWindow.cpp index cc74f66..afb7a2e 100644 --- a/ui/gameMainWindow.cpp +++ b/ui/gameMainWindow.cpp @@ -85,7 +85,7 @@ GameMainWindow::handleInput(const SDL_Event & event) } void -GameMainWindow::render() const +GameMainWindow::render() { SceneRenderer::render(*this); glEnable(GL_BLEND); diff --git a/ui/gameMainWindow.h b/ui/gameMainWindow.h index b0f1592..14e099c 100644 --- a/ui/gameMainWindow.h +++ b/ui/gameMainWindow.h @@ -14,7 +14,7 @@ public: NO_COPY(GameMainWindow); void tick(TickDuration) override; - void render() const override; + void render() override; private: bool handleInput(const SDL_Event &) override; diff --git a/ui/windowContent.h b/ui/windowContent.h index 762d1cc..34cbea3 100644 --- a/ui/windowContent.h +++ b/ui/windowContent.h @@ -14,7 +14,7 @@ public: NO_COPY(WindowContent); virtual void tick(TickDuration); - virtual void render() const = 0; + virtual void render() = 0; virtual bool handleInput(const SDL_Event & e); protected: -- cgit v1.2.3 From 7e7ddf53b54e52f2106c4adce2818df7877254f1 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Mon, 7 Apr 2025 01:16:19 +0100 Subject: More uniform/flexible window constructors --- application/main.cpp | 2 +- application/resviewer.cpp | 3 +-- ui/mainWindow.cpp | 7 +------ ui/mainWindow.h | 6 ++---- ui/window.cpp | 6 +++--- ui/window.h | 2 +- 6 files changed, 9 insertions(+), 17 deletions(-) (limited to 'ui') diff --git a/application/main.cpp b/application/main.cpp index 9120376..ad7abf2 100644 --- a/application/main.cpp +++ b/application/main.cpp @@ -44,7 +44,7 @@ public: int run() { - windows.create(DISPLAY_WIDTH, DISPLAY_HEIGHT)->setContent(); + windows.create(DISPLAY_WIDTH, DISPLAY_HEIGHT, "I Like Trains")->setContent(); terrain = world.create(GeoData::loadFromAsciiGrid("test/fixtures/height/SD19.asc")); world.create(terrain); diff --git a/application/resviewer.cpp b/application/resviewer.cpp index 99e3425..ced76f8 100644 --- a/application/resviewer.cpp +++ b/application/resviewer.cpp @@ -18,8 +18,7 @@ main(int argc, char ** argv) void run(std::span fileList) { - windows.create(DEFAULT_WIDTH, DEFAULT_HEIGHT/*, "ILT - Resource Viewer", - SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL*/); + windows.create(DEFAULT_WIDTH, DEFAULT_HEIGHT, "ILT - Resource Viewer"); mainLoop(); } }; diff --git a/ui/mainWindow.cpp b/ui/mainWindow.cpp index 73c0b5b..8d46d43 100644 --- a/ui/mainWindow.cpp +++ b/ui/mainWindow.cpp @@ -8,12 +8,7 @@ #include "backends/imgui_impl_sdl2.h" #pragma GCC diagnostic pop -MainWindow::MainWindow(size_t w, size_t h) : - MainWindow {w, h, "I Like Trains", SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL} -{ -} - -MainWindow::MainWindow(size_t w, size_t h, const std::string & title, Uint32 flags) : Window {w, h, title, flags} +MainWindow::MainWindow(size_t w, size_t h, const char * title, Uint32 flags) : Window {w, h, title, flags} { if (const auto version = gladLoadGL(reinterpret_cast(SDL_GL_GetProcAddress)); version < 30003) { throw std::runtime_error {std::format("Insufficient OpenGL version: {}", version)}; diff --git a/ui/mainWindow.h b/ui/mainWindow.h index fe26c5c..490ef09 100644 --- a/ui/mainWindow.h +++ b/ui/mainWindow.h @@ -5,12 +5,10 @@ class MainWindow : public Window { public: - MainWindow(size_t w, size_t h); + MainWindow( + size_t width, size_t height, const char * title, Uint32 flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); ~MainWindow() override; NO_MOVE(MainWindow); NO_COPY(MainWindow); - -protected: - MainWindow(size_t width, size_t height, const std::string & title, Uint32 flags); }; diff --git a/ui/window.cpp b/ui/window.cpp index 732e9ef..3d4634e 100644 --- a/ui/window.cpp +++ b/ui/window.cpp @@ -7,10 +7,10 @@ #include "backends/imgui_impl_sdl2.h" #pragma GCC diagnostic pop -Window::Window(size_t width, size_t height, const std::string & title, Uint32 flags) : +Window::Window(size_t width, size_t height, const char * title, Uint32 flags) : size {static_cast(width), static_cast(height)}, - m_window {title.c_str(), static_cast(SDL_WINDOWPOS_CENTERED), static_cast(SDL_WINDOWPOS_CENTERED), size.x, - size.y, flags}, + m_window {title, static_cast(SDL_WINDOWPOS_CENTERED), static_cast(SDL_WINDOWPOS_CENTERED), size.x, size.y, + flags}, glContext {m_window} { } diff --git a/ui/window.h b/ui/window.h index 62c34de..0316a1f 100644 --- a/ui/window.h +++ b/ui/window.h @@ -15,7 +15,7 @@ using SDL_GLContextPtr = wrapped_ptrt Date: Tue, 8 Apr 2025 02:14:41 +0100 Subject: Create WindowContent with a size object Not individual width/height parameters. --- ui/gameMainWindow.cpp | 2 +- ui/gameMainWindow.h | 2 +- ui/window.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'ui') diff --git a/ui/gameMainWindow.cpp b/ui/gameMainWindow.cpp index afb7a2e..e87009f 100644 --- a/ui/gameMainWindow.cpp +++ b/ui/gameMainWindow.cpp @@ -50,7 +50,7 @@ private: GameMainSelector * gms; }; -GameMainWindow::GameMainWindow(size_t w, size_t h) : SceneRenderer {{w, h}, 0} +GameMainWindow::GameMainWindow(ScreenAbsCoord size) : SceneRenderer {size, 0} { uiComponents.create(glm::vec2 {310'727'624, 494'018'810}); auto gms = uiComponents.create(&camera); diff --git a/ui/gameMainWindow.h b/ui/gameMainWindow.h index 14e099c..41163d0 100644 --- a/ui/gameMainWindow.h +++ b/ui/gameMainWindow.h @@ -7,7 +7,7 @@ class GameMainWindow : public WindowContent, SceneRenderer, public SceneProvider { public: - GameMainWindow(size_t w, size_t h); + GameMainWindow(ScreenAbsCoord size); ~GameMainWindow() override; NO_MOVE(GameMainWindow); diff --git a/ui/window.h b/ui/window.h index 0316a1f..1c3d09c 100644 --- a/ui/window.h +++ b/ui/window.h @@ -27,7 +27,7 @@ public: { glm::ivec2 size {}; SDL_GetWindowSizeInPixels(m_window, &size.x, &size.y); - content = std::make_unique(size.x, size.y, std::forward

(p)...); + content = std::make_unique(ScreenAbsCoord {size.x, size.y}, std::forward

(p)...); } void tick(TickDuration elapsed); -- cgit v1.2.3 From c6fb8dd64e0c323e46c73162e21a3a34103bb407 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Tue, 8 Apr 2025 02:32:39 +0100 Subject: Create Windows with a size object Not individual width/height parameters. --- application/main.cpp | 5 ++--- application/resviewer.cpp | 5 ++--- test/testMainWindow.cpp | 2 +- ui/mainWindow.cpp | 2 +- ui/mainWindow.h | 3 +-- ui/window.cpp | 3 +-- ui/window.h | 3 +-- 7 files changed, 9 insertions(+), 14 deletions(-) (limited to 'ui') diff --git a/application/main.cpp b/application/main.cpp index ad7abf2..a0c87c0 100644 --- a/application/main.cpp +++ b/application/main.cpp @@ -36,15 +36,14 @@ #include #include -static const int DISPLAY_WIDTH = 1280; -static const int DISPLAY_HEIGHT = 1024; +constexpr ScreenAbsCoord DEFAULT_WINDOW_SIZE {1280, 1024}; class DummyMainApplication : public GameState, public MainApplication { public: int run() { - windows.create(DISPLAY_WIDTH, DISPLAY_HEIGHT, "I Like Trains")->setContent(); + windows.create(DEFAULT_WINDOW_SIZE, "I Like Trains")->setContent(); terrain = world.create(GeoData::loadFromAsciiGrid("test/fixtures/height/SD19.asc")); world.create(terrain); diff --git a/application/resviewer.cpp b/application/resviewer.cpp index ced76f8..2eb40f2 100644 --- a/application/resviewer.cpp +++ b/application/resviewer.cpp @@ -7,8 +7,7 @@ #include #include -constexpr int DEFAULT_WIDTH = 240; -constexpr int DEFAULT_HEIGHT = 160; +constexpr ScreenAbsCoord DEFAULT_WINDOW_SIZE {800, 600}; int main(int argc, char ** argv) @@ -18,7 +17,7 @@ main(int argc, char ** argv) void run(std::span fileList) { - windows.create(DEFAULT_WIDTH, DEFAULT_HEIGHT, "ILT - Resource Viewer"); + windows.create(DEFAULT_WINDOW_SIZE, "ILT - Resource Viewer"); mainLoop(); } }; diff --git a/test/testMainWindow.cpp b/test/testMainWindow.cpp index 4a76044..d048682 100644 --- a/test/testMainWindow.cpp +++ b/test/testMainWindow.cpp @@ -2,7 +2,7 @@ #include #include -TestMainWindow::TestMainWindow() : MainWindow {1, 1, __FILE__, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN} +TestMainWindow::TestMainWindow() : MainWindow {{1, 1}, __FILE__, SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN} { glEnable(GL_DEBUG_OUTPUT); glDebugMessageCallback( diff --git a/ui/mainWindow.cpp b/ui/mainWindow.cpp index 8d46d43..57dabc0 100644 --- a/ui/mainWindow.cpp +++ b/ui/mainWindow.cpp @@ -8,7 +8,7 @@ #include "backends/imgui_impl_sdl2.h" #pragma GCC diagnostic pop -MainWindow::MainWindow(size_t w, size_t h, const char * title, Uint32 flags) : Window {w, h, title, flags} +MainWindow::MainWindow(ScreenAbsCoord size, const char * title, Uint32 flags) : Window {size, title, flags} { if (const auto version = gladLoadGL(reinterpret_cast(SDL_GL_GetProcAddress)); version < 30003) { throw std::runtime_error {std::format("Insufficient OpenGL version: {}", version)}; diff --git a/ui/mainWindow.h b/ui/mainWindow.h index 490ef09..d2de9b3 100644 --- a/ui/mainWindow.h +++ b/ui/mainWindow.h @@ -5,8 +5,7 @@ class MainWindow : public Window { public: - MainWindow( - size_t width, size_t height, const char * title, Uint32 flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); + MainWindow(ScreenAbsCoord size, const char * title, Uint32 flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); ~MainWindow() override; NO_MOVE(MainWindow); diff --git a/ui/window.cpp b/ui/window.cpp index 3d4634e..06857b2 100644 --- a/ui/window.cpp +++ b/ui/window.cpp @@ -7,8 +7,7 @@ #include "backends/imgui_impl_sdl2.h" #pragma GCC diagnostic pop -Window::Window(size_t width, size_t height, const char * title, Uint32 flags) : - size {static_cast(width), static_cast(height)}, +Window::Window(ScreenAbsCoord size, const char * title, Uint32 flags) : m_window {title, static_cast(SDL_WINDOWPOS_CENTERED), static_cast(SDL_WINDOWPOS_CENTERED), size.x, size.y, flags}, glContext {m_window} diff --git a/ui/window.h b/ui/window.h index 1c3d09c..99a977f 100644 --- a/ui/window.h +++ b/ui/window.h @@ -15,7 +15,7 @@ using SDL_GLContextPtr = wrapped_ptrt Date: Tue, 8 Apr 2025 02:38:10 +0100 Subject: Remove GameMainWindow empty destructor and special members --- ui/gameMainWindow.cpp | 2 -- ui/gameMainWindow.h | 5 ----- 2 files changed, 7 deletions(-) (limited to 'ui') diff --git a/ui/gameMainWindow.cpp b/ui/gameMainWindow.cpp index e87009f..dbbf8a7 100644 --- a/ui/gameMainWindow.cpp +++ b/ui/gameMainWindow.cpp @@ -57,8 +57,6 @@ GameMainWindow::GameMainWindow(ScreenAbsCoord size) : SceneRenderer {size, 0} uiComponents.create(gms); } -GameMainWindow::~GameMainWindow() { } - void GameMainWindow::tick(TickDuration) { diff --git a/ui/gameMainWindow.h b/ui/gameMainWindow.h index 41163d0..71b6314 100644 --- a/ui/gameMainWindow.h +++ b/ui/gameMainWindow.h @@ -3,15 +3,10 @@ #include "chronology.h" #include "gfx/gl/sceneRenderer.h" #include "windowContent.h" -#include class GameMainWindow : public WindowContent, SceneRenderer, public SceneProvider { public: GameMainWindow(ScreenAbsCoord size); - ~GameMainWindow() override; - - NO_MOVE(GameMainWindow); - NO_COPY(GameMainWindow); void tick(TickDuration) override; void render() override; -- cgit v1.2.3