diff --git a/scwx-qt/scwx-qt.cmake b/scwx-qt/scwx-qt.cmake index 20f26629..c36ac27f 100644 --- a/scwx-qt/scwx-qt.cmake +++ b/scwx-qt/scwx-qt.cmake @@ -8,7 +8,7 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Boost) diff --git a/scwx-qt/source/scwx/qt/view/radar_view.cpp b/scwx-qt/source/scwx/qt/view/radar_view.cpp index ac403f90..4f0d76bc 100644 --- a/scwx-qt/source/scwx/qt/view/radar_view.cpp +++ b/scwx-qt/source/scwx/qt/view/radar_view.cpp @@ -17,6 +17,9 @@ static const std::string logPrefix_ = "[scwx::qt::view::radar_view] "; static constexpr uint32_t VERTICES_PER_BIN = 6; static constexpr uint32_t VALUES_PER_VERTEX = 2; +static std::chrono::system_clock::time_point +TimePoint(uint16_t modifiedJulianDate, uint32_t milliseconds); + class RadarViewImpl { public: @@ -24,6 +27,7 @@ public: std::shared_ptr map) : radarManager_(radarManager), map_(map), + plotTime_(), colorTable_ {boost::gil::rgba8_pixel_t(0, 128, 0, 255), boost::gil::rgba8_pixel_t(255, 192, 0, 255), boost::gil::rgba8_pixel_t(255, 0, 0, 255)} @@ -38,6 +42,8 @@ public: std::vector dataMoments8_; std::vector dataMoments16_; + std::chrono::system_clock::time_point plotTime_; + std::vector colorTable_; }; @@ -109,6 +115,11 @@ void RadarView::LoadColorTable(std::shared_ptr colorTable) emit ColorTableLoaded(); } +std::chrono::system_clock::time_point RadarView::PlotTime() +{ + return p->plotTime_; +} + void RadarView::UpdatePlot() { BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "UpdatePlot()"; @@ -130,6 +141,9 @@ void RadarView::UpdatePlot() auto radarData = level2Data->radar_data()[0]; wsr88d::rda::DataBlockType blockType = wsr88d::rda::DataBlockType::MomentRef; + p->plotTime_ = TimePoint(radarData[0]->modified_julian_date(), + radarData[0]->collection_time()); + // Calculate vertices timer.start(); @@ -339,6 +353,17 @@ void RadarView::UpdatePlot() emit PlotUpdated(); } +static std::chrono::system_clock::time_point +TimePoint(uint16_t modifiedJulianDate, uint32_t milliseconds) +{ + using namespace std::chrono; + using sys_days = time_point; + constexpr auto epoch = sys_days {1969y / December / 31d}; + + return epoch + (modifiedJulianDate * 24h) + + std::chrono::milliseconds {milliseconds}; +} + } // namespace view } // namespace qt } // namespace scwx diff --git a/scwx-qt/source/scwx/qt/view/radar_view.hpp b/scwx-qt/source/scwx/qt/view/radar_view.hpp index 34c606a8..e16db769 100644 --- a/scwx-qt/source/scwx/qt/view/radar_view.hpp +++ b/scwx-qt/source/scwx/qt/view/radar_view.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -37,6 +38,8 @@ public: void Initialize(); void LoadColorTable(std::shared_ptr colorTable); + std::chrono::system_clock::time_point PlotTime(); + public slots: void UpdatePlot();