Skip to content

Commit

Permalink
[gpx] Implement code-review suggestions
Browse files Browse the repository at this point in the history
Signed-off-by: cyber-toad <the.cyber.toad@proton.me>
  • Loading branch information
cyber-toad committed May 28, 2023
1 parent 55da420 commit ca24272
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 22 deletions.
9 changes: 9 additions & 0 deletions android/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -612,11 +612,17 @@
<data android:pathPattern="/.*\\..*\\..*\\.kmz" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\.kmz" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\.kmz" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\.kmz" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\.kmz" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kmz" />
<data android:pathPattern="/.*\\.kml" />
<data android:pathPattern="/.*\\..*\\.kml" />
<data android:pathPattern="/.*\\..*\\..*\\.kml" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\.kml" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\.kml" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\.kml" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\.kml" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.kml" />
<!-- Old MAPS.ME binary format //-->
<data android:pathPattern="/.*\\.kmb" />
<data android:pathPattern="/.*\\..*\\.kmb" />
Expand All @@ -628,6 +634,9 @@
<data android:pathPattern="/.*\\..*\\..*\\.gpx" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\.gpx" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\.gpx" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\.gpx" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpx" />
<data android:pathPattern="/.*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpx" />
</intent-filter>
</activity>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,8 @@ public void loadBookmarksFile(@NonNull String path, boolean isTemporaryFile)
else if (type.equalsIgnoreCase("kml+xml"))
return filename + ".kml";
}
if (mime.endsWith("gpx+xml") || mime.endsWith("gpx")) // match application/gpx, application/gpx+xml
return filename + ".gpx";
}

return null;
Expand Down
24 changes: 24 additions & 0 deletions iphone/Maps/OMaps.plist
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,30 @@
<string>application/vnd.google-earth.kmz+xml</string>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.xml</string>
</array>
<key>UTTypeDescription</key>
<string>GPS Exchange Format (GPX)</string>
<key>UTTypeIdentifier</key>
<string>com.topografix.gpx</string>
<key>UTTypeReferenceURL</key>
<string>http://www.topografix.com/GPX/1/</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>gpx</string>
<string>GPX</string>
</array>
<key>public.mime-type</key>
<array>
<string>application/gpx+xml</string>
</array>
</dict>
</dict>
</array>
</dict>
</plist>
4 changes: 2 additions & 2 deletions kml/kml_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
project(kml_tests)

set(SRC
gpx_tests.cpp
minzoom_quadtree_tests.cpp
serdes_tests.cpp
tests_data.hpp
minzoom_quadtree_tests.cpp
gpx_tests.cpp
)

omim_add_test(${PROJECT_NAME} ${SRC})
Expand Down
11 changes: 4 additions & 7 deletions kml/serdes_gpx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ void GpxParser::AddAttr(std::string const & attr, std::string const & value)

}

std::string_view const & GpxParser::GetTagFromEnd(size_t n) const
std::string_view GpxParser::GetTagFromEnd(size_t n) const
{
ASSERT_LESS(n, m_tags.size(), ());
return m_tags[m_tags.size() - n - 1];
Expand All @@ -140,15 +140,15 @@ void GpxParser::ParseColor(std::string const & value)
m_color = kml::ToRGBA(colorBytes[0], colorBytes[1], colorBytes[2], (char)255);
}

void GpxParser::Pop(std::string_view const & tag)
void GpxParser::Pop(std::string_view tag)
{
ASSERT_EQUAL(m_tags.back(), tag, ());

if (tag == gpx::kTrkPt || tag == gpx::kRtePt)
{
m2::Point p = mercator::FromLatLon(m_lat, m_lon);
if (m_line.empty() || !AlmostEqualAbs(m_line.back().GetPoint(), p, kMwmPointAccuracy))
m_line.emplace_back(p);
m_line.emplace_back(std::move(p));
}
else if (tag == gpx::kTrkSeg || tag == gpx::kRte)
{
Expand All @@ -173,11 +173,8 @@ void GpxParser::Pop(std::string_view const & tag)
data.m_point = m_org;
data.m_customName = std::move(m_customName);
// Here we set custom name from 'name' field for KML-files exported from 3rd-party services.
if (data.m_name.size() == 1 && data.m_name.begin()->first == kDefaultLangCode &&
data.m_customName.empty())
{
if (data.m_name.size() == 1 && data.m_name.begin()->first == kDefaultLangCode && data.m_customName.empty())
data.m_customName = data.m_name;
}

m_data.m_bookmarksData.push_back(std::move(data));
}
Expand Down
17 changes: 4 additions & 13 deletions kml/serdes_gpx.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,10 @@ class GpxParser
explicit GpxParser(FileData & data);
bool Push(std::string_view const & name);
void AddAttr(std::string const & attr, std::string const & value);
bool IsValidAttribute(std::string const & type, std::string const & value,
std::string const & attrInLowerCase) const;
std::string_view const & GetTagFromEnd(size_t n) const;
void Pop(std::string_view const & tag);
std::string_view GetTagFromEnd(size_t n) const;
void Pop(std::string_view tag);
void CharData(std::string value);

static kml::TrackLayer GetDefaultTrackLayer();


private:
enum GeometryType
{
Expand All @@ -42,14 +38,9 @@ class GpxParser
};

void ResetPoint();
void SetOrigin(std::string const & s);
void ParseLineCoordinates(std::string const & s, char const * blockSeparator,
char const * coordSeparator);
bool MakeValid();
void ParseColor(std::string const &value);
bool GetColorForStyle(std::string const & styleUrl, uint32_t & color) const;
double GetTrackWidthForStyle(std::string const & styleUrl) const;


FileData & m_data;
CategoryData m_compilationData;
CategoryData * m_categoryData; // never null
Expand Down

0 comments on commit ca24272

Please sign in to comment.