#ifndef EXIFPARSER_H #define EXIFPARSER_H #include #include "parser.h" class TIFFFile; class EXIFParser : public Parser { public: bool parse(QFile *file, QList &tracks, QList &routes, QList &polygons, QVector &waypoints); QString errorString() const {return _errorString;} int errorLine() const {return 0;} private: struct IFDEntry { IFDEntry() : type(0), count(0), offset(0) {} quint16 type; quint32 count; quint32 offset; }; bool parseTIFF(QFile *file, QVector &waypoints); bool readIFD(TIFFFile &file, quint32 offset, const QSet &tags, QMap &entries) const; bool readEntry(TIFFFile &file, const QSet &tags, QMap &entries) const; double coordinate(TIFFFile &file, const IFDEntry &ll) const; Coordinates coordinates(TIFFFile &file, const IFDEntry &lon, const IFDEntry &lonRef, const IFDEntry &lat, const IFDEntry &latRef) const; double altitude(TIFFFile &file, const IFDEntry &alt, const IFDEntry &altRef) const; QDate date(TIFFFile &file, const IFDEntry &ds) const; QTime time(TIFFFile &file, const IFDEntry &ts) const; QString _errorString; }; #endif // EXIFPARSER_H