[platform] add methods to fetch formatted strings

Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
This commit is contained in:
Kiryl Kaveryn
2025-06-04 19:42:03 +04:00
committed by Konstantin Pastbin
parent f201d0e3cd
commit f8996feb88
2 changed files with 49 additions and 9 deletions

View File

@@ -3,25 +3,27 @@
#include "geometry/mercator.hpp" #include "geometry/mercator.hpp"
#include "base/logging.hpp" #include "base/logging.hpp"
using namespace geometry; #include "platform/duration.hpp"
using namespace location; #include "platform/distance.hpp"
using namespace kml;
namespace
{
double constexpr kInvalidTimestamp = std::numeric_limits<double>::min(); double constexpr kInvalidTimestamp = std::numeric_limits<double>::min();
PointWithAltitude const kInvalidPoint = {m2::PointD::Zero(), kInvalidAltitude}; geometry::PointWithAltitude const kInvalidPoint = {m2::PointD::Zero(), geometry::kInvalidAltitude};
} // namespace
TrackStatistics::TrackStatistics() TrackStatistics::TrackStatistics()
: m_length(0), : m_length(0),
m_duration(0), m_duration(0),
m_ascent(0), m_ascent(0),
m_descent(0), m_descent(0),
m_minElevation(kDefaultAltitudeMeters), m_minElevation(geometry::kDefaultAltitudeMeters),
m_maxElevation(kDefaultAltitudeMeters), m_maxElevation(geometry::kDefaultAltitudeMeters),
m_previousPoint(kInvalidPoint), m_previousPoint(kInvalidPoint),
m_previousTimestamp(kInvalidTimestamp) m_previousTimestamp(kInvalidTimestamp)
{} {}
TrackStatistics::TrackStatistics(MultiGeometry const & geometry) TrackStatistics::TrackStatistics(kml::MultiGeometry const & geometry)
: TrackStatistics() : TrackStatistics()
{ {
for (auto const & line : geometry.m_lines) for (auto const & line : geometry.m_lines)
@@ -36,10 +38,10 @@ TrackStatistics::TrackStatistics(MultiGeometry const & geometry)
} }
} }
void TrackStatistics::AddGpsInfoPoint(GpsInfo const & point) void TrackStatistics::AddGpsInfoPoint(location::GpsInfo const & point)
{ {
auto const pointWithAltitude = geometry::PointWithAltitude(mercator::FromLatLon(point.m_latitude, point.m_longitude), point.m_altitude); auto const pointWithAltitude = geometry::PointWithAltitude(mercator::FromLatLon(point.m_latitude, point.m_longitude), point.m_altitude);
auto const altitude = Altitude(point.m_altitude); auto const altitude = geometry::Altitude(point.m_altitude);
if (HasNoPoints()) if (HasNoPoints())
{ {
m_minElevation = altitude; m_minElevation = altitude;
@@ -108,3 +110,34 @@ bool TrackStatistics::HasNoPoints() const
{ {
return m_previousPoint == kInvalidPoint; return m_previousPoint == kInvalidPoint;
} }
std::string TrackStatistics::GetFormattedLength() const
{
return platform::Distance::CreateFormatted(m_length).ToString();
}
std::string TrackStatistics::GetFormattedDuration() const
{
return platform::Duration(static_cast<int>(m_duration)).GetPlatformLocalizedString();
}
std::string TrackStatistics::GetFormattedAscent() const
{
return platform::Distance::FormatAltitude(m_ascent);
}
std::string TrackStatistics::GetFormattedDescent() const
{
return platform::Distance::FormatAltitude(m_descent);
}
std::string TrackStatistics::GetFormattedMinElevation() const
{
return platform::Distance::FormatAltitude(m_minElevation);
}
std::string TrackStatistics::GetFormattedMaxElevation() const
{
return platform::Distance::FormatAltitude(m_maxElevation);
}

View File

@@ -19,6 +19,13 @@ struct TrackStatistics
geometry::Altitude m_minElevation; geometry::Altitude m_minElevation;
geometry::Altitude m_maxElevation; geometry::Altitude m_maxElevation;
std::string GetFormattedLength() const;
std::string GetFormattedDuration() const;
std::string GetFormattedAscent() const;
std::string GetFormattedDescent() const;
std::string GetFormattedMinElevation() const;
std::string GetFormattedMaxElevation() const;
void AddGpsInfoPoint(location::GpsInfo const & point); void AddGpsInfoPoint(location::GpsInfo const & point);
private: private:
void AddPoints(Points const & points); void AddPoints(Points const & points);