File indexing completed on 2024-05-12 04:19:35

0001 // vim: set tabstop=4 shiftwidth=4 expandtab:
0002 /*
0003 Gwenview: an image viewer
0004 Copyright 2012 Aurélien Gâteau <agateau@kde.org>
0005 
0006 This program is free software; you can redistribute it and/or
0007 modify it under the terms of the GNU General Public License
0008 as published by the Free Software Foundation; either version 2
0009 of the License, or (at your option) any later version.
0010 
0011 This program is distributed in the hope that it will be useful,
0012 but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 GNU General Public License for more details.
0015 
0016 You should have received a copy of the GNU General Public License
0017 along with this program; if not, write to the Free Software
0018 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA.
0019 
0020 */
0021 #ifndef CMSPROFILE_H
0022 #define CMSPROFILE_H
0023 
0024 #include <lib/gwenviewlib_export.h>
0025 
0026 // Local
0027 
0028 // Qt
0029 #include <QExplicitlySharedDataPointer>
0030 #include <QSharedData>
0031 
0032 class QByteArray;
0033 class QString;
0034 
0035 namespace Exiv2
0036 {
0037     class Image;
0038 }
0039 
0040 using cmsHPROFILE = void *;
0041 
0042 namespace Gwenview
0043 {
0044 
0045 namespace Cms
0046 {
0047 
0048 struct ProfilePrivate;
0049 /**
0050  * Wrapper for lcms color profile
0051  */
0052 class GWENVIEWLIB_EXPORT Profile : public QSharedData
0053 {
0054 public:
0055     using Ptr = QExplicitlySharedDataPointer<Profile>;
0056 
0057     Profile();
0058     ~Profile();
0059 
0060     QString description() const;
0061     QString manufacturer() const;
0062     QString model() const;
0063     QString copyright() const;
0064 
0065     cmsHPROFILE handle() const;
0066 
0067     static Profile::Ptr loadFromImageData(const QByteArray& data, const QByteArray& format);
0068     static Profile::Ptr loadFromExiv2Image(const Exiv2::Image* image);
0069     static Profile::Ptr loadFromICC(const QByteArray &data);
0070     static Profile::Ptr getMonitorProfile();
0071     static Profile::Ptr getSRgbProfile();
0072 
0073 private:
0074     Profile(cmsHPROFILE);
0075     ProfilePrivate* const d;
0076 };
0077 
0078 } // namespace Cms
0079 } // namespace Gwenview
0080 
0081 #endif /* CMSPROFILE_H */