8
8
* image white balance
10
10
* Copyright (C) 2008-2009 by Guillaume Castagnino <casta at xwing dot info>
11
* Copyright (C) 2005-2011 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
* Copyright (C) 2005-2012 by Gilles Caulier <caulier dot gilles at gmail dot com>
13
13
* This program is free software; you can redistribute it
14
14
* and/or modify it under the terms of the GNU General
60
60
namespace DigikamColorImagePlugin
63
class WhiteBalanceTool::WhiteBalanceToolPriv
63
class WhiteBalanceTool::Private
67
WhiteBalanceToolPriv() :
68
destinationPreviewData(0),
73
73
static const QString configGroupName;
74
74
static const QString configHistogramChannelEntry;
75
75
static const QString configHistogramScaleEntry;
77
uchar* destinationPreviewData;
79
77
WBSettings* settingsView;
81
79
ImageRegionWidget* previewWidget;
83
81
EditorToolSettings* gboxSettings;
85
const QString WhiteBalanceTool::WhiteBalanceToolPriv::configGroupName("whitebalance Tool");
86
const QString WhiteBalanceTool::WhiteBalanceToolPriv::configHistogramChannelEntry("Histogram Chanel");
87
const QString WhiteBalanceTool::WhiteBalanceToolPriv::configHistogramScaleEntry("Histogram Scale");
84
const QString WhiteBalanceTool::Private::configGroupName("whitebalance Tool");
85
const QString WhiteBalanceTool::Private::configHistogramChannelEntry("Histogram Chanel");
86
const QString WhiteBalanceTool::Private::configHistogramScaleEntry("Histogram Scale");
89
88
// --------------------------------------------------------
91
WhiteBalanceTool::WhiteBalanceTool(QObject* parent)
92
: EditorToolThreaded(parent), d(new WhiteBalanceToolPriv)
90
WhiteBalanceTool::WhiteBalanceTool(QObject* const parent)
91
: EditorToolThreaded(parent), d(new Private)
94
93
setObjectName("whitebalance");
95
94
setToolName(i18n("White Balance"));
130
129
this, SLOT(slotPickerColorButtonActived()));
132
131
connect(d->previewWidget, SIGNAL(signalResized()),
133
this, SLOT(slotEffect()));
132
this, SLOT(slotPreview()));
135
134
connect(d->previewWidget, SIGNAL(signalCapturedPointFromOriginal(Digikam::DColor,QPoint)),
136
135
this, SLOT(slotColorSelectedFromOriginal(Digikam::DColor)));
139
connect(d->previewWidget, SIGNAL(spotPositionChangedFromTarget(Digikam::DColor,QPoint)),
140
this, SLOT(slotColorSelectedFromTarget(Digikam::DColor)));
137
connect(d->previewWidget, SIGNAL(spotPositionChangedFromTarget(Digikam::DColor,QPoint)),
138
this, SLOT(slotColorSelectedFromTarget(Digikam::DColor)));
146
143
WhiteBalanceTool::~WhiteBalanceTool()
148
if (d->destinationPreviewData)
150
delete [] d->destinationPreviewData;
190
182
kapp->activeWindow()->setCursor(Qt::WaitCursor);
192
ImageIface iface(0, 0);
193
DImg* img = iface.getOriginalImg();
185
DImg* img = iface.original();
194
186
WBContainer settings = d->settingsView->settings();
195
187
WBFilter::autoExposureAdjustement(img, settings.black, settings.exposition);
196
188
d->settingsView->setSettings(settings);
202
void WhiteBalanceTool::prepareEffect()
194
void WhiteBalanceTool::preparePreview()
204
ImageIface iface(0, 0);
205
DImg* img = iface.getOriginalImg();
197
DImg* img = iface.original();
206
198
WBContainer settings = d->settingsView->settings();
207
199
WBFilter::findChanelsMax(img, settings.maxr, settings.maxg, settings.maxb);
212
204
setFilter(new WBFilter(&preview, this, settings));
215
void WhiteBalanceTool::putPreviewData()
207
void WhiteBalanceTool::setPreviewImage()
217
209
DImg preview = filter()->getTargetImage();
218
210
d->previewWidget->setPreviewImage(preview);
220
212
// Update histogram.
222
if (d->destinationPreviewData)
224
delete [] d->destinationPreviewData;
227
d->destinationPreviewData = preview.copyBits();
228
d->gboxSettings->histogramBox()->histogram()->updateData(d->destinationPreviewData,
229
preview.width(), preview.height(), preview.sixteenBit(),
214
d->gboxSettings->histogramBox()->histogram()->updateData(preview.copy(), DImg(), false);
233
217
void WhiteBalanceTool::prepareFinal()
235
219
WBContainer settings = d->settingsView->settings();
237
ImageIface iface(0, 0);
238
setFilter(new WBFilter(iface.getOriginalImg(), this, settings));
222
setFilter(new WBFilter(iface.original(), this, settings));
241
void WhiteBalanceTool::putFinalData()
225
void WhiteBalanceTool::setFinalImage()
243
ImageIface iface(0, 0);
244
iface.putOriginalImage(i18n("White Balance"), filter()->filterAction(), filter()->getTargetImage().bits());
228
iface.setOriginal(i18n("White Balance"), filter()->filterAction(), filter()->getTargetImage());
247
231
void WhiteBalanceTool::slotResetSettings()