Placefile text animation support

This commit is contained in:
Dan Paulat 2023-09-04 21:56:59 -05:00
parent e013b9a77f
commit 4cc1a2b310
14 changed files with 89 additions and 1 deletions

View file

@ -95,6 +95,8 @@ public:
bool dirty_ {false};
bool thresholded_ {false};
std::chrono::system_clock::time_point selectedTime_ {};
std::mutex iconMutex_;
boost::unordered_flat_map<std::size_t, PlacefileIconInfo>
@ -139,6 +141,12 @@ PlacefileIcons::~PlacefileIcons() = default;
PlacefileIcons::PlacefileIcons(PlacefileIcons&&) noexcept = default;
PlacefileIcons& PlacefileIcons::operator=(PlacefileIcons&&) noexcept = default;
void PlacefileIcons::set_selected_time(
std::chrono::system_clock::time_point selectedTime)
{
p->selectedTime_ = selectedTime;
}
void PlacefileIcons::set_thresholded(bool thresholded)
{
p->thresholded_ = thresholded;

View file

@ -27,6 +27,7 @@ public:
PlacefileIcons(PlacefileIcons&&) noexcept;
PlacefileIcons& operator=(PlacefileIcons&&) noexcept;
void set_selected_time(std::chrono::system_clock::time_point selectedTime);
void set_thresholded(bool thresholded);
void Initialize() override;

View file

@ -77,6 +77,8 @@ public:
bool dirty_ {false};
bool thresholded_ {false};
std::chrono::system_clock::time_point selectedTime_ {};
std::mutex imageMutex_;
boost::unordered_flat_map<std::string, PlacefileImageInfo>
@ -117,6 +119,12 @@ PlacefileImages::PlacefileImages(PlacefileImages&&) noexcept = default;
PlacefileImages&
PlacefileImages::operator=(PlacefileImages&&) noexcept = default;
void PlacefileImages::set_selected_time(
std::chrono::system_clock::time_point selectedTime)
{
p->selectedTime_ = selectedTime;
}
void PlacefileImages::set_thresholded(bool thresholded)
{
p->thresholded_ = thresholded;

View file

@ -25,6 +25,7 @@ public:
PlacefileImages(PlacefileImages&&) noexcept;
PlacefileImages& operator=(PlacefileImages&&) noexcept;
void set_selected_time(std::chrono::system_clock::time_point selectedTime);
void set_thresholded(bool thresholded);
void Initialize() override;

View file

@ -75,6 +75,8 @@ public:
bool dirty_ {false};
bool thresholded_ {false};
std::chrono::system_clock::time_point selectedTime_ {};
std::mutex lineMutex_ {};
std::size_t currentNumLines_ {};
@ -109,6 +111,12 @@ PlacefileLines::~PlacefileLines() = default;
PlacefileLines::PlacefileLines(PlacefileLines&&) noexcept = default;
PlacefileLines& PlacefileLines::operator=(PlacefileLines&&) noexcept = default;
void PlacefileLines::set_selected_time(
std::chrono::system_clock::time_point selectedTime)
{
p->selectedTime_ = selectedTime;
}
void PlacefileLines::set_thresholded(bool thresholded)
{
p->thresholded_ = thresholded;

View file

@ -25,6 +25,7 @@ public:
PlacefileLines(PlacefileLines&&) noexcept;
PlacefileLines& operator=(PlacefileLines&&) noexcept;
void set_selected_time(std::chrono::system_clock::time_point selectedTime);
void set_thresholded(bool thresholded);
void Initialize() override;

View file

@ -91,6 +91,8 @@ public:
bool dirty_ {false};
bool thresholded_ {false};
std::chrono::system_clock::time_point selectedTime_ {};
boost::container::stable_vector<TessVertexArray> tessCombineBuffer_ {};
std::mutex bufferMutex_ {};
@ -126,6 +128,12 @@ PlacefilePolygons::PlacefilePolygons(PlacefilePolygons&&) noexcept = default;
PlacefilePolygons&
PlacefilePolygons::operator=(PlacefilePolygons&&) noexcept = default;
void PlacefilePolygons::set_selected_time(
std::chrono::system_clock::time_point selectedTime)
{
p->selectedTime_ = selectedTime;
}
void PlacefilePolygons::set_thresholded(bool thresholded)
{
p->thresholded_ = thresholded;

View file

@ -27,6 +27,7 @@ public:
PlacefilePolygons(PlacefilePolygons&&) noexcept;
PlacefilePolygons& operator=(PlacefilePolygons&&) noexcept;
void set_selected_time(std::chrono::system_clock::time_point selectedTime);
void set_thresholded(bool thresholded);
void Initialize() override;

View file

@ -46,6 +46,8 @@ public:
bool thresholded_ {false};
std::chrono::system_clock::time_point selectedTime_ {};
std::uint32_t textId_ {};
glm::vec2 mapScreenCoordLocation_ {};
float mapScale_ {1.0f};
@ -77,6 +79,12 @@ void PlacefileText::set_placefile_name(const std::string& placefileName)
p->placefileName_ = placefileName;
}
void PlacefileText::set_selected_time(
std::chrono::system_clock::time_point selectedTime)
{
p->selectedTime_ = selectedTime;
}
void PlacefileText::set_thresholded(bool thresholded)
{
p->thresholded_ = thresholded;
@ -117,7 +125,15 @@ void PlacefileText::Impl::RenderTextDrawItem(
const QMapLibreGL::CustomLayerRenderParameters& params,
const std::shared_ptr<const gr::Placefile::TextDrawItem>& di)
{
if (!thresholded_ || mapDistance_ <= di->threshold_)
// If no time has been selected, use the current time
std::chrono::system_clock::time_point selectedTime =
(selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() :
selectedTime_;
if ((!thresholded_ || mapDistance_ <= di->threshold_) &&
(di->startTime_ == std::chrono::system_clock::time_point {} ||
(di->startTime_ <= selectedTime && selectedTime < di->endTime_)))
{
const auto screenCoordinates = (util::maplibre::LatLongToScreenCoordinate(
{di->latitude_, di->longitude_}) -

View file

@ -27,6 +27,7 @@ public:
PlacefileText& operator=(PlacefileText&&) noexcept;
void set_placefile_name(const std::string& placefileName);
void set_selected_time(std::chrono::system_clock::time_point selectedTime);
void set_thresholded(bool thresholded);
void Initialize() override;

View file

@ -46,6 +46,8 @@ public:
bool dirty_ {false};
bool thresholded_ {false};
std::chrono::system_clock::time_point selectedTime_ {};
std::mutex bufferMutex_ {};
std::vector<GLfloat> currentBuffer_ {};
@ -76,6 +78,12 @@ PlacefileTriangles::PlacefileTriangles(PlacefileTriangles&&) noexcept = default;
PlacefileTriangles&
PlacefileTriangles::operator=(PlacefileTriangles&&) noexcept = default;
void PlacefileTriangles::set_selected_time(
std::chrono::system_clock::time_point selectedTime)
{
p->selectedTime_ = selectedTime;
}
void PlacefileTriangles::set_thresholded(bool thresholded)
{
p->thresholded_ = thresholded;

View file

@ -25,6 +25,7 @@ public:
PlacefileTriangles(PlacefileTriangles&&) noexcept;
PlacefileTriangles& operator=(PlacefileTriangles&&) noexcept;
void set_selected_time(std::chrono::system_clock::time_point selectedTime);
void set_thresholded(bool thresholded);
void Initialize() override;