From 2fd94c6575b226ba20036c80c99e3ddc9453b2dd Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Sat, 11 Jan 2025 10:33:40 -0500 Subject: [PATCH] Gracefully fallback when icon cannot be loaded --- scwx-qt/source/scwx/qt/manager/marker_manager.cpp | 13 +++++++++++-- scwx-qt/source/scwx/qt/map/marker_layer.cpp | 10 +++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/scwx-qt/source/scwx/qt/manager/marker_manager.cpp b/scwx-qt/source/scwx/qt/manager/marker_manager.cpp index a9214d03..798f94b2 100644 --- a/scwx-qt/source/scwx/qt/manager/marker_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/marker_manager.cpp @@ -446,8 +446,17 @@ void MarkerManager::add_icon(const std::string& name, bool startup) const std::shared_ptr image = ResourceManager::LoadImageResource(name); - auto icon = types::MarkerIconInfo(name, -1, -1, image); - p->markerIcons_.emplace(name, icon); + if (image) + { + auto icon = types::MarkerIconInfo(name, -1, -1, image); + p->markerIcons_.emplace(name, icon); + } + else + { + // defaultIconName should always be in markerIcons, so at is fine + auto icon = p->markerIcons_.at(defaultIconName); + p->markerIcons_.emplace(name, icon); + } } if (!startup) diff --git a/scwx-qt/source/scwx/qt/map/marker_layer.cpp b/scwx-qt/source/scwx/qt/map/marker_layer.cpp index ba7f3e27..906ef7c1 100644 --- a/scwx-qt/source/scwx/qt/map/marker_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/marker_layer.cpp @@ -88,8 +88,16 @@ void MarkerLayer::Impl::ReloadMarkers() "{}\n{}, {}", marker.name, latitudeString, longitudeString) : fmt::format("{}, {}", latitudeString, longitudeString); + auto iconInfo = markerManager_->get_icon(marker.iconName); + if (iconInfo) + { + geoIcons_->SetIconTexture(icon, iconInfo->name, 0); + } + else + { + geoIcons_->SetIconTexture(icon, marker.iconName, 0); + } - geoIcons_->SetIconTexture(icon, marker.iconName, 0); geoIcons_->SetIconLocation(icon, marker.latitude, marker.longitude); geoIcons_->SetIconHoverText(icon, hoverText); geoIcons_->SetIconModulate(icon, marker.iconColor);