MCPcopy Create free account
hub / github.com/comaps/comaps / CreateTransitMarks

Method CreateTransitMarks

libs/map/transit/transit_display.cpp:792–934  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

790}
791
792void TransitRouteDisplay::CreateTransitMarks()
793{
794 if (m_transitMarks.empty())
795 return;
796
797 vector<m2::PointF> const transferMarkerSizes = GetTransitMarkerSizes(kTransferMarkerScale, m_maxSubrouteWidth);
798 vector<m2::PointF> const stopMarkerSizes = GetTransitMarkerSizes(kStopMarkerScale, m_maxSubrouteWidth);
799
800 vector<m2::PointF> transferArrowOffsets;
801 transferArrowOffsets.reserve(transferMarkerSizes.size());
802 for (auto const & size : transferMarkerSizes)
803 transferArrowOffsets.emplace_back(0.0f, size.y * 0.5f);
804
805 auto const vs = static_cast<float>(df::VisualParams::Instance().GetVisualScale());
806
807 auto editSession = m_bmManager->GetEditSession();
808 for (auto const & mark : m_transitMarks)
809 {
810 auto transitMark = CreateMark(mark.m_point, mark.m_featureId);
811
812 dp::TitleDecl titleDecl;
813 if (mark.m_type == TransitMarkInfo::Type::Gate)
814 {
815 if (!mark.m_titles.empty())
816 {
817 TransitMark::GetDefaultTransitTitle(titleDecl);
818 titleDecl.m_primaryText = mark.m_titles.front().m_text;
819 titleDecl.m_primaryOffset.y = kGateTitleOffset;
820 titleDecl.m_anchor = dp::Anchor::Top;
821 titleDecl.m_primaryOptional = true;
822 transitMark->AddTitle(titleDecl);
823 }
824
825 auto const GetSymbolName = [](std::string const & name, char const * suffix)
826 { return name != kZeroIcon ? name + suffix : name; };
827 df::UserPointMark::SymbolNameZoomInfo symbolNames;
828 symbolNames[kSmallIconZoom] = GetSymbolName(mark.m_symbolName, "-s");
829 symbolNames[kMediumIconZoom] = GetSymbolName(mark.m_symbolName, "-m");
830 transitMark->SetSymbolNames(symbolNames);
831
832 transitMark->SetPriority(UserMark::Priority::TransitGate);
833 }
834 else if (mark.m_type == TransitMarkInfo::Type::Transfer)
835 {
836 if (mark.m_titles.size() > 1)
837 {
838 auto titleTransitMark = CreateMark(mark.m_point, mark.m_featureId);
839
840 TransitMark::GetDefaultTransitTitle(titleDecl);
841 titleDecl.m_primaryText = mark.m_titles.front().m_text;
842 titleDecl.m_primaryTextFont.m_color = df::GetColorConstant(mark.m_titles.front().m_color);
843 titleDecl.m_primaryOffset.x = -kTransferTitleOffset * vs;
844 titleDecl.m_anchor = dp::Anchor::Right;
845 titleDecl.m_primaryOptional = false;
846 titleTransitMark->AddTitle(titleDecl);
847
848 titleDecl.m_primaryText = mark.m_titles.back().m_text;
849 titleDecl.m_primaryTextFont.m_color = df::GetColorConstant(mark.m_titles.back().m_color);

Callers 1

InsertRouteMethod · 0.80

Calls 15

GetColorConstantFunction · 0.85
GetVisualScaleMethod · 0.80
GetEditSessionMethod · 0.80
frontMethod · 0.80
AddTitleMethod · 0.80
SetSymbolNamesMethod · 0.80
backMethod · 0.80
SetAnchorMethod · 0.80
SetSymbolOffsetsMethod · 0.80
rbeginMethod · 0.80
SetColoredSymbolsMethod · 0.80
atMethod · 0.80

Tested by

no test coverage detected