File indexing completed on 2025-04-27 03:58:09
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2007-07-20 0007 * Description : Loader for thumbnails 0008 * 0009 * SPDX-FileCopyrightText: 2003-2005 by Renchi Raju <renchi dot raju at gmail dot com> 0010 * SPDX-FileCopyrightText: 2003-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * SPDX-FileCopyrightText: 2006-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de> 0012 * 0013 * SPDX-License-Identifier: GPL-2.0-or-later 0014 * 0015 * ============================================================ */ 0016 0017 #ifndef DIGIKAM_THUMB_NAIL_CREATOR_PRIVATE_H 0018 #define DIGIKAM_THUMB_NAIL_CREATOR_PRIVATE_H 0019 0020 #include "thumbnailcreator.h" 0021 0022 // Qt includes 0023 0024 #include <QUrl> 0025 #include <QFile> 0026 #include <QBuffer> 0027 #include <QPainter> 0028 #include <QIODevice> 0029 #include <QFileInfo> 0030 #include <QUrlQuery> 0031 #include <QApplication> 0032 #include <QMimeDatabase> 0033 #include <QTemporaryFile> 0034 #include <QScopedPointer> 0035 #include <QStandardPaths> 0036 0037 // KDE includes 0038 0039 #include <klocalizedstring.h> 0040 0041 // Local includes 0042 0043 #include "digikam_config.h" 0044 #include "metaengine_previews.h" 0045 #include "metaengine_rotation.h" 0046 #include "filereadwritelock.h" 0047 #include "drawdecoder.h" 0048 #include "drawfiles.h" 0049 #include "digikam_debug.h" 0050 #include "dimg.h" 0051 #include "dimgloader.h" 0052 #include "dimgloaderobserver.h" 0053 #include "dmetadata.h" 0054 #include "iccmanager.h" 0055 #include "iccprofile.h" 0056 #include "iccsettings.h" 0057 #include "loadsavethread.h" 0058 #include "jpegutils.h" 0059 #include "pgfutils.h" 0060 #include "tagregion.h" 0061 #include "thumbsdbaccess.h" 0062 #include "thumbsdb.h" 0063 #include "thumbsdbbackend.h" 0064 #include "thumbnailsize.h" 0065 0066 #ifdef HAVE_MEDIAPLAYER 0067 # include "videothumbnailer.h" 0068 # include "videostripfilter.h" 0069 #endif 0070 0071 namespace Digikam 0072 { 0073 0074 class ThumbnailImage 0075 { 0076 public: 0077 0078 explicit ThumbnailImage() 0079 : exifOrientation(DMetadata::ORIENTATION_UNSPECIFIED) 0080 { 0081 } 0082 0083 bool isNull() const 0084 { 0085 return qimage.isNull(); 0086 } 0087 0088 public: 0089 0090 QImage qimage; 0091 int exifOrientation; 0092 }; 0093 0094 // ------------------------------------------------------------------- 0095 0096 class Q_DECL_HIDDEN ThumbnailCreator::Private 0097 { 0098 public: 0099 0100 explicit Private() 0101 : exifRotate (true), 0102 removeAlphaChannel (true), 0103 onlyLargeThumbnails (false), 0104 thumbnailStorage (ThumbnailCreator::FreeDesktopStandard), 0105 infoProvider (nullptr), 0106 dbIdForReplacement (-1), 0107 thumbnailSize (0), 0108 digiKamFingerPrint (QLatin1String("Digikam Thumbnail Generator")), // Used internally as PNG metadata. Do not use i18n. 0109 observer (nullptr) 0110 { 0111 fastRawSettings.optimizeTimeLoading(); 0112 fastRawSettings.rawPrm.halfSizeColorImage = true; 0113 fastRawSettings.rawPrm.sixteenBitsImage = false; 0114 } 0115 0116 bool exifRotate; 0117 bool removeAlphaChannel; 0118 bool onlyLargeThumbnails; 0119 0120 ThumbnailCreator::StorageMethod thumbnailStorage; 0121 ThumbnailInfoProvider* infoProvider; 0122 int dbIdForReplacement; 0123 0124 int thumbnailSize; 0125 0126 QString error; 0127 QString bigThumbPath; 0128 QString smallThumbPath; 0129 0130 QString digiKamFingerPrint; 0131 0132 QImage alphaImage; 0133 0134 DImgLoaderObserver* observer; 0135 DRawDecoding rawSettings; 0136 DRawDecoding fastRawSettings; 0137 0138 public: 0139 0140 int storageSize() const; 0141 }; 0142 0143 } // namespace Digikam 0144 0145 #endif // DIGIKAM_THUMB_NAIL_CREATOR_PRIVATE_H