diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc
index f2ea3f0b4..0d2c2961f 100644
--- a/rtgui/adjuster.cc
+++ b/rtgui/adjuster.cc
@@ -25,16 +25,30 @@
#include "guiutils.h"
#include "rtimage.h"
-#define MIN_RESET_BUTTON_HEIGHT 17
namespace {
+
+constexpr int MIN_RESET_BUTTON_HEIGHT = 17;
+
double one2one(double val)
{
return val;
}
}
-Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep, double vdefault, Gtk::Image *imgIcon1, Gtk::Image *imgIcon2, double2double_fun slider2value_, double2double_fun value2slider_) :
+Adjuster::Adjuster (
+ Glib::ustring vlabel,
+ double vmin,
+ double vmax,
+ double vstep,
+ double vdefault,
+ Gtk::Image *imgIcon1,
+ Gtk::Image *imgIcon2,
+ double2double_fun slider2value,
+ double2double_fun value2slider)
+
+ :
+
adjustmentName(std::move(vlabel)),
grid(nullptr),
label(nullptr),
@@ -52,8 +66,8 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep
logBase(0),
logPivot(0),
logAnchorMiddle(false),
- value2slider(value2slider_ ? value2slider_ : one2one),
- slider2value(slider2value_ ? slider2value_ : one2one),
+ value2slider(value2slider ? value2slider : &one2one),
+ slider2value(slider2value ? slider2value : &one2one),
delay(options.adjusterMinDelay)
{
@@ -156,13 +170,12 @@ Adjuster::~Adjuster ()
delayConnection.block(true);
adjusterListener = nullptr;
- delete automatic;
}
-void Adjuster::addAutoButton (Glib::ustring tooltip)
+void Adjuster::addAutoButton (const Glib::ustring &tooltip)
{
if (!automatic) {
- automatic = new Gtk::CheckButton();
+ automatic = Gtk::manage(new Gtk::CheckButton());
//automatic->add (*Gtk::manage (new RTImage ("gears.png")));
automatic->set_tooltip_markup(tooltip.length() ? Glib::ustring::compose("%1\n\n%2", M("GENERAL_AUTO"), tooltip) : M("GENERAL_AUTO"));
setExpandAlignProperties(automatic, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
@@ -302,8 +315,8 @@ void Adjuster::resetPressed (GdkEventButton* event)
double Adjuster::shapeValue (double a) const
{
- const double pow10 = pow(10.0, digits);
- const double val = round(a * pow10) / pow10;
+ const double pow10 = std::pow(10.0, digits);
+ const double val = std::round(a * pow10) / pow10;
return val == -0.0 ? 0.0 : val;
}
@@ -313,7 +326,7 @@ void Adjuster::setLimits (double vmin, double vmax, double vstep, double vdefaul
spinChange.block(true);
double pow10 = vstep;
- for (digits = 0; fabs(pow10 - floor(pow10)) > 0.000000000001; digits++, pow10 *= 10.0);
+ for (digits = 0; std::fabs(pow10 - floor(pow10)) > 0.000000000001; digits++, pow10 *= 10.0);
const double shapeVal = shapeValue(vdefault);
spin->set_digits(digits);
@@ -557,7 +570,6 @@ void Adjuster::showEditedCB ()
void Adjuster::editedToggled ()
{
-
if (adjusterListener && !blocked) {
adjusterListener->adjusterChanged(this, spin->get_value());
}
@@ -567,26 +579,20 @@ void Adjuster::editedToggled ()
void Adjuster::trimValue (double &val) const
{
-
val = rtengine::LIM(val, vMin, vMax);
-
}
void Adjuster::trimValue (int &val) const
{
-
val = rtengine::LIM(val, vMin, vMax);
-
}
void Adjuster::trimValue (float &val) const
{
-
val = rtengine::LIM(val, vMin, vMax);
-
}
-inline double Adjuster::getSliderValue() const
+double Adjuster::getSliderValue() const
{
double val = slider->get_value();
if (logBase) {
@@ -596,29 +602,28 @@ inline double Adjuster::getSliderValue() const
if (val >= mmid) {
double range = vMax - mmid;
double x = (val - mmid) / range;
- val = logPivot + (pow(logBase, x) - 1.0) / (logBase - 1.0) * (vMax - logPivot);
+ val = logPivot + (std::pow(logBase, x) - 1.0) / (logBase - 1.0) * (vMax - logPivot);
} else {
double range = mmid - vMin;
double x = (mmid - val) / range;
- val = logPivot - (pow(logBase, x) - 1.0) / (logBase - 1.0) * (logPivot - vMin);
+ val = logPivot - (std::pow(logBase, x) - 1.0) / (logBase - 1.0) * (logPivot - vMin);
}
} else {
if (val >= logPivot) {
double range = vMax - logPivot;
double x = (val - logPivot) / range;
- val = logPivot + (pow(logBase, x) - 1.0) / (logBase - 1.0) * range;
+ val = logPivot + (std::pow(logBase, x) - 1.0) / (logBase - 1.0) * range;
} else {
double range = logPivot - vMin;
double x = (logPivot - val) / range;
- val = logPivot - (pow(logBase, x) - 1.0) / (logBase - 1.0) * range;
+ val = logPivot - (std::pow(logBase, x) - 1.0) / (logBase - 1.0) * range;
}
}
}
return val;
}
-
-inline void Adjuster::setSliderValue(double val)
+void Adjuster::setSliderValue(double val)
{
if (logBase) {
if (logAnchorMiddle) {
@@ -626,28 +631,27 @@ inline void Adjuster::setSliderValue(double val)
if (val >= logPivot) {
double range = vMax - logPivot;
double x = (val - logPivot) / range;
- val = (vMin + mid) + log(x * (logBase - 1.0) + 1.0) / log(logBase) * mid;
+ val = (vMin + mid) + std::log(x * (logBase - 1.0) + 1.0) / std::log(logBase) * mid;
} else {
double range = logPivot - vMin;
double x = (logPivot - val) / range;
- val = (vMin + mid) - log(x * (logBase - 1.0) + 1.0) / log(logBase) * mid;
+ val = (vMin + mid) - std::log(x * (logBase - 1.0) + 1.0) / std::log(logBase) * mid;
}
} else {
if (val >= logPivot) {
double range = vMax - logPivot;
double x = (val - logPivot) / range;
- val = logPivot + log(x * (logBase - 1.0) + 1.0) / log(logBase) * range;
+ val = logPivot + std::log(x * (logBase - 1.0) + 1.0) / std::log(logBase) * range;
} else {
double range = logPivot - vMin;
double x = (logPivot - val) / range;
- val = logPivot - log(x * (logBase - 1.0) + 1.0) / log(logBase) * range;
+ val = logPivot - std::log(x * (logBase - 1.0) + 1.0) / std::log(logBase) * range;
}
}
}
slider->set_value(val);
}
-
void Adjuster::setLogScale(double base, double pivot, bool anchorMiddle)
{
spinChange.block(true);
@@ -662,3 +666,61 @@ void Adjuster::setLogScale(double base, double pivot, bool anchorMiddle)
sliderChange.block(false);
spinChange.block(false);
}
+
+bool Adjuster::getAutoValue() const
+{
+ return automatic ? automatic->get_active() : false;
+}
+
+void Adjuster::setAutoInconsistent(bool i)
+{
+ if (automatic) {
+ automatic->set_inconsistent(i);
+ }
+}
+
+bool Adjuster::getAutoInconsistent() const
+{
+ return automatic ? automatic->get_inconsistent() : true /* we have to return something */;
+}
+
+void Adjuster::setAdjusterListener (AdjusterListener* alistener)
+{
+ adjusterListener = alistener;
+}
+
+double Adjuster::getValue() const
+{
+ return shapeValue(spin->get_value());
+}
+
+int Adjuster::getIntValue() const
+{
+ return spin->get_value_as_int();
+}
+
+Glib::ustring Adjuster::getTextValue() const
+{
+ if (addMode) {
+ return Glib::ustring::compose("%1", spin->get_text());
+ } else {
+ return spin->get_text();
+ }
+}
+
+void Adjuster::setLabel(const Glib::ustring &lbl)
+{
+ label->set_label(lbl);
+}
+
+bool Adjuster::block(bool isBlocked)
+{
+ bool oldValue = blocked;
+ blocked = isBlocked;
+ return oldValue;
+}
+
+bool Adjuster::getAddMode() const
+{
+ return addMode;
+}
diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h
index 2f3b10b18..f57129bf1 100644
--- a/rtgui/adjuster.h
+++ b/rtgui/adjuster.h
@@ -83,87 +83,40 @@ public:
int delay;
- Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep, double vdefault, Gtk::Image *imgIcon1 = nullptr, Gtk::Image *imgIcon2 = nullptr, double2double_fun slider2value_ = nullptr, double2double_fun value2slider_ = nullptr);
+ Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep, double vdefault, Gtk::Image *imgIcon1 = nullptr, Gtk::Image *imgIcon2 = nullptr, double2double_fun slider2value = nullptr, double2double_fun value2slider = nullptr);
~Adjuster () override;
// Add an "Automatic" checkbox next to the reset button.
- void addAutoButton(Glib::ustring tooltip = "");
+ void addAutoButton(const Glib::ustring &tooltip = "");
// Send back the value of og the Auto checkbox
- bool getAutoValue ()
- {
- return automatic ? automatic->get_active() : false;
- }
- void setAutoValue (bool a);
- bool notifyListenerAutoToggled ();
- void autoToggled ();
- void setAutoInconsistent (bool i)
- {
- if (automatic) {
- automatic->set_inconsistent(i);
- }
- }
- bool getAutoInconsistent () const
- {
- return automatic ? automatic->get_inconsistent() : true /* we have to return something */;
- }
-
- void setAdjusterListener (AdjusterListener* alistener)
- {
- adjusterListener = alistener;
- }
-
+ bool getAutoValue() const;
+ void setAutoValue(bool a);
+ bool notifyListenerAutoToggled();
+ void autoToggled();
+ void setAutoInconsistent(bool i);
+ bool getAutoInconsistent() const;
+ void setAdjusterListener(AdjusterListener* alistener);
// return the value trimmed to the limits at construction time
- double getValue () const
- {
- return shapeValue(spin->get_value());
- }
+ double getValue() const;
// return the value trimmed to the limits at construction time
- int getIntValue () const
- {
- return spin->get_value_as_int();
- }
+ int getIntValue() const;
// return the value trimmed to the limits at construction time,
// method only used by the history manager, so decoration is added if addMode=true
- Glib::ustring getTextValue () const
- {
- if (addMode) {
- return Glib::ustring::compose("%1", spin->get_text());
- } else {
- return spin->get_text();
- }
- }
-
- void setLabel (const Glib::ustring &lbl)
- {
- label->set_label(lbl);
- }
+ Glib::ustring getTextValue() const;
+ void setLabel (const Glib::ustring &lbl);
void setValue (double a);
void setLimits (double vmin, double vmax, double vstep, double vdefault);
void setEnabled (bool enabled);
void setDefault (double def);
// will let the adjuster throw it's "changed" signal when the mouse button is released. Can work altogether with the delay value.
void throwOnButtonRelease(bool throwOnBRelease = true);
- void setNbDisplayedChars (int nbr)
- {
- spin->set_width_chars(nbr);
- spin->set_max_width_chars(nbr);
- }
void setEditedState (EditedState eState);
EditedState getEditedState ();
void setDefaultEditedState (EditedState eState);
void showEditedCB ();
- bool block(bool isBlocked)
- {
- bool oldValue = blocked;
- blocked = isBlocked;
- return oldValue;
- }
-
+ bool block(bool isBlocked);
void setAddMode(bool addM);
- bool getAddMode() const
- {
- return addMode;
- };
+ bool getAddMode() const;
void spinChanged ();
void sliderChanged ();
bool notifyListener ();
@@ -175,7 +128,6 @@ public:
void trimValue (double &val) const;
void trimValue (float &val) const;
void trimValue (int &val) const;
-
void setLogScale(double base, double pivot, bool anchorMiddle = false);
};