mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-02-17 16:20:48 +01:00
Added support for TomTom ITN files
This commit is contained in:
parent
5efd3d1e33
commit
86e8ac71ee
@ -90,6 +90,7 @@ HEADERS += src/common/config.h \
|
|||||||
src/GUI/mapview.h \
|
src/GUI/mapview.h \
|
||||||
src/GUI/font.h \
|
src/GUI/font.h \
|
||||||
src/GUI/areaitem.h \
|
src/GUI/areaitem.h \
|
||||||
|
src/data/itnparser.h \
|
||||||
src/data/link.h \
|
src/data/link.h \
|
||||||
src/data/ov2parser.h \
|
src/data/ov2parser.h \
|
||||||
src/map/IMG/bitmapline.h \
|
src/map/IMG/bitmapline.h \
|
||||||
@ -278,6 +279,7 @@ SOURCES += src/main.cpp \
|
|||||||
src/GUI/gearratiographitem.cpp \
|
src/GUI/gearratiographitem.cpp \
|
||||||
src/GUI/mapview.cpp \
|
src/GUI/mapview.cpp \
|
||||||
src/GUI/areaitem.cpp \
|
src/GUI/areaitem.cpp \
|
||||||
|
src/data/itnparser.cpp \
|
||||||
src/data/ov2parser.cpp \
|
src/data/ov2parser.cpp \
|
||||||
src/data/waypoint.cpp \
|
src/data/waypoint.cpp \
|
||||||
src/map/IMG/bitmapline.cpp \
|
src/map/IMG/bitmapline.cpp \
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "gpiparser.h"
|
#include "gpiparser.h"
|
||||||
#include "smlparser.h"
|
#include "smlparser.h"
|
||||||
#include "ov2parser.h"
|
#include "ov2parser.h"
|
||||||
|
#include "itnparser.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ static CUPParser cup;
|
|||||||
static GPIParser gpi;
|
static GPIParser gpi;
|
||||||
static SMLParser sml;
|
static SMLParser sml;
|
||||||
static OV2Parser ov2;
|
static OV2Parser ov2;
|
||||||
|
static ITNParser itn;
|
||||||
|
|
||||||
static QMap<QString, Parser*> parsers()
|
static QMap<QString, Parser*> parsers()
|
||||||
{
|
{
|
||||||
@ -64,6 +66,7 @@ static QMap<QString, Parser*> parsers()
|
|||||||
map.insert("gpi", &gpi);
|
map.insert("gpi", &gpi);
|
||||||
map.insert("sml", &sml);
|
map.insert("sml", &sml);
|
||||||
map.insert("ov2", &ov2);
|
map.insert("ov2", &ov2);
|
||||||
|
map.insert("itn", &itn);
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
@ -136,6 +139,7 @@ QString Data::formats()
|
|||||||
+ qApp->translate("Data", "GPI files") + " (*.gpi);;"
|
+ qApp->translate("Data", "GPI files") + " (*.gpi);;"
|
||||||
+ qApp->translate("Data", "GPX files") + " (*.gpx);;"
|
+ qApp->translate("Data", "GPX files") + " (*.gpx);;"
|
||||||
+ qApp->translate("Data", "IGC files") + " (*.igc);;"
|
+ qApp->translate("Data", "IGC files") + " (*.igc);;"
|
||||||
|
+ qApp->translate("Data", "ITN files") + " (*.itn);;"
|
||||||
+ qApp->translate("Data", "JPEG images") + " (*.jpg *.jpeg);;"
|
+ qApp->translate("Data", "JPEG images") + " (*.jpg *.jpeg);;"
|
||||||
+ qApp->translate("Data", "KML files") + " (*.kml);;"
|
+ qApp->translate("Data", "KML files") + " (*.kml);;"
|
||||||
+ qApp->translate("Data", "LOC files") + " (*.loc);;"
|
+ qApp->translate("Data", "LOC files") + " (*.loc);;"
|
||||||
|
46
src/data/itnparser.cpp
Normal file
46
src/data/itnparser.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include <QByteArray>
|
||||||
|
#include "common/textcodec.h"
|
||||||
|
#include "itnparser.h"
|
||||||
|
|
||||||
|
bool ITNParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||||
|
QList<RouteData> &routes, QList<Area> &polygons, QVector<Waypoint> &waypoints)
|
||||||
|
{
|
||||||
|
Q_UNUSED(tracks);
|
||||||
|
Q_UNUSED(waypoints);
|
||||||
|
Q_UNUSED(polygons);
|
||||||
|
RouteData rd;
|
||||||
|
QByteArray ba;
|
||||||
|
TextCodec codec(1252);
|
||||||
|
int lat, lon;
|
||||||
|
bool ok1, ok2;
|
||||||
|
|
||||||
|
_errorLine = 1;
|
||||||
|
_errorString.clear();
|
||||||
|
|
||||||
|
while (!file->atEnd()) {
|
||||||
|
ba = file->readLine();
|
||||||
|
|
||||||
|
QList<QByteArray> fields(ba.split('|'));
|
||||||
|
if (fields.size() != 5) {
|
||||||
|
_errorString = "File format error";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
lon = fields.at(0).toInt(&ok1);
|
||||||
|
lat = fields.at(1).toInt(&ok2);
|
||||||
|
if (!ok1 || !ok2 || lon < -18000000 || lon > 18000000
|
||||||
|
|| lat < -9000000 || lat > 9000000) {
|
||||||
|
_errorString = "Invalid coordinates";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Waypoint wp(Coordinates(lon/1e5, lat/1e5));
|
||||||
|
wp.setName(codec.toString(fields.at(2)));
|
||||||
|
rd.append(wp);
|
||||||
|
|
||||||
|
_errorLine++;
|
||||||
|
}
|
||||||
|
|
||||||
|
routes.append(rd);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
21
src/data/itnparser.h
Normal file
21
src/data/itnparser.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#ifndef ITNPARSER_H
|
||||||
|
#define ITNPARSER_H
|
||||||
|
|
||||||
|
#include "parser.h"
|
||||||
|
|
||||||
|
class ITNParser : public Parser
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ITNParser() : _errorLine(0) {}
|
||||||
|
|
||||||
|
bool parse(QFile *file, QList<TrackData> &tracks, QList<RouteData> &routes,
|
||||||
|
QList<Area> &polygons, QVector<Waypoint> &waypoints);
|
||||||
|
QString errorString() const {return _errorString;}
|
||||||
|
int errorLine() const {return _errorLine;}
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString _errorString;
|
||||||
|
int _errorLine;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ITNPARSER_H
|
Loading…
x
Reference in New Issue
Block a user