resolve ambiguous log() overload

log() may accept `float` or `double` for C++, so passing `int` is ambiguous.
Change to exactly pass valiables as `double` to log(), it is expected here.

Signed-off-by: OBATA Akio <obache@wizdas.com>
pull/27/head
OBATA Akio 5 years ago
parent 02cb998b9c
commit 28d80743c0

@ -63,13 +63,13 @@ void ExtendedIntNumInput::setRange(int min, int max, int step, bool slider) {
this->min = min; this->min = min;
this->max = max; this->max = max;
sliderMax = (int)floor (0.5 sliderMax = (int)floor (0.5
+ 2*(log(max)-log(min)) / (log(max)-log(max-1))); + 2*(log((double)max)-log((double)min)) / (log((double)max)-log((double)max-1)));
m_slider->setRange(0, sliderMax); m_slider->setRange(0, sliderMax);
m_slider->setSteps(step, sliderMax/10); m_slider->setSteps(step, sliderMax/10);
m_slider->setTickInterval(sliderMax/10); m_slider->setTickInterval(sliderMax/10);
double alpha = sliderMax / (log(max) - log(min)); double alpha = sliderMax / (log((double)max) - log((double)min));
double logVal = alpha * (log(value())-log(min)); double logVal = alpha * (log((double)value())-log((double)min));
m_slider->setValue ((int)floor (0.5 + logVal)); m_slider->setValue ((int)floor (0.5 + logVal));
connect(m_slider, TQT_SIGNAL(valueChanged(int)), connect(m_slider, TQT_SIGNAL(valueChanged(int)),
@ -86,8 +86,8 @@ void ExtendedIntNumInput::slotSpinValueChanged(int val)
{ {
if(m_slider) { if(m_slider) {
double alpha = sliderMax / (log(max) - log(min)); double alpha = sliderMax / (log((double)max) - log((double)min));
double logVal = alpha * (log(val)-log(min)); double logVal = alpha * (log((double)val)-log((double)min));
m_slider->setValue ((int)floor (0.5 + logVal)); m_slider->setValue ((int)floor (0.5 + logVal));
} }
@ -96,8 +96,8 @@ void ExtendedIntNumInput::slotSpinValueChanged(int val)
void ExtendedIntNumInput::slotSliderValueChanged(int val) void ExtendedIntNumInput::slotSliderValueChanged(int val)
{ {
double alpha = sliderMax / (log(max) - log(min)); double alpha = sliderMax / (log((double)max) - log((double)min));
double linearVal = exp (val/alpha + log(min)); double linearVal = exp (val/alpha + log((double)min));
m_spin->setValue ((int)floor(0.5 + linearVal)); m_spin->setValue ((int)floor(0.5 + linearVal));
} }

Loading…
Cancel
Save