mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 02:40:05 +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_ {}, | ||||||
|  | @ -72,8 +71,7 @@ public: | ||||||
|    common::Level2Product      product_; |    common::Level2Product      product_; | ||||||
|    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<std::uint8_t> dataMoments8_; | ||||||
| 
 | 
 | ||||||
|    std::vector<float>   vertices_; |    float         latitude_; | ||||||
|    std::vector<uint8_t> dataMoments8_; |    float         longitude_; | ||||||
| 
 |    float         range_; | ||||||
|    float    latitude_; |    std::uint16_t vcp_; | ||||||
|    float    longitude_; |  | ||||||
|    float    range_; |  | ||||||
|    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( | ||||||
|  | @ -48,17 +49,19 @@ public: | ||||||
|    virtual void |    virtual void | ||||||
|    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; | ||||||
| 
 | 
 | ||||||
|    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
	
	 Dan Paulat
						Dan Paulat