digiKam
Loading...
Searching...
No Matches
colorfxfilter.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 : Color FX threaded image filter.
8 *
9 * SPDX-FileCopyrightText: 2005-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2006-2010 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11 * SPDX-FileCopyrightText: 2010 by Martin Klapetek <martin dot klapetek at gmail dot com>
12 * SPDX-FileCopyrightText: 2015 by Andrej Krutak <dev at andree dot sk>
13 *
14 * Original Blur algorithms copyrighted 2004 by
15 * Pieter Z. Voloshyn <pieter dot voloshyn at gmail dot com>.
16 *
17 * SPDX-License-Identifier: GPL-2.0-or-later
18 *
19 * ============================================================ */
20
21#pragma once
22
23// Local includes
24
25#include "digikam_export.h"
26#include "dimgthreadedfilter.h"
27#include "digikam_globals.h"
28
29namespace Digikam
30{
31
32class DIGIKAM_EXPORT ColorFXContainer
33{
34
35public:
36
37 ColorFXContainer() = default;
38 ~ColorFXContainer() = default;
39
40public:
41
42 int colorFXType = 0;
43 int level = 0;
44 int iterations = 2;
45 int intensity = 100;
46 QString path;
47};
48
49// ----------------------------------------------------------------------------------------------
50
51class DIGIKAM_EXPORT ColorFXFilter : public DImgThreadedFilter
52{
53 Q_OBJECT
54
55public:
56
58 {
59 Solarize = 0,
63 Lut3D
64 };
65
66public:
67
68 explicit ColorFXFilter(QObject* const parent = nullptr);
69 explicit ColorFXFilter(DImg* const orgImage,
70 QObject* const parent,
71 const ColorFXContainer& settings = ColorFXContainer());
72 ~ColorFXFilter() override;
73
74 static QString FilterIdentifier()
75 {
76 return QLatin1String("digikam:ColorFXFilter");
77 }
78
79 static QString DisplayableName();
80
81 static QList<int> SupportedVersions()
82 {
83 return QList<int>() << 1;
84 }
85
86 static int CurrentVersion()
87 {
88 return 1;
89 }
90
91 QString filterIdentifier() const override
92 {
93 return FilterIdentifier();
94 }
95
96 FilterAction filterAction() override;
97
98 void readParameters(const FilterAction& action) override;
99
100private:
101
102 void filterImage() override;
103
104 void solarize(DImg* const orgImage, DImg* const destImage, int factor);
105 void vivid(DImg* const orgImage, DImg* const destImage, int factor);
106 void neon(DImg* const orgImage, DImg* const destImage, int Intensity, int BW);
107 void findEdges(DImg* const orgImage, DImg* const destImage, int Intensity, int BW);
108 void neonFindEdges(DImg* const orgImage, DImg* const destImage, bool neon, int Intensity, int BW);
109 void loadLut3D(const QString& path);
110 void applyLut3D();
111
112private:
113
114 ColorFXContainer m_settings;
115 quint16* m_lutTable = nullptr;
116 int m_lutTableSize = 0;
117};
118
119} // namespace Digikam
Definition colorfxfilter.h:33
QString path
Definition colorfxfilter.h:46
Definition colorfxfilter.h:52
QString filterIdentifier() const override
Definition colorfxfilter.h:91
ColorFXFilterTypes
Definition colorfxfilter.h:58
@ FindEdges
Definition colorfxfilter.h:62
@ Neon
Definition colorfxfilter.h:61
@ Vivid
Definition colorfxfilter.h:60
static int CurrentVersion()
Definition colorfxfilter.h:86
static QString FilterIdentifier()
Definition colorfxfilter.h:74
static QList< int > SupportedVersions()
Definition colorfxfilter.h:81
Definition dimgthreadedfilter.h:31
Definition dimg.h:52
Definition filteraction.h:33
Definition datefolderview.cpp:34