Add texture types for resource loading and reference

This commit is contained in:
Dan Paulat 2023-11-23 06:24:32 -06:00
parent 64c5d60483
commit 400db66f09
4 changed files with 107 additions and 6 deletions

View file

@ -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

View file

@ -2,6 +2,7 @@
#include <scwx/qt/manager/font_manager.hpp>
#include <scwx/qt/config/county_database.hpp>
#include <scwx/qt/model/imgui_context_model.hpp>
#include <scwx/qt/types/texture_types.hpp>
#include <scwx/qt/util/texture_atlas.hpp>
#include <scwx/util/logger.hpp>
@ -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);
}

View file

@ -0,0 +1,50 @@
#include <scwx/qt/types/texture_types.hpp>
#include <unordered_map>
namespace scwx
{
namespace qt
{
namespace types
{
struct TextureInfo
{
std::string name_ {};
std::string path_ {};
};
static const std::unordered_map<ImageTexture, TextureInfo> imageTextureInfo_ {
{ImageTexture::Crosshairs32,
{"images/crosshairs-32", ":/res/textures/images/crosshairs-32.png"}}};
static const std::unordered_map<LineTexture, TextureInfo> 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

View file

@ -0,0 +1,39 @@
#pragma once
#include <scwx/util/iterator.hpp>
#include <string>
namespace scwx
{
namespace qt
{
namespace types
{
enum class ImageTexture
{
Crosshairs32
};
typedef scwx::util::Iterator<ImageTexture,
ImageTexture::Crosshairs32,
ImageTexture::Crosshairs32>
ImageTextureIterator;
enum class LineTexture
{
Default1x7,
TestPattern
};
typedef scwx::util::
Iterator<LineTexture, LineTexture::Default1x7, LineTexture::TestPattern>
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