From 48e8f32e01530f57154a909ecc0d3c1574623a16 Mon Sep 17 00:00:00 2001 From: mvglasow Date: Fri, 12 Sep 2025 18:46:50 +0300 Subject: [PATCH] [traff_assessment_tool] Use different marker colors for reference points Also fixes bug with DebugMarkPoint no longer rendering after the last merge Signed-off-by: mvglasow --- .../traff_assessment_tool/traffic_model.cpp | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/libs/traffxml/traff_assessment_tool/traffic_model.cpp b/libs/traffxml/traff_assessment_tool/traffic_model.cpp index e9f563af2..1b31d6cfa 100644 --- a/libs/traffxml/traff_assessment_tool/traffic_model.cpp +++ b/libs/traffxml/traff_assessment_tool/traffic_model.cpp @@ -18,6 +18,13 @@ namespace traffxml { + +constexpr static dp::Color kColorFrom(0x309302ff); +constexpr static dp::Color kColorAt(0x1a5ec1ff); +constexpr static dp::Color kColorVia(0xf19721ff); +constexpr static dp::Color kColorNotVia(0x8c5678ff); +constexpr static dp::Color kColorTo(0xe42300ff); + namespace { void RemovePointFromPull(m2::PointD const & toBeRemoved, std::vector & pool) @@ -443,20 +450,24 @@ void TrafficModel::OnItemSelected(QItemSelection const & selected, QItemSelectio return; m2::RectD rect; - std::vector points; - for (auto & coords : { - message->m_location.value().m_from, - message->m_location.value().m_at, - message->m_location.value().m_via, - message->m_location.value().m_notVia, - message->m_location.value().m_to + auto editSession = m_framework.GetBookmarkManager().GetEditSession(); + editSession.ClearGroup(UserMark::Type::COLORED); + editSession.SetIsVisible(UserMark::Type::COLORED, true); + + for (auto & [coords, color] : { + std::pair{message->m_location.value().m_from, kColorFrom}, + std::pair{message->m_location.value().m_at, kColorAt}, + std::pair{message->m_location.value().m_via, kColorVia}, + std::pair{message->m_location.value().m_notVia, kColorNotVia}, + std::pair{message->m_location.value().m_to, kColorTo} }) if (coords) { auto point = mercator::FromLatLon(coords.value().m_coordinates); rect.Add(point); - points.push_back(point); + auto mark = editSession.CreateUserMark(point); + mark->SetColor(color); } if (rect.IsValid()) @@ -464,12 +475,6 @@ void TrafficModel::OnItemSelected(QItemSelection const & selected, QItemSelectio rect.Scale(1.5); m_framework.ShowRect(rect, 15 /* maxScale */, true /* animation */, true /* useVisibleViewport */); } - - auto editSession = m_framework.GetBookmarkManager().GetEditSession(); - editSession.ClearGroup(UserMark::Type::DEBUG_MARK); - editSession.SetIsVisible(UserMark::Type::DEBUG_MARK, true); - for (auto const & p : points) - editSession.CreateUserMark(p); } Qt::ItemFlags TrafficModel::flags(QModelIndex const & index) const