1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-30 22:51:16 +01:00

Improve FIT locations support

This commit is contained in:
Martin Tůma 2024-04-03 02:30:26 +02:00
parent 324168340b
commit 648f90f230

View File

@ -124,7 +124,22 @@ static QMap<int, QString> coursePointSymbolsInit()
return map; return map;
} }
static QMap<int, QString> locationPointSymbolsInit()
{
QMap<int, QString> map;
/* The location symbols are a typical GARMIN mess. Every GPS unit
has probably its own list, so we only add a few generic icons seen
"in the wild" most often. */
map.insert(94, "Flag, Blue");
map.insert(95, "Flag, Green");
map.insert(96, "Flag, Red");
return map;
}
static QMap<int, QString> coursePointSymbols = coursePointSymbolsInit(); static QMap<int, QString> coursePointSymbols = coursePointSymbolsInit();
static QMap<int, QString> locationPointSymbols = locationPointSymbolsInit();
bool FITParser::readData(QFile *file, char *data, size_t size) bool FITParser::readData(QFile *file, char *data, size_t size)
@ -271,7 +286,7 @@ bool FITParser::readField(CTX &ctx, Field *field, QVariant &val, bool &valid)
ctx.len -= field->size; ctx.len -= field->size;
ret = (ba.size() == field->size); ret = (ba.size() == field->size);
val = ret ? ba : QString(); val = ret ? ba : QString();
valid = !ba.isEmpty();} valid = (!ba.isEmpty() && ba.at(0) != 0);}
break; break;
default: default:
ret = skipValue(ctx, field->size); ret = skipValue(ctx, field->size);
@ -388,6 +403,9 @@ bool FITParser::parseData(CTX &ctx, const MessageDefinition *def)
waypoint.rcoordinates().setLon( waypoint.rcoordinates().setLon(
(val.toInt() / (double)0x7fffffff) * 180); (val.toInt() / (double)0x7fffffff) * 180);
break; break;
case 3:
waypoint.setSymbol(locationPointSymbols.value(val.toUInt()));
break;
case 4: case 4:
waypoint.setElevation((val.toUInt() / 5.0) - 500); waypoint.setElevation((val.toUInt() / 5.0) - 500);
break; break;