From be972cdb7e823c23b94579902761b4b225d962fb Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Sat, 12 Apr 2025 11:10:42 -0400 Subject: [PATCH] Add elevation to product label. Mainly for level 3 products --- scwx-qt/source/scwx/qt/map/map_widget.cpp | 3 +-- scwx-qt/source/scwx/qt/map/overlay_layer.cpp | 12 ++++++++++-- scwx-qt/source/scwx/qt/view/level3_radial_view.cpp | 7 +++++++ scwx-qt/source/scwx/qt/view/level3_radial_view.hpp | 10 ++++++---- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 9c768509..55813bb4 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -275,7 +275,7 @@ public: bool productAvailabilityProductSelected_ {false}; std::unordered_map tiltsToIndices_; - size_t currentTiltIndex_ {0}; + size_t currentTiltIndex_ {0}; public slots: void Update(); @@ -2163,7 +2163,6 @@ void MapWidgetImpl::CheckLevel3Availability() availableTilts[availableTilts.size() - 1], 0, widget_->GetSelectedTime()); - } else { diff --git a/scwx-qt/source/scwx/qt/map/overlay_layer.cpp b/scwx-qt/source/scwx/qt/map/overlay_layer.cpp index 36258e75..7c3c22a9 100644 --- a/scwx-qt/source/scwx/qt/map/overlay_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/overlay_layer.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -426,15 +427,22 @@ void OverlayLayer::Render(const QMapLibre::CustomLayerRenderParameters& params) if (radarProductView != nullptr) { // Render product name - std::string productName = radarProductView->GetRadarProductName(); + const std::string productName = radarProductView->GetRadarProductName(); + const float elevation = radarProductView->elevation(); + if (productName.length() > 0 && !productName.starts_with('?')) { + const std::string elevationString = + (QString::number(elevation, 'f', 1) + common::Characters::DEGREE) + .toStdString(); + ImGui::SetNextWindowPos(ImVec2 {0.0f, 0.0f}); ImGui::Begin("Product Name", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize); - ImGui::TextUnformatted(productName.c_str()); + ImGui::TextUnformatted( + fmt::format("{} ({})", productName, elevationString).c_str()); ImGui::End(); } } diff --git a/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp b/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp index 0b3f42fa..05409e68 100644 --- a/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp @@ -67,6 +67,7 @@ public: float latitude_; float longitude_; + float elevation_; float range_; std::uint16_t vcp_; @@ -91,6 +92,11 @@ boost::asio::thread_pool& Level3RadialView::thread_pool() return p->threadPool_; } +float Level3RadialView::elevation() const +{ + return p->elevation_; +} + float Level3RadialView::range() const { return p->range_; @@ -306,6 +312,7 @@ void Level3RadialView::ComputeSweep() p->latitude_ = descriptionBlock->latitude_of_radar(); p->longitude_ = descriptionBlock->longitude_of_radar(); p->range_ = descriptionBlock->range(); + p->elevation_ = static_cast(descriptionBlock->elevation().value()); p->sweepTime_ = scwx::util::TimePoint(descriptionBlock->volume_scan_date(), descriptionBlock->volume_scan_start_time() * 1000); diff --git a/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp b/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp index f99f4e63..9f6c0a3d 100644 --- a/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp +++ b/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp @@ -23,10 +23,12 @@ public: std::shared_ptr radarProductManager); ~Level3RadialView(); - float range() const override; - std::chrono::system_clock::time_point sweep_time() const override; - std::uint16_t vcp() const override; - const std::vector& vertices() const override; + [[nodiscard]] float elevation() const override; + [[nodiscard]] float range() const override; + [[nodiscard]] std::chrono::system_clock::time_point + sweep_time() const override; + [[nodiscard]] std::uint16_t vcp() const override; + [[nodiscard]] const std::vector& vertices() const override; std::tuple GetMomentData() const override;