Merge from trunk to version ed52f4f469 "Updated make-app-bundle script to use new template for file name"
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
226
rtgui/dirpyrequalizer.cc
Normal 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
59
rtgui/dirpyrequalizer.h
Normal 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
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user