7
7
* Description : a digiKam image plugin for to apply a color
8
8
* effect to an image.
10
* Copyright (C) 2004-2005 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
11
* Copyright (C) 2006-2011 by Gilles Caulier <caulier dot gilles at gmail dot com>
10
* Copyright (C) 2004-2005 by Renchi Raju <renchi dot raju at gmail dot com>
11
* Copyright (C) 2006-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
75
75
namespace DigikamFxFiltersImagePlugin
78
class ColorFxTool::ColorFxToolPriv
78
class ColorFxTool::Private
84
destinationPreviewData(0),
85
84
effectTypeLabel(0),
113
110
ImageGuideWidget* previewWidget;
114
111
EditorToolSettings* gboxSettings;
116
const QString ColorFxTool::ColorFxToolPriv::configGroupName("coloreffect Tool");
117
const QString ColorFxTool::ColorFxToolPriv::configHistogramChannelEntry("Histogram Channel");
118
const QString ColorFxTool::ColorFxToolPriv::configHistogramScaleEntry("Histogram Scale");
119
const QString ColorFxTool::ColorFxToolPriv::configEffectTypeEntry("EffectType");
120
const QString ColorFxTool::ColorFxToolPriv::configLevelAdjustmentEntry("LevelAdjustment");
121
const QString ColorFxTool::ColorFxToolPriv::configIterationAdjustmentEntry("IterationAdjustment");
114
const QString ColorFxTool::Private::configGroupName("coloreffect Tool");
115
const QString ColorFxTool::Private::configHistogramChannelEntry("Histogram Channel");
116
const QString ColorFxTool::Private::configHistogramScaleEntry("Histogram Scale");
117
const QString ColorFxTool::Private::configEffectTypeEntry("EffectType");
118
const QString ColorFxTool::Private::configLevelAdjustmentEntry("LevelAdjustment");
119
const QString ColorFxTool::Private::configIterationAdjustmentEntry("IterationAdjustment");
123
121
// --------------------------------------------------------
125
ColorFxTool::ColorFxTool(QObject* parent)
123
ColorFxTool::ColorFxTool(QObject* const parent)
126
124
: EditorToolThreaded(parent),
127
d(new ColorFxToolPriv)
129
127
setObjectName("coloreffects");
130
128
setToolName(i18n("Color Effects"));
142
140
d->gboxSettings = new EditorToolSettings;
143
141
d->gboxSettings->setTools(EditorToolSettings::Histogram);
144
142
d->gboxSettings->setHistogramType(LRGBC);
146
144
// -------------------------------------------------------------
148
146
d->effectTypeLabel = new QLabel(i18n("Type:"));
206
204
this, SLOT(slotTimer()));
208
206
connect(d->previewWidget, SIGNAL(signalResized()),
209
this, SLOT(slotEffect()));
207
this, SLOT(slotPreview()));
211
209
connect(d->effectType, SIGNAL(activated(int)),
212
210
this, SLOT(slotEffectTypeChanged(int)));
320
313
d->levelInput->blockSignals(false);
321
314
d->iterationInput->blockSignals(false);
326
void ColorFxTool::prepareEffect()
319
void ColorFxTool::preparePreview()
328
321
d->effectTypeLabel->setEnabled(false);
329
322
d->effectType->setEnabled(false);
332
325
d->iterationInput->setEnabled(false);
333
326
d->iterationLabel->setEnabled(false);
335
int l = d->levelInput->value();
336
int f = d->iterationInput->value();
337
int e = d->effectType->currentIndex();
339
ImageIface* iface = d->previewWidget->imageIface();
340
QScopedArrayPointer<uchar> data(iface->getPreviewImage());
341
DImg image(iface->previewWidth(), iface->previewHeight(), iface->previewSixteenBit(),
342
iface->previewHasAlpha(), data.data());
328
int l = d->levelInput->value();
329
int f = d->iterationInput->value();
330
int e = d->effectType->currentIndex();
331
ImageIface* const iface = d->previewWidget->imageIface();
332
DImg image = iface->preview();
344
334
setFilter(new ColorFXFilter(&image, this, e, l, f));
357
347
int f = d->iterationInput->value();
358
348
int e = d->effectType->currentIndex();
360
ImageIface iface(0, 0);
362
setFilter(new ColorFXFilter(iface.getOriginalImg(), this, e, l, f));
352
setFilter(new ColorFXFilter(iface.original(), this, e, l, f));
365
void ColorFxTool::putPreviewData()
355
void ColorFxTool::setPreviewImage()
367
ImageIface* iface = d->previewWidget->imageIface();
368
DImg preview = filter()->getTargetImage();
369
DImg imDest = preview.smoothScale(iface->previewWidth(), iface->previewHeight());
370
iface->putPreviewImage(imDest.bits());
371
d->gboxSettings->histogramBox()->histogram()->updateData(preview.bits(), preview.width(), preview.height(),
372
preview.sixteenBit(), 0, 0, 0, false);
357
ImageIface* const iface = d->previewWidget->imageIface();
358
DImg preview = filter()->getTargetImage();
359
DImg imDest = preview.smoothScale(iface->previewSize());
360
iface->setPreview(imDest);
361
d->gboxSettings->histogramBox()->histogram()->updateData(preview, DImg(), false);
374
363
d->previewWidget->updatePreview();
377
void ColorFxTool::putFinalData()
366
void ColorFxTool::setFinalImage()
379
ImageIface iface(0, 0);
402
iface.putOriginalImage(name, filter()->filterAction(), filter()->getTargetImage().bits());
391
iface.setOriginal(name, filter()->filterAction(), filter()->getTargetImage());
405
394
void ColorFxTool::renderingFinished()