From 400db66f096e108a51e66354a1bf0ec05e044bee Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 23 Nov 2023 06:24:32 -0600 Subject: [PATCH] Add texture types for resource loading and reference --- scwx-qt/scwx-qt.cmake | 6 ++- .../scwx/qt/manager/resource_manager.cpp | 18 +++++-- .../source/scwx/qt/types/texture_types.cpp | 50 +++++++++++++++++++ .../source/scwx/qt/types/texture_types.hpp | 39 +++++++++++++++ 4 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 scwx-qt/source/scwx/qt/types/texture_types.cpp create mode 100644 scwx-qt/source/scwx/qt/types/texture_types.hpp diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index f9b56876..6e38717e 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -172,7 +172,8 @@ set(HDR_TYPES source/scwx/qt/types/alert_types.hpp source/scwx/qt/types/qt_types.hpp source/scwx/qt/types/radar_product_record.hpp source/scwx/qt/types/text_event_key.hpp - source/scwx/qt/types/text_types.hpp) + source/scwx/qt/types/text_types.hpp + source/scwx/qt/types/texture_types.hpp) set(SRC_TYPES source/scwx/qt/types/alert_types.cpp source/scwx/qt/types/github_types.cpp source/scwx/qt/types/imgui_font.cpp @@ -180,7 +181,8 @@ set(SRC_TYPES source/scwx/qt/types/alert_types.cpp source/scwx/qt/types/map_types.cpp source/scwx/qt/types/radar_product_record.cpp source/scwx/qt/types/text_event_key.cpp - source/scwx/qt/types/text_types.cpp) + source/scwx/qt/types/text_types.cpp + source/scwx/qt/types/texture_types.cpp) set(HDR_UI source/scwx/qt/ui/about_dialog.hpp source/scwx/qt/ui/alert_dialog.hpp source/scwx/qt/ui/alert_dock_widget.hpp diff --git a/scwx-qt/source/scwx/qt/manager/resource_manager.cpp b/scwx-qt/source/scwx/qt/manager/resource_manager.cpp index 3048fc6c..df4b4f77 100644 --- a/scwx-qt/source/scwx/qt/manager/resource_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/resource_manager.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include @@ -91,10 +92,19 @@ static void LoadFonts() static void LoadTextures() { util::TextureAtlas& textureAtlas = util::TextureAtlas::Instance(); - textureAtlas.RegisterTexture("lines/default-1x7", - ":/res/textures/lines/default-1x7.png"); - textureAtlas.RegisterTexture("lines/test-pattern", - ":/res/textures/lines/test-pattern.png"); + + for (auto imageTexture : types::ImageTextureIterator()) + { + textureAtlas.RegisterTexture(GetTextureName(imageTexture), + GetTexturePath(imageTexture)); + } + + for (auto lineTexture : types::LineTextureIterator()) + { + textureAtlas.RegisterTexture(GetTextureName(lineTexture), + GetTexturePath(lineTexture)); + } + textureAtlas.BuildAtlas(2048, 2048); } diff --git a/scwx-qt/source/scwx/qt/types/texture_types.cpp b/scwx-qt/source/scwx/qt/types/texture_types.cpp new file mode 100644 index 00000000..348ae781 --- /dev/null +++ b/scwx-qt/source/scwx/qt/types/texture_types.cpp @@ -0,0 +1,50 @@ +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace types +{ + +struct TextureInfo +{ + std::string name_ {}; + std::string path_ {}; +}; + +static const std::unordered_map imageTextureInfo_ { + {ImageTexture::Crosshairs32, + {"images/crosshairs-32", ":/res/textures/images/crosshairs-32.png"}}}; + +static const std::unordered_map lineTextureInfo_ { + {LineTexture::Default1x7, + {"lines/default-1x7", ":/res/textures/lines/default-1x7.png"}}, + {LineTexture::TestPattern, + {"lines/test-pattern", ":/res/textures/lines/test-pattern.png"}}}; + +const std::string& GetTextureName(ImageTexture imageTexture) +{ + return imageTextureInfo_.at(imageTexture).name_; +} + +const std::string& GetTextureName(LineTexture lineTexture) +{ + return lineTextureInfo_.at(lineTexture).name_; +} + +const std::string& GetTexturePath(ImageTexture imageTexture) +{ + return imageTextureInfo_.at(imageTexture).path_; +} + +const std::string& GetTexturePath(LineTexture lineTexture) +{ + return lineTextureInfo_.at(lineTexture).path_; +} + +} // namespace types +} // namespace qt +} // namespace scwx diff --git a/scwx-qt/source/scwx/qt/types/texture_types.hpp b/scwx-qt/source/scwx/qt/types/texture_types.hpp new file mode 100644 index 00000000..7e1999b4 --- /dev/null +++ b/scwx-qt/source/scwx/qt/types/texture_types.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include + +#include + +namespace scwx +{ +namespace qt +{ +namespace types +{ + +enum class ImageTexture +{ + Crosshairs32 +}; +typedef scwx::util::Iterator + ImageTextureIterator; + +enum class LineTexture +{ + Default1x7, + TestPattern +}; +typedef scwx::util:: + Iterator + LineTextureIterator; + +const std::string& GetTextureName(ImageTexture imageTexture); +const std::string& GetTextureName(LineTexture lineTexture); +const std::string& GetTexturePath(ImageTexture imageTexture); +const std::string& GetTexturePath(LineTexture lineTexture); + +} // namespace types +} // namespace qt +} // namespace scwx