From 7747e869bac1d4f558c2b0ed6654500c744f41b4 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 30 Oct 2021 23:20:50 -0500 Subject: [PATCH] Delegate retrieval of moment data to view class --- .../scwx/qt/map/radar_product_layer.cpp | 20 +++++++---------- .../scwx/qt/view/radar_product_view.cpp | 22 +++++++++++++++++++ .../scwx/qt/view/radar_product_view.hpp | 2 ++ 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/scwx-qt/source/scwx/qt/map/radar_product_layer.cpp b/scwx-qt/source/scwx/qt/map/radar_product_layer.cpp index c9ee350c..9fab0cff 100644 --- a/scwx-qt/source/scwx/qt/map/radar_product_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/radar_product_layer.cpp @@ -129,11 +129,7 @@ void RadarProductLayer::UpdateSweep() boost::timer::cpu_timer timer; - const std::vector& vertices = p->radarProductView_->vertices(); - const std::vector& dataMoments8 = - p->radarProductView_->data_moments8(); - const std::vector& dataMoments16 = - p->radarProductView_->data_moments16(); + const std::vector& vertices = p->radarProductView_->vertices(); // Bind a vertex array object gl.glBindVertexArray(p->vao_); @@ -158,19 +154,19 @@ void RadarProductLayer::UpdateSweep() // Buffer data moments const GLvoid* data; GLsizeiptr dataSize; + size_t componentSize; GLenum type; - if (dataMoments8.size() > 0) + std::tie(data, dataSize, componentSize) = + p->radarProductView_->GetMomentData(); + + if (componentSize == 1) { - data = static_cast(dataMoments8.data()); - dataSize = dataMoments8.size() * sizeof(GLubyte); - type = GL_UNSIGNED_BYTE; + type = GL_UNSIGNED_BYTE; } else { - data = static_cast(dataMoments16.data()); - dataSize = dataMoments16.size() * sizeof(GLushort); - type = GL_UNSIGNED_SHORT; + type = GL_UNSIGNED_SHORT; } gl.glBindBuffer(GL_ARRAY_BUFFER, p->vbo_[1]); diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.cpp b/scwx-qt/source/scwx/qt/view/radar_product_view.cpp index b9a4ad57..c436be81 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.cpp @@ -96,6 +96,28 @@ void RadarProductView::Initialize() UpdatePlot(); } +std::tuple RadarProductView::GetMomentData() +{ + const void* data; + size_t dataSize; + size_t componentSize; + + if (p->dataMoments8_.size() > 0) + { + data = p->dataMoments8_.data(); + dataSize = p->dataMoments8_.size() * sizeof(uint8_t); + componentSize = 1; + } + else + { + data = p->dataMoments16_.data(); + dataSize = p->dataMoments16_.size() * sizeof(uint16_t); + componentSize = 2; + } + + return std::tie(data, dataSize, componentSize); +} + void RadarProductView::LoadColorTable( std::shared_ptr colorTable) { diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp index a9abf0cf..29ff6fe8 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp @@ -37,6 +37,8 @@ public: const std::vector& color_table() const; void Initialize(); + + std::tuple GetMomentData(); void LoadColorTable(std::shared_ptr colorTable); std::chrono::system_clock::time_point PlotTime();