[Digikam-devel] extragear/graphics
Gilles Caulier
caulier.gilles at kdemail.net
Tue Jan 16 13:56:37 GMT 2007
SVN commit 624129 by cgilles:
digiKam from trunk : White Balance stuff :
* Move White Balance filter algorithm from DigiKamImagePlugins to digiKam core.
* Export a new class Digikam::WhiteBalance.
* Fix White Balance Image Plugin to use the new class from digiKam core.
* White Balance Image plugin will remember the settings between plugin session.
Nota : advantages to include white balance algoritm into digiKam core :
- We will create a new Auto-Exposure filter in Auto-Color Correction tool.
- We will use later the white balance algoritm to fix RAW files color temperature when we import pictures to editor !
CCMAIL: digikam-devel at kde.org
M +3 -2 digikam/libs/Makefile.am
M +11 -10 digikam/libs/dimg/Makefile.am
A digikam/libs/whitebalance (directory)
A digikam/libs/whitebalance/Makefile.am
A digikam/libs/whitebalance/blackbody.h digikamimageplugins/whitebalance/blackbody.h#623950 [License: GPL]
A digikam/libs/whitebalance/whitebalance.cpp digikamimageplugins/whitebalance/whitebalance.cpp#624124 [License: GPL]
A digikam/libs/whitebalance/whitebalance.h digikamimageplugins/whitebalance/whitebalance.h#624124 [License: GPL]
M +3 -1 digikamimageplugins/common/include/digikamheaders.h
M +1 -1 digikamimageplugins/configure.in.in
M +1 -1 digikamimageplugins/whitebalance/Makefile.am
D digikamimageplugins/whitebalance/blackbody.h
M +44 -39 digikamimageplugins/whitebalance/imageeffect_whitebalance.cpp
M +6 -1 digikamimageplugins/whitebalance/imageeffect_whitebalance.h
D digikamimageplugins/whitebalance/whitebalance.cpp
D digikamimageplugins/whitebalance/whitebalance.h
--- trunk/extragear/graphics/digikam/libs/Makefile.am #624128:624129
@@ -1,2 +1,3 @@
-SUBDIRS = lprof dcraw histogram levels curves dmetadata dimg threadimageio themeengine widgets \
- thumbbar jpegutils imageproperties dialogs
+SUBDIRS = lprof dcraw histogram levels curves whitebalance dmetadata \
+ dimg threadimageio themeengine widgets \
+ thumbbar jpegutils imageproperties dialogs
--- trunk/extragear/graphics/digikam/libs/dimg/Makefile.am #624128:624129
@@ -8,18 +8,19 @@
libdimg_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LCMS_LIBS)
libdimg_la_LIBADD = $(top_builddir)/digikam/libs/dcraw/libdcraw.la \
- $(top_builddir)/digikam/libs/histogram/libhistogram.la \
- $(top_builddir)/digikam/libs/levels/liblevels.la \
- $(top_builddir)/digikam/libs/curves/libcurves.la \
- $(top_builddir)/digikam/libs/dimg/loaders/libdimgloaders.la \
- $(top_builddir)/digikam/libs/dimg/filters/libdimgfilters.la \
- $(top_builddir)/digikam/libs/dmetadata/libdmetadata.la
+ $(top_builddir)/digikam/libs/histogram/libhistogram.la \
+ $(top_builddir)/digikam/libs/levels/liblevels.la \
+ $(top_builddir)/digikam/libs/curves/libcurves.la \
+ $(top_builddir)/digikam/libs/whitebalance/libwhitebalance.la \
+ $(top_builddir)/digikam/libs/dimg/loaders/libdimgloaders.la \
+ $(top_builddir)/digikam/libs/dimg/filters/libdimgfilters.la \
+ $(top_builddir)/digikam/libs/dmetadata/libdmetadata.la
INCLUDES = $(all_includes) -I$(top_srcdir)/digikam/libs/dimg/loaders \
- -I$(top_srcdir)/digikam/libs/dimg/filters \
- -I$(top_srcdir)/digikam/libs/dmetadata \
- -I$(top_srcdir)/digikam/libs/dcraw \
- -I$(top_srcdir)/digikam/digikam
+ -I$(top_srcdir)/digikam/libs/dimg/filters \
+ -I$(top_srcdir)/digikam/libs/dmetadata \
+ -I$(top_srcdir)/digikam/libs/dcraw \
+ -I$(top_srcdir)/digikam/digikam
digikaminclude_HEADERS = dimg.h dcolor.h dcolorpixelaccess.h dcolorcomposer.h \
dcolorblend.h rawdecodingsettings.h ddebug.h
--- trunk/extragear/graphics/digikamimageplugins/common/include/digikamheaders.h #624128:624129
@@ -4,7 +4,7 @@
* Date : 2004-12-22
*
* Copyright 2004 by Renchi Raju
- * Copyright 2005-2006 by Gilles Caulier
+ * Copyright 2005-2007 by Gilles Caulier
*
* This program is free software; you can redistribute it
* and/or modify it under the terms of the GNU General
@@ -39,6 +39,7 @@
#include <imagelevels.h>
#include <imageplugin.h>
#include <imagecurves.h>
+#include <whitebalance.h>
#include <thumbbar.h>
#include <colorgradientwidget.h>
#include <histogramwidget.h>
@@ -69,6 +70,7 @@
#include <digikam/imagelevels.h>
#include <digikam/imageplugin.h>
#include <digikam/imagecurves.h>
+#include <digikam/whitebalance.h>
#include <digikam/thumbbar.h>
#include <digikam/colorgradientwidget.h>
#include <digikam/histogramwidget.h>
--- trunk/extragear/graphics/digikamimageplugins/configure.in.in #624128:624129
@@ -15,7 +15,7 @@
have_digikam_toplevel=yes
have_digikam=yes
have_digikamheader=yes
- LIBDIGIKAM_CFLAGS='-I$(top_srcdir)/digikam/digikam -I$(top_srcdir)/digikam/utilities/imageeditor/editor -I$(top_srcdir)/digikam/utilities/imageeditor/canvas -I$(top_srcdir)/digikam/libs/guibuilder -I$(top_srcdir)/digikam/libs/curves -I$(top_srcdir)/digikam/libs/histogram -I$(top_srcdir)/digikam/libs/levels -I$(top_srcdir)/digikam/libs/filters -I$(top_srcdir)/digikam/libs/widgets/common -I$(top_srcdir)/digikam/libs/widgets/imageplugins -I$(top_srcdir)/digikam/libs/thumbbar -I$(top_srcdir)/digikam/libs/dimg -I$(top_srcdir)/digikam/libs/dimg/filters -I$(top_srcdir)/digikam/libs/dialogs -I$(top_srcdir)/digikam/libs/dmetadata'
+ LIBDIGIKAM_CFLAGS='-I$(top_srcdir)/digikam/digikam -I$(top_srcdir)/digikam/utilities/imageeditor/editor -I$(top_srcdir)/digikam/utilities/imageeditor/canvas -I$(top_srcdir)/digikam/libs/guibuilder -I$(top_srcdir)/digikam/libs/curves -I$(top_srcdir)/digikam/libs/histogram -I$(top_srcdir)/digikam/libs/levels -I$(top_srcdir)/digikam/libs/whitebalance -I$(top_srcdir)/digikam/libs/filters -I$(top_srcdir)/digikam/libs/widgets/common -I$(top_srcdir)/digikam/libs/widgets/imageplugins -I$(top_srcdir)/digikam/libs/thumbbar -I$(top_srcdir)/digikam/libs/dimg -I$(top_srcdir)/digikam/libs/dimg/filters -I$(top_srcdir)/digikam/libs/dialogs -I$(top_srcdir)/digikam/libs/dmetadata'
LIBDIGIKAM_LIBS='$(top_builddir)/digikam/digikam/libdigikam.la'
LIBDIGIKAM_LIBS_DEP='$(LIBDIGIKAM_LIBS)'
AC_SUBST(LIBDIGIKAM_CFLAGS)
--- trunk/extragear/graphics/digikamimageplugins/whitebalance/Makefile.am #624128:624129
@@ -8,7 +8,7 @@
kde_module_LTLIBRARIES = digikamimageplugin_whitebalance.la
digikamimageplugin_whitebalance_la_SOURCES = imageplugin_whitebalance.cpp \
- imageeffect_whitebalance.cpp whitebalance.cpp
+ imageeffect_whitebalance.cpp
digikamimageplugin_whitebalance_la_LIBADD = $(LIB_KPARTS) $(LIBDIGIKAM_LIBS)\
$(top_builddir)/digikamimageplugins/common/widgets/libdigikamimagepluginswidget.la
--- trunk/extragear/graphics/digikamimageplugins/whitebalance/imageeffect_whitebalance.cpp #624128:624129
@@ -19,12 +19,6 @@
*
* ============================================================ */
-// C++ includes.
-
-#include <cstdio>
-#include <cmath>
-#include <cstring>
-
// Qt includes.
#include <qhgroupbox.h>
@@ -58,6 +52,7 @@
#include <kglobalsettings.h>
#include <kfiledialog.h>
#include <kseparator.h>
+#include <kconfig.h>
// Local includes.
@@ -279,17 +274,11 @@
grid2->addMultiCellWidget(m_exposureLabel, 8, 8, 0, 0);
grid2->addMultiCellWidget(m_autoAdjustExposure, 8, 8, 1, 1);
grid2->addMultiCellWidget(m_exposureInput, 8, 8, 2, 5);
-
grid2->setRowStretch(9, 10);
setUserAreaWidget(gboxSettings);
// -------------------------------------------------------------
-
- // Reset all parameters to the default values.
- QTimer::singleShot(0, this, SLOT(slotDefault()));
-
- // -------------------------------------------------------------
connect(m_channelCB, SIGNAL(activated(int)),
this, SLOT(slotChannelChanged(int)));
@@ -463,7 +452,7 @@
QColor tc = dc.getQColor();
double temperatureLevel, greenLevel;
- WhiteBalance::autoWBAdjustementFromColor(tc, temperatureLevel, greenLevel);
+ Digikam::WhiteBalance::autoWBAdjustementFromColor(tc, temperatureLevel, greenLevel);
m_temperatureInput->setValue(temperatureLevel);
m_greenInput->setValue(greenLevel);
@@ -530,7 +519,7 @@
double blackLevel;
double exposureLevel;
- WhiteBalance::autoExposureAdjustement(data, width, height, sb, blackLevel, exposureLevel);
+ Digikam::WhiteBalance::autoExposureAdjustement(data, width, height, sb, blackLevel, exposureLevel);
delete [] data;
m_blackInput->setValue(blackLevel);
@@ -559,23 +548,15 @@
double temperature = m_temperatureInput->value()/1000.0;
double dark = m_darkInput->value();
double black = m_blackInput->value();
- double exposure = m_exposureInput->value();
+ double exposition = m_exposureInput->value();
double gamma = 2.0-m_gammaInput->value();
double saturation = m_saturationInput->value();
double green = m_greenInput->value();
- WhiteBalance wbFilter(sb);
+ Digikam::WhiteBalance wbFilter(sb);
wbFilter.whiteBalance(data, w, h, sb,
- temperature, dark, black, exposure,
+ temperature, dark, black, exposition,
gamma, saturation, green);
-
-/*
- // Set preview lut.
- setRGBmult();
- m_mg = 1.0;
- setLUTv();
- setRGBmult();
- */
iface->putPreviewImage(data);
m_previewWidget->updatePreview();
@@ -598,33 +579,23 @@
double temperature = m_temperatureInput->value()/1000.0;
double dark = m_darkInput->value();
double black = m_blackInput->value();
- double exposure = m_exposureInput->value();
+ double exposition = m_exposureInput->value();
double gamma = 2.0-m_gammaInput->value();
double saturation = m_saturationInput->value();
double green = m_greenInput->value();
- WhiteBalance wbFilter(sb);
+ Digikam::WhiteBalance wbFilter(sb);
wbFilter.whiteBalance(data, w, h, sb,
- temperature, dark, black, exposure,
+ temperature, dark, black, exposition,
gamma, saturation, green);
-/*
- // Set final lut.
- setRGBmult();
- m_mr = m_mb = 1.0;
- if (m_clipSat) m_mg = 1.0;
- setLUTv();
- setRGBmult();
- */
-
iface->putOriginalImage(i18n("White Balance"), data);
delete [] data;
kapp->restoreOverrideCursor();
accept();
}
-// Reset all settings.
-void ImageEffect_WhiteBalance::slotDefault()
+void ImageEffect_WhiteBalance::resetValues()
{
m_darkInput->blockSignals(true);
m_blackInput->blockSignals(true);
@@ -660,6 +631,40 @@
slotEffect();
}
+void ImageEffect_WhiteBalance::readUserSettings()
+{
+ KConfig* config = kapp->config();
+ config->setGroup("whitebalance Tool Dialog");
+ m_channelCB->setCurrentItem(config->readNumEntry("Histogram Channel", 0)); // Luminosity.
+ m_scaleBG->setButton(config->readNumEntry("Histogram Scale", Digikam::HistogramWidget::LogScaleHistogram));
+
+ m_darkInput->setValue(config->readDoubleNumEntry("Dark", 0.5));
+ m_blackInput->setValue(config->readDoubleNumEntry("Black", 0.0));
+ m_exposureInput->setValue(config->readDoubleNumEntry("Exposure", 0.0));
+ m_gammaInput->setValue(config->readDoubleNumEntry("Gamma", 1.0));
+ m_saturationInput->setValue(config->readDoubleNumEntry("Saturation", 1.0));
+ m_greenInput->setValue(config->readDoubleNumEntry("Green", 1.2));
+ m_temperatureInput->setValue(config->readDoubleNumEntry("Temperature", 4750.0));
+ slotTemperatureChanged(m_temperatureInput->value());
+}
+
+void ImageEffect_WhiteBalance::writeUserSettings()
+{
+ KConfig* config = kapp->config();
+ config->setGroup("whitebalance Tool Dialog");
+ config->writeEntry("Histogram Channel", m_channelCB->currentItem());
+ config->writeEntry("Histogram Scale", m_scaleBG->selectedId());
+
+ config->writeEntry("Dark", m_darkInput->value());
+ config->writeEntry("Black", m_blackInput->value());
+ config->writeEntry("Exposure", m_exposureInput->value());
+ config->writeEntry("Gamma", m_gammaInput->value());
+ config->writeEntry("Saturation", m_saturationInput->value());
+ config->writeEntry("Green", m_greenInput->value());
+ config->writeEntry("Temperature", m_temperatureInput->value());
+ config->sync();
+}
+
// Load all settings.
void ImageEffect_WhiteBalance::slotUser3()
{
--- trunk/extragear/graphics/digikamimageplugins/whitebalance/imageeffect_whitebalance.h #624128:624129
@@ -56,7 +56,6 @@
private slots:
- void slotDefault();
void slotUser2();
void slotUser3();
void slotEffect();
@@ -69,6 +68,12 @@
void slotAutoAdjustExposure(void);
void slotPickerColorButtonActived();
+private:
+
+ void readUserSettings();
+ void writeUserSettings();
+ void resetValues();
+
private:
enum HistogramScale
More information about the Digikam-devel
mailing list