digiKam
Loading...
Searching...
No Matches
drawdecoder.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 : 2006-12-09
7 * Description : a tread-safe libraw Qt interface
8 *
9 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2006-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2007-2008 by Guillaume Castagnino <casta at xwing dot info>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// C++ includes
20
21#include <cmath>
22
23// Qt includes
24
25#include <QBuffer>
26#include <QString>
27#include <QObject>
28#include <QImage>
29
30// Local includes
31
32#include "drawdecodersettings.h"
33#include "drawinfo.h"
34#include "digikam_export.h"
35
36namespace Digikam
37{
38
39class DIGIKAM_EXPORT DRawDecoder : public QObject
40{
41 Q_OBJECT
42
43public:
44
49
53 ~DRawDecoder() override;
54
55public:
56
61 static bool loadRawPreview(QImage& image, const QString& path);
62
67 static bool loadRawPreview(QByteArray& imgData, const QString& path);
68
73 static bool loadRawPreview(QByteArray& imgData, const QBuffer& inBuffer);
74
79 static bool loadEmbeddedPreview(QByteArray& imgData, const QString& path);
80
85 static bool loadEmbeddedPreview(QImage& image, const QString& path);
86
91 static bool loadEmbeddedPreview(QByteArray& imgData, const QBuffer& inBuffer);
92
97 static bool loadHalfPreview(QImage& image, const QString& path, bool rotate = true);
98
103 static bool loadHalfPreview(QByteArray& imgData, const QString& path);
104
109 static bool loadHalfPreview(QByteArray& imgData, const QBuffer& inBuffer);
110
115 static bool loadFullImage(QImage& image,
116 const QString& path,
117 const DRawDecoderSettings& settings = DRawDecoderSettings());
118
124 static bool rawFileIdentify(DRawInfo& identify, const QString& path);
125
129 static QString rawFiles();
130
135 static QStringList rawFilesList();
136
142 static int rawFilesVersion();
143
147 static QStringList supportedCamera();
148
152 static QString librawVersion();
153
158 static int librawUseGomp();
159
160 static bool isRawFile(const QUrl& url);
161
162public:
163
175 bool extractRAWData(const QString& filePath,
176 QByteArray& rawData,
177 DRawInfo& identify,
178 unsigned int shotSelect=0);
179
195 bool decodeHalfRAWImage(const QString& filePath,
197 QByteArray& imageData,
198 int& width,
199 int& height,
200 int& rgbmax);
201
217 bool decodeRAWImage(const QString& filePath,
219 QByteArray& imageData,
220 int& width,
221 int& height,
222 int& rgbmax);
223
228 void cancel();
229
230protected:
231
236 bool m_cancel = false;
237
243
244protected:
245
251 virtual bool checkToCancelWaitingData();
252
258 virtual void setWaitingDataProgress(double value);
259
260public:
261
262 // NOTE: declared public to be called externally by s_progressCallbackForLibRaw() static method.
263 class Private;
264
265private:
266
267 // Disabled
268 explicit DRawDecoder(QObject*) = delete;
269
270 Private* const d = nullptr;
271
272 friend class Private;
273};
274
275} // namespace Digikam
Definition drawdecodersettings.h:33
Definition drawdecoder_p.h:78
Definition drawdecoder.h:40
static bool loadRawPreview(QByteArray &imgData, const QString &path)
DRawDecoderSettings m_decoderSettings
Definition drawdecoder.h:242
static bool loadRawPreview(QByteArray &imgData, const QBuffer &inBuffer)
Definition drawinfo.h:37
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34