File indexing completed on 2024-05-12 15:59:02
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef ExifCHECK_H 0008 #define ExifCHECK_H 0009 0010 #include "KisExportCheckRegistry.h" 0011 #include <KoID.h> 0012 #include <klocalizedstring.h> 0013 #include <kis_assert.h> 0014 #include <kis_image.h> 0015 #include <KoColorSpace.h> 0016 #include <kis_meta_data_store.h> 0017 #include <kis_meta_data_filter_registry_model.h> 0018 #include <kis_exif_info_visitor.h> 0019 0020 class ExifCheck : public KisExportCheckBase 0021 { 0022 public: 0023 0024 ExifCheck(const QString &id, Level level, const QString &customWarning = QString()) 0025 : KisExportCheckBase(id, level, customWarning) 0026 { 0027 if (customWarning.isEmpty()) { 0028 m_warning = i18nc("image conversion warning", "The image contains <b>Exif</b> metadata. The metadata will not be saved."); 0029 } 0030 } 0031 0032 bool checkNeeded(KisImageSP image) const override 0033 { 0034 KisExifInfoVisitor eIV; 0035 eIV.visit(image->rootLayer().data()); 0036 return eIV.exifInfo(); 0037 } 0038 0039 Level check(KisImageSP /*image*/) const override 0040 { 0041 return m_level; 0042 } 0043 0044 }; 0045 0046 class ExifCheckFactory : public KisExportCheckFactory 0047 { 0048 public: 0049 0050 ExifCheckFactory() 0051 { 0052 } 0053 0054 ~ExifCheckFactory() override {} 0055 0056 KisExportCheckBase *create(KisExportCheckBase::Level level, const QString &customWarning) override 0057 { 0058 return new ExifCheck(id(), level, customWarning); 0059 } 0060 0061 QString id() const override { 0062 return "ExifCheck"; 0063 } 0064 0065 }; 0066 0067 class TiffExifCheck : public KisExportCheckBase 0068 { 0069 public: 0070 TiffExifCheck(const QString &id, Level level, const QString &customWarning = QString()) 0071 : KisExportCheckBase(id, level, customWarning) 0072 { 0073 if (customWarning.isEmpty()) { 0074 m_warning = i18nc("image conversion warning", 0075 "The image has <b>Exif</b> metadata and multiple layers. Only metadata <b>in the first " 0076 "layer</b> will be saved."); 0077 } 0078 } 0079 0080 bool checkNeeded(KisImageSP image) const override 0081 { 0082 KIS_ASSERT_RECOVER_RETURN_VALUE(image->rootLayer(), false); 0083 KisExifInfoVisitor eIV; 0084 eIV.visit(image->rootLayer().data()); 0085 return eIV.exifInfo() && image->rootLayer()->childCount() > 1; 0086 } 0087 0088 Level check(KisImageSP /*image*/) const override 0089 { 0090 return m_level; 0091 } 0092 }; 0093 0094 class TiffExifCheckFactory : public KisExportCheckFactory 0095 { 0096 public: 0097 TiffExifCheckFactory() 0098 { 0099 } 0100 0101 ~TiffExifCheckFactory() override 0102 { 0103 } 0104 0105 KisExportCheckBase *create(KisExportCheckBase::Level level, const QString &customWarning) override 0106 { 0107 return new TiffExifCheck(id(), level, customWarning); 0108 } 0109 0110 QString id() const override 0111 { 0112 return "TiffExifCheck"; 0113 } 0114 }; 0115 0116 #endif // ExifCHECK_H