Merge from trunk to version ed52f4f469 "Updated make-app-bundle script to use new template for file name"

This commit is contained in:
askvortsov
2010-10-01 10:36:31 -07:00
parent d6d6d6ae23
commit bcd42c3fc2
68 changed files with 2285 additions and 756 deletions

View File

@@ -25,7 +25,7 @@ set (BASESOURCEFILES
batchqueue.cc lwbutton.cc lwbuttonset.cc
batchqueuebuttonset.cc browserfilter.cc exiffiltersettings.cc
profilestore.cc partialpastedlg.cc
equalizer.cc)
equalizer.cc dirpyrequalizer.cc)
if (WIN32)
set (EXTRA_SRC windirmonitor.cc myicon.o)

View File

@@ -31,19 +31,16 @@ void CursorManager::init (Glib::RefPtr<Gdk::Window> mainWin) {
cCropMoving = new Gdk::Cursor (Gdk::HAND2);
cCropSelection = new Gdk::Cursor (Gdk::CROSSHAIR);
cAdd = new Gdk::Cursor (Gdk::PLUS);
//#ifdef _WIN32
// cNormal = new Gdk::Cursor (Gdk::LAST_CURSOR);
//#else
cNormal = new Gdk::Cursor (Gdk::ARROW);
//#endif
Glib::RefPtr<Gdk::Pixbuf> hand = safe_create_from_file(argv0+"/images/openhand22.png");
Glib::RefPtr<Gdk::Pixbuf> close_hand = safe_create_from_file(argv0+"/images/closedhand22.png");
Glib::RefPtr<Gdk::Pixbuf> wbpick = safe_create_from_file(argv0+"/images/wbpicker16.png");
Glib::RefPtr<Gdk::Pixbuf> empty = safe_create_from_file(argv0+"/images/empty.png");
cHand = hand ? new Gdk::Cursor (cNormal->get_display(), hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2);
cClosedHand = close_hand ? new Gdk::Cursor (cNormal->get_display(), close_hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2);
cWB = wbpick ? new Gdk::Cursor (cNormal->get_display(), wbpick, 1, 12) : new Gdk::Cursor (Gdk::ARROW);
cHidden = empty ? new Gdk::Cursor (cNormal->get_display(), empty, 12, 12) : new Gdk::Cursor (Gdk::FLEUR);
Glib::RefPtr<Gdk::Pixbuf> hand = safe_create_from_file(argv0+"/images/openhand22.png");
Glib::RefPtr<Gdk::Pixbuf> close_hand = safe_create_from_file(argv0+"/images/closedhand22.png");
Glib::RefPtr<Gdk::Pixbuf> wbpick = safe_create_from_file(argv0+"/images/wbpicker16.png");
Glib::RefPtr<Gdk::Pixbuf> empty = safe_create_from_file(argv0+"/images/empty.png");
cHand = hand ? new Gdk::Cursor (cAdd->get_display(), hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2);
cClosedHand = close_hand ? new Gdk::Cursor (cAdd->get_display(), close_hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2);
cWB = wbpick ? new Gdk::Cursor (cAdd->get_display(), wbpick, 1, 12) : new Gdk::Cursor (Gdk::ARROW);
cHidden = empty ? new Gdk::Cursor (cAdd->get_display(), empty, 12, 12) : new Gdk::Cursor (Gdk::FLEUR);
mainWindow = mainWin;
}
@@ -52,7 +49,8 @@ void CursorManager::init (Glib::RefPtr<Gdk::Window> mainWin) {
void CursorManager::setCursor (Glib::RefPtr<Gdk::Window> window, CursorShape shape) {
if (shape==CSArrow)
window->set_cursor (*cNormal);
// set_cursor without any arguments to select system default
window->set_cursor ();
else if (shape==CSOpenHand)
window->set_cursor (*cHand);
else if (shape==CSClosedHand)

226
rtgui/dirpyrequalizer.cc Normal file
View File

@@ -0,0 +1,226 @@
/*
* This file is part of RawTherapee.
*
* RawTherapee is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* RawTherapee is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
*
* © 2010 Emil Martinec <ejmartin@uchicago.edu>
*/
#include <dirpyrequalizer.h>
using namespace rtengine;
using namespace rtengine::procparams;
DirPyrEqualizer::DirPyrEqualizer () : ToolPanel() {
enabled = Gtk::manage (new Gtk::CheckButton (M("GENERAL_ENABLED")));
enabled->set_active (true);
pack_start(*enabled);
enaConn = enabled->signal_toggled().connect( sigc::mem_fun(*this, &DirPyrEqualizer::enabledToggled) );
Gtk::HSeparator *separator1 = Gtk::manage (new Gtk::HSeparator());
pack_start(*separator1, Gtk::PACK_SHRINK, 2);
Gtk::HBox * buttonBox1 = Gtk::manage (new Gtk::HBox());
pack_start(*buttonBox1, Gtk::PACK_SHRINK, 2);
Gtk::Button * lumacontrastMinusButton = Gtk::manage (new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS")));
buttonBox1->pack_start(*lumacontrastMinusButton, Gtk::PACK_SHRINK, 2);
lumacontrastMinusPressedConn = lumacontrastMinusButton->signal_pressed().connect( sigc::mem_fun(*this, &DirPyrEqualizer::lumacontrastMinusPressed));
Gtk::Button * lumaneutralButton = Gtk::manage (new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMANEUTRAL")));
buttonBox1->pack_start(*lumaneutralButton, Gtk::PACK_SHRINK, 2);
lumaneutralPressedConn = lumaneutralButton->signal_pressed().connect( sigc::mem_fun(*this, &DirPyrEqualizer::lumaneutralPressed));
Gtk::Button * lumacontrastPlusButton = Gtk::manage (new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS")));
buttonBox1->pack_start(*lumacontrastPlusButton, Gtk::PACK_SHRINK, 2);
lumacontrastPlusPressedConn = lumacontrastPlusButton->signal_pressed().connect( sigc::mem_fun(*this, &DirPyrEqualizer::lumacontrastPlusPressed));
buttonBox1->show_all_children();
Gtk::HSeparator *separator2 = Gtk::manage (new Gtk::HSeparator());
pack_start(*separator2, Gtk::PACK_SHRINK, 2);
for(int i = 0; i < 4; i++)
{
std::stringstream ss;
ss << i;
if(i == 0)
ss << " (" << M("TP_DIRPYREQUALIZER_LUMAFINEST") << ")";
if(i == 3)
ss << " (" << M("TP_DIRPYREQUALIZER_LUMACOARSEST") << ")";
multiplier[i] = new Adjuster (ss.str(), 0, 4, 0.01, 1.0);
multiplier[i]->setAdjusterListener(this);
pack_start(*multiplier[i]);
}
Gtk::HSeparator *separator3 = Gtk::manage (new Gtk::HSeparator());
pack_start(*separator3, Gtk::PACK_SHRINK, 2);
std::stringstream ss;
ss << M("TP_DIRPYREQUALIZER_THRESHOLD") ;
multiplier[4] = new Adjuster (ss.str(), 0, 1, 0.01, 0.0);
multiplier[4]->setAdjusterListener(this);
pack_start(*multiplier[4]);
show_all_children ();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}
DirPyrEqualizer::~DirPyrEqualizer () {
}
void DirPyrEqualizer::read (const ProcParams* pp, const ParamsEdited* pedited) {
disableListener ();
if (pedited) {
enabled->set_inconsistent (!pedited->dirpyrequalizer.enabled);
for(int i = 0; i < 5; i++) {
multiplier[i]->setEditedState (pedited->dirpyrequalizer.mult[i] ? Edited : UnEdited);
}
}
enaConn.block (true);
enabled->set_active (pp->dirpyrequalizer.enabled);
enaConn.block (false);
lastEnabled = pp->dirpyrequalizer.enabled;
for (int i = 0; i < 5; i++) {
multiplier[i]->setValue(pp->dirpyrequalizer.mult[i]);
}
enableListener ();
}
void DirPyrEqualizer::write (ProcParams* pp, ParamsEdited* pedited) {
pp->dirpyrequalizer.enabled = enabled->get_active ();
for (int i = 0; i < 5; i++) {
pp->dirpyrequalizer.mult[i] = multiplier[i]->getValue();
}
if (pedited) {
pedited->dirpyrequalizer.enabled = !enabled->get_inconsistent();
for(int i = 0; i < 5; i++) {
pedited->dirpyrequalizer.mult[i] = multiplier[i]->getEditedState();
}
}
}
void DirPyrEqualizer::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) {
for (int i = 0; i < 5; i++) {
multiplier[i]->setDefault(defParams->dirpyrequalizer.mult[i]);
}
if (pedited) {
for (int i = 0; i < 5; i++) {
multiplier[i]->setDefaultEditedState(pedited->dirpyrequalizer.mult[i] ? Edited : UnEdited);
}
}
else {
for (int i = 0; i < 5; i++) {
multiplier[i]->setDefaultEditedState(Irrelevant);
}
}
}
void DirPyrEqualizer::setBatchMode (bool batchMode) {
ToolPanel::setBatchMode (batchMode);
for (int i = 0; i < 5; i++) {
multiplier[i]->showEditedCB();
}
}
void DirPyrEqualizer::adjusterChanged (Adjuster* a, double newval) {
if (listener && enabled->get_active()) {
std::stringstream ss;
ss << "(";
int i;
for (i = 0; i < 5; i++) {
if (i > 0) {
ss << ", ";
}
ss << static_cast<int>(multiplier[i]->getValue());
}
ss << ")";
listener->panelChanged (EvDirPyrEqualizer, ss.str());
}
}
void DirPyrEqualizer::enabledToggled () {
if (batchMode) {
if (enabled->get_inconsistent()) {
enabled->set_inconsistent (false);
enaConn.block (true);
enabled->set_active (false);
enaConn.block (false);
}
else if (lastEnabled)
enabled->set_inconsistent (true);
lastEnabled = enabled->get_active ();
}
if (listener) {
if (enabled->get_active ())
listener->panelChanged (EvDirPyrEqlEnabled, M("GENERAL_ENABLED"));
else
listener->panelChanged (EvDirPyrEqlEnabled, M("GENERAL_DISABLED"));
}
}
void DirPyrEqualizer::lumaneutralPressed () {
for (int i = 0; i < 4; i++) {
multiplier[i]->setValue(1.0);
adjusterChanged(multiplier[i], 1.0);
}
}
void DirPyrEqualizer::lumacontrastPlusPressed () {
for (int i = 0; i < 4; i++) {
float inc = 0.05 * (4 - i);
multiplier[i]->setValue(multiplier[i]->getValue() + inc);
adjusterChanged(multiplier[i], multiplier[i]->getValue());
}
}
void DirPyrEqualizer::lumacontrastMinusPressed () {
for (int i = 0; i < 4; i++) {
float inc = -0.05 * (4 - i);
multiplier[i]->setValue(multiplier[i]->getValue() + inc);
adjusterChanged(multiplier[i], multiplier[i]->getValue());
}
}

59
rtgui/dirpyrequalizer.h Normal file
View File

@@ -0,0 +1,59 @@
/*
* This file is part of RawTherapee.
*
* RawTherapee is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* RawTherapee is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
*
* © 2010 Emil Martinec <ejmartin@uchicago.edu>
*/
#ifndef DIRPYREQUALIZER_H_INCLUDED
#define DIRPYREQUALIZER_H_INCLUDED
#include <gtkmm.h>
#include <adjuster.h>
#include <toolpanel.h>
class DirPyrEqualizer : public Gtk::VBox, public AdjusterListener, public ToolPanel
{
protected:
Gtk::CheckButton * enabled;
Adjuster* multiplier[5];
sigc::connection enaConn;
sigc::connection lumaneutralPressedConn;
sigc::connection lumacontrastPlusPressedConn;
sigc::connection lumacontrastMinusPressedConn;
bool lastEnabled;
public:
DirPyrEqualizer ();
virtual ~DirPyrEqualizer ();
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
void setBatchMode (bool batchMode);
void adjusterChanged (Adjuster* a, double newval);
void enabledToggled ();
void lumaneutralPressed ();
void lumacontrastPlusPressed ();
void lumacontrastMinusPressed ();
};
#endif

View File

@@ -504,18 +504,25 @@ void EditorPanel::error (Glib::ustring descr) {
void EditorPanel::info_toggled () {
if(!ipc)
return;
Glib::ustring infoString;
const rtengine::ImageMetaData* idata = ipc->getInitialImage()->getMetaData();
if (idata && idata->hasExif())
infoString = Glib::ustring::compose ("%1 %2\nF/%3 %4 sec\n%5: %6\n%7: %8 mm\n",
Glib::ustring(idata->getMake()), Glib::ustring(idata->getModel()),
Glib::ustring(idata->apertureToString(idata->getFNumber())), Glib::ustring(idata->shutterToString(idata->getShutterSpeed())),
// infoString = Glib::ustring::compose ("%1 %2\nF/%3 %4 sec\n%5: %6\n%7: %8 mm\n",
// Glib::ustring(idata->getMake()), Glib::ustring(idata->getModel()),
// Glib::ustring(idata->apertureToString(idata->getFNumber())), Glib::ustring(idata->shutterToString(idata->getShutterSpeed())),
// M("QINFO_ISO"), idata->getISOSpeed(),
// M("QINFO_FOCALLENGTH"), idata->getFocalLen())
// + Glib::ustring::compose ("%1: %2", M("QINFO_LENS"), Glib::ustring(idata->getLens()));
infoString = Glib::ustring::compose (
"%1 + %2\n<span size=\"xx-large\">%3</span>s f/<span size=\"xx-large\">%4</span> %5<span size=\"xx-large\">%6</span> f=<span size=\"xx-large\">%7</span>mm",
Glib::ustring(idata->getModel()),
Glib::ustring(idata->getLens()),
Glib::ustring(idata->shutterToString(idata->getShutterSpeed())),
Glib::ustring(idata->apertureToString(idata->getFNumber())),
M("QINFO_ISO"), idata->getISOSpeed(),
M("QINFO_FOCALLENGTH"), idata->getFocalLen())
+ Glib::ustring::compose ("%1: %2", M("QINFO_LENS"), Glib::ustring(idata->getLens()));
idata->getFocalLen()
);
else
infoString = M("QINFO_NOEXIF");
@@ -895,8 +902,8 @@ bool EditorPanel::idle_sentToGimp(ProgressConnector<int> *pc,rtengine::IImage16*
void EditorPanel::saveOptions () {
options.historyPanelWidth = hpanedl->get_position ();
options.toolPanelWidth = vboxright->get_width ();
//options.historyPanelWidth = hpanedl->get_position ();//older code
//options.toolPanelWidth = vboxright->get_width ();//older code
if (options.startupDir==STARTUPDIR_LAST && fCatalog->lastSelectedDir ()!="")
options.startupPath = fCatalog->lastSelectedDir ();
}
@@ -986,4 +993,4 @@ bool EditorPanel::on_expose_event(GdkEventExpose* event)
fCatalog->redrawAll();
}
return Gtk::VBox::on_expose_event(event);
}
}

View File

@@ -165,8 +165,9 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector<rtengine::Initial
void FilePanel::saveOptions () {
options.dirBrowserWidth = dirpaned->get_position ();
options.dirBrowserHeight = placespaned->get_position ();
//options.dirBrowserWidth = dirpaned->get_position ();
//options.dirBrowserHeight = placespaned->get_position ();
//options.browserToolPanelWidth = get_position();
if (options.startupDir==STARTUPDIR_LAST && fileCatalog->lastSelectedDir ()!="")
options.startupPath = fileCatalog->lastSelectedDir ();
fileCatalog->closeDir ();

View File

@@ -112,7 +112,8 @@ void ImageArea::setInfoText (Glib::ustring text) {
fontd.set_weight (Pango::WEIGHT_BOLD);
fontd.set_size (12*Pango::SCALE);
context->set_font_description (fontd);
ilayout = create_pango_layout(text);
ilayout = create_pango_layout("");
ilayout->set_markup(text);
int iw, ih;
ilayout->get_pixel_size (iw, ih);
ipixbuf = Gdk::Pixbuf::create (Gdk::COLORSPACE_RGB, true, 8, iw+8, ih+8);

View File

@@ -126,9 +126,12 @@ void ParamsEdited::set (bool v) {
icm.working = v;
icm.output = v;
equalizer.enabled = v;
for(int i = 0; i < 8; i++)
dirpyrequalizer.enabled = v;
for(int i = 0; i < 5; i++)
{
equalizer.c[i] = v;
dirpyrequalizer.mult[i] = v;
}
exif.clear ();
iptc.clear ();
@@ -250,6 +253,10 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
for(int i = 0; i < 8; i++) {
equalizer.c[i] = equalizer.c[i] && p.equalizer.c[i] == other.equalizer.c[i];
}
dirpyrequalizer.enabled = dirpyrequalizer.enabled && p.dirpyrequalizer.enabled == other.dirpyrequalizer.enabled;
for(int i = 0; i < 8; i++) {
dirpyrequalizer.mult[i] = dirpyrequalizer.mult[i] && p.dirpyrequalizer.mult[i] == other.dirpyrequalizer.mult[i];
}
// exif = exif && p.exif==other.exif
// iptc = other.iptc;
}
@@ -361,6 +368,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
for(int i = 0; i < 8; i++) {
if(equalizer.c[i]) toEdit.equalizer.c[i] = mods.equalizer.c[i];
}
if (dirpyrequalizer.enabled) toEdit.dirpyrequalizer.enabled = mods.dirpyrequalizer.enabled;
for(int i = 0; i < 8; i++) {
if(dirpyrequalizer.mult[i]) toEdit.dirpyrequalizer.mult[i] = mods.dirpyrequalizer.mult[i];
}
// if (exif) toEdit.exif==mo.exif = mods.exif==other.exif;
// if (iptc;) toEdit.iptc==other.iptc; = mods.iptc==other.iptc;;
}

View File

@@ -239,6 +239,13 @@ class EqualizerParamsEdited {
bool c[8];
};
class DirPyrEqualizerParamsEdited {
public:
bool enabled;
bool mult[8];
};
class ExifPairEdited {
public:
@@ -282,6 +289,7 @@ class ParamsEdited {
ResizeParamsEdited resize;
ColorManagementParamsEdited icm;
EqualizerParamsEdited equalizer;
DirPyrEqualizerParamsEdited dirpyrequalizer;
std::vector<ExifPairEdited> exif;
std::vector<IPTCPairEdited> iptc;

View File

@@ -42,6 +42,8 @@ PartialPasteDlg::PartialPasteDlg () {
lumaden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMADENOISE")));
lumacurve = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_LUMACURVE")));
sh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHADOWSHIGHLIGHTS")));
dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER")));
waveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_WAVELETEQUALIZER")));
// options in color:
colormixer = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORMIXER")));
@@ -87,6 +89,8 @@ PartialPasteDlg::PartialPasteDlg () {
vboxes[1]->pack_start (*lumaden, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*lumacurve, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*sh, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*dirpyreq, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*waveq, Gtk::PACK_SHRINK, 2);
vboxes[2]->pack_start (*color, Gtk::PACK_SHRINK, 2);
vboxes[2]->pack_start (*hseps[2], Gtk::PACK_SHRINK, 2);
@@ -150,6 +154,8 @@ PartialPasteDlg::PartialPasteDlg () {
lumadenConn = lumaden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
lumacurveConn = lumacurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
shConn = sh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
waveqConn = waveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*luminance, &Gtk::CheckButton::set_inconsistent), true));
colormixerConn = colormixer->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
colorshiftConn = colorshift->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
@@ -201,6 +207,8 @@ void PartialPasteDlg::luminanceToggled () {
lumadenConn.block (true);
lumacurveConn.block (true);
shConn.block (true);
dirpyreqConn.block (true);
waveqConn.block (true);
luminance->set_inconsistent (false);
@@ -209,12 +217,16 @@ void PartialPasteDlg::luminanceToggled () {
lumaden->set_active (luminance->get_active ());
lumacurve->set_active (luminance->get_active ());
sh->set_active (luminance->get_active ());
dirpyreq->set_active (luminance->get_active ());
waveq->set_active (luminance->get_active ());
sharpenConn.block (false);
impdenConn.block (false);
lumadenConn.block (false);
lumacurveConn.block (false);
shConn.block (false);
dirpyreqConn.block (false);
waveqConn.block (false);
}
void PartialPasteDlg::colorToggled () {
@@ -306,6 +318,8 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const r
if (lumaden->get_active ()) dst->lumaDenoise = src->lumaDenoise;
if (lumacurve->get_active ()) dst->lumaCurve = src->lumaCurve;
if (sh->get_active ()) dst->sh = src->sh;
if (dirpyreq->get_active ()) dst->dirpyrequalizer = src->dirpyrequalizer;
if (waveq->get_active ()) dst->equalizer = src->equalizer;
if (colormixer->get_active ()) dst->chmixer = src->chmixer;
if (colorshift->get_active ()) dst->colorShift = src->colorShift;

View File

@@ -44,6 +44,8 @@ class PartialPasteDlg : public Gtk::Dialog {
Gtk::CheckButton* lumaden;
Gtk::CheckButton* lumacurve;
Gtk::CheckButton* sh;
Gtk::CheckButton* dirpyreq;
Gtk::CheckButton* waveq;
// options in color:
Gtk::CheckButton* colormixer;
@@ -71,7 +73,7 @@ class PartialPasteDlg : public Gtk::Dialog {
sigc::connection basicConn, luminanceConn, colorConn, lensConn, compositionConn, metaicmConn;
sigc::connection wbConn, exposureConn, hlrecConn;
sigc::connection sharpenConn, impdenConn, lumadenConn, lumacurveConn, shConn;
sigc::connection sharpenConn, impdenConn, lumadenConn, lumacurveConn, shConn, dirpyreqConn, waveqConn;
sigc::connection colormixerConn, colorshiftConn, colorboostConn, colordenConn, dirpyrdenConn;
sigc::connection distortionConn, cacorrConn, vignettingConn;
sigc::connection coarserotConn, finerotConn, cropConn, resizeConn;

View File

@@ -56,6 +56,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) {
exifpanel = Gtk::manage (new ExifPanel ());
iptcpanel = Gtk::manage (new IPTCPanel ());
equalizer = Gtk::manage (new Equalizer ());
dirpyrequalizer = Gtk::manage (new DirPyrEqualizer ());
addPanel (colorPanel, whitebalance, M("TP_WBALANCE_LABEL")); toolPanels.push_back (whitebalance);
addPanel (exposurePanel, curve, M("TP_EXPOSURE_LABEL")); toolPanels.push_back (curve);
@@ -70,6 +71,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) {
addPanel (detailsPanel, lumadenoise, M("TP_LUMADENOISE_LABEL")); toolPanels.push_back (lumadenoise);
addPanel (detailsPanel, colordenoise, M("TP_COLORDENOISE_LABEL")); toolPanels.push_back (colordenoise);
addPanel (detailsPanel, dirpyrdenoise, M("TP_DIRPYRDENOISE_LABEL")); toolPanels.push_back (dirpyrdenoise);
addPanel (detailsPanel, dirpyrequalizer, M("TP_DIRPYREQUALIZER_LABEL")); toolPanels.push_back (dirpyrequalizer);
addPanel (detailsPanel, equalizer, M("TP_EQUALIZER_LABEL")); toolPanels.push_back (equalizer);
addPanel (transformPanel, crop, M("TP_CROP_LABEL")); toolPanels.push_back (crop);
addPanel (transformPanel, resize, M("TP_RESIZE_LABEL")); toolPanels.push_back (resize);

View File

@@ -54,6 +54,7 @@
#include <lensgeom.h>
#include <lensgeomlistener.h>
#include <equalizer.h>
#include <dirpyrequalizer.h>
class ImageEditorCoordinator;
@@ -92,6 +93,7 @@ class ToolPanelCoordinator : public ToolPanelListener,
Sharpening* sharpening;
LCurve* lcurve;
Equalizer * equalizer;
DirPyrEqualizer * dirpyrequalizer;
std::vector<PParamsChangeListener*> paramcListeners;