mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 09:30:06 +00:00
Display expired data as soon as it's reloaded
This commit is contained in:
parent
16044efbf3
commit
df2474c383
12 changed files with 114 additions and 80 deletions
|
|
@ -883,7 +883,17 @@ RadarProductManagerImpl::GetLevel2ProductRecord(
|
||||||
if (record == nullptr)
|
if (record == nullptr)
|
||||||
{
|
{
|
||||||
// Product is expired, reload it
|
// Product is expired, reload it
|
||||||
self_->LoadLevel2Data(recordPtr->first, nullptr);
|
std::shared_ptr<request::NexradFileRequest> request =
|
||||||
|
std::make_shared<request::NexradFileRequest>();
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
request.get(),
|
||||||
|
&request::NexradFileRequest::RequestComplete,
|
||||||
|
self_,
|
||||||
|
[this](std::shared_ptr<request::NexradFileRequest> request)
|
||||||
|
{ emit self_->DataReloaded(request->radar_product_record()); });
|
||||||
|
|
||||||
|
self_->LoadLevel2Data(recordPtr->first, request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -924,7 +934,17 @@ RadarProductManagerImpl::GetLevel3ProductRecord(
|
||||||
if (record == nullptr)
|
if (record == nullptr)
|
||||||
{
|
{
|
||||||
// Product is expired, reload it
|
// Product is expired, reload it
|
||||||
self_->LoadLevel3Data(product, recordPtr->first, nullptr);
|
std::shared_ptr<request::NexradFileRequest> request =
|
||||||
|
std::make_shared<request::NexradFileRequest>();
|
||||||
|
|
||||||
|
QObject::connect(
|
||||||
|
request.get(),
|
||||||
|
&request::NexradFileRequest::RequestComplete,
|
||||||
|
self_,
|
||||||
|
[this](std::shared_ptr<request::NexradFileRequest> request)
|
||||||
|
{ emit self_->DataReloaded(request->radar_product_record()); });
|
||||||
|
|
||||||
|
self_->LoadLevel3Data(product, recordPtr->first, request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,7 @@ public:
|
||||||
void UpdateAvailableProducts();
|
void UpdateAvailableProducts();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void DataReloaded(std::shared_ptr<types::RadarProductRecord> record);
|
||||||
void Level3ProductsChanged();
|
void Level3ProductsChanged();
|
||||||
void NewDataAvailable(common::RadarProductGroup group,
|
void NewDataAvailable(common::RadarProductGroup group,
|
||||||
const std::string& product,
|
const std::string& product,
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@ public:
|
||||||
explicit Level2ProductViewImpl(common::Level2Product product) :
|
explicit Level2ProductViewImpl(common::Level2Product product) :
|
||||||
product_ {product},
|
product_ {product},
|
||||||
selectedElevation_ {0.0f},
|
selectedElevation_ {0.0f},
|
||||||
selectedTime_ {},
|
|
||||||
elevationScan_ {nullptr},
|
elevationScan_ {nullptr},
|
||||||
momentDataBlock0_ {nullptr},
|
momentDataBlock0_ {nullptr},
|
||||||
latitude_ {},
|
latitude_ {},
|
||||||
|
|
@ -73,7 +72,6 @@ public:
|
||||||
wsr88d::rda::DataBlockType dataBlockType_;
|
wsr88d::rda::DataBlockType dataBlockType_;
|
||||||
|
|
||||||
float selectedElevation_;
|
float selectedElevation_;
|
||||||
std::chrono::system_clock::time_point selectedTime_;
|
|
||||||
|
|
||||||
std::shared_ptr<wsr88d::rda::ElevationScan> elevationScan_;
|
std::shared_ptr<wsr88d::rda::ElevationScan> elevationScan_;
|
||||||
std::shared_ptr<wsr88d::rda::MomentDataBlock> momentDataBlock0_;
|
std::shared_ptr<wsr88d::rda::MomentDataBlock> momentDataBlock0_;
|
||||||
|
|
@ -108,6 +106,20 @@ Level2ProductView::Level2ProductView(
|
||||||
RadarProductView(radarProductManager),
|
RadarProductView(radarProductManager),
|
||||||
p(std::make_unique<Level2ProductViewImpl>(product))
|
p(std::make_unique<Level2ProductViewImpl>(product))
|
||||||
{
|
{
|
||||||
|
connect(radarProductManager.get(),
|
||||||
|
&manager::RadarProductManager::DataReloaded,
|
||||||
|
this,
|
||||||
|
[this](std::shared_ptr<types::RadarProductRecord> record)
|
||||||
|
{
|
||||||
|
if (record->radar_product_group() ==
|
||||||
|
common::RadarProductGroup::Level2 &&
|
||||||
|
record->time() == selected_time())
|
||||||
|
{
|
||||||
|
// If the data associated with the currently selected time is
|
||||||
|
// reloaded, update the view
|
||||||
|
Update();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
Level2ProductView::~Level2ProductView() = default;
|
Level2ProductView::~Level2ProductView() = default;
|
||||||
|
|
||||||
|
|
@ -243,11 +255,6 @@ void Level2ProductView::SelectProduct(const std::string& productName)
|
||||||
p->SetProduct(productName);
|
p->SetProduct(productName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Level2ProductView::SelectTime(std::chrono::system_clock::time_point time)
|
|
||||||
{
|
|
||||||
p->selectedTime_ = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Level2ProductViewImpl::SetProduct(const std::string& productName)
|
void Level2ProductViewImpl::SetProduct(const std::string& productName)
|
||||||
{
|
{
|
||||||
SetProduct(common::GetLevel2Product(productName));
|
SetProduct(common::GetLevel2Product(productName));
|
||||||
|
|
@ -378,7 +385,7 @@ void Level2ProductView::ComputeSweep()
|
||||||
std::shared_ptr<wsr88d::rda::ElevationScan> radarData;
|
std::shared_ptr<wsr88d::rda::ElevationScan> radarData;
|
||||||
std::tie(radarData, p->elevationCut_, p->elevationCuts_) =
|
std::tie(radarData, p->elevationCut_, p->elevationCuts_) =
|
||||||
radarProductManager->GetLevel2Data(
|
radarProductManager->GetLevel2Data(
|
||||||
p->dataBlockType_, p->selectedElevation_, p->selectedTime_);
|
p->dataBlockType_, p->selectedElevation_, selected_time());
|
||||||
if (radarData == nullptr || radarData == p->elevationScan_)
|
if (radarData == nullptr || radarData == p->elevationScan_)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -28,25 +28,26 @@ public:
|
||||||
~Level2ProductView();
|
~Level2ProductView();
|
||||||
|
|
||||||
const std::vector<boost::gil::rgba8_pixel_t>& color_table() const override;
|
const std::vector<boost::gil::rgba8_pixel_t>& color_table() const override;
|
||||||
uint16_t color_table_min() const override;
|
std::uint16_t color_table_min() const override;
|
||||||
uint16_t color_table_max() const override;
|
std::uint16_t color_table_max() const override;
|
||||||
float elevation() const override;
|
float elevation() const override;
|
||||||
float range() const override;
|
float range() const override;
|
||||||
std::chrono::system_clock::time_point sweep_time() const override;
|
std::chrono::system_clock::time_point sweep_time() const override;
|
||||||
uint16_t vcp() const override;
|
std::uint16_t vcp() const override;
|
||||||
const std::vector<float>& vertices() const override;
|
const std::vector<float>& vertices() const override;
|
||||||
|
|
||||||
void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override;
|
void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override;
|
||||||
void SelectElevation(float elevation) override;
|
void SelectElevation(float elevation) override;
|
||||||
void SelectProduct(const std::string& productName) override;
|
void SelectProduct(const std::string& productName) override;
|
||||||
void SelectTime(std::chrono::system_clock::time_point time) override;
|
|
||||||
void Update() override;
|
void Update() override;
|
||||||
|
|
||||||
common::RadarProductGroup GetRadarProductGroup() const override;
|
common::RadarProductGroup GetRadarProductGroup() const override;
|
||||||
std::string GetRadarProductName() const override;
|
std::string GetRadarProductName() const override;
|
||||||
std::vector<float> GetElevationCuts() const override;
|
std::vector<float> GetElevationCuts() const override;
|
||||||
std::tuple<const void*, size_t, size_t> GetMomentData() const override;
|
std::tuple<const void*, std::size_t, std::size_t>
|
||||||
std::tuple<const void*, size_t, size_t> GetCfpMomentData() const override;
|
GetMomentData() const override;
|
||||||
|
std::tuple<const void*, std::size_t, std::size_t>
|
||||||
|
GetCfpMomentData() const override;
|
||||||
|
|
||||||
static std::shared_ptr<Level2ProductView>
|
static std::shared_ptr<Level2ProductView>
|
||||||
Create(common::Level2Product product,
|
Create(common::Level2Product product,
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,21 @@ Level3ProductView::Level3ProductView(
|
||||||
RadarProductView(radarProductManager),
|
RadarProductView(radarProductManager),
|
||||||
p(std::make_unique<Level3ProductViewImpl>(product))
|
p(std::make_unique<Level3ProductViewImpl>(product))
|
||||||
{
|
{
|
||||||
|
connect(radarProductManager.get(),
|
||||||
|
&manager::RadarProductManager::DataReloaded,
|
||||||
|
this,
|
||||||
|
[this](std::shared_ptr<types::RadarProductRecord> record)
|
||||||
|
{
|
||||||
|
if (record->radar_product_group() ==
|
||||||
|
common::RadarProductGroup::Level3 &&
|
||||||
|
record->radar_product() == p->product_ &&
|
||||||
|
record->time() == selected_time())
|
||||||
|
{
|
||||||
|
// If the data associated with the currently selected time is
|
||||||
|
// reloaded, update the view
|
||||||
|
Update();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
Level3ProductView::~Level3ProductView() = default;
|
Level3ProductView::~Level3ProductView() = default;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ public:
|
||||||
virtual ~Level3ProductView();
|
virtual ~Level3ProductView();
|
||||||
|
|
||||||
const std::vector<boost::gil::rgba8_pixel_t>& color_table() const override;
|
const std::vector<boost::gil::rgba8_pixel_t>& color_table() const override;
|
||||||
uint16_t color_table_min() const override;
|
std::uint16_t color_table_min() const override;
|
||||||
uint16_t color_table_max() const override;
|
std::uint16_t color_table_max() const override;
|
||||||
|
|
||||||
void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override;
|
void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override;
|
||||||
void Update() override;
|
void Update() override;
|
||||||
|
|
|
||||||
|
|
@ -27,25 +27,18 @@ class Level3RadialViewImpl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit Level3RadialViewImpl() :
|
explicit Level3RadialViewImpl() :
|
||||||
selectedTime_ {},
|
latitude_ {}, longitude_ {}, range_ {}, vcp_ {}, sweepTime_ {}
|
||||||
latitude_ {},
|
|
||||||
longitude_ {},
|
|
||||||
range_ {},
|
|
||||||
vcp_ {},
|
|
||||||
sweepTime_ {}
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
~Level3RadialViewImpl() = default;
|
~Level3RadialViewImpl() = default;
|
||||||
|
|
||||||
std::chrono::system_clock::time_point selectedTime_;
|
|
||||||
|
|
||||||
std::vector<float> vertices_;
|
std::vector<float> vertices_;
|
||||||
std::vector<uint8_t> dataMoments8_;
|
std::vector<std::uint8_t> dataMoments8_;
|
||||||
|
|
||||||
float latitude_;
|
float latitude_;
|
||||||
float longitude_;
|
float longitude_;
|
||||||
float range_;
|
float range_;
|
||||||
uint16_t vcp_;
|
std::uint16_t vcp_;
|
||||||
|
|
||||||
std::chrono::system_clock::time_point sweepTime_;
|
std::chrono::system_clock::time_point sweepTime_;
|
||||||
};
|
};
|
||||||
|
|
@ -92,11 +85,6 @@ std::tuple<const void*, size_t, size_t> Level3RadialView::GetMomentData() const
|
||||||
return std::tie(data, dataSize, componentSize);
|
return std::tie(data, dataSize, componentSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Level3RadialView::SelectTime(std::chrono::system_clock::time_point time)
|
|
||||||
{
|
|
||||||
p->selectedTime_ = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Level3RadialView::ComputeSweep()
|
void Level3RadialView::ComputeSweep()
|
||||||
{
|
{
|
||||||
logger_->debug("ComputeSweep()");
|
logger_->debug("ComputeSweep()");
|
||||||
|
|
@ -111,7 +99,7 @@ void Level3RadialView::ComputeSweep()
|
||||||
// Retrieve message from Radar Product Manager
|
// Retrieve message from Radar Product Manager
|
||||||
std::shared_ptr<wsr88d::rpg::Level3Message> message =
|
std::shared_ptr<wsr88d::rpg::Level3Message> message =
|
||||||
radarProductManager->GetLevel3Data(GetRadarProductName(),
|
radarProductManager->GetLevel3Data(GetRadarProductName(),
|
||||||
p->selectedTime_);
|
selected_time());
|
||||||
if (message == nullptr)
|
if (message == nullptr)
|
||||||
{
|
{
|
||||||
logger_->debug("Level 3 data not found");
|
logger_->debug("Level 3 data not found");
|
||||||
|
|
|
||||||
|
|
@ -27,12 +27,11 @@ public:
|
||||||
|
|
||||||
float range() const override;
|
float range() const override;
|
||||||
std::chrono::system_clock::time_point sweep_time() const override;
|
std::chrono::system_clock::time_point sweep_time() const override;
|
||||||
uint16_t vcp() const override;
|
std::uint16_t vcp() const override;
|
||||||
const std::vector<float>& vertices() const override;
|
const std::vector<float>& vertices() const override;
|
||||||
|
|
||||||
void SelectTime(std::chrono::system_clock::time_point time) override;
|
std::tuple<const void*, std::size_t, std::size_t>
|
||||||
|
GetMomentData() const override;
|
||||||
std::tuple<const void*, size_t, size_t> GetMomentData() const override;
|
|
||||||
|
|
||||||
static std::shared_ptr<Level3RadialView>
|
static std::shared_ptr<Level3RadialView>
|
||||||
Create(const std::string& product,
|
Create(const std::string& product,
|
||||||
|
|
|
||||||
|
|
@ -27,18 +27,11 @@ class Level3RasterViewImpl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit Level3RasterViewImpl() :
|
explicit Level3RasterViewImpl() :
|
||||||
selectedTime_ {},
|
latitude_ {}, longitude_ {}, range_ {}, vcp_ {}, sweepTime_ {}
|
||||||
latitude_ {},
|
|
||||||
longitude_ {},
|
|
||||||
range_ {},
|
|
||||||
vcp_ {},
|
|
||||||
sweepTime_ {}
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
~Level3RasterViewImpl() = default;
|
~Level3RasterViewImpl() = default;
|
||||||
|
|
||||||
std::chrono::system_clock::time_point selectedTime_;
|
|
||||||
|
|
||||||
std::vector<float> vertices_;
|
std::vector<float> vertices_;
|
||||||
std::vector<uint8_t> dataMoments8_;
|
std::vector<uint8_t> dataMoments8_;
|
||||||
|
|
||||||
|
|
@ -92,11 +85,6 @@ std::tuple<const void*, size_t, size_t> Level3RasterView::GetMomentData() const
|
||||||
return std::tie(data, dataSize, componentSize);
|
return std::tie(data, dataSize, componentSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Level3RasterView::SelectTime(std::chrono::system_clock::time_point time)
|
|
||||||
{
|
|
||||||
p->selectedTime_ = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Level3RasterView::ComputeSweep()
|
void Level3RasterView::ComputeSweep()
|
||||||
{
|
{
|
||||||
logger_->debug("ComputeSweep()");
|
logger_->debug("ComputeSweep()");
|
||||||
|
|
@ -111,7 +99,7 @@ void Level3RasterView::ComputeSweep()
|
||||||
// Retrieve message from Radar Product Manager
|
// Retrieve message from Radar Product Manager
|
||||||
std::shared_ptr<wsr88d::rpg::Level3Message> message =
|
std::shared_ptr<wsr88d::rpg::Level3Message> message =
|
||||||
radarProductManager->GetLevel3Data(GetRadarProductName(),
|
radarProductManager->GetLevel3Data(GetRadarProductName(),
|
||||||
p->selectedTime_);
|
selected_time());
|
||||||
if (message == nullptr)
|
if (message == nullptr)
|
||||||
{
|
{
|
||||||
logger_->debug("Level 3 data not found");
|
logger_->debug("Level 3 data not found");
|
||||||
|
|
|
||||||
|
|
@ -27,12 +27,11 @@ public:
|
||||||
|
|
||||||
float range() const override;
|
float range() const override;
|
||||||
std::chrono::system_clock::time_point sweep_time() const override;
|
std::chrono::system_clock::time_point sweep_time() const override;
|
||||||
uint16_t vcp() const override;
|
std::uint16_t vcp() const override;
|
||||||
const std::vector<float>& vertices() const override;
|
const std::vector<float>& vertices() const override;
|
||||||
|
|
||||||
void SelectTime(std::chrono::system_clock::time_point time) override;
|
std::tuple<const void*, std::size_t, std::size_t>
|
||||||
|
GetMomentData() const override;
|
||||||
std::tuple<const void*, size_t, size_t> GetMomentData() const override;
|
|
||||||
|
|
||||||
static std::shared_ptr<Level3RasterView>
|
static std::shared_ptr<Level3RasterView>
|
||||||
Create(const std::string& product,
|
Create(const std::string& product,
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,12 @@ static const std::string logPrefix_ = "scwx::qt::view::radar_product_view";
|
||||||
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
|
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
|
||||||
|
|
||||||
// Default color table should be transparent to prevent flicker
|
// Default color table should be transparent to prevent flicker
|
||||||
static const std::vector<boost::gil::rgba8_pixel_t> DEFAULT_COLOR_TABLE = {
|
static const std::vector<boost::gil::rgba8_pixel_t> kDefaultColorTable_ = {
|
||||||
boost::gil::rgba8_pixel_t(0, 128, 0, 0),
|
boost::gil::rgba8_pixel_t(0, 128, 0, 0),
|
||||||
boost::gil::rgba8_pixel_t(255, 192, 0, 0),
|
boost::gil::rgba8_pixel_t(255, 192, 0, 0),
|
||||||
boost::gil::rgba8_pixel_t(255, 0, 0, 0)};
|
boost::gil::rgba8_pixel_t(255, 0, 0, 0)};
|
||||||
static const uint16_t DEFAULT_COLOR_TABLE_MIN = 2u;
|
static const std::uint16_t kDefaultColorTableMin_ = 2u;
|
||||||
static const uint16_t DEFAULT_COLOR_TABLE_MAX = 255u;
|
static const std::uint16_t kDefaultColorTableMax_ = 255u;
|
||||||
|
|
||||||
class RadarProductViewImpl
|
class RadarProductViewImpl
|
||||||
{
|
{
|
||||||
|
|
@ -30,6 +30,7 @@ public:
|
||||||
std::shared_ptr<manager::RadarProductManager> radarProductManager) :
|
std::shared_ptr<manager::RadarProductManager> radarProductManager) :
|
||||||
initialized_ {false},
|
initialized_ {false},
|
||||||
sweepMutex_ {},
|
sweepMutex_ {},
|
||||||
|
selectedTime_ {},
|
||||||
radarProductManager_ {radarProductManager}
|
radarProductManager_ {radarProductManager}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -38,6 +39,8 @@ public:
|
||||||
bool initialized_;
|
bool initialized_;
|
||||||
std::mutex sweepMutex_;
|
std::mutex sweepMutex_;
|
||||||
|
|
||||||
|
std::chrono::system_clock::time_point selectedTime_;
|
||||||
|
|
||||||
std::shared_ptr<manager::RadarProductManager> radarProductManager_;
|
std::shared_ptr<manager::RadarProductManager> radarProductManager_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -49,17 +52,17 @@ RadarProductView::~RadarProductView() = default;
|
||||||
const std::vector<boost::gil::rgba8_pixel_t>&
|
const std::vector<boost::gil::rgba8_pixel_t>&
|
||||||
RadarProductView::color_table() const
|
RadarProductView::color_table() const
|
||||||
{
|
{
|
||||||
return DEFAULT_COLOR_TABLE;
|
return kDefaultColorTable_;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t RadarProductView::color_table_min() const
|
std::uint16_t RadarProductView::color_table_min() const
|
||||||
{
|
{
|
||||||
return DEFAULT_COLOR_TABLE_MIN;
|
return kDefaultColorTableMin_;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t RadarProductView::color_table_max() const
|
std::uint16_t RadarProductView::color_table_max() const
|
||||||
{
|
{
|
||||||
return DEFAULT_COLOR_TABLE_MAX;
|
return kDefaultColorTableMax_;
|
||||||
}
|
}
|
||||||
|
|
||||||
float RadarProductView::elevation() const
|
float RadarProductView::elevation() const
|
||||||
|
|
@ -78,6 +81,11 @@ float RadarProductView::range() const
|
||||||
return 0.0f;
|
return 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::chrono::system_clock::time_point RadarProductView::selected_time() const
|
||||||
|
{
|
||||||
|
return p->selectedTime_;
|
||||||
|
}
|
||||||
|
|
||||||
std::chrono::system_clock::time_point RadarProductView::sweep_time() const
|
std::chrono::system_clock::time_point RadarProductView::sweep_time() const
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
|
|
@ -103,6 +111,11 @@ void RadarProductView::Initialize()
|
||||||
|
|
||||||
void RadarProductView::SelectElevation(float /*elevation*/) {}
|
void RadarProductView::SelectElevation(float /*elevation*/) {}
|
||||||
|
|
||||||
|
void RadarProductView::SelectTime(std::chrono::system_clock::time_point time)
|
||||||
|
{
|
||||||
|
p->selectedTime_ = time;
|
||||||
|
}
|
||||||
|
|
||||||
bool RadarProductView::IsInitialized() const
|
bool RadarProductView::IsInitialized() const
|
||||||
{
|
{
|
||||||
return p->initialized_;
|
return p->initialized_;
|
||||||
|
|
@ -113,12 +126,12 @@ std::vector<float> RadarProductView::GetElevationCuts() const
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<const void*, size_t, size_t>
|
std::tuple<const void*, std::size_t, std::size_t>
|
||||||
RadarProductView::GetCfpMomentData() const
|
RadarProductView::GetCfpMomentData() const
|
||||||
{
|
{
|
||||||
const void* data = nullptr;
|
const void* data = nullptr;
|
||||||
size_t dataSize = 0;
|
std::size_t dataSize = 0;
|
||||||
size_t componentSize = 0;
|
std::size_t componentSize = 0;
|
||||||
|
|
||||||
return std::tie(data, dataSize, componentSize);
|
return std::tie(data, dataSize, componentSize);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,15 +30,16 @@ public:
|
||||||
virtual ~RadarProductView();
|
virtual ~RadarProductView();
|
||||||
|
|
||||||
virtual const std::vector<boost::gil::rgba8_pixel_t>& color_table() const;
|
virtual const std::vector<boost::gil::rgba8_pixel_t>& color_table() const;
|
||||||
virtual uint16_t color_table_min() const;
|
virtual std::uint16_t color_table_min() const;
|
||||||
virtual uint16_t color_table_max() const;
|
virtual std::uint16_t color_table_max() const;
|
||||||
virtual float elevation() const;
|
virtual float elevation() const;
|
||||||
virtual float range() const;
|
virtual float range() const;
|
||||||
virtual std::chrono::system_clock::time_point sweep_time() const;
|
virtual std::chrono::system_clock::time_point sweep_time() const;
|
||||||
virtual uint16_t vcp() const = 0;
|
virtual std::uint16_t vcp() const = 0;
|
||||||
virtual const std::vector<float>& vertices() const = 0;
|
virtual const std::vector<float>& vertices() const = 0;
|
||||||
|
|
||||||
std::shared_ptr<manager::RadarProductManager> radar_product_manager() const;
|
std::shared_ptr<manager::RadarProductManager> radar_product_manager() const;
|
||||||
|
std::chrono::system_clock::time_point selected_time() const;
|
||||||
std::mutex& sweep_mutex();
|
std::mutex& sweep_mutex();
|
||||||
|
|
||||||
void set_radar_product_manager(
|
void set_radar_product_manager(
|
||||||
|
|
@ -49,7 +50,7 @@ public:
|
||||||
LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) = 0;
|
LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) = 0;
|
||||||
virtual void SelectElevation(float elevation);
|
virtual void SelectElevation(float elevation);
|
||||||
virtual void SelectProduct(const std::string& productName) = 0;
|
virtual void SelectProduct(const std::string& productName) = 0;
|
||||||
virtual void SelectTime(std::chrono::system_clock::time_point time) = 0;
|
void SelectTime(std::chrono::system_clock::time_point time);
|
||||||
virtual void Update() = 0;
|
virtual void Update() = 0;
|
||||||
|
|
||||||
bool IsInitialized() const;
|
bool IsInitialized() const;
|
||||||
|
|
@ -57,8 +58,10 @@ public:
|
||||||
virtual common::RadarProductGroup GetRadarProductGroup() const = 0;
|
virtual common::RadarProductGroup GetRadarProductGroup() const = 0;
|
||||||
virtual std::string GetRadarProductName() const = 0;
|
virtual std::string GetRadarProductName() const = 0;
|
||||||
virtual std::vector<float> GetElevationCuts() const;
|
virtual std::vector<float> GetElevationCuts() const;
|
||||||
virtual std::tuple<const void*, size_t, size_t> GetMomentData() const = 0;
|
virtual std::tuple<const void*, std::size_t, std::size_t>
|
||||||
virtual std::tuple<const void*, size_t, size_t> GetCfpMomentData() const;
|
GetMomentData() const = 0;
|
||||||
|
virtual std::tuple<const void*, std::size_t, std::size_t>
|
||||||
|
GetCfpMomentData() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void UpdateColorTable() = 0;
|
virtual void UpdateColorTable() = 0;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue