| 559 | } |
| 560 | |
| 561 | void SaveTrackData(Writer & writer, TrackData const & trackData) |
| 562 | { |
| 563 | writer << kIndent2 << "<Placemark>\n"; |
| 564 | if (auto name = GetDefaultLanguage(trackData.m_name)) |
| 565 | { |
| 566 | writer << kIndent4 << "<name>"; |
| 567 | SaveStringWithCDATA(writer, *name); |
| 568 | writer << "</name>\n"; |
| 569 | } |
| 570 | |
| 571 | if (auto const description = GetDefaultLanguage(trackData.m_description)) |
| 572 | { |
| 573 | writer << kIndent4 << "<description>"; |
| 574 | SaveStringWithCDATA(writer, *description); |
| 575 | writer << "</description>\n"; |
| 576 | } |
| 577 | |
| 578 | if (trackData.m_layers.empty()) |
| 579 | MYTHROW(KmlWriter::WriteKmlException, ("Layers list is empty.")); |
| 580 | |
| 581 | auto const & layer = trackData.m_layers.front(); |
| 582 | writer << kIndent4 << "<Style><LineStyle>\n"; |
| 583 | SaveTrackLayer(writer, layer, kIndent6); |
| 584 | writer << kIndent4 << "</LineStyle></Style>\n"; |
| 585 | |
| 586 | if (trackData.m_timestamp != Timestamp()) |
| 587 | writer << kIndent4 << "<TimeStamp><when>" << TimestampToString(trackData.m_timestamp) << "</when></TimeStamp>\n"; |
| 588 | |
| 589 | SaveTrackGeometry(writer, trackData.m_geometry); |
| 590 | SaveTrackExtendedData(writer, trackData); |
| 591 | |
| 592 | writer << kIndent2 << "</Placemark>\n"; |
| 593 | } |
| 594 | |
| 595 | bool ParsePoint(std::string_view s, char const * delim, m2::PointD & pt, geometry::Altitude & altitude) |
| 596 | { |
no test coverage detected