1// vim: set tabstop=4 shiftwidth=4 expandtab:
2/*
3Gwenview: an image viewer
4Copyright 2012 Aurélien Gâteau <agateau@kde.org>
5
6This program is free software; you can redistribute it and/or
7modify it under the terms of the GNU General Public License
8as published by the Free Software Foundation; either version 2
9of the License, or (at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with this program; if not, write to the Free Software
18Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA.
19
20*/
21#ifndef CMSPROFILE_H
22#define CMSPROFILE_H
23
24#include <lib/gwenviewlib_export.h>
25
26// Local
27
28// KDE
29#include <KSharedPtr>
30
31// Qt
32#include <QSharedData>
33
34// Exiv2
35#include <exiv2/image.hpp>
36
37class QByteArray;
38class QString;
39
40typedef void* cmsHPROFILE;
41
42namespace Gwenview
43{
44
45namespace Cms
46{
47
48struct ProfilePrivate;
49/**
50 * Wrapper for lcms color profile
51 */
52class GWENVIEWLIB_EXPORT Profile : public QSharedData
53{
54public:
55 typedef KSharedPtr<Profile> Ptr;
56
57 Profile();
58 ~Profile();
59
60 QString description() const;
61 QString manufacturer() const;
62 QString model() const;
63 QString copyright() const;
64
65 cmsHPROFILE handle() const;
66
67 static Profile::Ptr loadFromImageData(const QByteArray& data, const QByteArray& format);
68 static Profile::Ptr loadFromExiv2Image(const Exiv2::Image* image);
69 static Profile::Ptr getMonitorProfile();
70
71private:
72 Profile(cmsHPROFILE);
73 ProfilePrivate* const d;
74};
75
76} // namespace Cms
77} // namespace Gwenview
78
79#endif /* CMSPROFILE_H */
80