1/*
2 <one line to give the library's name and an idea of what it does.>
3 Copyright (C) 2012 Vishesh Handa <me@vhanda.in>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18*/
19
20
21#ifndef EXIV2EXTRACTOR_H
22#define EXIV2EXTRACTOR_H
23
24#include "extractorplugin.h"
25#include <exiv2/exiv2.hpp>
26
27namespace KFileMetaData
28{
29
30class Exiv2Extractor : public ExtractorPlugin
31{
32 Q_OBJECT
33 Q_PLUGIN_METADATA(IID "org.kde.kf5.kfilemetadata.ExtractorPlugin"
34 FILE "exiv2extractor.json")
35 Q_INTERFACES(KFileMetaData::ExtractorPlugin)
36
37public:
38 explicit Exiv2Extractor(QObject* parent = nullptr);
39
40 void extract(ExtractionResult* result) override;
41 QStringList mimetypes() const override;
42
43private:
44 void add(ExtractionResult* result, const Exiv2::ExifData& data,
45 Property::Property prop,
46 const char* name, QVariant::Type type);
47
48 double fetchGpsDouble(const Exiv2::ExifData& data, const char* name);
49 double fetchGpsAltitude(const Exiv2::ExifData& data);
50 QByteArray fetchByteArray(const Exiv2::ExifData& data, const char* name);
51};
52}
53
54#endif // EXIV2EXTRACTOR_H
55