digiKam
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  * Copyright 2005-2022 by Gilles Caulier <caulier dot gilles at gmail dot com>
10  * Copyright 2006-2010 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
11  * Copyright 2010 by Martin Klapetek <martin dot klapetek at gmail dot com>
12  * Copyright 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  * This program is free software; you can redistribute it
18  * and/or modify it under the terms of the GNU General
19  * Public License as published by the Free Software Foundation;
20  * either version 2, or (at your option)
21  * any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * ============================================================ */
29 
30 #ifndef DIGIKAM_COLOR_FX_FILTER_H
31 #define DIGIKAM_COLOR_FX_FILTER_H
32 
33 // Local includes
34 
35 #include "digikam_export.h"
36 #include "dimgthreadedfilter.h"
37 #include "digikam_globals.h"
38 
39 namespace Digikam
40 {
41 
42 class DIGIKAM_EXPORT ColorFXContainer
43 {
44 
45 public:
46 
47  explicit ColorFXContainer()
48  : colorFXType (0),
49  level (0),
50  iterations (2),
51  intensity (100),
52  path (QString())
53  {
54  };
55 
57  {
58  };
59 
60 public:
61 
63  int level;
65  int intensity;
66  QString path;
67 };
68 
69 // ----------------------------------------------------------------------------------------------
70 
71 class DIGIKAM_EXPORT ColorFXFilter : public DImgThreadedFilter
72 {
73  Q_OBJECT
74 
75 public:
76 
78  {
79  Solarize = 0,
83  Lut3D
84  };
85 
86 public:
87 
88  explicit ColorFXFilter(QObject* const parent = nullptr);
89  explicit ColorFXFilter(DImg* const orgImage,
90  QObject* const parent,
91  const ColorFXContainer& settings = ColorFXContainer());
92  ~ColorFXFilter() override;
93 
94  static QString FilterIdentifier()
95  {
96  return QLatin1String("digikam:ColorFXFilter");
97  }
98 
99  static QString DisplayableName();
100 
102  {
103  return QList<int>() << 1;
104  }
105 
106  static int CurrentVersion()
107  {
108  return 1;
109  }
110 
111  QString filterIdentifier() const override
112  {
113  return FilterIdentifier();
114  }
115 
116  FilterAction filterAction() override;
117 
118  void readParameters(const FilterAction& action) override;
119 
120 private:
121 
122  void filterImage() override;
123 
124  void solarize(DImg* const orgImage, DImg* const destImage, int factor);
125  void vivid(DImg* const orgImage, DImg* const destImage, int factor);
126  void neon(DImg* const orgImage, DImg* const destImage, int Intensity, int BW);
127  void findEdges(DImg* const orgImage, DImg* const destImage, int Intensity, int BW);
128  void neonFindEdges(DImg* const orgImage, DImg* const destImage, bool neon, int Intensity, int BW);
129  void loadLut3D(const QString& path);
130  void applyLut3D();
131 
132 private:
133 
134  ColorFXContainer m_settings;
135  quint16* m_lutTable;
136  int m_lutTableSize;
137 };
138 
139 } // namespace Digikam
140 
141 #endif // DIGIKAM_COLOR_FX_FILTER_H
Definition: colorfxfilter.h:43
int level
Definition: colorfxfilter.h:63
int iterations
Definition: colorfxfilter.h:64
int colorFXType
Definition: colorfxfilter.h:58
ColorFXContainer()
Definition: colorfxfilter.h:47
int intensity
Definition: colorfxfilter.h:65
~ColorFXContainer()
Definition: colorfxfilter.h:56
QString path
Definition: colorfxfilter.h:66
Definition: colorfxfilter.h:72
QString filterIdentifier() const override
Definition: colorfxfilter.h:111
ColorFXFilterTypes
Definition: colorfxfilter.h:78
@ FindEdges
Definition: colorfxfilter.h:82
@ Neon
Definition: colorfxfilter.h:81
@ Vivid
Definition: colorfxfilter.h:80
static int CurrentVersion()
Definition: colorfxfilter.h:106
static QString FilterIdentifier()
Definition: colorfxfilter.h:94
static QList< int > SupportedVersions()
Definition: colorfxfilter.h:101
Definition: dimgthreadedfilter.h:41
Definition: dimg.h:62
Definition: filteraction.h:43
Definition: datefolderview.cpp:43