digiKam
Loading...
Searching...
No Matches
thumbnailcreator.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2007-07-20
7 * Description : Loader for thumbnails
8 *
9 * SPDX-FileCopyrightText: 2003-2005 by Renchi Raju <renchi dot raju at gmail dot com>
10 * SPDX-FileCopyrightText: 2003-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 * SPDX-FileCopyrightText: 2006-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Qt includes
20
21#include <QString>
22#include <QPixmap>
23#include <QImage>
24
25// Local includes
26
27#include "drawdecoding.h"
28#include "digikam_export.h"
29#include "thumbnailinfo.h"
30
31namespace Digikam
32{
33
34class IccProfile;
35class DImgLoaderObserver;
36class DMetadata;
37class ThumbnailImage;
38class ThumbsDbInfo;
39
40class DIGIKAM_EXPORT ThumbnailCreator
41{
42public:
43
50
51public:
52
57 explicit ThumbnailCreator(StorageMethod method);
58
62 ThumbnailCreator(int thumbnailSize, StorageMethod method);
64
68 QImage load(const ThumbnailIdentifier& identifier, bool onlyStorage = false) const;
69
74 QImage loadDetail(const ThumbnailIdentifier& identifier,
75 const QRect& detailRect,
76 bool onlyStorage = false) const;
77
81 void pregenerate(const ThumbnailIdentifier& identifier) const;
82 void pregenerateDetail(const ThumbnailIdentifier& identifier,
83 const QRect& detailRect) const;
84
89 void setThumbnailSize(int thumbnailSize);
90
97 void setLoadingProperties(DImgLoaderObserver* const observer,
98 const DRawDecoding& settings);
99
106 void setExifRotate(bool rotate);
107
114 void setOnlyLargeThumbnails(bool onlyLarge);
115
120 void setRemoveAlphaChannel(bool removeAlpha);
121
125 void setThumbnailInfoProvider(ThumbnailInfoProvider* const provider);
126
131 int thumbnailSize() const;
132
139 int storedSize() const;
140
145 void store(const QString& path, const QImage& image) const;
146
147 void storeDetailThumbnail(const QString& path,
148 const QRect& detailRect,
149 const QImage& image) const;
150
155 QString errorString() const;
156
161 void deleteThumbnailsFromDisk(const QString& filePath) const;
162
166 static ThumbnailInfo fileThumbnailInfo(const QString& path);
167
171 static QString identifierForDetail(const ThumbnailInfo& info,
172 const QRect& rect);
173
174private:
175
176 void initialize();
177
178 ThumbnailImage createThumbnail(const ThumbnailInfo& info,
179 const QRect& detailRect = QRect()) const;
180
181 QImage load(const ThumbnailIdentifier& id,
182 const QRect& rect,
183 bool pregenerate,
184 bool onlyStorage = false) const;
185 QImage loadWithDImgScaled(const QString& path,
186 IccProfile* const profile) const;
187 QImage loadImageDetail(const ThumbnailInfo& info,
188 const DMetadata& metadata,
189 const QRect& detailRect,
190 IccProfile* const profile) const;
191 QImage loadImagePreview(const DMetadata& metadata) const;
192 QImage loadPNG(const QString& path) const;
193
194 QImage handleAlphaChannel(const QImage& thumb) const;
195 int exifOrientation(const ThumbnailInfo& info,
196 const DMetadata& metadata,
197 bool fromEmbeddedPreview,
198 bool fromDetail) const;
199 QImage exifRotate(const QImage& thumb, int orientation) const;
200
201 void store(const QString& path,
202 const QImage& i,
203 const QRect& rect) const;
204
205 ThumbnailInfo makeThumbnailInfo(const ThumbnailIdentifier& identifier,
206 const QRect& rect) const;
207 QImage scaleForStorage(const QImage& qimage) const;
208
209 void storeInDatabase(const ThumbnailInfo& info,
210 const ThumbnailImage& image) const;
211 ThumbsDbInfo loadThumbsDbInfo(const ThumbnailInfo& info) const;
212 ThumbnailImage loadFromDatabase(const ThumbnailInfo& info) const;
213 bool isInDatabase(const ThumbnailInfo& info) const;
214 void deleteFromDatabase(const ThumbnailInfo& info) const;
215
216 void storeFreedesktop(const ThumbnailInfo& info, const ThumbnailImage& image) const;
217 ThumbnailImage loadFreedesktop(const ThumbnailInfo& info) const;
218 void deleteFromDiskFreedesktop(const QString& filePath) const;
219
220 void initThumbnailDirs();
221 QString thumbnailPath(const QString& uri) const;
222
223 // implementations in thumbnailbasic.cpp
224
225 static QString normalThumbnailDir();
226 static QString largeThumbnailDir();
227 static QString thumbnailPath(const QString& filePath, const QString& basePath);
228 static QString thumbnailUri(const QString& filePath);
229 static QString thumbnailPathFromUri(const QString& uri, const QString& basePath);
230
231private:
232
233 // Disable
234 ThumbnailCreator(const ThumbnailCreator&) = delete;
235 ThumbnailCreator& operator=(const ThumbnailCreator&) = delete;
236
237private:
238
239 class Private;
240 Private* const d = nullptr;
241};
242
243} // namespace Digikam
Definition dimgloaderobserver.h:31
Definition dmetadata.h:46
Definition drawdecoding.h:38
Definition iccprofile.h:33
Definition thumbnailcreator.h:41
StorageMethod
Definition thumbnailcreator.h:45
@ NoThumbnailStorage
Definition thumbnailcreator.h:46
@ FreeDesktopStandard
Definition thumbnailcreator.h:47
Definition thumbnailinfo.h:31
Definition thumbnailcreator_p.h:74
Definition thumbnailinfo.h:105
Definition thumbnailinfo.h:53
Definition thumbsdb.h:52
Definition datefolderview.cpp:34