diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2019-12-04 14:28:13 +0300 |
---|---|---|
committer | Arsentiy Milchakov <milcars@mapswithme.com> | 2020-01-13 12:04:14 +0300 |
commit | 9691cc75eff1e2119cce586d06c21f562386e0d8 (patch) | |
tree | 1422726c9a0a48c3e1d0f514dfa3177d5ae313a4 /kml | |
parent | c796a1342fd7d9ea68076a1d77c22d2945ee2210 (diff) |
[bookmarks] Extended bookmarks icons.
Diffstat (limited to 'kml')
-rw-r--r-- | kml/kml_tests/tests_data.hpp | 2 | ||||
-rw-r--r-- | kml/pykmlib/bindings.cpp | 20 | ||||
-rw-r--r-- | kml/serdes.cpp | 4 | ||||
-rw-r--r-- | kml/serdes_binary.hpp | 12 | ||||
-rw-r--r-- | kml/types.hpp | 15 |
5 files changed, 46 insertions, 7 deletions
diff --git a/kml/kml_tests/tests_data.hpp b/kml/kml_tests/tests_data.hpp index b81b5f8a8e..b182f9da11 100644 --- a/kml/kml_tests/tests_data.hpp +++ b/kml/kml_tests/tests_data.hpp @@ -1364,7 +1364,7 @@ std::vector<uint8_t> const kBinKmlV4 = { }; std::vector<uint8_t> const kBinKml = { - 0x05, 0x00, 0x00, 0x1E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x1E, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, diff --git a/kml/pykmlib/bindings.cpp b/kml/pykmlib/bindings.cpp index b3eb35068b..14e28c9748 100644 --- a/kml/pykmlib/bindings.cpp +++ b/kml/pykmlib/bindings.cpp @@ -300,6 +300,14 @@ std::string PredefinedColorToString(PredefinedColor c) case PredefinedColor::Brown: return "BROWN"; case PredefinedColor::Green: return "GREEN"; case PredefinedColor::Orange: return "ORANGE"; + case PredefinedColor::DeepPurple: return "DEEPPURPLE"; + case PredefinedColor::LightBlue: return "LIGHTBLUE"; + case PredefinedColor::Cyan: return "CYAN"; + case PredefinedColor::Teal: return "TEAL"; + case PredefinedColor::Lime: return "LIME"; + case PredefinedColor::DeepOrange: return "DEEPORANGE"; + case PredefinedColor::Gray: return "GRAY"; + case PredefinedColor::BlueGray: return "BLUEGRAY"; case PredefinedColor::Count: CHECK(false, ("Unknown predefined color")); return {}; } } @@ -343,6 +351,12 @@ std::string BookmarkIconToString(BookmarkIcon icon) case BookmarkIcon::Sights: return "SIGHTS"; case BookmarkIcon::Swim: return "SWIM"; case BookmarkIcon::Water: return "WATER"; + case BookmarkIcon::Bar: return "BAR"; + case BookmarkIcon::Transport: return "TRANSPORT"; + case BookmarkIcon::Viewpoint: return "VIEWPOINT"; + case BookmarkIcon::Sport: return "SPORT"; + case BookmarkIcon::Start: return "START"; + case BookmarkIcon::Finish: return "FINISH"; case BookmarkIcon::Count: CHECK(false, ("Unknown bookmark icon")); return {}; } } @@ -698,6 +712,12 @@ BOOST_PYTHON_MODULE(pykmlib) .value(BookmarkIconToString(BookmarkIcon::Sights).c_str(), BookmarkIcon::Sights) .value(BookmarkIconToString(BookmarkIcon::Swim).c_str(), BookmarkIcon::Swim) .value(BookmarkIconToString(BookmarkIcon::Water).c_str(), BookmarkIcon::Water) + .value(BookmarkIconToString(BookmarkIcon::Bar).c_str(), BookmarkIcon::Bar) + .value(BookmarkIconToString(BookmarkIcon::Transport).c_str(), BookmarkIcon::Transport) + .value(BookmarkIconToString(BookmarkIcon::Viewpoint).c_str(), BookmarkIcon::Viewpoint) + .value(BookmarkIconToString(BookmarkIcon::Sport).c_str(), BookmarkIcon::Sport) + .value(BookmarkIconToString(BookmarkIcon::Start).c_str(), BookmarkIcon::Start) + .value(BookmarkIconToString(BookmarkIcon::Finish).c_str(), BookmarkIcon::Finish) .export_values(); class_<ColorData>("ColorData") diff --git a/kml/serdes.cpp b/kml/serdes.cpp index 747d0e3813..4550b06b45 100644 --- a/kml/serdes.cpp +++ b/kml/serdes.cpp @@ -154,7 +154,7 @@ BookmarkIcon GetIcon(std::string const & iconName) for (size_t i = 0; i < static_cast<size_t>(BookmarkIcon::Count); ++i) { auto const icon = static_cast<BookmarkIcon>(i); - if (iconName == DebugPrint(icon)) + if (iconName == ToString(icon)) return icon; } return BookmarkIcon::None; @@ -375,7 +375,7 @@ void SaveBookmarkExtendedData(KmlWriter::WriterWrapper & writer, BookmarkData co } if (bookmarkData.m_icon != BookmarkIcon::None) - writer << kIndent6 << "<mwm:icon>" << DebugPrint(bookmarkData.m_icon) << "</mwm:icon>\n"; + writer << kIndent6 << "<mwm:icon>" << ToString(bookmarkData.m_icon) << "</mwm:icon>\n"; if (!bookmarkData.m_boundTracks.empty()) { diff --git a/kml/serdes_binary.hpp b/kml/serdes_binary.hpp index a9e45e1984..7ee94ad48c 100644 --- a/kml/serdes_binary.hpp +++ b/kml/serdes_binary.hpp @@ -26,7 +26,8 @@ enum class Version : uint8_t V3 = 3, // 7th May 2018 (persistent feature types). V4 = 4, // 26th August 2019 (key-value properties and nearestToponym for bookmarks and tracks, cities -> toponyms). V5 = 5, // 21st November 2019 (extended color palette). - Latest = V5 + V6 = 6, // 3rd December 2019 (extended bookmark icons). + Latest = V6 }; class SerializerKml @@ -138,8 +139,11 @@ public: NonOwningReaderSource source(reader); auto const v = ReadPrimitiveFromSource<Version>(source); - if (v != Version::Latest && v != Version::V2 && v != Version::V3 && v != Version::V4) + if (v != Version::Latest && v != Version::V2 && v != Version::V3 && v != Version::V4 && + v != Version::V5) + { MYTHROW(DeserializeException, ("Incorrect file version.")); + } ReadDeviceId(source); ReadServerId(source); @@ -148,9 +152,9 @@ public: auto subReader = reader.CreateSubReader(source.Pos(), source.Size()); InitializeIfNeeded(*subReader); - if (v == Version::V5 || v == Version::V4) + if (v == Version::V6 || v == Version::V5 || v == Version::V4) { - // NOTE: v.4 and v.5 are binary compatible. + // NOTE: v.4, v.5 and v.6 are binary compatible. DeserializeCategory(subReader, m_data); DeserializeBookmarks(subReader, m_data); DeserializeTracks(subReader, m_data); diff --git a/kml/types.hpp b/kml/types.hpp index d4e94eb5e1..e06ad84e07 100644 --- a/kml/types.hpp +++ b/kml/types.hpp @@ -117,6 +117,15 @@ enum class BookmarkIcon : uint16_t Sights, Swim, Water, + + // Extended icons. + Bar, + Transport, + Viewpoint, + Sport, + Start, + Finish, + Count }; @@ -145,6 +154,12 @@ inline std::string ToString(BookmarkIcon icon) case BookmarkIcon::Sights: return "Sights"; case BookmarkIcon::Swim: return "Swim"; case BookmarkIcon::Water: return "Water"; + case BookmarkIcon::Bar: return "Bar"; + case BookmarkIcon::Transport: return "Transport"; + case BookmarkIcon::Viewpoint: return "Viewpoint"; + case BookmarkIcon::Sport: return "Sport"; + case BookmarkIcon::Start: return "Start"; + case BookmarkIcon::Finish: return "Finish"; case BookmarkIcon::Count: return {}; } UNREACHABLE(); |