From 1a32748b8e0db88e52572a5f3c0975e9075c05fe Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 28 Nov 2024 12:00:36 -0500 Subject: [PATCH] Add location marker icon and color rendering on the map. --- scwx-qt/source/scwx/qt/manager/marker_manager.cpp | 6 +++--- scwx-qt/source/scwx/qt/map/marker_layer.cpp | 14 ++++++++------ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/scwx-qt/source/scwx/qt/manager/marker_manager.cpp b/scwx-qt/source/scwx/qt/manager/marker_manager.cpp index 2fece570..30cb0d4b 100644 --- a/scwx-qt/source/scwx/qt/manager/marker_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/marker_manager.cpp @@ -31,9 +31,6 @@ static const std::string kLongitudeName_ = "longitude"; static const std::string kIconName_ = "icon"; static const std::string kIconColorName_ = "icon-color"; -static const std::string defaultIconName = types::getMarkerIcons()[0].name; -static const boost::gil::rgba8_pixel_t defaultIconColor = - util::color::ToRgba8PixelT("#ffff0000"); class MarkerManager::Impl { @@ -94,6 +91,9 @@ public: friend MarkerRecord tag_invoke(boost::json::value_to_tag, const boost::json::value& jv) { + static const std::string defaultIconName = types::getMarkerIcons()[0].name; + static const boost::gil::rgba8_pixel_t defaultIconColor = + util::color::ToRgba8PixelT("#ffff0000"); const boost::json::object& jo = jv.as_object(); diff --git a/scwx-qt/source/scwx/qt/map/marker_layer.cpp b/scwx-qt/source/scwx/qt/map/marker_layer.cpp index 4e1a2dd0..311a347b 100644 --- a/scwx-qt/source/scwx/qt/map/marker_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/marker_layer.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include namespace scwx @@ -29,8 +28,6 @@ public: void ConnectSignals(); MarkerLayer* self_; - const std::string& markerIconName_ { - types::GetTextureName(types::ImageTexture::LocationMarker)}; std::shared_ptr geoIcons_; }; @@ -59,9 +56,10 @@ void MarkerLayer::Impl::ReloadMarkers() [this](const types::MarkerInfo& marker) { std::shared_ptr icon = geoIcons_->AddIcon(); - geoIcons_->SetIconTexture(icon, markerIconName_, 0); + geoIcons_->SetIconTexture(icon, marker.iconName, 0); geoIcons_->SetIconLocation(icon, marker.latitude, marker.longitude); geoIcons_->SetIconHoverText(icon, marker.name); + geoIcons_->SetIconModulate(icon, marker.iconColor); }); geoIcons_->FinishIcons(); @@ -82,7 +80,11 @@ void MarkerLayer::Initialize() DrawLayer::Initialize(); p->geoIcons_->StartIconSheets(); - p->geoIcons_->AddIconSheet(p->markerIconName_); + for (auto& markerIcon : types::getMarkerIcons()) + { + p->geoIcons_->AddIconSheet( + markerIcon.name, 0, 0, markerIcon.hotX, markerIcon.hotY); + } p->geoIcons_->FinishIconSheets(); p->ReloadMarkers(); @@ -90,8 +92,8 @@ void MarkerLayer::Initialize() void MarkerLayer::Render(const QMapLibre::CustomLayerRenderParameters& params) { - // auto markerManager = manager::MarkerManager::Instance(); gl::OpenGLFunctions& gl = context()->gl(); + context()->set_render_parameters(params); DrawLayer::Render(params);