digiKam
Loading...
Searching...
No Matches
sharpenfilter.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-17-07
7 * Description : A Sharpen threaded image filter.
8 *
9 * SPDX-FileCopyrightText: 2005-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2010 by Martin Klapetek <martin dot klapetek at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Local includes
19
20#include "digikam_export.h"
21#include "dimgthreadedfilter.h"
22#include "digikam_globals.h"
23
24namespace Digikam
25{
26
27class DIGIKAM_EXPORT SharpenFilter : public DImgThreadedFilter
28{
29 Q_OBJECT
30
31private:
32
33 class Q_DECL_HIDDEN Args
34 {
35 public:
36
37 Args() = default;
38
39 uint start = 0;
40 uint stop = 0;
41 uint y = 0;
42 long kernelWidth = 0;
43 double* normal_kernel = nullptr;
44 long halfKernelWidth = 0;
45 };
46
47public:
48
49 explicit SharpenFilter(QObject* const parent = nullptr);
50 explicit SharpenFilter(DImg* const orgImage, QObject* const parent = nullptr, double radius=0.0, double sigma=1.0);
51
55 SharpenFilter(DImgThreadedFilter* const parentFilter, const DImg& orgImage, const DImg& destImage,
56 int progressBegin = 0, int progressEnd = 100, double radius = 0.0, double sigma = 1.0);
57
58 ~SharpenFilter() override;
59
60 static QString FilterIdentifier()
61 {
62 return QLatin1String("digikam:SharpenFilter");
63 }
64
65 static QString DisplayableName();
66
67 static QList<int> SupportedVersions()
68 {
69 return QList<int>() << 1;
70 }
71
72 static int CurrentVersion()
73 {
74 return 1;
75 }
76
77 QString filterIdentifier() const override
78 {
79 return FilterIdentifier();
80 }
81
82 FilterAction filterAction() override;
83 void readParameters(const FilterAction& action) override;
84
85
86private:
87
88 void filterImage() override;
89
90 void sharpenImage(double radius, double sigma);
91
92 bool convolveImage(const unsigned int order, const double* const kernel);
93
94 void convolveImageMultithreaded(const Args& prm);
95
96 int getOptimalKernelWidth(double radius, double sigma);
97
98private:
99
100 double m_radius = 0.0;
101 double m_sigma = 1.0;
102};
103
104} // namespace Digikam
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition filteraction.h:33
Definition sharpenfilter.h:28
QString filterIdentifier() const override
Definition sharpenfilter.h:77
static QString FilterIdentifier()
Definition sharpenfilter.h:60
static int CurrentVersion()
Definition sharpenfilter.h:72
static QList< int > SupportedVersions()
Definition sharpenfilter.h:67
Definition datefolderview.cpp:34