Applied requested changes from review comments

This commit is contained in:
Dániel Battyányi 2023-08-19 00:17:10 +02:00
parent f59122e05a
commit 3d5810f088
No known key found for this signature in database
GPG Key ID: 7125B147DC00233A
4 changed files with 43 additions and 75 deletions

View File

@ -212,7 +212,7 @@ FilmNegative::FilmNegative() :
picker(DEFAULT_SPOT_WIDTH, M("TP_FILMNEGATIVE_PICK"), M("TP_FILMNEGATIVE_GUESS_TOOLTIP"), M("TP_FILMNEGATIVE_PICK_SIZE")), picker(DEFAULT_SPOT_WIDTH, M("TP_FILMNEGATIVE_PICK"), M("TP_FILMNEGATIVE_GUESS_TOOLTIP"), M("TP_FILMNEGATIVE_PICK_SIZE")),
refInputLabel(Gtk::manage(new Gtk::Label(Glib::ustring::compose(M("TP_FILMNEGATIVE_REF_LABEL"), "- - -")))), refInputLabel(Gtk::manage(new Gtk::Label(Glib::ustring::compose(M("TP_FILMNEGATIVE_REF_LABEL"), "- - -")))),
refPicker(DEFAULT_SPOT_WIDTH, M("TP_FILMNEGATIVE_REF_PICK"), M("TP_FILMNEGATIVE_REF_TOOLTIP"), M("TP_FILMNEGATIVE_REF_SIZE")), refPicker(DEFAULT_SPOT_WIDTH, M("TP_FILMNEGATIVE_REF_PICK"), M("TP_FILMNEGATIVE_REF_TOOLTIP"), M("TP_FILMNEGATIVE_REF_SIZE")),
displayRectWidth(&(picker._associatedVar)), activePicker(&picker),
outputLevel(createLevelAdjuster(this, M("TP_FILMNEGATIVE_OUT_LEVEL"))), // ref level outputLevel(createLevelAdjuster(this, M("TP_FILMNEGATIVE_OUT_LEVEL"))), // ref level
greenBalance(createBalanceAdjuster(this, M("TP_FILMNEGATIVE_GREENBALANCE"), -3.0, 3.0, 0.0, "circle-magenta-small.png", "circle-green-small.png")), // green balance greenBalance(createBalanceAdjuster(this, M("TP_FILMNEGATIVE_GREENBALANCE"), -3.0, 3.0, 0.0, "circle-magenta-small.png", "circle-green-small.png")), // green balance
blueBalance(createBalanceAdjuster(this, M("TP_FILMNEGATIVE_BLUEBALANCE"), -3.0, 3.0, 0.0, "circle-blue-small.png", "circle-yellow-small.png")) // blue balance blueBalance(createBalanceAdjuster(this, M("TP_FILMNEGATIVE_BLUEBALANCE"), -3.0, 3.0, 0.0, "circle-blue-small.png", "circle-yellow-small.png")) // blue balance
@ -242,9 +242,6 @@ FilmNegative::FilmNegative() :
pack_start(*redRatio, Gtk::PACK_SHRINK, 0); pack_start(*redRatio, Gtk::PACK_SHRINK, 0);
pack_start(*blueRatio, Gtk::PACK_SHRINK, 0); pack_start(*blueRatio, Gtk::PACK_SHRINK, 0);
pack_start(picker, Gtk::PACK_SHRINK, 0); pack_start(picker, Gtk::PACK_SHRINK, 0);
// pack_start(*spotButton, Gtk::PACK_SHRINK, 0);
// pack_start(*oldMethod, Gtk::PACK_SHRINK, 0);
Gtk::Separator* const sep = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_HORIZONTAL)); Gtk::Separator* const sep = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_HORIZONTAL));
sep->get_style_context()->add_class("grid-row-separator"); sep->get_style_context()->add_class("grid-row-separator");
@ -262,9 +259,8 @@ FilmNegative::FilmNegative() :
pack_start(refPicker, Gtk::PACK_SHRINK, 0); pack_start(refPicker, Gtk::PACK_SHRINK, 0);
picker._spotButton.signal_toggled().connect(sigc::mem_fun(*this, &FilmNegative::editToggled)); picker.add_button_toggled_event(*this, &FilmNegative::editToggled);
refPicker.add_button_toggled_event(*this, &FilmNegative::refSpotToggled);
refPicker._spotButton.signal_toggled().connect(sigc::mem_fun(*this, &FilmNegative::refSpotToggled));
// Editing geometry; create the spot rectangle // Editing geometry; create the spot rectangle
// TODO: Change behaviour to match that of the white balance spot picker (rectangle disappears behind right toolbar) // TODO: Change behaviour to match that of the white balance spot picker (rectangle disappears behind right toolbar)
@ -432,8 +428,8 @@ void FilmNegative::setBatchMode(bool batchMode)
ToolPanel::setBatchMode(batchMode); ToolPanel::setBatchMode(batchMode);
if (batchMode) { if (batchMode) {
removeIfThere(this, &picker._spotButton, false); picker.remove_if_there(this, false);
removeIfThere(this, &refPicker._spotButton, false); refPicker.remove_if_there(this, false);
colorSpace->append(M("GENERAL_UNCHANGED")); colorSpace->append(M("GENERAL_UNCHANGED"));
colorSpace->set_active_text(M("GENERAL_UNCHANGED")); colorSpace->set_active_text(M("GENERAL_UNCHANGED"));
redRatio->showEditedCB(); redRatio->showEditedCB();
@ -542,7 +538,7 @@ bool FilmNegative::mouseOver(int modifierKey)
{ {
EditDataProvider* const provider = getEditProvider(); EditDataProvider* const provider = getEditProvider();
Rectangle* const spotRect = static_cast<Rectangle*>(visibleGeometry.at(0)); Rectangle* const spotRect = static_cast<Rectangle*>(visibleGeometry.at(0));
spotRect->setXYWH(provider->posImage.x - *displayRectWidth, provider->posImage.y - *displayRectWidth, *displayRectWidth * 2, *displayRectWidth * 2); spotRect->setXYWH(provider->posImage.x - activePicker->get_spot_half_width(), provider->posImage.y - activePicker->get_spot_half_width() ,activePicker->get_spot_half_width() * 2, activePicker->get_spot_half_width() * 2);
return true; return true;
} }
@ -564,8 +560,8 @@ bool FilmNegative::button1Pressed(int modifierKey)
RGB ref1, ref2, dummy; RGB ref1, ref2, dummy;
if (fnp->getFilmNegativeSpot(refSpotCoords[0], picker._associatedVar, ref1, dummy) && if (fnp->getFilmNegativeSpot(refSpotCoords[0], picker.get_spot_half_width(), ref1, dummy) &&
fnp->getFilmNegativeSpot(refSpotCoords[1], picker._associatedVar, ref2, dummy)) { fnp->getFilmNegativeSpot(refSpotCoords[1], picker.get_spot_half_width(), ref2, dummy)) {
disableListener(); disableListener();
@ -611,7 +607,7 @@ bool FilmNegative::button1Pressed(int modifierKey)
} }
RGB refOut; RGB refOut;
fnp->getFilmNegativeSpot(provider->posImage, refPicker._associatedVar, refInputValues, refOut); fnp->getFilmNegativeSpot(provider->posImage, refPicker.get_spot_half_width(), refInputValues, refOut);
// Output luminance of the sampled spot // Output luminance of the sampled spot
float spotLum = rtengine::Color::rgbLuminance(refOut.r, refOut.g, refOut.b); float spotLum = rtengine::Color::rgbLuminance(refOut.r, refOut.g, refOut.b);
@ -685,9 +681,7 @@ void FilmNegative::editToggled()
refPicker.set_active(false); refPicker.set_active(false);
refSpotCoords.clear(); refSpotCoords.clear();
displayRectWidth = &(picker._associatedVar); activePicker = &picker;
// if (spotlistener)
// spotlistener->spotNegRequested(spotWidth);
subscribe(); subscribe();
@ -711,9 +705,7 @@ void FilmNegative::refSpotToggled()
picker.set_active(false); picker.set_active(false);
refSpotCoords.clear(); refSpotCoords.clear();
displayRectWidth = &(refPicker._associatedVar); activePicker = &refPicker;
// if (spotlistener)
// spotlistener->spotNegRequested(refSpotWidth);
subscribe(); subscribe();
@ -731,17 +723,3 @@ void FilmNegative::refSpotToggled()
} }
} }
// void FilmNegative::spotSizeChanged ()
// {
// spotWidth = atoi(spotSize->get_active_text().c_str());
// // if (spotlistener)
// // spotlistener->spotNegRequested(spotWidth);
// }
// void FilmNegative::refSpotChanged()
// {
// refSpotWidth = atoi(refSpotSize->get_active_text().c_str());
// // if (spotlistener)
// // spotlistener->spotNegRequested(refSpotWidth);
// }

View File

@ -43,12 +43,6 @@ public:
virtual bool getFilmNegativeSpot(rtengine::Coord spot, int spotSize, RGB &refInput, RGB &refOutput) = 0; virtual bool getFilmNegativeSpot(rtengine::Coord spot, int spotSize, RGB &refInput, RGB &refOutput) = 0;
}; };
// class FilmNegSpotListener
// {
// public:
// virtual ~FilmNegSpotListener() = default;
// virtual void spotNegRequested(int size) = 0;
// };
class FilmNegative final : class FilmNegative final :
public ToolParamBlock, public ToolParamBlock,
@ -85,10 +79,6 @@ public:
bool button1Released() override; bool button1Released() override;
bool button3Pressed(int modifierKey) override; bool button3Pressed(int modifierKey) override;
void switchOffEditMode() override; void switchOffEditMode() override;
// void setFilmNegSpotListener(FilmNegSpotListener* listener)
// {
// spotlistener = listener;
// }
private: private:
void editToggled(); void editToggled();
@ -97,9 +87,6 @@ private:
void readOutputSliders(RGB &refOutput); void readOutputSliders(RGB &refOutput);
void writeOutputSliders(const RGB &refOutput); void writeOutputSliders(const RGB &refOutput);
// void spotSizeChanged();
// void refSpotChanged();
// ColorTemp value corresponding to neutral RGB multipliers (1,1,1). Should be around 6500K. // ColorTemp value corresponding to neutral RGB multipliers (1,1,1). Should be around 6500K.
const rtengine::ColorTemp NEUTRAL_TEMP; const rtengine::ColorTemp NEUTRAL_TEMP;
@ -109,8 +96,6 @@ private:
const rtengine::ProcEvent evFilmNegativeBalance; const rtengine::ProcEvent evFilmNegativeBalance;
const rtengine::ProcEvent evFilmNegativeColorSpace; const rtengine::ProcEvent evFilmNegativeColorSpace;
// FilmNegSpotListener* spotlistener;
std::vector<rtengine::Coord> refSpotCoords; std::vector<rtengine::Coord> refSpotCoords;
RGB refInputValues; RGB refInputValues;
@ -135,14 +120,14 @@ private:
Adjuster* const redRatio; Adjuster* const redRatio;
Adjuster* const blueRatio; Adjuster* const blueRatio;
#define DEFAULT_SPOT_WIDTH 8 static constexpr int DEFAULT_SPOT_WIDTH = 8;
SpotPicker picker; SpotPicker picker;
Gtk::Label* const refInputLabel; Gtk::Label* const refInputLabel;
SpotPicker refPicker; SpotPicker refPicker;
int* displayRectWidth; SpotPicker* activePicker;
Adjuster* const outputLevel; Adjuster* const outputLevel;
Adjuster* const greenBalance; Adjuster* const greenBalance;

View File

@ -1926,32 +1926,25 @@ void BackBuffer::copySurface(Cairo::RefPtr<Cairo::Context> crDest, Gdk::Rectangl
SpotPicker::SpotPicker(int const defaultValue, Glib::ustring const &buttonKey, Glib::ustring const &buttonTooltip, Glib::ustring const &labelKey) : SpotPicker::SpotPicker(int const defaultValue, Glib::ustring const &buttonKey, Glib::ustring const &buttonTooltip, Glib::ustring const &labelKey) :
Gtk::Grid(), Gtk::Grid(),
_associatedVar(defaultValue), _spotHalfWidth(defaultValue),
_spotLabel(labelSetup(labelKey)), _spotLabel(labelSetup(labelKey)),
_spotSizeSetter(new MyComboBoxText(selecterSetup())), _spotSizeSetter(MyComboBoxText(selecterSetup())),
_spotButton(spotButtonTemplate(buttonKey, buttonTooltip)) _spotButton(spotButtonTemplate(buttonKey, buttonTooltip))
{ {
Gtk::Grid* spotSizeHelper = new Gtk::Grid();
spotSizeHelper->set_name("Spot-Size-Helper");
setExpandAlignProperties(spotSizeHelper, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
this->get_style_context()->add_class("grid-spacing"); this->get_style_context()->add_class("grid-spacing");
setExpandAlignProperties(this, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); setExpandAlignProperties(this, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
spotSizeHelper->attach (*_spotSizeSetter, 0, 0, 1, 1);
this->attach (_spotButton, 0, 0, 1, 1); this->attach (_spotButton, 0, 0, 1, 1);
this->attach (_spotLabel, 1, 0, 1, 1); this->attach (_spotLabel, 1, 0, 1, 1);
this->attach (*spotSizeHelper, 2, 0, 1, 1); this->attach (_spotSizeSetter, 2, 0, 1, 1);
_spotSizeSetter->signal_changed().connect( sigc::mem_fun(*this, &SpotPicker::spotSizeChanged)); _spotSizeSetter.signal_changed().connect( sigc::mem_fun(*this, &SpotPicker::spotSizeChanged));
} }
SpotPicker::~SpotPicker() SpotPicker::~SpotPicker()
{ {
delete _spotSizeSetter;
} }
Gtk::Label SpotPicker::labelSetup(Glib::ustring const &key) Gtk::Label SpotPicker::labelSetup(Glib::ustring const &key) const
{ {
Gtk::Label label(key); Gtk::Label label(key);
setExpandAlignProperties(&label, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); setExpandAlignProperties(&label, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
@ -1961,34 +1954,34 @@ Gtk::Label SpotPicker::labelSetup(Glib::ustring const &key)
MyComboBoxText SpotPicker::selecterSetup() MyComboBoxText SpotPicker::selecterSetup()
{ {
MyComboBoxText spotSize = MyComboBoxText(); MyComboBoxText spotSize = MyComboBoxText();
setExpandAlignProperties(&spotSize, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); setExpandAlignProperties(&spotSize, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
spotSize.append ("2"); spotSize.append ("2");
if (_associatedVar == 2) { if (_spotHalfWidth == 2) {
spotSize.set_active(0); spotSize.set_active(0);
} }
spotSize.append ("4"); spotSize.append ("4");
if (_associatedVar == 4) { if (_spotHalfWidth == 4) {
spotSize.set_active(1); spotSize.set_active(1);
} }
spotSize.append ("8"); spotSize.append ("8");
if (_associatedVar == 8) { if (_spotHalfWidth == 8) {
spotSize.set_active(2); spotSize.set_active(2);
} }
spotSize.append ("16"); spotSize.append ("16");
if (_associatedVar == 16) { if (_spotHalfWidth == 16) {
spotSize.set_active(3); spotSize.set_active(3);
} }
spotSize.append ("32"); spotSize.append ("32");
if (_associatedVar == 32) { if (_spotHalfWidth == 32) {
spotSize.set_active(4); spotSize.set_active(4);
} }
return spotSize; return spotSize;
@ -2006,5 +1999,5 @@ Gtk::ToggleButton SpotPicker::spotButtonTemplate(Glib::ustring const &key, const
void SpotPicker::spotSizeChanged() void SpotPicker::spotSizeChanged()
{ {
_associatedVar = atoi(_spotSizeSetter->get_active_text().c_str()); _spotHalfWidth = atoi(_spotSizeSetter.get_active_text().c_str());
} }

View File

@ -694,12 +694,12 @@ public:
*/ */
class SpotPicker : public Gtk::Grid class SpotPicker : public Gtk::Grid
{ {
public: private:
int _associatedVar; int _spotHalfWidth;
Gtk::Label _spotLabel; Gtk::Label _spotLabel;
MyComboBoxText* const _spotSizeSetter; MyComboBoxText _spotSizeSetter;
Gtk::ToggleButton _spotButton; Gtk::ToggleButton _spotButton;
public:
SpotPicker(int const defaultValue, Glib::ustring const &buttonKey, Glib::ustring const &buttonTooltip, Glib::ustring const &labelKey); SpotPicker(int const defaultValue, Glib::ustring const &buttonKey, Glib::ustring const &buttonTooltip, Glib::ustring const &labelKey);
~SpotPicker(); ~SpotPicker();
inline bool get_active() inline bool get_active()
@ -710,9 +710,21 @@ class SpotPicker : public Gtk::Grid
{ {
_spotButton.set_active(b); _spotButton.set_active(b);
} }
int get_spot_half_width()
{
return _spotHalfWidth;
}
template <class T_return, class T_obj> void add_button_toggled_event(T_return& returnv, const T_obj function)
{
_spotButton.signal_toggled().connect(sigc::mem_fun(returnv, function));
}
bool remove_if_there(Gtk::Container* cont, bool increference = true)
{
return removeIfThere(cont, &_spotButton, increference);
}
protected: protected:
static Gtk::Label labelSetup(Glib::ustring const &key); Gtk::Label labelSetup(Glib::ustring const &key) const;
MyComboBoxText selecterSetup(); MyComboBoxText selecterSetup();
static Gtk::ToggleButton spotButtonTemplate(Glib::ustring const &key, const Glib::ustring &tooltip); static Gtk::ToggleButton spotButtonTemplate(Glib::ustring const &key, const Glib::ustring &tooltip);
void spotSizeChanged(); void spotSizeChanged();