1
/* ============================================================
3
* This file is a part of digiKam project
4
* http://www.digikam.org
7
* Description : Wavelets Noise Reduction batch tool.
9
* Copyright (C) 2009-2010 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
* This program is free software; you can redistribute it
12
* and/or modify it under the terms of the GNU General
13
* Public License as published by the Free Software Foundation;
14
* either version 2, or (at your option)
17
* This program is distributed in the hope that it will be useful,
18
* but WITHOUT ANY WARRANTY; without even the implied warranty of
19
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
* GNU General Public License for more details.
22
* ============================================================ */
24
#include "antivignetting.moc"
33
#include <kcombobox.h>
34
#include <kiconloader.h>
36
#include <kstandarddirs.h>
37
#include <kurllabel.h>
42
#include "antivignettingfilter.h"
43
#include "antivignettingsettings.h"
48
AntiVignetting::AntiVignetting(QObject* parent)
49
: BatchTool("AntiVignetting", EnhanceTool, parent)
51
setToolTitle(i18n("Anti-Vignetting"));
52
setToolDescription(i18n("A tool to remove/add vignetting to photograph."));
53
setToolIcon(KIcon(SmallIcon("antivignetting")));
55
QWidget* box = new QWidget;
56
m_settingsView = new AntiVignettingSettings(box);
57
setSettingsWidget(box);
59
connect(m_settingsView, SIGNAL(signalSettingsChanged()),
60
this, SLOT(slotSettingsChanged()));
63
AntiVignetting::~AntiVignetting()
67
BatchToolSettings AntiVignetting::defaultSettings()
69
BatchToolSettings prm;
70
AntiVignettingContainer defaultPrm = m_settingsView->defaultSettings();
72
prm.insert("addvignetting", (bool)defaultPrm.addvignetting);
73
prm.insert("density", (double)defaultPrm.density);
74
prm.insert("power", (double)defaultPrm.power);
75
prm.insert("innerradius", (double)defaultPrm.innerradius);
76
prm.insert("outerradius", (double)defaultPrm.outerradius);
77
prm.insert("xshift", (double)defaultPrm.xshift);
78
prm.insert("yshift", (double)defaultPrm.yshift);
83
void AntiVignetting::slotAssignSettings2Widget()
85
AntiVignettingContainer prm;
86
prm.addvignetting = settings()["addvignetting"].toBool();
87
prm.density = settings()["density"].toDouble();
88
prm.power = settings()["power"].toDouble();
89
prm.innerradius = settings()["innerradius"].toDouble();
90
prm.outerradius = settings()["outerradius"].toDouble();
91
prm.xshift = settings()["xshift"].toDouble();
92
prm.yshift = settings()["yshift"].toDouble();
93
m_settingsView->setSettings(prm);
96
void AntiVignetting::slotSettingsChanged()
98
BatchToolSettings prm;
99
AntiVignettingContainer currentPrm = m_settingsView->settings();
101
prm.insert("addvignetting", (bool)currentPrm.addvignetting);
102
prm.insert("density", (double)currentPrm.density);
103
prm.insert("power", (double)currentPrm.power);
104
prm.insert("innerradius", (double)currentPrm.innerradius);
105
prm.insert("outerradius", (double)currentPrm.outerradius);
106
prm.insert("xshift", (double)currentPrm.xshift);
107
prm.insert("yshift", (double)currentPrm.yshift);
109
BatchTool::slotSettingsChanged(prm);
112
bool AntiVignetting::toolOperations()
114
if (!loadToDImg()) return false;
116
AntiVignettingContainer prm;
117
prm.addvignetting = settings()["addvignetting"].toBool();
118
prm.density = settings()["density"].toDouble();
119
prm.power = settings()["power"].toDouble();
120
prm.innerradius = settings()["innerradius"].toDouble();
121
prm.outerradius = settings()["outerradius"].toDouble();
122
prm.xshift = settings()["xshift"].toDouble();
123
prm.yshift = settings()["yshift"].toDouble();
125
AntiVignettingFilter vig(&image(), 0L, prm);
126
vig.startFilterDirectly();
127
image().putImageData(vig.getTargetImage().bits());
129
return (savefromDImg());
132
} // namespace Digikam