digiKam
Loading...
Searching...
No Matches
refocusfilter.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 : 2005-05-25
7 * Description : Refocus threaded image filter.
8 *
9 * SPDX-FileCopyrightText: 2005-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2009 by Matthias Welwarsky <matze at welwarsky dot de>
11 * SPDX-FileCopyrightText: 2010 by Martin Klapetek <martin dot klapetek at gmail dot com>
12 *
13 * SPDX-License-Identifier: GPL-2.0-or-later
14 *
15 * ============================================================ */
16
17#pragma once
18
19// Local includes
20
21#include "digikam_export.h"
22#include "dimgthreadedfilter.h"
23#include "digikam_globals.h"
24
25namespace Digikam
26{
27
28class DIGIKAM_EXPORT RefocusFilter : public DImgThreadedFilter
29{
30 Q_OBJECT
31
32private:
33
34 struct Q_DECL_HIDDEN Args
35 {
36 Args() = default;
37
38 uchar* orgData = nullptr;
39 uchar* destData = nullptr;
40 int width = 0;
41 int height = 0;
42 bool sixteenBit = false;
43 double* matrix = nullptr;
44 uint mat_size = 0;
45 };
46
47public:
48
49 explicit RefocusFilter(QObject* const parent = nullptr);
50 explicit RefocusFilter(DImg* const orgImage, QObject* const parent = nullptr,
51 int matrixSize = 5, double radius = 0.9,
52 double gauss = 0.0, double correlation = 0.5,
53 double noise = 0.01);
54
55 ~RefocusFilter() override;
56
57 static int maxMatrixSize();
58
59 static QString FilterIdentifier()
60 {
61 return QLatin1String("digikam:RefocusFilter");
62 }
63
64 static QString DisplayableName();
65
66 static QList<int> SupportedVersions()
67 {
68 return QList<int>() << 1;
69 }
70
71 static int CurrentVersion()
72 {
73 return 1;
74 }
75
76 QString filterIdentifier() const override
77 {
78 return FilterIdentifier();
79 }
80
81 FilterAction filterAction() override;
82 void readParameters(const FilterAction& action) override;
83
84
85private:
86
87 void filterImage() override;
88
89 void refocusImage(uchar* const data, int width, int height, bool sixteenBit,
90 int matrixSize, double radius, double gauss,
91 double correlation, double noise);
92
93 void convolveImage(const Args& prm);
94
95 void convolveImageMultithreaded(uint start, uint stop, uint y1, const Args& prm);
96
97private:
98
99 class Private;
100 Private* const d = nullptr;
101};
102
103} // namespace Digikam
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition filteraction.h:33
Definition refocusfilter.h:29
QString filterIdentifier() const override
Definition refocusfilter.h:76
static QList< int > SupportedVersions()
Definition refocusfilter.h:66
static QString FilterIdentifier()
Definition refocusfilter.h:59
static int CurrentVersion()
Definition refocusfilter.h:71
Definition datefolderview.cpp:34