mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-01-19 04:02:09 +01:00
47 lines
990 B
C++
47 lines
990 B
C++
#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(4096);
|
|
|
|
QList<QByteArray> fields(ba.split('|'));
|
|
if (fields.size() < 4) {
|
|
_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;
|
|
}
|