Rework stretch to use just MTF
This commit is contained in:
+34
-1
@@ -3,9 +3,15 @@
|
||||
#include <QPainter>
|
||||
#include <QPaintEvent>
|
||||
|
||||
static float clamp(float x)
|
||||
{
|
||||
return std::min(std::max(x, 0.0f), 1.0f);
|
||||
}
|
||||
|
||||
STFSlider::STFSlider(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
setMinimumHeight(15);
|
||||
setMaximumHeight(15);
|
||||
setMouseTracking(true);
|
||||
m_blackPoint = 0;
|
||||
m_midPoint = 0.5;
|
||||
@@ -13,6 +19,29 @@ STFSlider::STFSlider(QWidget *parent) : QWidget(parent)
|
||||
m_grabbed = -1;
|
||||
}
|
||||
|
||||
float STFSlider::blackPoint() const
|
||||
{
|
||||
return m_blackPoint;
|
||||
}
|
||||
|
||||
float STFSlider::midPoint() const
|
||||
{
|
||||
return m_midPoint;
|
||||
}
|
||||
|
||||
float STFSlider::whitePoint() const
|
||||
{
|
||||
return m_whitePoint;
|
||||
}
|
||||
|
||||
void STFSlider::setMTFParams(float low, float mid, float high)
|
||||
{
|
||||
m_blackPoint = clamp(low);
|
||||
m_midPoint = clamp(mid);
|
||||
m_whitePoint = clamp(high);
|
||||
update();
|
||||
}
|
||||
|
||||
void STFSlider::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
QPainter painter(this);
|
||||
@@ -77,7 +106,10 @@ void STFSlider::mouseMoveEvent(QMouseEvent *event)
|
||||
break;
|
||||
}
|
||||
if(m_grabbed >= 0)
|
||||
repaint();
|
||||
{
|
||||
emit paramChanged(m_blackPoint, midPoint(), m_whitePoint);
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void STFSlider::mousePressEvent(QMouseEvent *event)
|
||||
@@ -95,4 +127,5 @@ void STFSlider::mousePressEvent(QMouseEvent *event)
|
||||
void STFSlider::mouseReleaseEvent(QMouseEvent *)
|
||||
{
|
||||
m_grabbed = -1;
|
||||
emit paramChanged(m_blackPoint, midPoint(), m_whitePoint);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user